Asteroid Avoidance(小惑星衝突回避装置)とは
Asteroid Avoidance(以下AA)は小惑星を自動で回避しながら、自動で航行するための船の特殊機構である。
EOSのZone 5などは到達するに1時間以上かかるので、この様な機構を作って手放し運転できるようにして楽をしましょう。
作り方
船の例
サンプル画像の宇宙船の様に、船の前面にRangeFinderを配置して前面すべてをカバーする。
RangeFinderSearchLengthは最大の1000にする。
すべてのRangeFinderでRangeFinderDistanceのフィールド名は同じにすること。
RangeFinderDistanceが同じフィールド名のすべてのRangeFinderは、いずれかのRangeFinderで検出された最小値の距離を返す仕様があるのでこれを利用する。
YOLOLサンプル
if :RF then :FcuForward=100 end goto1+:RF*(:RFD<1000)
:FcuBackward=100 :FcuUpDown=100 :FcuForward=0 goto1+:RF*(:RFD<1000)
:RFはRangeFinderのRangeFinderOnState、:RFDはRangeFinderDistanceのフィールド名。
RangeFinderで小惑星を検知していなければFcuForward=100(全速前進)にする。
1行目の末尾でRangeFinderで何かを検知した場合2行目に遷移する。
YOLOLのgotoの処理は括弧がなくとも先に四則演算から処理する仕様なので、
「goto1+:RF*(:RFD<1000)」は「if :RF>0 AND :RFD<1000 then goto 2 end」と同じ意味。
2行目の処理でスロットルをオフにしてFcuBackward(後退スロットル)を全開、:FcuUpDown(垂直上昇)を全開にして回避行動を取る。
2行目の末尾の判定処理でRangeFinderが、小惑星を検知しなくなるまで2行目の処理を継続する。
