在Linux下设置SITL(Software In The Loop)
PIX飞控本身已经做的很完善了,但是如果要做某些个性化的应用,我们就需要修改其源代码来满足自己的需求。相应的地面站程序也可以自行修改。但是改动过后的代码是不能直接用到飞机上飞的,不然铁定会炸机。所以我们需要在电脑上模拟一个仿真的环境来验证修改后的代码确实有我们所期望的性能。APM的代码中集成了仿真程序,只需要做一些简单的设置就可以方便地搭建出一个运行在电脑上的完全模拟真实飞行的仿真环境。
参考:
ArduPilot官网上的说明:http://dev.ardupilot.com/wiki/simulation-2/sitl-simulator-software-in-the-loop/setting-up-sitl-on-linux/ 和 博客http://blog.****.net/icebrick333/article/details/46723557
windows7下安装VM12虚拟机,Ubuntu16.04(这是我仿真的环境)
一、下载源代码
1、首先需要有ardupilot的源代码,可以到github上下载:https://github.com/diydrones/ardupilot/tree/ArduCopter-3.2.1因为我的飞控板用的PIX2.6,所以飞控程序的最高版本就是Copter3.2,如果是其他的飞控板,需要下载对应版本的飞控程序。(如何在github上面克隆branch和tag文件 和Ubuntu16.04下如何编译 ardupilot )
如果电脑中安装了git,也可以直接使用这个命令从github仓库中克隆源代码:
- git clone -b Copter-3.2 https://github.com/ArduPilot/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 MAVProxy
3、添加一些目录到系统的搜索路径中。
- export PATH=$PATH:$HOME/ardupilot/Tools/autotest //添加环境变量
- ~/.bashrc //让其生效
如果想让其永久生效,可以进行如下操作:
#1、sudo gedit /etc/environment //编辑环境变量文件
#2、在PATH="...."的末尾处添加 :/home/##/ardupilot/Tools/autotest (这是我的位置),其中 :/home/##/ardupilot/Tools/autotest 为你自己需要设置的环境变量路径。
#3、使其立即生效,在终端执行 source /etc/environment 或者重启电脑即可。
/home/wj/bin:/home/wj/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/wj/ardupilot/Tools/autotest:/snap/bin
4、启动PIX SITL(Simulator in the loop)仿真
首先将命令窗口定位到你需要仿真的文件夹,比如我需要仿真Copter程序,则定位到ardupilot/ArduCopter地址。
第一次运行前需要把各项参数都恢复到默认值,以后当参数被改的乱七八糟的时候,也可以用这条命令恢复。(也可以不用)
- sim_vehicle.sh -w
- sim_vehicle.sh --console --map --aircraft test
- 或者sim_vehicle.sh -j4 --map --console
结果如下图所示:
连接Mission planner 地面站
方法:在ubuntu系统中运行Ardupilot仿真程序,在Windows下运行修改过的mission planner ,利用内网将两者连接。
步骤:
1、设置网络环境:
确保运行mission planner的Windows电脑和运行ArduPilot仿真程序的Ubuntu电脑在同一内网环境中。
查找运行Windows电脑的网络IP地址,比如为192.168.35.121
2、在启动仿真程序后,在控制台中输入输入
- output add 192.168.35.128:14550
或者直接在包括在启动选项中:
- sim_vehicle.sh --console --map --aircraft test --out 192.168.3.101:14550
在mission 中连接结果如下:
3.在飞行计划中写入航点如下图所示:
4、在控制台中依次输入如下箭头所示命令:
并保证Alt:9 有变化:
5、选择Auto,点击设置模式便可沿轨迹飞行:也可以修改飞行模式。
6、选择RTL模式便可回到home
PS:
如果觉得设置都正确但是仍然不能相互连通,两台电脑可以试着互相ping:
- <span style="color:#ff0000;">ping 对方机器的IP</span>
Windows系统需要关闭防火墙。