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 MAVProxy

MAVProxy是一个纯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仿真相关推荐

  1. Ardupilot 软件在环SITL仿真学习

    目录 文章目录 目录 摘要 1.配置SITL功能 2.SITL指令学习 1.如何起飞 2.如何上锁 3.如何降落 4.如何修改模式 5.如何修改遥控器输入 6.如何修改参数 摘要 本文主要学习Ardu ...

  2. APM无人机软件在环仿真环境搭建

    题记:最近做毕业设计得用到无人机仿真,重操旧业,搞一搞SITL仿真. 给个传送门参考:无人机SITL仿真 APM软件在环仿真 我的环境:ubuntu18.04虚拟机 1.官方教程 ardupilot官 ...

  3. 仿真软件GCKontorl之软件在环(SiL)仿真

    摘要:软件在环SiL(Software in the Loop)仿真,是将仿真工程中的某些仿真模型或控制策略,采用写手代码替代,完成软件在环(SiL)的仿真测试及验证.特别是C语言在嵌入式系统有广泛应 ...

  4. 搭建windows下无人机软件在环仿真(SITL)仿真环境,无需任何无人机、飞控硬件,学习无人机通讯等知识

    SITL环境配置方法 APM飞控官网提供的SITL(software in the loop)软件在环仿真 官网地址 通过该虚拟仿真环境可学习地面站操作.Mavlink通信协议等知识. 参照此方法可构 ...

  5. 在环仿真有两种,一种是软件在环仿真SITL,还有一种是硬件在环仿真HITL。

    在环仿真有两种,一种是软件在环仿真SITL,还有一种是硬件在环仿真HITL.S就是soft  H应该就是hardware,硬件在环应该就是真实的pixhawk. https://blog.csdn.n ...

  6. APM飞控SITL仿真环境 修改初始地理位置

    APM飞控SITL仿真环境 初始化设置 最近在sitl仿真时遇到了一个问题,默认情况下仿真飞机的初始位置位于南半球,而使用的国内卫星地图大多不提供中国以外地区的卫星地图,所以希望设置仿真飞机的初始位置 ...

  7. Pixhawk无人机-ArduPilot 软件SITL仿真模拟飞行(SITL+MAVProxy)

    1 引言 本人是先看了多个博客实现了:在ubuntu下建立完整的ardupilot开发环境. 该文是基于搭建完编译环境后,也就是搭建好ardupilot的仿真环境实现的. 在文章: <Pixha ...

  8. 自动驾驶仿真(六)—— SIL软件在环仿真测试

    自动驾驶仿真六-- SIL软件在环仿真测试 1. 在环仿真测试 2. SIL软件在环仿真测试 2.1 模型配置参数 2.2 S function生成实现 2.3 结果对比 3. 参考学习的书目教材 博 ...

  9. 基于Carsim和Simulink的SIL软件在环仿真验证

    基于Carsim和Simulink的路径跟踪控制算法的SIL软件在环测试验证 路径跟踪控制算法 选择前面文章五次多项式作为换道路径,联合仿真软件Carsim2016&matlab2022a,搭 ...

最新文章

  1. 2015年二级c语言真题及答案,2015年计算机二级C语言测试题及答案(4)
  2. python教程实例-python 类和实例 - 刘江的python教程
  3. 2021-04-28 Python可视化图表生成-Matplotlib绘图
  4. 谈论linux同组多用户操作问题
  5. selenium 解析网页_用Selenium进行网页搜刮
  6. 【转】[技术回顾系列]--WebService事务处理
  7. 哥哥被我打哭了的飞鸽传书
  8. python的变量在使用之前是否要进行声明_python – 如何在使用之前测试变量是否已初始化?...
  9. Hadoop生态圈介绍
  10. 与孩子一起学编程python_《与孩子一起学编程》python自测题
  11. IE无法浏览网页的常见原因及解决方法(转)
  12. 在互联网寒冬,程序员能够做什么?
  13. IT经理人:提高团队工作效率的11个方法
  14. nyoj 54-小明的存钱计划
  15. IFD6500_USB转串口驱动
  16. 跑步听歌用什么耳机好?适合跑步专用的耳机推荐
  17. 人物渲染篇(一) —— 基础卡通渲染 上
  18. Git学习--分支(branch、merge、rebase)
  19. Java实现校园商城后台管理系统
  20. python五子棋ai棋力最高_Python实现AI五子棋

热门文章

  1. 四极定子外充、测试夹具的设计
  2. 中国超声波焊接机行业市场现状动态及投资潜力分析报告2022-2028年
  3. SSM jsp页面发送数据到servlet报400错误
  4. 2020 物联网架构成长之路-物联网架构小结
  5. python合并多个excel代码_python如何实现excel多表合并(附代码)
  6. 火狐浏览器划词翻译设置操作
  7. Android6.0 APN
  8. MaxCompute SQL的SELECT语法
  9. 加拿大移民局将采用以客户为中心的服务方法
  10. 【敏捷管理】迭代计划会(表)应该包含什么内容