指定した距離だけ移動するプログラム ~レゴマインドストームEV3~
Contents
指定した距離を移動するトレーニングロボット
教育用レゴマインドストームEV3のトレーニングロボットを使って指定された距離(cm)だけ移動するプログラムを作成する。
今回は13cm(130mm)移動するプログラムを作ってみる。
移動距離を計算する手順は以下の通り。
- タイヤの直経を計測する
- 直径に円周率を掛けて円周を算出する
- 移動したい距離を円周で割ると必要な回転数が算出される
- 回転数に360(度)を掛けると必要な角度が算出される
2~4は数学ブロックで計算する。
タイヤの直径を測る
まずはメジャーでタイヤの直径を測る。
直径は56mmだった。
使用するブロック
使用するブロックは以下の2種類。
数学ブロック
数学ブロックは「足し算」「引き算」「割り算」「掛け算」「絶対値」「平方根」「指数」「拡張機能」が指定できる。
今回は計算式を設定できるADV(拡張機能)を使った。
計算結果はデータワイヤー(ドラッグ&ドロップで結んだ線)を使って他のブロックへ出力できる。
尚、数学ブロックの詳細機能についてはこちらを参照。
タイヤの直径(56mm)より13cm(130mm)移動するに必要なタイヤの回転角度を算出する。
c✕d:タイヤの円周 b÷タイヤ円周:移動したい距離に必要な回転数 a✕回転数:回転数を角度(360度で1回転)に換算 |
ステアリングブロック
Lモーターを制御してトレーニングロボットを移動させる。
データワイヤーより入力された角度分だけLモーターを回転させる。
|
13cm移動するプログラム
13cm移動するのに必要な回転角度をタイヤの直径より算出する。
角度を算出したらデータワイヤーを使用してステアリングブロックに回転角度を伝える。
尚、データワイヤーは色と太さによってデータの種類が分かれているている。
下記の黄色・細線の場合は数値を表している。
1 | プログラム開始 |
2 | 数学ブロックで13cm(130mm)移動するの必要なタイヤの回転角度を算出してデータワイヤーで出力する。 |
3 | データワイヤーより入力された回転角度だけLモーターを回転させる。 |
移動する時間を測定する
上記のプログラムに手を加えて移動時間の測定を行う。
ステアリングブロックの前後にタイマーブロックを配置して時間を測定して結果をインテリジェントブロックのディスプレイに表示する。
使用するブロック
追加で使用するブロックは以下の3種類。
タイマーブロック
タイマーブロックは8個のタイマーを持っていて時間を測定する事ができる。
タイマーID1をリセットする。
| |
リセットからの経過時間を測定する。 ※リセットされていない場合はプログラム開始からの時間を測定する。
|
表示ブロック
インテリジェントブロックのディスプレイに表示する為のブロック。
テキスト、図形、イメージなどを表示する事ができる。
表示ブロックの詳細な機能については別記事を参照。
タイマーブロックの測定結果をデータワイヤーで受け取ってテキストで表示する。
表示位置は左上がX軸、Y軸ともに0、0になる。 X軸は右方向にプラスで最大177、Y軸は下方向へプラスで最大127となっている。 |
待機ブロック
条件を満たすまで待機をするブロック。
20秒間待機する
ディスプレイに秒数が表示された後、待機させないと初期表示に戻ってしまい数値が読み取れないので待機ブロックが必要になる。 |
13cm移動する時の時間を測定するプログラム
先程のプログラムに移動の時間を測定する機能を追加したプログラム。
1 | プログラム開始 |
2 | 数学ブロックで13cm(130mm)移動するの必要なタイヤの回転角度を算出してデータワイヤーで出力する。 |
3 | タイマーID1をリセットする |
4 | データワイヤーより入力された回転角度だけLモーターを回転させる。 |
5 | 前回リセットされた(3)時からの経過時間を計測してデータワイヤーで出力する。 ※処理4の時間が計測されている |
6 | 経過時間をインテリジェントブロックのディスプレイに表示する。 |
7 | 6の表示を20秒間表示し続ける |
測定された結果がこちら。
13cmを2.614秒で移動した事になる。
1秒での移動距離に換算すると約4.97322cm/秒。
3600を掛けて時速に換算すると0.179km/hになった。
尚、測定の秒数は1/100秒程度、毎回若干異なった数値が表示された。
プログラミング動画
プログラミングと実際のトレーニングロボットの動きを動画にしている。
時速0.179km/hで移動するトレーニングロボットを御覧ください。
最近のコメント