この連載では「レゴ エデュケーションSPIKEプライム(以下、SPIKE)」を使ってロボコンに挑戦するために必要な技術要素を紹介しています。 今回は距離制御を応用したライントレースについて紹介します。
事前に距離制御について紹介している こちら の記事をご覧になっていると理解しやすい内容となっています。
はじめに簡易的な車体を用意します。(ここではSPIKEプライム ラージハブを地面と水平になるように組み立ててください。)
本記事内の画像はクリックすることで拡大表示できます。
車体に使用しているハードウェア
・SPIIKEプライム ラージハブ
・Mモーター×2(E、Fポート)
・カラーセンサー(Bポート)
左図のプログラムは赤色を見つけるまで黒線に沿って走り続けるというプログラムです。実際に動かしてみて動きを確認してみましょう。
このプログラムは赤色を見つけたら止まるという、ライントレースのゴールを設定していますが、コースに必ず赤色の線や赤色の障害物が用意されているとは限りません。 こういった目印がない場合にどうやったらライントレースを止めることができるか考えてみましょう。
今回はモーターの回転数(回転角度)を使って走行する距離を決めてライントレースをさせてみます。
まずどうやって距離を決めるか考えてみましょう。
ロボットが直進するときは、タイヤの回転数(回転角度)をそのまま計算すればよいですが、曲がって進む時は、曲がる向きの内側のタイヤと外側のタイヤで進む距離が違います。 ロボットは2つのタイヤの中心を進むと考えると、内側と外側のタイヤが進んだ距離の平均値で進んだ距離が分かります。 (直進の回転角度の考え方は こちら の記事を参照)
以下の計算でロボットが進む距離を算出できます。
進んだ距離=タイヤの直径×3.14×(内側のタイヤの回転数+外側のタイヤの回転数)÷2
進んだ距離を計算するプログラムは次のように作ってみましょう。計算方法は 進んだ距離=17.5(タイヤの円周)×(内側タイヤの回転角度+外側タイヤの回転角度)÷720(角度で計算して平均する) 左図の①~④に沿って作成します。
①タイヤの回転角度(相対位置)の絶対値を作る
※組立によっては左右のタイヤの回転の向きが逆なので絶対値で計算しましょう
②タイヤの回転角度(相対位置)を足す
③タイヤの平均回転数を計算する
(角度を回転数に変換→360で割る、平均値をとる→2で割る、つまり回転角度の絶対値の和を720で割る)
④移動距離を計算する(タイヤの平均回転数に1回転で進む距離をかける)
作成した進んだ距離を計算するブロックをライントレースするプログラムに組み込んでみましょう。
左図では30cmライントレースするプログラムを作成しています。
モーターがどれだけ回ったかの値(相対位置)を取得するので、走り始めにはかならず角度を初期化させて0度から計測をスタートさせるようにしましょう。 作成した計算プログラムの結果と「~~まで繰り返す」を組み合わせることで30cmを超えるまでライントレースを繰り返すプログラムとして実現しています。
協力:株式会社PFU