本文的目的是将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连接方式,其就会自动连接上模拟器。

基于unity的无人机模拟系统 无人机模拟仿真_基于unity的无人机模拟系统

二、使用MP地面站控制ArduPilot 在SITL上运行

1、直接使用 Mission Planner模拟飞行

我看了很多博客写这个能直接使用地面站设置航点然后控制SITL自主飞行,简单尝试一个计划起飞,循迹,降落。 比如博客:

  • ArduPilot飞控之Mission Planner模拟
  • ArduPilot飞控之Mission Planner模拟
  • MissionPlanner入门教程-航点规划-模拟器

未实现-遇到的问题:
里面步骤和操作视频都有,操作视频使用的mp地面站好像是英语版的,笔者没有实现成功,我遇到的问题是解锁后飞不起来,又重新上锁了,不知道为什么,等我实现后再把这个博客更新一下。

操作步骤:

  1. 设置Home位置
  2. 建立waypoints(默认飞机高度100米,请根据实际情况调整)
  3. 设置RTH点位
  4. 设置起飞模式Guided/Stablized
  5. 解锁飞机 起飞
  6. 设置自动循迹
  7. 观察飞机循迹飞行情况

注:这里因为是模拟,所以没有做过多参数约束的介绍。反正模拟环境不会对任何东西造成危险和损害。但是如果实际飞行需要注意飞行高度和空间障碍物的规避,以及地面人员财产安全问题。

官方视频:
Mission Planner SITL Demo

2、使用 Mission Planner设置航点路线,在MAVProxy的控制终端输入指令,控制无人机起飞。

1)在 Mission Planner中设置航点路线

基于unity的无人机模拟系统 无人机模拟仿真_基于unity的无人机模拟系统_02


为了后续加载好用,把该航点线路保存下来,保存为planA.waypoints航点文件。

基于unity的无人机模拟系统 无人机模拟仿真_基于unity的无人机模拟系统_03


基于unity的无人机模拟系统 无人机模拟仿真_无人机_04


打开内容如下图。

基于unity的无人机模拟系统 无人机模拟仿真_Ubuntu_05

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

基于unity的无人机模拟系统 无人机模拟仿真_IP_06

GUIDED > takeoff 40

基于unity的无人机模拟系统 无人机模拟仿真_基于unity的无人机模拟系统_07

GUIDED > mode auto

基于unity的无人机模拟系统 无人机模拟仿真_IP_08


基于unity的无人机模拟系统 无人机模拟仿真_Ubuntu_09


基于unity的无人机模拟系统 无人机模拟仿真_基于unity的无人机模拟系统_10


开始降落

基于unity的无人机模拟系统 无人机模拟仿真_Ubuntu_11


降落完毕锁定:

基于unity的无人机模拟系统 无人机模拟仿真_Ubuntu_12


也可以在未到达最后一个点的时候,输入指令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

导入后,地图上会显示出导入的航点路径

基于unity的无人机模拟系统 无人机模拟仿真_基于unity的无人机模拟系统_13


可以再输入:

mode  guided
arm throttle
takeoff 20

切换飞行:

mode  auto

可观察到,自主飞行到第一个点