APM飞控软件在环SITL仿真
? ? APM飛控本身已經做的很完善了,但是如果要做某些個性化的應用,我們就需要修改其源代碼來滿足自己的需求。相應的地面站程序也可以自行修改。但是改動過后的代碼是不能直接用到飛機上飛的,不然鐵定會炸機。所以我們需要在電腦上模擬一個仿真的環境來驗證修改后的代碼確實有我們所期望的性能。APM的代碼中集成了仿真程序,只需要做一些簡單的設置就可以方便地搭建出一個運行在電腦上的完全模擬真實飛行的仿真環境。
? ? 這些步驟主要是參考了ArduPilot官網上的說明:http://dev.ardupilot.com/wiki/simulation-2/sitl-simulator-software-in-the-loop/setting-up-sitl-on-linux/
但是還有一些細節問題如果沒注意到的話,也會讓整個搭建過程不能成功。
一、仿真環境
? ? 1、首先需要有ardupilot的源代碼,可以到github上下載:https://github.com/diydrones/ardupilot/tree/ArduCopter-3.2.1因為我的飛控板用的APM2.8,所以飛控程序的最高版本就是3.2.1,如果是其他的飛控板,需要下載對應版本的飛控程序。
? ? 如果電腦中安裝了git,也可以直接使用這個命令從github倉庫中克隆源代碼:
git clone git://github.com/diydrones/ardupilot.git? ? 2、下載一些依賴包
我的飛控程序是跑在ubuntu上的,所以對應的命令是:
sudo apt-get install python-matplotlib python-serial python-wxgtk2.8 python-lxml sudo apt-get install python-scipy python-opencv ccache gawk git python-pip python-pexpect sudo pip install pymavlink MAVProxyMAVProxy是一個純Python語言寫的地面站程序,非常好用,對于我這種非程序員的業余愛好者,像Mission Planner這種C#寫的地面站,要把源碼讀懂然后修改實在是太復雜。Python相對就簡單很多了,MAVProxy程序量也不大,可以hold住。
? ? 3、添加一些目錄到系統的搜索路徑中。
官網上說的是將目錄添加進.bashrc文件中,但我添加進去后發現不起作用,不知道是哪里出了問題。所以我每次啟動APM仿真前都在命令窗口中手動添加搜索路徑:
export PATH=$PATH:$HOME/ardupilot/Tools/autotest? ? 4、啟動APM SITL(Simulator in the loop)仿真
首先將命令窗口定位到你需要仿真的文件夾,比如我需要仿真Copter程序,則定位到ardupilot/ArduCopter地址。
第一次運行前需要把各項參數都恢復到默認值,以后當參數被改的亂七八糟的時候,也可以用這條命令恢復。
sim_vehicle.sh -w參數設為默認值后就可以啟動仿真程序了 sim_vehicle.sh --console --map --aircraft test
連接MAVProxy地面站
目的:在MAVProxy中添加自定義模塊后,利用仿真環境對其性能進行驗證。
方法:在ubuntu系統中運行Ardupilot仿真程序,在Windows下運行修改過的MAVProxy程序,利用內網將兩者連接。
步驟:
1、下載MAVProxy源代碼:
https://github.com/Dronecode/MAVProxy
2、添加自定義模塊
3、設置網絡環境:
確保運行MAVProxy的Windows電腦和運行ArduPilot仿真程序的Ubuntu電腦在同一內網環境中(兩個電腦的IP地址前兩段相同)。
查找運行MAVProxy的Windows電腦的網絡IP地址,比如為192.168.3.101
在使用
sim_vehicle.sh --console --map --aircraft test啟動仿真程序后,輸入
output add 192.168.3.101:14550或者直接在包括在啟動選項中:
sim_vehicle.sh --console --map --aircraft test --out 192.168.3.101:14550在仿真程序運行過程中可以使用output命令查詢當前的Link狀態
4、修改MAVProxy/MAVProxy/MAVProxyWinLAN.bat 文件
cd ..\ python setup.py build install --user python .\MAVProxy\mavproxy.py --master=192.168.3.101:14550 --console --map pause將其中master后面的IP替換為運行MAVProxy的電腦的IP地址。雙擊MAVProxyWinLAN.bat文件后自動將改動后的代碼build后運行。如果IP設置正確的話,將能夠實現與ubuntu上ArduPilot仿真程序相互通信。
PS:
如果覺得設置都正確但是仍然不能相互連通,兩臺電腦可以試著互相ping:
<span style="color:#ff0000;">ping 對方機器的IP</span>Windows系統需要關閉防火墻。
總結
以上是生活随笔為你收集整理的APM飞控软件在环SITL仿真的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysql备份恢复(xtrabackup
- 下一篇: hihoCoder #1902 字符替换