トレーニングロボットをジャイロセンサーで制御するプログラム ~レゴマインドストームEV3~ | そう備忘録

トレーニングロボットをジャイロセンサーで制御するプログラム ~レゴマインドストームEV3~

トレーニングロボットとジャイロセンサー

教育用レゴマインドストームEV3のトレーニングロボットの動きをジャイロセンサーで検知をして動きを制御するプログラムを作成する。

その場で回転をして45度回転したら、そののち直進するプログラムを作ってみる。

トレーニングロボットをジャイロセンサーで制御する

ジャイロセンサー

ジャイロセンサーは回転の角度や角速度(単位時間辺りの角度)を判別することができる。

上部の赤い点を中心に時計回り(上の写真だと右回り)だと+(プラス)角度、反時計回りだとー(マイナス)角度で回転角度を測定する。

使用するブロック

タンクブロック

タンクブロックは車輪のLモーターを制御してトレーニングロボットを移動、回転させるブロック。

今回は下記の3パターンのタンクブロックを使用した。

タンクブロック 右回転
  • タンク:オン
  • 左側パワー:40
  • 右側パワー:0

左側の車輪のみ回転をするのでその場で右方向へ回転する。

タンクブロック 停止
  • タンク:オフ
  • ブレーキ方法:真

停止する。

タンクブロック 直進
  • タンク:回転数
  • 左側パワー:50
  • 右側パワー:50
  • 回転:1
  • ブレーキ方法:真

車輪1回転分、直進する。

待機ブロック(ジャイロセンサー)

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

待機 ジャイロセンサー 変化 角度

下記の条件を満たすまで待機する

  • 待機:ジャイロセンサー、変化、角度
  • 方向:0(増加)
  • 量:45

現状より45度角度が増加するまで待機をする。

条件を満たしたら次のブロックに制御を移す。

プログラム全体

その場で右回転をして45度分回転をしたら直進をするプログラム。

トレーニングロボットをジャイロセンサーで制御する

プログラム開始

トレーニングロボットを右回転させる

  • タンク:オン
  • 左側パワー:40
  • 右側パワー:0

トレーニングロボットが45度右回転(時計回り)するまで待機

  • 待機:ジャイロセンサー、変化、角度
  • 方向:0(増加)
  • 量:45

回転を停止

  • タンク:オフ
  • ブレーキ方法:真

トレーニングロボットをタイヤ1回転分だけ直進させて終了

  • タンク:回転数
  • 左側パワー:50
  • 右側パワー:50
  • 回転:1
  • ブレーキ方法:真

実際に動かしてみた動画

プログラミングからトレーニングロボットの実際の動きまでが分かる動画。

動画では角度を変えたりジャイロセンサーは「変化」の他に「比較」も試している。

souichirou

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

おすすめ

3件のフィードバック

  1. はじめまして。
    とても参考になります。たのしみにしています。ところで、お茶くみ人形は作られたことはありますか。
    プログラムの流れとしては、
    タッチセンサーで押される(湯呑が乗る)と→前進→超音波センサ―で10cmに近づいたら(相手に)停止→タッチセンサーがひかれる(上がる)→要は湯呑を取ると→回転(180度)→後退(これは秒数で指定)というものです。
    うまく動かないので、教えていただけたら幸いです。どこをループにしたらいいかわかりません。モーターはステアリングだと思うのですが。

  2. 畑中 正憲 より:

    さきほどコメントした者です。お茶くみ人形ではなく、「お茶運び人形」でした。
    お詫びして訂正いたします。

    • souichirou より:

      コメントありがとうございます?
      お茶運び人形ですね。
      残念ながら作った事はありませんが、面白そうなのでロジックを考えてみました。
      以下ではいかがでしょうか。
      1.待機ブロック(タッチセンサーが押されるまで)
      2.ループ1(終了条件:超音波10cm以内まで)
      3.ステアリング(前進)
      4.ループ1終了
      5.ステアリング(停止)
      6.待機ブロック(タッチセンサーが引かれるまで)
      7.ステアリング(180度回転)
      8.ステアリング(前進、数秒)

      後、湯呑が乗っているかどうかの判断ですが光センサー(周囲の明るさ)でも出来るかも知れませんね。

      また全体を更に大きなループ(無限)にすれば湯呑を乗せれば何度でも同じ動きを繰り返す事になりますが
      その際は8で最初の位置に戻ってくる様にする必要がありますね。

      もし期待通りに動かないようでしたらまたコメントを下さい。

畑中 正憲 へ返信する コメントをキャンセル

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