本文的目的是将SITL仿真结合Missionplanner地面站,之后再探索SITL仿真结合QGC地面站。
Pixhawk无人机扩展教程(7)—SITL+MP/QGC运行教程中指出,QGC地面站是安装在与SITL仿真软件一起的笔记本电脑上的,而MP地面站是安装在另外一台笔记本电脑上的。因此要注意连接IP地址的区别。
一、SITL和MP地面站的连接
1.不同IP地址时,连接SITL和MP地面站
当SITL仿真软件是在虚拟机的Ubuntu系统中,MP地面站在主机windows系统中,两个不同的IP地址,需要通过output语句列出MAVProxy转发数据的接口
MANUAL> output
MANUAL> 2 outputs
0: 127.0.0.1:14550
1: 127.0.0.1:14551
2.同一IP地址时,连接SITL和MP地面站
如果Mission Planner与MAVProxy在同一台机器上可以直接通过UDP直接连接,也就是SITL仿真软件和Missionplanner地面站都在虚拟机的Ubuntu系统中,仿照教程Ubuntu下MissionPlanner的安装,安装mono,就可以运行MissionPlanner的.exe的可执行文件了。
参考链接:
对于ubuntu 18.04 , 使用官方给出的命令如下:
sudo apt install gnupg ca-certificates
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt update
最后安装mono即可,一般来说,大家安装 mono-complete就好
sudo apt install mono-devel
之后下载并使用MissionPlanner,我没有创建快捷脚本,每次打开 MissionPlanner-1.3.74的文件夹,开启终端terminal,在终端运行指令:
mono MissionPlanner.exe
即可打开mp地面站,然后再启动无人机模拟器:
1、首先要进入需要仿真的多旋翼无人机的目录下:
cd ardupilot/ArduCopter
2.可以启动模拟器了:
sim_vehicle.py --console --map
3、MP地面站选择UDP连接方式,其就会自动连接上模拟器。
二、使用MP地面站控制ArduPilot 在SITL上运行
1、直接使用 Mission Planner模拟飞行
我看了很多博客写这个能直接使用地面站设置航点然后控制SITL自主飞行,简单尝试一个计划起飞,循迹,降落。 比如博客:
- ArduPilot飞控之Mission Planner模拟
- ArduPilot飞控之Mission Planner模拟
- MissionPlanner入门教程-航点规划-模拟器
未实现-遇到的问题:
里面步骤和操作视频都有,操作视频使用的mp地面站好像是英语版的,笔者没有实现成功,我遇到的问题是解锁后飞不起来,又重新上锁了,不知道为什么,等我实现后再把这个博客更新一下。
操作步骤:
- 设置Home位置
- 建立waypoints(默认飞机高度100米,请根据实际情况调整)
- 设置RTH点位
- 设置起飞模式Guided/Stablized
- 解锁飞机 起飞
- 设置自动循迹
- 观察飞机循迹飞行情况
注:这里因为是模拟,所以没有做过多参数约束的介绍。反正模拟环境不会对任何东西造成危险和损害。但是如果实际飞行需要注意飞行高度和空间障碍物的规避,以及地面人员财产安全问题。
官方视频:
Mission Planner SITL Demo
- https://www.youtube.com/watch?v=XY2mnqYl9a0
- https://www.bilibili.com/video/BV1Uv4y157Xr/?spm_id_from=888.80997.embed_other.whitelist&vd_source=53b1ba83bdd252b2d49cb1ce4e368d5b
2、使用 Mission Planner设置航点路线,在MAVProxy的控制终端输入指令,控制无人机起飞。
1)在 Mission Planner中设置航点路线
为了后续加载好用,把该航点线路保存下来,保存为planA.waypoints航点文件。
打开内容如下图。
2)再打开一个终端窗口,快捷键:Ctrl+Alt+T,在这个终端里启动仿真:
cd ardupilot/ArduCopter
sim_vehicle.py --console --map
就可以出现仿真界面了:我们可以在终端输入相应的指令来控制飞机,然后再console和map里观察飞机的飞行状况
在MAVProxy的控制终端输入指令,让无人机起飞
输入:
mode guided
arm throttle
takeoff 20
切换飞行:
mode auto
可观察到,自主飞行到第一个点
上述指令解释:首先如果成功启动仿真环境后,若是选择的是旋翼无人机,此时无人机处于STABILIZE(自稳模式),此时只能通过模拟要控制输入的油门、横滚、偏航和俯仰来控制无人机,在此模式下仿真也经常会Crash&&TakeDown,炸机没商量。所以加载飞行计划之后,一般通过mode guided先切换到导引模式,在此模式解锁起飞,然后切换到自动模式完成飞行计划。
STABILIZE > mode guided
GUIDED > arm throttle
GUIDED > takeoff 40
GUIDED > mode auto
开始降落
降落完毕锁定:
也可以在未到达最后一个点的时候,输入指令mode rtl使得RTL无人机自动返航
GUIDED > mode rtl
3、导入航点文件设置航点路线,在MAVProxy的控制终端输入指令,控制无人机起飞。
再打开一个终端窗口,快捷键:Ctrl+Alt+T,在这个终端里启动仿真:
cd ardupilot/ArduCopter
sim_vehicle.py --console --map
启动完成,我们导入刚才保存的航点文件看看运行效果。
wp load ../Tools/autotest/planA.waypoints
导入后,地图上会显示出导入的航点路径
可以再输入:
mode guided
arm throttle
takeoff 20
切换飞行:
mode auto
可观察到,自主飞行到第一个点