2025年1月27日
021-2.SPIKEプライムヒント集-第6回「交差したラインを走破するには?」
この連載ではロボットコンテスト(ロボコン)で役立つロボット作りのヒントを紹介していきたいと思います。ヒントを実感しやすいように、ここでは競技風の「お題」を出します。お題をクリアするロボットを作ってみましょう。自分の手を動かすことが大切です。この記事では「レゴ エデュケーションSPIKEプライム(以下、SPIKE)」とSPIKEアプリ3を使用しています。(文/松原拓也)
◆ フィールドとロボットを作る
ラインをトレースする方法を考えてみましょう。
ロボットに付いているカラーセンサーが1個だけの場合、間違えて横方向のラインをトレースしてしまいます。横断することができません。 プログラムを工夫すれば、ラインを読み飛ばすことはできますが、事前にフィールドの情報を覚えておく必要があるので、融通のきかないロボットになってしまいます。
この問題の解決策として、カラーセンサーを2個使うことにします。 ただし、カラーセンサーは基本セットに1個しか付いていないため、もう1つカラーセンサーを入手する必要があります。 筆者の場合は拡張セットからカラーセンサーを入手しました。拡張セットについてはマイスターブログで紹介しているので参考にしてみてください。
◆ センサーの特性を調べる
◆ 十字路で止まって、せん回する
十字路で2回だけ曲がるプログラムです(doublesensor3.llsp3)。 「find_cross」はライントレースをしながら十字路を探すマイブロックです。 「比例制御」という技術を使ってライントレースを行っています。比例制御は目標までの差に比例してハンドル(進む方向)を操作します。変数「handle」にはハンドルの値を格納しています。変数「p_gain」は比例ゲインといって、比例制御の計算に使うための係数です。この値でトレースの度合いを設定することができます。 変数「black」に黒と判定するしきい値(30)を格納しています。 十字路を見つけたら、少し(5.6cm)だけ余分に前進してから停止します。 「turn」はその場せん回をするマイブロックです。 変数「degree」には、せん回する角度を格納します。
出来上がったロボットをオーバルコースに置いてプログラムを実行してみました。十字路が見つからないので、果てしなくライントレースを続けます。
ただし、今回作成したライントレースの処理はまだ改良の余地があります。次回には詳しく紹介したいと思います。
今回作成したプログラム(SPIKEアプリ3用)
当ブログの内容は、弊社製品の活用に関する参考情報として提供しております。
記載されている情報は、正確性や動作を保証するものではありません。皆さまの創意工夫やアイデアの一助となれば幸いです。