タイヤの回転角度をグラフ表示する ~レゴマインドストームEV3~
Contents
タイヤの回転角度のグラフ化
教育用レゴマインドストームのトレーニングロボットで以前に指定した距離だけ移動するプログラムを作った。
タイヤの直径を測ってタイヤの円周を計算した後、移動したい距離をタイヤの円周で除算すると必要な回転数が得られる。それに360(度)をかければ必要な回転角度が算出される。
移動に必要な回転角度=移動したい距離÷(タイヤの直径✕3.14)✕360
今回は移動と同時に回転角度をインテリジェントブロックのディスプレイに棒グラフで表示するプログラムを作ってみる。
インテリジェントブロックの座標は左上を(0,0)としてX軸は0~177(右端)まで、Y軸は0~127(下端)となっている。
Y軸の座標の考え方が数学で習ったものとちょっと違うので注意が必要。
X軸は時間軸とする。
左から順番に表示ブロックの直線を描画する機能を使って棒グラフを描いてゆく。
この時のY座標の始点(下記図の3)を計算で求めて終点のY座標(127)まで直線を引く。
プログラム概要
まず最初にプログラムの全体図。
上のブロック群と下のブロック群では同時並列で実行される。
それぞれの大まかな処理は赤字のコメントを参照。
尚、記事の最後にプログラミングと実際に動かした時の動画を載せているので確認してみて欲しい。
ディスプレイに表示されるグラフは以下の様になる。
プログラム全体
プログラム全体とそれぞれの処理内容は以下の通り。
1 | プログラム開始 |
2 | 300mm進むのに必要なタイヤ(モーター)の回転角度を計算する 結果を3、4に出力する |
3 | 2の結果を変数angleに保存する |
4 | 300mm直進する |
5 | ディスプレイを初期化してgraphと表示する |
6 | 7~12をロジックが”真”になるまで繰り返す |
7 | モーター回転角度を9、12に出力する |
8 | 変数angleを9、12に出力する |
9 | Y座標の始点を計算する |
10 | 棒グラフでモーター回転角度を描画する |
11 | 0.1秒待機する |
12 | ループの終了(到達点かどうか)を判定する 結果を6のロジックに出力する |
13 | グラフの描画を残すため5秒間待機する |
使用したブロック
今回使用したブロックは以下の8種類。
数学ブロック
計算式に基づいた演算を行うブロック。
変数ブロック
変数の書き込み、読み込みを行うためのブロック。
![]() | 変数angleに数学ブロック(1)の計算結果を書き込む
|
![]() | 書き込んだ変数angleをY座標の始点の計算の為に読み込む
|
タンクブロック
トレーニングロボットのLモーターを制御して移動させるためのブロック
![]() | パワー10で300mm直進する為に必要な回転角度だけ車輪を回転させる
|
表示ブロック
インテリジェントブロックのディスプレイにテキスト、イメージ、図形を描画する。
ループブロック
ループ内に配置されたブロックを右側の条件に一致するまで繰り返す。
![]() | ロジックが”真”※になるまで繰り返す
※モーターの回転角度 >=数学ブロック(1)の計算結果の時に”真”になる |
モーター回転ブロック
L、Mモーターの回転センサーから回転角度、パワーなどを取り出すためのブロック。
尚、モーター回転ブロックの機能詳細についてはこちらの記事を参照。
![]() | 車輪のLモーターのリアルタイムな回転角度を取り出す
|
待機ブロック
指定された条件に一致するまで待機するブロック。
![]() | 0.1秒待機する
0.1秒毎にループを回して棒グラフを描画する |
![]() | 5秒待機する
描画したグラフを5秒間表示する為のブロック |
比較ブロック
2つの数値を比較して結果をロジック(”真” or ”偽”)で出力する。
![]() | ループの終了条件※を判定する為のブロック ※モーター回転角度>数学ブロック(1)の結果
|
実際に動かしてみた動画
プログラミングと実際にインテリジェントブロックのディスプレイにグラフを描画する様子を動画にしている。
最近のコメント