PX4遥控器控制量和模式开关的实现
上一篇文章讲到了PX4FMU通过问答的方式从PX4IO获取所需的所有信息。在px4io.cpp文件中的task_main()的任务循环里,可以看到读取和发布IO芯片的函数有: 1、io_get_status()――从IO芯片获取状态信息,并发布safety消息; 2、io_publish_raw_rc()――从IO芯片获取遥控器所有输入通道的原始数据,并发布input_rc信息; 3、io_publish_pwm_outputs()――从IO芯片获取并发布各通道实际输出的PWM值。 本篇将追寻input_rc消息的路线,确定遥控控制量是如何进入飞控的,并确定模式开关的实现原理。 在代码中,直接获取input_rc消息的主要有两个任务。 一个是mavlink_messages,暂且猜测其目的应该是将遥控器原始输入值发送到地面站来实现遥控器校准、通道映射的功能,经过地面站校准之后的信息有从mavlink协议发回给飞控,保存为遥控器相关的参数。 另一个就是sensors,在sensors.cpp文件的主任务循环中调用了Sensors::rc_poll()来获取input_rc消息并处理。 首先判断是否有遥控信号丢失,将判断结果保存在signal_lost中; 然后利用参数中的遥控器校准信息对各通道数值进行修剪,在转化为-1~+1之间的数值传递给_rc.channels[]数组中的对应位置