pixhawkが売るほどゴロゴロしてるらしいのですが、何も繋がってないpixhawkよりsimulatorの方が有り難い*1のでSimulator環境を用意します。昔似たようなことをやったような気がするのですが、既に忘却の彼方です。
ardupilotはsimulatorでは無いなぁ多分。。。でも、この資料2日ほど掛けて書いただけあって、見た目だけはキレイ。見た目だけ、は。。。
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:んじゃないかな、と個人的に思うだけな