SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

[組込み開発入門] ロボットを作ろう

【第4回】レゴマインドストームNXTでライントレーサを作成しよう

レゴマインドストームNXTでロボットプログラミング


STEP4:ライントレーサが動作する仕組みを考える(シーケンス図による動作設計・検証)

 STEP3で決定したクラスの役割で、制御を実現する処理の流れを記載します。このとき、STEP2で決定した動作単位(OSタスク)も色分けなどで反映しておくとわかりやすくなります。理の流れを表す場合は、UMLのシーケンス図やコラボレーション図を使います。

 今回のプログラムの制御の流れを、シーケンス図で記載すると以下のようになります。

プログラムの制御の流れを記載したシーケンス図
プログラムの制御の流れを記載したシーケンス図

 STEP3とSTEP4を繰り返し、処理シーケンスが動作が一通り流れれば、設計は完了です。

 実際には実物を動作させないと細かい制御内容(※)が分からないこともあります。このような場合は、不明事項をメモしておいて、実際に動かして調整します。

 ※上記シーケンスでは、UMLのノートで調整試行を記載しています。

  1. 右や左に曲がるために左右のモータを前進させたり、停止したりします。どれくらいの時間で向きが変わるかが不明です。
  2. 線の上かどうかは、照度センサの値で判断します。線上/線外を判定するためのしきい値は計ってみないとわかりません。

STEP5:実際にプログラミングして動作させる

 レゴマインドストームNXT付属機器については、レゴマインドストームNXTの開発環境に添付されているマニュアルなどを参照しつつ、C言語でプログラムを作成します。

 このとき、UMLで記載したクラス図やシーケンス図との対応をわかりやすくするために、以下のようなルールで関数名を実装します。

C言語関数名=UMLクラス図のクラス名_UMLクラス図のメソッド名
UMLクラス図と実装メソッドの対応例(isTouched関数)
UMLクラス図と実装メソッドの対応例(isTouched関数)

 ※戻り値や引数の型は、レゴマインドストームNXT付属機器のAPI仕様などに合わせるために一致させていません。

 また、OSタスクから処理を開始する部分や、上記シーケンス図のメソッド内から呼び出される関数については、自由に実装するルールとします。

次のページ
コーディングして、動かしてみよう

この記事は参考になりましたか?

[組込み開発入門] ロボットを作ろう連載記事一覧

もっと読む

この記事の著者

柏崎 真司(カシワザキ シンジ)

(株)永和システムマネジメント所属。カーネル開発から、組み込み開発の世界へと足を踏み入れた。共通部分を多く感じながらも、組込み独自の魅力に魅了されつつある。また、組込み開発と同様、それ以上に、家族と過ごす時間もこよなく愛している。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3704 2009/03/16 19:17

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー