2022年5月12日

SPIKE 壁などにぶつかって姿勢を整える

ロボコンではコース上を真っ直ぐ走る必要があります。しかし、コースの摩擦などによりロボットが真っ直ぐ走らない場合があります。今回はロボットを真っ直ぐ走らせるために、ロボットをコース上の壁に当てることでロボットの向きを壁に対して垂直にするプログラムを作成します。

はじめに使用するロボットを用意します。 画像のようなアームユニット付きのロボットを作成してください。

  • プログラム全体がシンプルになるのでプログラムが分かりやすくなる
  • 数値の調整がしやすくなる
  • 変更箇所が少なくなる

はじめに、ライントレースを行う車体を用意します。 画像のようなロボットを作成してください。

ロボット
ロボット

車体に使用しているハードウェア

  • SPIKEプライム ラージハブ
  • Mモーター×2(E,Aポート)
  • Lモーター(Cポート)
  • 距離センサー(Dポート)
  • カラーセンサー(Fポート)
  • フォースセンサー(Bポート)

本記事の動作はこちらの動画で確認できます。

https://youtu.be/Z58EShjih20

◆まずは簡易なプログラムをSPIKEアプリでプログラミングします。

◇プログラム1

プログラム1

壁にぶつかったことをフォースセンサーで検知するプログラムです。1秒待つことで、壁にしっかりぶつかるまでモーターを回し続けます。

◆壁にぶつかることで壁に対して垂直になることが確認できたら、次は壁に対して垂直に走り続けるように、ジャイロセンサーを用いたプログラムを作成します。

◇プログラム2

プログラム2

このプログラムでは、壁にぶつかったことを検知したらジャイロセンサーの値をリセットします。次に、ジャイロセンサーの値によってモーターのステアリング値を変更するようにプログラミングしてあります。また、プログラム実行中にステアリングをどちらに切っているのか分かりやすいように、本体のLEDを使ってステアリングを切っている方向を示します。

プログラム3

プログラム2を応用することで、正確な旋回も実現できます。

プログラム3 プログラム3-2

プログラム3では青枠で囲った部分のプログラムでジャイロセンサーの値を用いて旋回を行っています。まず、ロボットは壁がある後ろ側に後退し、フォースセンサーが押されるまで下がります。壁に対して垂直になったら、ヨー角をリセットしてマイブロックの「真っ直ぐ走る」を用いて前進します。 続いて、青枠で囲った部分を用いてロボットを90度右旋回しています。青枠では、ジャイロセンサーを用いてロボットを90度右旋回させた後、モーターの動きで周り過ぎてしまった分をゆっくり左旋回することで微調整しています。

※2022/2/16現在最新バージョン(2.0.4)のSPIKEアプリに基づく情報です。
※これらの仕様はアプリのアップデートによって変更される場合があります。

(2022/4/6 現在)