ジャイロセンサーで坂の角度を測定するプログラミング ~レゴマインドストームEV3~ | そう備忘録

ジャイロセンサーで坂の角度を測定するプログラミング ~レゴマインドストームEV3~

ジャイロセンサーで坂の角度を測定する

教育用レゴマインドストームEV3の基本セットのジャイロセンサーで坂の角度を測定するプログラムを作成する。

まずトレーニングロボットを組み立てた後、ジャイロセンサーを縦に取り付ける。

ジャイロセンサーを縦に取り付けることにより坂の上り(下り)時に坂の角度が測定できるようになる。

またジャイロセンサーをトレーニングロボットの左側に取り付けた事により上りはプラスの数値、下りはマイナスの数値でジャイロセンサーの角度が表示される。

坂の角度を測定するトレーニングロボット

トレーニングロボットの前方に板で上り坂を用意した。

約200mm直進すれば坂を上がるのでジャイロセンサーを使って角度を測定してみる。

板で坂を用意した

トレーニングロボットの組み立て動画

尚、トレーニングロボットの組み立ての動画はこちらを参照

プログラム概要

プログラム概要プログラムは、

  • 200mm直進する
  • ジャイロセンサーの角度の差を計算してインテリジェントブロックのディスプレイに表示する

の2つの部分から構成されている。

尚、記事の最後にプログラミングと実際に動かした時の動画を載せているので確認してみて欲しい

プログラム全体

200mm直進して坂を上る。

また同時にプログラム開始時のジャイロセンサーの値と坂を上った後のジャイロセンサーの値との差分より坂の角度を求めてディスプレイに表示する。

坂の角度を測定するプログラム

プログラム開始
ジャイロセンサーで現在の角度を測定する
2の結果をstart変数に格納する
200mm直進する為に必要な車輪の回転角度を計算する
200mm直進する
ジャイロセンサーで現在の角度を測定する
6の結果をend変数に格納する
strat変数を取り出す
end変数を取り出す
10end時とstart時の差分を計算する
1110の計算結果をディスプレイに表示する
1210秒間待機する(11の表示結果が消えないようにしている)

表示結果

プログラム実行時の11の表示結果。

この結果より坂の角度は約20度であることが分かる。

表示結果

使用したブロック

今回使用したブロックは以下の6種類。

ジャイロセンサーブロック

角度や角速度を測定するブロック。

ジャイロセンサージャイロセンサーで角度を測定する

  • ジャイロセンサー:測定、角度
  • 角度:データワイヤーで変数ブロックに出力する

変数ブロック

プログラム中の数値や文字列、ロジック(”真” or ”偽”)を保存することができる。

詳細はこちらの記事を参照。

変数ブロックジャイロセンサーで測定したstart時とend時の角度を書き込んで保存する

  • 変数:書き込み、数値
  • 値:ジャイロセンサーで測定した角度をデータワイヤーで受け取る
  • 変数名:startとend
変数ブロック 読み込みstart時とend時の角度を呼び出す

  • 変数:読み込み、数値
  • 値:保存した角度をデータワイヤーで数学ブロックへ出力する
  • 変数名:startとend

数学ブロック

数学計算を行って結果を出力するブロック。

詳細はこちらの記事を参照。

数学ブロック 回転角度を計算200mm進む為に必要な車輪の回転角度を計算する

  • 数学:ADV(拡張機能)
  • a:360(度)
  • b:200(mm)進みたい距離
  • c:56(mm)車輪の直径
  • d:3.14(円周率)
  • =:結果をデータワイヤーでステアリングブロックに出力する
  • 演算:a×b÷(c×d)

c×d:車輪の円周
b÷車輪の円周:200mm進む為に必要な車輪の回転数
a×車輪の回転数:200mm進むのに必要な回転角度
計算の仕方の詳細はこちらの記事を参照

数学ブロック 角度を計算するstart時とend時の角度の差を計算する

  • 数学:引き算
  • a:end時の角度をデータワイヤーで受け取る
  • b:start時の角度をデータワイヤーで受け取る

上り坂:endの方が大きくなる
下り坂:endの方が小さくなる

ステアリングブロック

左右のLモーターを同時に制御するブロック。

前進、後退の他に旋回などの制御も可能。

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

ステアリングブロック指定された距離だけ前進する

  • ステアリング:角度
  • ステアリング:0(直進)
  • パワー:15
  • 度:データワイヤーで数学ブロックの計算結果を受け取る
  • ブレーキ方法:真(惰性なしで停止)

表示ブロック

インテリジェントブロック(白い本体)のディスプレイにテキスト、図形、イメージなどを表示する為のブロック。

詳細はこちらの記事を参照

表示ブロック数学ブロックで計算された坂の角度をディスプレイに表示する

  • 表示:テキスト、グリッド
  • テキスト:データワイヤーで数学ブロックの計算結果を受け取る
  • 画面消去:真(表示前に画面をクリアする)
  • 列:5(列目)
  • 行:5(行目)
  • 色:黒
  • フォント:2(大)

待機ブロック

指定した条件になるまで待機するブロック

10秒間待機10秒間待機する

  • 待機:時間
  • 時間:10(秒)

インテリジェントブロックのディスプレイに表示した後、待機を行わないとプログラムが終了して表示が消えてしまうので待機させる

プログラミングと実際に動かしてみた時の動画

プログラミングと実際に動かしてみた時の動画。

トレーニングロボットが坂を上ってディスプレイに20が表示される様子が分かる。

souichirou

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

おすすめ

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

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