実践ロボットプログラミング LEGO Mindstorms EV3 で目指せロボコン! WEB:http://www.robot-programming.jp/ 著者:藤吉弘亘, 藤井隆司, 鈴木裕利, 石井成郎 E-mail:support@robot-programming.jp
■ディスプレイへの表示 2
ディスプレイの座標 x 177 y 127 ピクセル座標 |x| 21 y | 12 グリッド座標 3
テキストの表示 MINDSTORMS HELLO! x y |x| | y ピクセル座標 グリッド座標 177 127 21 12 表示したい文字列を入力 177 MINDSTORMS y 127 ピクセル座標 テキスト→ピクセル |x| 21 y | HELLO! 12 テキスト→グリッド グリッド座標 4
図形の表示 x y x y 177 127 177 127 表示したい文字列を入力 (50,20) 40 図形→円形 (50,20) 177 (50,20) 40 y 127 図形→円形 x 177 (50,20) y 80 80 127 図形→長方形 5
超音波センサの値を表示 超音波センサの値を液晶ディスプレイに表示 デバッグに重要 6
超音波センサの値を表示(PAD) 超音波センサの値を読み取り、テキストをディスプレイに表示 1 2 3 無限ループ 距離の読み取り ディスプレイ表示 1 無限ループ テキストを表示 3 7
超音波センサの値を表示 超音波センサの値を読み取り、テキストをディスプレイに表示 1 2 3 ワイヤーテキスト データワイヤの色と意味 黄 :数値 緑 :ロジック(正偽値) オレンジ:テキスト(文字) 測定-接近度を指定 8
図形の繰り返し表示(PAD) 図形1と図形2を繰り返しにディスプレイに表示 1 2 3 4 5 図形の表示 無限ループ 図形1の表示 1秒間保持 3 図形2の表示 4 5 9
並列タスク 図形1と図形2を繰り返しにディスプレイに表示 1 2 3 4 5 1秒 1秒 10
■課題 障害物までの距離が小さくなるほど大きくなる円を表示 177 127 x y (89,64) r 11
■並列タスク 12
→ライントレースと障害物回避を同時に行うには並列タスクを利用 シングルタスク シングルタスクと並列タスク →ライントレースと障害物回避を同時に行うには並列タスクを利用 13
PADによる並列タスクの図示 1 2 5 3 4 6 10 7 9 右回転 無限ループ 反射光 > 40 左回転 45度右回転 ライントーレス 3 5 無限ループ 右回転 4 True False 6 左回転 1 並列タスク ライントレースプログラムを起動 2 障害物回避プログラムを起動 障害物との距離が 30cm以下 超音波センサによる障害物回避 7 10 45度右回転 9 14
並列タスク 3 5 4 2 ライントレース 1 6 7 9 ケーブルを分岐 8 障害物回避 15
並列タスクにおける問題 命令の衝突(コンフリクト) タスクAがタスクBの実行を妨害 同時にモータを制御 タスクB:後退 タスクA:前進 モータBCを順方向に回転 タスクB:後退 モータBCを逆方向に回転 どっちを実行すればいいの? 16
セマフォ(信号灯) 17
セマフォ(信号灯) 18
セマフォ(信号灯) 19
セマフォ(信号灯) 20
セマフォによるコンフリクトの回避 21
セマフォによるコンフリクト回避 モータ制御の前に、セマフォによる待機とセマフォに偽を代入 モータ制御の後には、セマフォに真を代入 モータ制御前 モータ制御 モータ制御後 セマフォに真を代入 セマフォの値が真になるまで セマフォに偽を代入 22
セマフォによるコンフリクト回避 変数に真を代入 23