tizen.moe

tizen.moe

MissionPlannerのデバッグ用にSimulator環境を用意する

pixhawkが売るほどゴロゴロしてるらしいのですが、何も繋がってないpixhawkよりsimulatorの方が有り難い*1のでSimulator環境を用意します。昔似たようなことをやったような気がするのですが、既に忘却の彼方です。



ardupilotはsimulatorでは無いなぁ多分。。。でも、この資料2日ほど掛けて書いただけあって、見た目だけはキレイ。見た目だけ、は。。。

Windows無理だったのでUbuntu上でDroneをシミュレーションする

Setting up SITL on Windows | Developer

多分出来るはず。

  • MavProxyをインストールする
  • Cygwinをインストール
    • ・・・したくない。MSYS2で頑張る。頑張って無理だったらVMLinuxでやる
    • 無理だった。VMUbuntuでやる

ardupilotをビルドする

$ git clone https://github.com/diydrones/ardupilot
$ cd ardupilot/ArduCopter
$ make sitl -jx

CygwinでもMSYS2でもUbuntuでも↑自体は一緒。-jはCPUのcore数。何故か4って書いてあるがHT付で4x2なら8にすればいいと思う。
多分、初回はsubmoduleをダウンロードしに行くので別の意味で失敗するような気がする。

$ git submodule init
$ git submodule update

とやれば良いのかもしれないが、手順には書いてないので不明。一回目のビルドでNGになってもとりあえずもう一回ビルド掛ければビルド自体は通った模様。

jsbsimをビルド

多分これがSimulator何じゃないかと勝手に思っている。↑はフライト

$ git clone git://github.com/tridge/jsbsim.git
$ cd jsbsim
$ ./autogen.sh
$ make

えーと

$ cp src/JSBSim /usr/local/bin

これは嫌なので、パスきってある ~/binに

$ cp src/JSBSim ~/bin/

とする。

しむれーたー実行

$ cd ~/ardupilot/ArduPlane    <-git cloneしたところから
$ ./sim_vehicle.sh -j4 --map    <-jはCPUのコア数に直したほうが良いと思う

嘘だった

$ echo "export PATH=$PATH:~/ardupilot/Tools/autotest" >> .bashrc
$ . ~/.bashrc
$ cd ~/ardupilot/ArduCopter
$ ./sim_vehicle.sh -j4 --map

1行目のechoと3行目のcdするパスは環境に合わせて書きなおしが必要かも知れません。
これでsim_vehicle.shが

Unloaded module map
APM: Barometer calibration complete
Init Gyro**

Ready to FLY  ublox fence breach
EKF2 IMU1 tilt alignment complete
EKF2 IMU1 yaw alignment complete
EKF2 IMU0 tilt alignment complete
EKF2 IMU0 yaw alignment complete
GPS lock at 0 meters
EKF2 IMU1 Origin Set
EKF2 IMU1 is using GPS
EKF2 IMU0 Origin Set
EKF2 IMU0 is using GPS
Flight battery 100 percent

こんな感じのログを吐いたらとりあえずOKのはず。
じゃないな、↑↑はコンソール画面(Enterとか入力するとSTABILIZEとか出る)で自動的にscreenが開いていて別ウィンドウに

Started model + at -35.363261,149.165230,584,353 at speed 1.0
Starting sketch 'ArduCopter'
Starting SITL input
bind port 5760 for 0
Serial port 0 on TCP port 5760
Waiting for connection ....
bind port 5762 for 2
Serial port 2 on TCP port 5762
bind port 5763 for 3
Serial port 3 on TCP port 5763

と出てる。これの 5762 にMissionPlannerからTCP/IPで接続に行くとなんかそれらしく繋がる。

非接続状態だと出来ないデバッグはこれでやるとよろしい。のだと思う(シラン)

*1:んじゃないかな、と個人的に思うだけな