mp_potential_ 関数で行う回避運動のパラメータを設定する
mp_potential_settings(maxrot, rotstep, ahead, onspot)
この関数は、mp_potential_ 関数の回避運動パラメータを設定します。mp_potential_ 関数は次のように動作します。
まず障害物が無い場合、目標に向って直進しようとします。そして(ahead)で設定したステップ数分だけ障害物の有無を先読みします。
もしも障害物を発見した場合は、右か左のどちらか最善の方向へ回避する運動に切り替わります。 (ahead)で回避運動を開始するタイミングを設定します。値を小さくすると障害物に近づいてから回避し始めます。回避運動は(rotstep) / (maxrot)により設定します。
(rotstep)で回避運動を実際に行うタイミングを設定します。この間隔を短くすれば小刻みに判定するので回避率が上がりますが、その分処理負荷が高くなります。
(maxrot)で一度に行う進行方向の最大変化量を設定します。これを大きくすると、各回避ステップで進行方向を大きく変化させることが出来るので障害物を回避しやすいですが、本来通るべきパスの精度が悪くなってしまいます。小さく設定すればパスをスムーズにトレースしますが、回避運動の精度が落ち、目標座標までたどり着けなくなるケースも出てくるかもしれません。
(onspot)により、回避運動の有無を指定できます。trueで(maxrot)に応じた回避運動をします。falseなら回避せず静止します。 このアプローチは付近の情報しか見ないので注意してください。付近の情報のみで回避できるのであれば良いですが、迷路のような障害物を通り抜けることは通常失敗します。
mp_potential_settings(45, 5, 5, 0)
上記コードは mp_potential_ 関数で使用する設定となります。5Step先を読んで、1Stepあたり45度方向を転換しつつ、5Stepごとに計算を行います。また障害物に衝突した際には動作を停止します。