APM(Ardupilot)——遥控器RC input

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

我们使用遥控器控制飞行器,每一路信号通过一路信道,在Ardupilot中信道与功能分配为:**在这里插入图片描述

遥控器输入初始化

在这里插入图片描述
注册遥控器、传感器。
图表 1system.cpp/init_ardupilot
遥控器输入初始化。

在这里插入图片描述在这里插入图片描述
横滚通道:[-4500,4500] ;
俯仰通道:[-4500,4500] ;
偏航通道:[-4500,4500] ;
油门通道:[0,1000] ;
其他外部通道值:0-1000

信道读取

图表 2copter.cpp/rc_loop()
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我们在参数列表中发现:
图表 3RC_Channel.cpp
我们回到read_radio(),看下set_radio_passthrough()这个函数的实现过程。
在这里插入图片描述
在这里插入图片描述
上面函数就是传递数据到电机库,参与PID运算,进而控制无人机 。

另外此处涉及其他信道,比如5信道设置模式的信道。

void Copter::read_control_switch()

在这里插入图片描述
显而易见直接获取信号值,最后一个函数设置mode
在这里插入图片描述
这里调用了SETMODE(),mode的切换退出在这个函数下实现。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值