トレーニングロボットをジャイロセンサーで制御するプログラム ~レゴマインドストームEV3~
Contents
トレーニングロボットとジャイロセンサー
教育用レゴマインドストームEV3のトレーニングロボットの動きをジャイロセンサーで検知をして動きを制御するプログラムを作成する。
その場で回転をして45度回転したら、そののち直進するプログラムを作ってみる。
ジャイロセンサー
ジャイロセンサーは回転の角度や角速度(単位時間辺りの角度)を判別することができる。
上部の赤い点を中心に時計回り(上の写真だと右回り)だと+(プラス)角度、反時計回りだとー(マイナス)角度で回転角度を測定する。
使用するブロック
タンクブロック
タンクブロックは車輪のLモーターを制御してトレーニングロボットを移動、回転させるブロック。
今回は下記の3パターンのタンクブロックを使用した。
左側の車輪のみ回転をするのでその場で右方向へ回転する。 | |
停止する。 | |
車輪1回転分、直進する。 |
待機ブロック(ジャイロセンサー)
条件を満たすまで待機をするブロック。
下記の条件を満たすまで待機する
現状より45度角度が増加するまで待機をする。 条件を満たしたら次のブロックに制御を移す。 |
プログラム全体
その場で右回転をして45度分回転をしたら直進をするプログラム。
1 | プログラム開始 |
2 | トレーニングロボットを右回転させる
|
3 | トレーニングロボットが45度右回転(時計回り)するまで待機
|
4 | 回転を停止
|
5 | トレーニングロボットをタイヤ1回転分だけ直進させて終了
|
実際に動かしてみた動画
プログラミングからトレーニングロボットの実際の動きまでが分かる動画。
動画では角度を変えたりジャイロセンサーは「変化」の他に「比較」も試している。
はじめまして。
とても参考になります。たのしみにしています。ところで、お茶くみ人形は作られたことはありますか。
プログラムの流れとしては、
タッチセンサーで押される(湯呑が乗る)と→前進→超音波センサ―で10cmに近づいたら(相手に)停止→タッチセンサーがひかれる(上がる)→要は湯呑を取ると→回転(180度)→後退(これは秒数で指定)というものです。
うまく動かないので、教えていただけたら幸いです。どこをループにしたらいいかわかりません。モーターはステアリングだと思うのですが。
さきほどコメントした者です。お茶くみ人形ではなく、「お茶運び人形」でした。
お詫びして訂正いたします。
コメントありがとうございます?
お茶運び人形ですね。
残念ながら作った事はありませんが、面白そうなのでロジックを考えてみました。
以下ではいかがでしょうか。
1.待機ブロック(タッチセンサーが押されるまで)
2.ループ1(終了条件:超音波10cm以内まで)
3.ステアリング(前進)
4.ループ1終了
5.ステアリング(停止)
6.待機ブロック(タッチセンサーが引かれるまで)
7.ステアリング(180度回転)
8.ステアリング(前進、数秒)
後、湯呑が乗っているかどうかの判断ですが光センサー(周囲の明るさ)でも出来るかも知れませんね。
また全体を更に大きなループ(無限)にすれば湯呑を乗せれば何度でも同じ動きを繰り返す事になりますが
その際は8で最初の位置に戻ってくる様にする必要がありますね。
もし期待通りに動かないようでしたらまたコメントを下さい。