指定した距離だけ移動するプログラム ~レゴマインドストームEV3~ | そう備忘録

指定した距離だけ移動するプログラム ~レゴマインドストームEV3~

指定した距離を移動するトレーニングロボット

教育用レゴマインドストームEV3のトレーニングロボットを使って指定された距離(cm)だけ移動するプログラムを作成する。

今回は13cm(130mm)移動するプログラムを作ってみる。

指定した距離だけ移動する

移動距離を計算する手順は以下の通り。

  1. タイヤの直経を計測する
  2. 直径に円周率を掛けて円周を算出する
  3. 移動したい距離を円周で割ると必要な回転数が算出される
  4. 回転数に360(度)を掛けると必要な角度が算出される

2~4は数学ブロックで計算する。

タイヤの直径を測る

まずはメジャーでタイヤの直径を測る。

直径は56mmだった。

トレーニングロボット タイヤの直径

使用するブロック

使用するブロックは以下の2種類。

数学ブロック

数学ブロックは「足し算」「引き算」「割り算」「掛け算」「絶対値」「平方根」「指数」「拡張機能」が指定できる。

今回は計算式を設定できるADV(拡張機能)を使った。

計算結果はデータワイヤー(ドラッグ&ドロップで結んだ線)を使って他のブロックへ出力できる。

尚、数学ブロックの詳細機能についてはこちらを参照

数学ブロック

タイヤの直径(56mm)より13cm(130mm)移動するに必要なタイヤの回転角度を算出する。

  • 数学:拡張機能(計算式を右上の演算エリアで指定する)
  • a:360(度)
  • b:130(mm)
  • c:56(mm)
  • d:3.14(円周率)
  • 結果(=):データワイヤーで出力する
  • 演算:a✕b÷(c✕d)

c✕d:タイヤの円周

b÷タイヤ円周:移動したい距離に必要な回転数

a✕回転数:回転数を角度(360度で1回転)に換算

ステアリングブロック

Lモーターを制御してトレーニングロボットを移動させる。

ステアリングブロックの詳細はこちらを参照

ステアリングブロック 回転数をデータワイヤーより入力される

データワイヤーより入力された角度分だけLモーターを回転させる。

  • ステアリング:角度
  • ステアリング:0(直進)
  • パワー:10
  • 度:数学ブロックの結果をデータワイヤーより入力する
  • ブレーキ方法:真

13cm移動するプログラム

13cm移動するのに必要な回転角度をタイヤの直径より算出する。

角度を算出したらデータワイヤーを使用してステアリングブロックに回転角度を伝える。

尚、データワイヤーは色と太さによってデータの種類が分かれているている。

下記の黄色・細線の場合は数値を表している。

指定した距離だけ移動するプログラム

プログラム開始

数学ブロックで13cm(130mm)移動するの必要なタイヤの回転角度を算出してデータワイヤーで出力する。

データワイヤーより入力された回転角度だけLモーターを回転させる。

移動する時間を測定する

上記のプログラムに手を加えて移動時間の測定を行う。

ステアリングブロックの前後にタイマーブロックを配置して時間を測定して結果をインテリジェントブロックのディスプレイに表示する。

使用するブロック

追加で使用するブロックは以下の3種類。

タイマーブロック

タイマーブロックは8個のタイマーを持っていて時間を測定する事ができる。

尚、タイマーブロックの詳細についてはこちらの記事を参照

タイマーブロック リセット

タイマーID1をリセットする。

  • タイマー:リセット
  • タイマーID:1
タイマーブロック 時間測定

リセットからの経過時間を測定する。

※リセットされていない場合はプログラム開始からの時間を測定する。

  • タイマー:測定、時間
  • タイマーID:1
  • 経過時間:データワイヤーで出力

表示ブロック

インテリジェントブロックのディスプレイに表示する為のブロック。

テキスト、図形、イメージなどを表示する事ができる。

表示ブロックの詳細な機能については別記事を参照

表示ブロック

タイマーブロックの測定結果をデータワイヤーで受け取ってテキストで表示する。

  • 表示:テキスト、ピクセル
  • テキスト:データワイヤーで受け取る
  • 画面消去:真
  • X(軸):50※
  • Y(軸):50
  • 色:偽(黒)
  • フォント:2(大)
  • テキスト:データワイヤー

表示位置は左上がX軸、Y軸ともに0、0になる。

X軸は右方向にプラスで最大177、Y軸は下方向へプラスで最大127となっている。

待機ブロック

条件を満たすまで待機をするブロック。

20秒間待機

20秒間待機する

  • 待機:時間
  • 秒:20

ディスプレイに秒数が表示された後、待機させないと初期表示に戻ってしまい数値が読み取れないので待機ブロックが必要になる。

13cm移動する時の時間を測定するプログラム

先程のプログラムに移動の時間を測定する機能を追加したプログラム。

13cm移動の時間を測定するプログラム

プログラム開始

数学ブロックで13cm(130mm)移動するの必要なタイヤの回転角度を算出してデータワイヤーで出力する。

タイマーID1をリセットする

データワイヤーより入力された回転角度だけLモーターを回転させる。

前回リセットされた(3)時からの経過時間を計測してデータワイヤーで出力する。

※処理4の時間が計測されている

経過時間をインテリジェントブロックのディスプレイに表示する。

6の表示を20秒間表示し続ける

測定された結果がこちら。

測定時間

13cmを2.614秒で移動した事になる。

1秒での移動距離に換算すると約4.97322cm/秒。

3600を掛けて時速に換算すると0.179km/hになった。

尚、測定の秒数は1/100秒程度、毎回若干異なった数値が表示された。

プログラミング動画

プログラミングと実際のトレーニングロボットの動きを動画にしている。

時速0.179km/hで移動するトレーニングロボットを御覧ください。

souichirou

やった事を忘れない為の備忘録 同じような事をやりたい人の参考になればと思ってブログにしてます。 主にレゴ、AWS(Amazon Web Services)、WordPress、Deep Learning、RaspberryPiに関するブログを書いています。 仕事では工場に協働ロボットの導入や中小企業へのAI/IoT導入のアドバイザーをやっています。 2019年7月にJDLA(一般社団法人 日本デイープラーニング協会)Deep Learning for GENERALに合格しました。 質問は記事一番下にあるコメントかメニュー上部の問い合わせからお願いします。

おすすめ

質問やコメントや励ましの言葉などを残す

名前、メール、サイト欄は任意です。
またメールアドレスは公開されません。