2022年8月9日
SPIKE P制御を使ったライントレース
ロボコンの競技ではロボットがフィールド内を移動するために、ライントレース制御を行い地面に用意されている線に沿って走行することが多いです。ロボコン競技の順位付けとして、課題をこなして得られるポイントと、最終的にゴールしたタイムに応じて得られるポイントで順位が決定されるためロボットの移動は成績に大きく関わることになります。
そこで今回は、ライントレースをより滑らかかつ、確実に行うためにP制御という方法を取り入れてロボットを制御してみます。
はじめに簡易的な車体を用意します。(ここではSPIKEプライム ラージハブを地面と水平になるように組み立ててください。)
車体に使用しているハードウェア
- SPIKEプライム ラージハブ
- Mモーター×2(E、Fポート)
- カラーセンサー(Bポート)
◆P制御とは
SPIKEでのライントレースは、カラーセンサーを使って反射光の強さを読み取ることで黒線と白い地面を判別して、黒線に沿って走行するのが通常です。
簡単な制御として、黒を読み取っている時は右、白を読み取っている時は左に走行するというようにジグザグなライントレースを実現することは簡単ですが、その分遅かったり、コースアウトしてしまう可能性もあります。
そこで、ジグザグなライントレースを滑らか&確実にするためにP制御(比例制御、Proportional Controller)を取り入れてみます。
P制御は、ある「目標の値」と「現在の値」の”差”を調べて、その”差”に応じた制御を行います。
例えば、100メートル走の目標タイムを20秒とすると…
目標の値からどれだけ離れているかに比例して行動を変化させます。 この考えをライントレースに組み込んでいきます。
◆ライントレースでのP制御
ライントレースでのP制御は次のように考えます。
ライントレースで使うカラーセンサー(反射光モード)の値は下図のように「読み取り範囲内の反射光の平均値」となります。
ライントレースを行う際はラインの端付近を目標にして、その目標の値に近づくようにロボットを制御します。
例えば、反射光の目標値が55%だった場合・・・
35%(黒が多い)だったら、差が20なので小さく右に進む
◆SPIKEアプリでプログラミングします
「P制御」のライントレースプログラムを作ってみましょう。
◆プログラムについて
曲がる方向を計算で決めています。
( 目標値 – センサーの反射光の値 ) * 係数
今回の場合は、目標値(55%)からセンサーの反射光の値を引いた値(+なら右曲がり、-なら左曲がり)に係数(曲がる強さを調整する値)を掛けた方向にロボットが動きます。
計算した数値が大きければ大きく曲がって、小さければ小さく曲がる、これを繰り返して少しずつ目標値に近づいていくとより滑らかに真っすぐ進むようになります。
以下でもSPIKEプライムを使ったロボコン競技に役立つ技術情報を公開しています。ぜひチェックしてみてください。
ロボジョイURL:http://www.robojoy-club.com/challenge.php
協力:株式会社PFU
※2022/6/9 最新バージョン(2.0.6)のSPIKEアプリに基づく情報です。
※これらの仕様はアプリのアップデートによって変更される場合があります。
(2022/6/9 現在)