在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.csdn.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仓库中克隆源代码:

[plain]  view plain  copy
  1. git clone -b Copter-3.2 https://github.com/ArduPilot/ardupilot.git 

    2、下载一些依赖包

我的飞控程序是跑在ubuntu上的,所以对应的命令是:

[plain]  view plain  copy
  1. sudo apt-get install python-matplotlib python-serial python-wxgtk2.8 python-lxml  
  2. sudo apt-get install python-scipy python-opencv ccache gawk git python-pip python-pexpect  
  3. sudo pip install pymavlink MAVProxy  

 3、添加一些目录到系统的搜索路径中。

[plain]  view plain  copy
  1. export PATH=$PATH:$HOME/ardupilot/Tools/autotest //添加环境变量
  2. ~/.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地址。

第一次运行前需要把各项参数都恢复到默认值,以后当参数被改的乱七八糟的时候,也可以用这条命令恢复。(也可以不用)

[plain]  view plain  copy
  1. sim_vehicle.sh -w  
参数设为默认值后就可以启动仿真程序了
[plain]  view plain  copy
  1. sim_vehicle.sh --console --map --aircraft test  
  2. 或者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、在启动仿真程序后,在控制台中输入输入

[plain]  view plain  copy
  1. output add 192.168.35.128:14550  

或者直接在包括在启动选项中:

[plain]  view plain  copy
  1. 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:

[plain]  view plain  copy
  1. <span style="color:#ff0000;">ping 对方机器的IP</span>  

Windows系统需要关闭防火墙。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值