我们使用遥控器控制飞行器,每一路信号通过一路信道,在Ardupilot中信道与功能分配为:**
遥控器输入初始化

注册遥控器、传感器。

遥控器输入初始化。


横滚通道:[-4500,4500] ;
俯仰通道:[-4500,4500] ;
偏航通道:[-4500,4500] ;
油门通道:[0,1000] ;
其他外部通道值:0-1000
信道读取

read_radio()用来读取各个通道的PWM值,并进行角度或范围的转换。read_control_switch根据上一函数读到的PWM值判断开关的位置, 并作进一步处理。
Read_radio()中

跟入read_input()。

我们继续跟踪发现在update中获取各个信道的数据。

pwm_to_range()//将脉宽调制值转换为配置范围内的值
pwm_to_angle()从当前遥控器输入值返回一个角度:“单位是角度的100倍,也就是cm角度”(通常为-4500到4500)

返回radio_trim,而radio_trim我们在参数列表中发现:

我们回到read_radio(),看下set_radio_passthrough()这个函数的实现过程。


上面函数就是传递数据到电机库,参与PID运算,进而控制无人机 。
另外此处涉及其他信道,比如5信道设置模式的信道。
void Copter::read_control_switch()

显而易见直接获取信号值,最后一个函数设置mode。

这里调用了SETMODE(),mode的切换退出在这个函数下实现。

本文介绍了在Ardupilot系统中如何处理遥控器输入,包括遥控器初始化,信道读取以及如何将这些输入转化为对无人机的控制。遥控器的每个信道对应特定功能,如横滚、俯仰、偏航和油门,信道读取后进行转换,用于判断开关位置并处理。信号经过处理后传递给电机库,参与PID运算,实现对无人机的精确控制。
——遥控器RC input&spm=1001.2101.3001.5002&articleId=102744285&d=1&t=3&u=d791d1f189ed4a1aa76e16754bcbdd30)
398

被折叠的 条评论
为什么被折叠?



