本文章描述jmavsim和gazebo两种仿真器的使用
仿真器可以让PX4飞行控制程序在仿真的“世界”中控制一架计算机模拟的飞行器。您可以使用QGroundControl地面站程序、API或遥控器与该飞行器进行交互,就像与真实飞行器进行交互一样。
软件仿真是指PX4飞行控制程序运行在宿主机中,我们这里使用的宿主机是一台安装了ubuntu server的thinkpad笔记本计算机,PX4飞行控制程序安装在宿主机中。
硬件仿真是指PX4飞行控制程序运行在真实飞控计算机中,我们这里使用的是一个安装了PX4飞行控制程序的pixhawk飞控计算机中。
运行环境版本说明:
硬件:赫星公司pixhawk 2.1 cube black
软件:QGroundControl地面站 : 2021-02-23 daily version
PX4固件:1.11.3
操作系统:ubuntu server 20.0.04.2 LTS
1. jmavsim仿真器
参考文档:https://docs.px4.io/master/en/simulation/jmavsim.html
1.1 jmavsim软件仿真(SITL)
步骤:
1.1.1. 从px4网站下载 PX4_Autopilot源代码
1.1.2. 进入PX4-Autopilot目录
1.1.3. 执行命令
make px4_sitl_default jmavsim
px4源码和jmavsim plugin相应源码被编译,之后出现飞机以及飞行环境的界面
1.1.4. 在pxh命令行界面输入命令:commander takeoff,此时可以看到飞机起飞
1.1.5. 启动QGroundcontrol地面站程序,用这个程序可以观察飞行路线,也可用虚拟遥控器操作飞机,还可以规划飞行任务让飞机执行飞行任务。
1.2. jmavsim硬件仿真(HITL)
步骤
1. 2.1 启动QGroundControl地面站软件
1.2.2 在Vechicle Setup的safty功能中的Hardware in the loop Simulation中选择HITL enabled
1.2.3 在Vechicle Setup的Aireframe中挑选“HIL QuadCopter X”机架,点击apply按钮。
注意:飞控重新启动后,出现提示Parameters are missing from firmware. You may be running a version of firmware which is not fully supported or your firmware has a bug in it. Missing params: 1:BAT_V_CHARGED, 1:BAT_N_CELLS, 1:BAT_V_EMPTY
这个提示是说系统的几个参数没有了,主要指电池部分,事实上,uavcan的参数也丢失了。后面需要用missionplanner恢复。这是pixhawk 2.1特有的缺陷。
1.2.4 在Application Settings中的General中的AutoConnect to the following devices, uncheck 所有选框,留下“udp”。
1.2.5 关闭QGroundControl
1.2.6 拔下飞控usb线
1.2.7 插上飞控usb线,等待飞控启动好。
1.2.8 进入PX4-Autopilot目录,运行命令
./Tools/jmavsim_run.sh -q -s -d /dev/ttyACM0 -b 921600 -r 250
仿真GUI界面就启动了。
1.2.9 启动QGroundControl
jmavsim仿真器将与QGroundControl和px4自动连接。
1.2.10.用遥控器解锁飞机,推油门起飞。
注意:在设置为HITL后,QGroundControl提示,丢失电源参数(三个参数),需要校验传感器等信息。不用搭理,为了恢复这些丢失的参数,可参考pixhawk 2.1的说明书(赫星公司)。
2. gazebo仿真器
参考文档:https://docs.px4.io/master/en/simulation/gazebo.html
gazebo 9,这是px4官网指定的gazebo版本,因为目前的PX4固件源代码中仅打包了gazebo 9的相应代码,gazebo 9需要自行安装。
gazebo9的安装步骤:
安装gazebo9和开发库,都是二进制。
首先安装gazebo9-common
sudo apt-get install gazebo9-common
然后
sudo apt-get install gazebo9
然后
sudo apt-get install libgazebo9-dev
2.1 gazebo软件仿真(SITL)
步骤:
2.1.1 从px4网站下载 PX4_Autopilot源代码
2.1.2 进入PX4-Autopilot目录
2.1.3 执行命令
make px4_sitl gazebo
px4源码和相应的gazebo plugin源码被编译,之后会出现飞机以及飞行环境的界面
2.1.4 在pxh命令行界面输入命令:commander takeoff
此时可以看到飞机起飞
2.1.5 启动QGroundcontrol地面站程序,用这个程序可以观察飞行路线,也可用虚拟遥控器操作飞机,还可以规划飞行任务让飞机执行飞行任务。
2.1.6 可以更换飞机的飞行背景
比如:make px4_sitl gazebo_iris__warehouse
注意:iris与warehouse之间是2个下划线,其中iris在gazebo中代表四轴飞机,warehouse代表背景。
2.2. gazebo硬件仿真(HITL)
步骤:
2.2.1 启动QGroundControl地面站软件
2.2.2 在Vechicle Setup的safety功能中的Hardware in the loop Simulation中选择HITL enabled
2.2.3 在Vechicle Setup的Aireframe中挑选“HIL QuadCopter X”机架,点击apply按钮。
注意:飞控重新启动后,出现提示Parameters are missing from firmware. You may be running a version of firmware which is not fully supported or your firmware has a bug in it. Missing params: 1:BAT_V_CHARGED, 1:BAT_N_CELLS, 1:BAT_V_EMPTY
这个提示是说系统的几个参数没有了,主要指电池部分,事实上,uavcan的参数也丢失了。在完成硬件仿真后需要用missionplanner恢复。这是uavcan参数丢失是pixhawk 2.1特有的缺陷。
2.2.4 在Application Settings中的General中的AutoConnect to the following devices, uncheck 所有选框,留下“udp”。
2.2.5 关闭QGroundControl
2.2.6 拔下飞控usb线
2.2.7 插上飞控usb线,等待飞控启动好。
2.2.8 编译gazebo plugin
进入PX4-Autopilot目录,执行命令
DONT_RUN=1 make px4_sitl_default gazebo
2.2.9 按官网修改gazebo plugin的xml配置文件
打开四轴飞机的sdf 文件 Tools/sitl_gazebo/models/iris_hitl/iris_hitl.sdf. 如果必要,将serialDevice 更换为/dev/ttyACM0
2.2.10 设置环境变量,执行命令
source Tools/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default
2.2.11 运行gazebo
gazebo Tools/sitl_gazebo/worlds/hitl_iris.world
2.2.12 启动QGroundControl
gazebo仿真器将与QGroundControl和px4自动连接。
2.2.13 用遥控器解锁飞机,推油门起飞。
注意:在设置为HITL后,启动QGroundControl后提示,丢失电源参数(三个参数),需要校验传感器等信息,不用搭理。恢复丢失的uavcan参数可参考pixhawk 2.1的说明书(赫星公司)。