pixhawk自学笔记之px4遥控信号部分

rc信号由src/drivers/px4io/px4io.cpp发布,频率是50HZ。(由宏定义IO_POLL_INTERVAL限制)

我们追踪这个字段会发现,对电调的PWM的输出也是限制在这个值。

我们发现

rc_input_values	rc_val;
rc的载体是这个结构体。

我们在sensors.cpp中的rc_poll()(这个函数用来收集和发布RC信号)函数中发现它的运作流程。

在这个函数里面我们会判断signal_lost和rc_failsafe,但是无论信号的质量怎么样,rc_channels主题总是会被公布的。

而且本信息存放在归一化的通道数值,限制在-1---1之间。

pixhawk自学笔记之px4遥控信号部分_第1张图片


pixhawk自学笔记之px4遥控信号部分_第2张图片

从这段代码加注释中我们可以知道,去除死区后上下半截各自归一化。死区内则为0。

如果信号正常,会广播struct manual_control_setpoints_s为载体的manual_control_setpoint。还会复制到actuatou_controls_3中。


在mavlink模块中存在两种RC包,分别为RC_CHANNELS_RAW以及RC_CHANNELS.

在RC_CHANNELS_RAW中,消息载体是mavlink_rc_channels_raw_t,我们发现这个结构体只能装8路信号,然后有一位port用来指示这8路走哪个端口。当我们遇到大于8路信号的遥控器就要用port来复用指示低8路,中8路或者高8路。


其实RC_CHANNELS_RAW基本不会用到,发送频率又跟RC_CHANNELS绑定,可以尝试注释掉。










你可能感兴趣的:(RC,Pixhawk)