在Linux下设置SITL(Software In The Loop)
2018-01-22 17:44
387 查看
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
git
clone -b Copter-3.2 https://github.com/ArduPilot/ardupilot.git
2、下载一些依赖包
我的飞控程序是跑在ubuntu上的,所以对应的命令是:
[plain] view
plain copy
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、添加一些目录到系统的搜索路径中。
[plain] view
plain copy
export PATH=$PATH:$HOME/ardupilot/Tools/autotest
.~/.bashrc
4、启动PIX SITL(Simulator in the loop)仿真
首先将命令窗口定位到你需要仿真的文件夹,比如我需要仿真Copter程序,则定位到ardupilot/ArduCopter地址。
第一次运行前需要把各项参数都恢复到默认值,以后当参数被改的乱七八糟的时候,也可以用这条命令恢复。(也可以不用)
[plain] view
plain copy
sim_vehicle.sh -w
参数设为默认值后就可以启动仿真程序了
[plain] view
plain copy
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、在启动仿真程序后,在控制台中输入输入
[plain] view
plain copy
output add 192.168.35.128:14550
或者直接在包括在启动选项中:
[plain] view
plain copy
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
<span style="color:#ff0000;">ping 对方机器的IP</span>
Windows系统需要关闭防火墙。
参考:
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
git
clone -b Copter-3.2 https://github.com/ArduPilot/ardupilot.git
2、下载一些依赖包
我的飞控程序是跑在ubuntu上的,所以对应的命令是:
[plain] view
plain copy
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、添加一些目录到系统的搜索路径中。
[plain] view
plain copy
export PATH=$PATH:$HOME/ardupilot/Tools/autotest
.~/.bashrc
4、启动PIX SITL(Simulator in the loop)仿真
首先将命令窗口定位到你需要仿真的文件夹,比如我需要仿真Copter程序,则定位到ardupilot/ArduCopter地址。
第一次运行前需要把各项参数都恢复到默认值,以后当参数被改的乱七八糟的时候,也可以用这条命令恢复。(也可以不用)
[plain] view
plain copy
sim_vehicle.sh -w
参数设为默认值后就可以启动仿真程序了
[plain] view
plain copy
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、在启动仿真程序后,在控制台中输入输入
[plain] view
plain copy
output add 192.168.35.128:14550
或者直接在包括在启动选项中:
[plain] view
plain copy
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
<span style="color:#ff0000;">ping 对方机器的IP</span>
Windows系统需要关闭防火墙。
相关文章推荐
- PX4 Software-In-The-Loop(SITL) Simulation on Gazebo
- find the install path of some software in linux (ubuntu)
- 话说apm的sitl(simulation in the loop)开发环境的搭建
- Find the location of libmysqlclient.so.X file in Linux environments
- Basic Data Structures and Algorithms in the Linux kernel
- The Linux SG_IO ioctl in the 2.6 series
- Linux下 ntp 时间同步服务ntpd 出现 the NTP socket is in use, exiting 解决
- 找出有环链表的起点 find the start point in loop linked list
- Disabling the Laptop TouchPad in Ubuntu Linux
- [GIF] The Phase Property in GIF Loop Coder
- Install Theano in Linux without root authority (sodu)
- some encountered problem and the solve methods when install Matlab in Linux
- Test of Hypothesis(假设检验) Case Study - in the Context of Software Industry
- the diary about awk scp in linux
- Software Testing challenges in the Spiral Lifecycle model
- Linux下 ntp 时间同步服务ntpd 出现 the NTP socket is in use, exiting 解决
- Installing Software in GNU/Linux
- Init Call Mechanism in the Linux Kernel
- How to Use the Dynamic Link Library in C++ Linux (C++调用Delphi写的.so文件)
- 解决Linux下svn问题:The program 'svn' can be found in following packages...