マルチで宇宙開拓/低重力下でのローバー

Last-modified: 2015-02-06 (金) 22:46:19

低重力下でローバーを操縦するのは難しいといわれます。

私が作ったローバーも加速しようとして跳ねたり、

acc.gif

旋回しようとして跳ねたりしました。

rot.gif

原因

車輪が地面を後ろに押すと、車体を前に進める力と、ピッチアップするトルクが生まれます。

force.png

KSPではロケットエンジンの推力制御には、非常にリッチな手段が用意されています。スロットルは徐々に開け閉めができ、操作しなければ一定の開度を維持します。これにより加速度を一定に保つことができます。また全開と全閉を1キーで実行できるようになっています。
対してローバーの加速については、キーを押した時にON、離した時にOFFという操作方法しか提供されていません。トルク過大であれば跳ね、過小であれば坂を上れなくなります。
この問題についていくつかの方法でアプローチしました。

MechJeb

MechJebのRover Autopilotは、進路の維持、速度の維持、指定したway pointをたどるなどの機能を持ちます。

roverautopilot.png

しかし私の希望するようには操縦してくれませんでした。10m/sまで2分くらいかけてゆっくり加速し、また2分くらいかけてゆっくり停止して欲しかったのです。

そこで設定を変えてみました。このような画面が用意されているということは、状況に合わせて適切に設定する必要があるのでしょう。

mechjeb_setting.png
  • Speed PID Pを下げる: 効きませんでした。IとDも下げなきゃダメでしょうか?
  • Limit Accelerationをチェックする: これをチェックすると現在速度+0.5m/sを目標に制御するようになります。私の希望よりも加速が大きすぎました。また現在速度<指定速度なのにMechJebがTarget Speedを下げるためローバーがつんのめるという現象が何度も起きました。
  • Safe turnspeedを下げる: ある程度有効でした。進路の維持をMechJebに任せ、人間が速度制御をするという方法で安定走行できました。

モーターの調整

トルクが過大な場面では、車輪のいくつかをDisable Motorすると調整できます。加速する時は最後列の車輪を、減速する時は前列をdisableすると効果的です。

disable_motor.png

ジョイスティック

加減速とステアリングを緩やかに操作できればよいので、ジョイスティック(Saitek X52 Pro)を設定しました。最初はスティックのY軸を加減速に割り当てたのですが、一定速度で走行するためにスロットルで制御するよう変えました。

joystick.png

Minmusの場合、加減速 0.1m/s^2、旋回 1度/sに制限することで安定走行できています。最高速度は10m/s出しても問題ありません。