Kerloud飞控系列教程(18): PX4飞控开发基础 之硬件 在环仿真
原创:DASA论坛Kerloud飞控版块,https://discourse.cloudkernel.cn
1. 什么是硬件在环仿真
硬件在环仿真(Hardware-in-the-Loop Simulation,简称HIL Simulation)是一种用于测试和验证实时控制系统的方法。在HIL仿真中,系统的控制器(通常是嵌入式系统)被连接到仿真环境中,该环境模拟了系统的物理部分。这些物理部分通常是实际硬件,例如电机、传感器、执行器等。
HIL仿真的基本原理是将实际的控制器硬件与仿真环境相结合,以模拟系统的实际运行情况。控制器接收来自仿真环境的传感器数据,并根据仿真环境中的模型进行计算和控制。然后,控制器的输出被发送回仿真环境中,影响模拟系统的行为。
2. 怎样在PX4中实现HIL仿真
在PX4中使用HIL仿真可以实现Kerloud mini飞控对仿真无人机的自动控制效果,也可以通过遥控器手动控制仿真无人机,我们只讨论针对gazebo引擎的操作方法。
官方针对v1.10版本固件的HIL仿真说明参考:
https://dev.px4.io/v1.10_noredirect/en/simulation/hitl.html
简要而言,有几个步骤:
-
在地面站中使能HITL仿真,对应参数SYS_HITL
-
选择支持HIL的airframe类型,比如HIL quadrotor+
-
关闭UDP的自动连接
-
使用RC遥控器,完成RC校准
-
在Kerloud mini飞控支持的代码中将四旋翼模型的HIL串口通信打开,设置通信端口
首先执行sitl编译,生成iris sdf模型,
cd <Firmware_clone>
DONT_RUN=1 make px4_sitl_default gazebo
位于Tools/sitl_gazebo/models/iris/iris.sdf:
然后执行仿真指令:
source Tools/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default
gazebo Tools/sitl_gazebo/worlds/iris.world
3. HIL仿真的机理
HIL仿真的信号示意图参见上图,这里我们从代码层面说明下硬件在环仿真的相关软件实现:
(1)对于启动脚本rcs (ROMFS/px4fmu_common), 查看HIL对应部分,
if param greater SYS_HITL 0
then
set OUTPUT_MODE hil
sensors start -h
commander start -h
# disable GPS
param set GPS_1_CONFIG 0
# start the simulator in hardware if needed
if param compare SYS_HITL 2
then
sih start
fi
其中 SYS_HITL是我们在地面站里使能HIL的参数。对于OUTPUT_MODE为hil的情况,继续搜索启动脚本在rc.interface可以发现,会启动pwm_out_sim模块,该模块位于src/drivers/pwm_out_sim中,用于更新驱动器输出信号在混控器mixer的输出值(即actuator_output uorb 话题)
(2)我们查看src/modules/mavlink模块,在mavlink_message.cpp中可以看到在HIL模式下,飞控会向上位机发送HIL驱动器控制信号,对应class为MavlinkStreamHILActuatorControls。
(3)同时,在mavlink_receiver.cpp中,我们可以查看飞控接受仿真引擎HIL传感器等信号的函数,如handle_message_hil_sensor()等,由此实现了信号的闭环。
(4)在gazebo引擎中,针对mavlink通信部分的插件代码位于gazebo_mavlink_interface中,该插件用于gazebo和飞控之间的通信解析。
小伙伴们,这下你们清楚了硬件在环仿真的原理了吧,试着用Kerloud飞控玩玩吧。
回到教程目录:Kerloud飞控系列教程(1):目录