ArduPilot — RC Input and Output

RC输入是任何自动驾驶仪的关键部分,给予机身的先导控制,允许它们改变模式,并给予它们控制辅助设备,例如摄像机支架。

ArduPilot支持多种不同类型的RC输入,具体取决于硬件类型:

  • PPMSum - on PX4, Pixhawk, Linux and APM2
  • SBUS - on PX4, Pixhawk and Linux
  • Spektrum/DSM - on PX4, Pixhawk and Linux
  • PWM - on APM1 and APM2
  • RC Override (MAVLink) - all boards

可用通道的数量取决于特定板的硬件。注意,sbu和spektrum/dsm是串行协议。sbus是100k波特的反向uart协议,spektrum/dsm是115200波特的uart协议。有些电路板使用硬件uart(如在px4上)实现这些,有些电路板将它们在软件上实现为uart(在linux上)。

RC输出是ArduPilot控制伺服和马达的方式。可用输出通道的数量取决于电路板的类型,甚至可以取决于车辆类型和配置参数。rc输出默认为50赫兹的pwm值,但可以配置为一个广泛的更新率。例如,直升机代码设置其电机输出,以更高的速率驱动ESC——通常超过400Hz。

AP_HAL RCInput object

首先要理解的对象是ap_hal rcinput对象,它可以作为hal.rcin使用。它提供对当前在板上接收到的信道值的最底层的访问。返回值是以微秒为单位的脉宽调制值。

在libraries/ap_hal/examples/rcinput/rcinput.cpp目录下,然后在板上试试。试着移动遥控器上的手柄,检查输出值是否正确变化。

AP_HAL RCOutput object

ap_hal rcoutput对象(可用作hal.rcout)提供对所有输出通道最底层的控制。如何实现这一点是非常具体的电路板,可能涉及对片上定时器或i2c外设的编程,或通过协处理器(如px4io微控制器)输出。

在libraries/ap-hal/examples/rcoutput/rcoutput.cpp目录下。会发现它只是设置了所有的通道,在几秒钟内将伺服系统从最小值转换到最大值。连接一些伺服到你的电机,然后测试,以确保它工作。

The RC_Channel object

上面讨论的hal.rcin和hal.rcout对象是低层函数。在ArduPilot中处理RC输入和输出的常用方法是通过一个称为RC_Channel的更高级别对象。该对象具有用于每个信道的最小/最大/中位的用户可配置参数,以及辅助信道功能的支持、输入和输出的缩放以及许多其他特征。

在libraries/rc_channel/examples/rc_channel/rc_channel.cpp目录。该示例演示如何设置rc通道、读取输入并将输入复制到输出值。在你的电路板上运行这个程序,检查传送器的输入是否通过伺服系统。尝试将其更改为反转通道,并更改通道上的最小/最大/中位。通过rc_channel.h查看有哪些api函数可用。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值