SHOEISHA iD

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

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

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

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

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

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


STEP2:ライントレーサの処理単位を考える(動作タスク設計)

 状態遷移図(ステートチャート図)を見て、処理の優先度を考えながら、処理単位(動作タスク)を考えます。今回は、基本的なアルゴリズムをそのまま実装するために1タスクで動作させます。

 今回は単純に実装するため作成しませんが、複雑な状態制御を実現するためのタスク設計ではUMLのタイミングチャートなどを利用して、期待したとおりに制御可能なことを検討する必要があります。

STEP3:ライントレーサの構造を考える(構造設計・機能分割)

 線の上を走行していくために必要な構成要素を考えます。このとき、どの構成要素に、何をさせるか?の役割とその実現方法を決定します。

 プログラム対象の機能の分割方法とその関係を整理するには、UMLのクラス図を使います。今回プログラムするライントレーサの構造をクラス図で記載すると以下のようになります。

ライントレーサの構造を記載したクラス図
ライントレーサの構造を記載したクラス図

TouchSensor

 バンパーのON/OFFを検出するタッチセンサです。レゴマインドストームNXTの付属機器「タッチセンサ」はAPIを利用して値を読むことでON/OFFを取得することができます。TouchSensorクラスには、バンパーの接触を検出する役割と、ライントレース動作の開始/終了を制御する役割とします。

Car

 ライントレーサロボット本体です。前進するためのタイヤ(左右)と、左右に曲がるためのハンドル、線上かどうかを検出するセンサを持ちます。Carクラスは、他のクラスを利用してライントレースの制御を行う役割とします。

LeftTire/LightTire

 前進するためのタイヤ(左右)です。レゴマインドストームNXTの付属機器「モータ+タイヤ」を組み合わせて構成します。APIを利用してモータの回転速度を指定することで制御できます。LeftTire/LightTireクラスは、それぞれのタイヤを前進/停止する役割とします。

Handle

 左右に曲がるためのハンドルです。今回の構成では、向きを変えるための機器はありません。代わりに左右のモータの回転速度を調整することで、向きをかえられそうです。また、完全に停止して向きを変えるのではなく、ゆるやかに方向を変えることで、前進もできそうです。Handleクラスは、前進しながら進行方向に対して左/右に曲がる制御を行う役割とします。

LightSensor

 線上かどうかを判断するためのラインセンサです。レゴマインドストームNXTの付属機器「照度センサ」はAPIを利用して真下の照度を読み取ることができます。LightSensorクラスは、線上かどうかを判断する役割とします。

 クラスが抽出できたら、STEP4に進んでSTEP1の制御を実現するための処理の流れを考えます。実際にはSTEP3とSTEP4は並行して行うことが多いです。

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

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

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

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

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

イベント

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

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

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

メールバックナンバー