PX4飞控开发基础:软件在环仿真
图1.使用Kerloud300无人机软件在环仿真的效果
1. 什么是软件在环仿真
软件在环仿真(Software-in-the-Loop, 简称SITL)是一种软件开发和测试技术,用于测试嵌入式系统的软件部分。在SITL模拟中,嵌入式系统的软件在计算机上运行,而不是在实际的硬件上运行。这种模拟技术可以用于各种嵌入式系统,包括无人机、汽车控制系统、工业自动化设备等。
在SITL模拟中,嵌入式系统的软件被编译为在主机计算机上运行的可执行程序,而不是为目标硬件上的特定处理器架构编译。然后,模拟器会模拟目标硬件的行为和特性,包括传感器输入(如GPS、惯性测量单元)和执行器输出(如电机和舵机)。这样,开发人员可以在计算机上运行和调试嵌入式系统的软件,而无需实际的硬件设备。
2. 如何在PX4中实现软件在环仿真
我们这里只介绍使用gazebo引擎实现SITL仿真的方法,因为它在ROS系统中使用得最多。
以px4 v1.10.0代码版本为例,可参考我们维护的版本
https://github.com/cloudkernel-tech/Firmware/tree/master_kerloud_v1.10.0
首先我们需要完成px4开发环境的搭建,参见:Kerloud飞控系列教程(4):为Kerloud飞控搭建PX4开发环境
以默认四旋翼无人机为对象,
cd ~/src/Firmware
make px4_sitl gazebo
以其他机器人为对象的方法:
光流无人机: make px4_sitl gazebo_iris_opt_flow
无人车: make px4_sitl gazebo_rover
固定翼飞机: make px4_sitl gazebo_plane
垂直起降固定翼: make px4_sitl gazebo_standard_vtol
一般情况下,这时机器人会在gazebo引擎中出现,用户启动Qgroundcontrol地面站,即可对机器人进行航路点规划和飞行测试。
3. PX4软件仿真的机理
官方文档的信息参考:https://dev.px4.io/v1.10_noredirect/en/simulation/
这里重点说明下背后的程序逻辑
图2. SITL仿真的信号图
首先,通过make px4_sitl gazebo[_vehicle-model]指令,px4软件将根据posix规范将飞控软件编译成能在ubuntu等宿主系统运行的软件,相应的cmake文件位于:
https://github.com/cloudkernel-tech/Firmware/tree/master_kerloud_v1.10.0/boards/px4/sitl, 用户可以对应查看编译了哪些模块
其中默认支持的机器人种类有:
set(models none shell
if750a iris iris_opt_flow iris_vision iris_rplidar iris_irlock iris_obs_avoid solo typhoon_h480
plane
standard_vtol tailsitter tiltrotor
hippocampus rover)
然后,gazebo相关模型和插件的代码位于Tools/sitl_gazebo文件夹,对应代码位于:https://github.com/cloudkernel-tech/sitl_gazebo/tree/78c54702c6995e11ba0d57da8e5f5ccee871fa25,
其中models为模型文件夹,worlds为世界环境文件夹,src中为插件文件夹。SITL仿真会启动对应的世界环境、模型和插件
之后就是图2中的信号连接了,重点看下simulator_mavlink模块,飞控启动脚本,mavlink模块等,然后就可以看到信号怎样通过udp与gazebo进行通信了。
4. 有趣的问题
看到这里,朋友们,那么怎样添加自己机器人模型到gazebo进行仿真呢?
回到教程目录:Kerloud飞控系列教程(1):目录 - #4