第二章第五节——RCInput和Output

飞控开发

RC输入是所有自动驾驶仪的重要组成部分,使机身的先导控制,使他们能够改变模式,也让他们辅助设备的控制,如摄像机云台。
ArduPilot支持取决于主板类型几种不同类型的RC输入:
•PPMSum- 在PX4,Pixhawk,Linux和APM2
•SBUS- 在PX4,Pixhawk和Linux
•Spektrum/ DSM- 在PX4,Pixhawk和Linux
•PWM- 对APM1和APM2
•RC Override(MAVLink)- 所有板卡
可用信道的数量取决于特定板的硬件。需要注意的是SBUS和的Spektrum/ DSM的串行协议。 SBUS是100k波特率倒UART协议,Spektrum/ DSM是115200波特率UART协议。有些主板实现这些使用硬件UART接口(如PX4)和一些实现它们作为位模拟软件的UART(在Linux上)。
RC输出为ArduPilot如何控制伺服系统和电机。可用的输出信道的数量取决于板的类型,甚至可以取决于车辆类型和配置参数。 RC输出默认为50Hz的PWM值,但可以配置为宽的更新速率。例如,ArduCopter代码设置的给电调的PWM频率要高得多- 通常超过400Hz的。
AP_HAL RCInput object
要了解的第一个目标是AP_HAL RCInput object,它可在hal.rcin得到。返回的值是微秒的PWM值。
去看一下libraries/AP_HAL/examples/RCInput/RCInput.pdesketch,在你的飞控板上试验。摇动你的摇杆,观察输出值的变化。
AP_HAL RCOutput object
AP_HAL RCOutput object给出了所有输出通道的低层次控制,它可在hal.rcout得到。具体怎么实现的因板子而异,可能是一个可编程的片上定时器,或者是一个I2C外设,或者通过一个协处理器输出。
去看一下libraries/AP_HAL/examples/RCOutput/RCOutput.pde sketch,你会看到在几秒钟的时间内所有通道的波形从最小值到最大值。连接一些舵机到飞控板进行测试,确保程序有效。
The RC_Channel object
上面讨论的hal.rcin和hal.rcout对象是低级别的功能。在ArduPilot中处理RC输入和输出通常是通过一个高级别的object,叫做RC_Channel。在这个object中,用户可以为每个通道配置参数的最大、最小、修改,用户也可以配置辅助通道的功能。
去看一下libraries/RC_Channel/examples/RC_Channel/RC_Channel.pde. 这个例子演示怎样初始化RC通道,读取输入和复制输入到输出值。在飞控板上运行例子代码,检验输入的变化是否能引起舵机的变化。试着反向一个通道,并且改变通道的最小、最小、修改参数。通过RC_Channel.h看看,看看有什么API函数可用。
在RC_Channel中奇怪的输入/输出设置
如果你仔细看一下RC_Channel,你会发现一些奇怪的事情。很多变量适用于输入侧和输出侧。例如:rc1->radio_trim适用于通道1作为输入,也可以作为输出。
The RC_Channel_aux object
在libraries/RC_Channel里面有一个跟RC_Channel一样重要的类,就是RC_Channel_aux,它是RC_Channel的子类。
RC_Channel_aux是RC_Channel中一种能由用户指定功能的object。
例如:用户要通道6作为云台的横滚。用户需要设置RC6_TUNCTION参数为21,意味着“rudder”。
copter_home_001-900x400.jpg

1 个评论

学习了

要回复文章请先登录注册