ArduPilot代码解析之五 — 无线电控制(RC)输入

ArduPilot代码学习--模式切换 引言:ArduPilot代码兼容无人机,无人车,UUV,帆船等多种vehicle,本文以Copter为例,说明代码中是如何完成模式切换的。 各个模式的init 首先定位在系统初始化中,即system.cpp中的 rc().init(); 执行跳转查看函数 init_aux_all(); -->reset_mode_switch(); -->c->reset_mode_switch();–>read_mode_switch(); void RC_Channel::read_mode_s 阅读详情

目的和范围

RC输入系统管理无线电接收机信号,并将其转换为飞行员指令以控制飞行器。该系统处理来自RC接收机的PWM脉冲宽度信号,进行校准和滤波,管理辅助开关功能,并通过MAVLink提供手动控制功能。该系统最多支持16个RC通道,并提供丰富的配置选项。

系统架构

该系统由三个主要层组成:

  1. RC_Channel - 代表一个 RC 输入的独立通道,支持校准、转换和辅助功能
  2. RC_Channels - 单例管理器,协调所有通道、模式切换和系统级操作
  3. 车辆集成- 车辆特定的通道分配和处理(例如copter.channel_roll,,copter.channel_pitch)

核心数据结构

输入处理流程

PWM到控制值转换

RC系统通过多级流水线将原始PWM脉冲(通常为1000-2000微秒)转换为缩放的控制值:

通道更新流程

该RC_Channel::update()方法读取输入并将其转换为控制值:

控制类型转换

支持两种控件类型:

控制类型 用法 输出范围 转换方法
ANGLE 横滚、俯仰、偏航 ±4500摄氏度 pwm_to_angle() 375-378
RANGE 风门 0 到high_in pwm_to_range() 405-408

角度类型转换(带死区和微调):

角度转换会在修剪点周围设置一个死区,并按比例缩放输入:

if (radio_in > trim + deadzone):
    angle = (high_in * (radio_in - trim - deadzone)) / (radio_max - trim - deadzone)
else if (radio_in < trim - deadzone):
    angle = (high_in * (radio_in - trim + deadzone)) / (trim - deadzone - radio_min)
else:
    angle = 0

范围类型转换:

范围转换是单向的,从最小值到最大值:

radio_trim_low = radio_min + deadzone
if (radio_in > radio_trim_low):
    range = (high_in * (radio_in - radio_trim_low)) / (radio_max - radio_trim_low)
else:
    range = 0

归一化函数

几种不同的归一化函数对摇杆位置给出了不同的解释:

功能 范围 修剪处理 死区 用法
norm_input() -1.0 至 1.0 以装饰条为中心 不 基本归一化输入
norm_input_dz() -1.0 至 1.0 以装饰条为中心 是的 摇杆输入死区
norm_input_ignore_trim() -1.0 至 1.0 以中档产品为主 不 绝对位置
APM 学习 13 --- ArduPilot 遥控器 RC 发射器和接收器 英文原文地址:https://ardupilot.org/copter/docs/common-pixhawk-and-px4-compatible-rc-transmitter-and-receiver-systems.html#common-pixhawk-and-px4-compatible-rc-transmitter-and-receiver-systems 本文概述了可与 ArduPilot 自动驾驶仪配合使用的 RC 发射器和接收器系统,以及有关如何连接的指南。 可用遥控器接口列表 .. 阅读详情

相关推荐

ArduPilot电机控制逻辑与PWM输出机制剖析

本文深入剖析了ArduPilot电机控制逻辑与PWM输出机制,详细解析了roll、pitch、yaw和throttle四个关键输入如何通过rc_in接收并转化为rc_out的PWM信号输出。文章从基础概念到实际调试经验,全面介绍了电机初始化、推力分配矩阵、PWM生成及安全保护机制,为无人机开发者提供了宝贵的实践指导。

weixin_29168153的博客 416

Ardupilot-链接汇总

Ardupilot固件与工具下载Ardupilot全部参数飞行模式故障检测故障保护机制简单和超级简单模式的介绍PID调参PID控制器初始设置Ardupilot 调参流程电机顺序图电调ESC校准自动调参AutoTune测量振动硬件机构减振推力损失和偏航不平衡警告-Thrust Loss and Yaw Imbalance Warnings室内飞行指南Ardupilot论坛直升机常见问题单轴跟共轴碰撞检查降落伞独立看门狗故障保护EKF故障保护GCS故障保护无线电故障电池故障转测测量-RPM地面效应补偿通知设备配

梁先生的博客 1373

CRSF/ELRS Telemetry与ArduPilot的深度集成指南

本文详细介绍了如何将CRSF/ELRS Telemetry遥测功能深度集成到ArduPilot飞控系统中。通过配置飞控参数、启用RC_OPTIONS选项,并结合Yaapu脚本,用户可以在OpenTX/EdgeTX遥控器上实时显示飞行模式、电池状态、GPS信息等关键数据,实现双向通信与空中参数调整,极大提升FPV远航与调试的安全性与效率。

xxx12的博客 697

(4)(4.6) 强制性硬件配置

Ardupilot官网关于《Copter》的翻译 —《(4.6) 强制性硬件配置》。

无人机开发(开源Ardupilot) 1万+

基于Arduino与nRF24L01+打造8通道远距离RC控制器:从原理到5公里通信实践

在嵌入式开发与无线通信领域,微控制器与射频模块的选型与集成是构建可靠遥控系统的核心基础。通过理解微控制器的GPIO、ADC、定时器与外设驱动原理,结合射频通信的调制解调、数据包结构与链路预算分析,开发者能够实现低延迟、高可靠性的双向数据传输。其技术价值在于为机器人、无人机与物联网设备提供了灵活、可定制的控制解决方案,尤其适用于航模、地面车辆与自动化设备等需要超视距或复杂操控的场景。本文聚焦于利用Arduino Pro Micro与nRF24L01+模块,通过详细的硬件选型、通信协议设计及Expo/Trim算

weixin_30892763的博客 364

无人机算法之第十二章 遥控器控制无人机飞行完全指南

本文系统解析了遥控器控制无人机的完整链路,涵盖硬件构成、传输原理和飞控处理逻辑。遥控器系统包含发射机、接收机和通信链路,通过2.4GHz/5.8GHz/915MHz频段传输控制信号。文章详细介绍了主流遥控协议(SBUS/CRSF/ELRS)的特点及连接配置方法,阐述了从RC信号解析到电机驱动的全流程控制逻辑,包括信号标度转换、飞行模式选择和控制器融合。同时对比了ArduPilot与PX4在遥控配置上的差异,并提供了关键参数索引。理解这一控制链路对飞行调试和异常排查具有重要意义。

554

(1)(1.5) FrSky telemetry

Ardupilot官网关于《Telemetry Radio》的翻译 —《(1.5) FrSky telemetry》。

无人机开发(开源Ardupilot) 1万+

无人机通信链路实战:2.4GHz/5.8GHz 与 GPS/北斗双频段抗干扰实测

本文深入解析无人机双频段通信系统(2.4GHz/5.8GHz)与GPS/北斗双频段抗干扰技术,通过实战测试数据展示不同环境下的通信性能,并提供硬件选型、频段优化及卫星导航增强方案,帮助提升无人机通信链路的可靠性和抗干扰能力。

weixin_34176694的博客 394

F450+Pixhawk 2.4.8调试指南:从固件烧录到首飞解锁全流程

无人机能否稳定飞行,关键不在装好后的外观,而在于飞控调试的每一个细节。Pixhawk作为开源飞控的代表,其参数配置和传感器校准直接决定了飞行安全和操控手感。固件选型、电机顺序、电调校准、遥控器设置以及解锁条件排查,构成了从硬件组装到安全首飞的完整链路。对于以F450机架搭配Pixhawk 2.4.8的经典组合,调试过程常见问题多集中在固件兼容性、罗盘干扰和预检报错上。掌握系统化的调试方法,不仅能让解锁失败等故障快速定位,还能帮助新手理解姿态解算与电机响应的原理。本文围绕这一组合,梳理从固件烧录、电调校准、传

weixin_30235225的博客 313

QGC与PX4飞控连接全攻略:从USB到数传与WiFi的MAVLink通信设置

无人机飞控系统调试中,地面站与飞控固件之间的稳定通信是一切操作的基础。PX4作为开源飞控核心,负责传感器融合与姿态控制,而QGroundControl(QGC)则是直观显示飞行数据与参数调参的窗口。两者通过MAVLink协议交换数据,其中Heartbeat心跳包是连接是否建立的关键信号。理解MAVLink的通信原理,能帮助你快速掌握不同物理链路下的配置思路。本文以工程实践为出发点,系统梳理了从USB直连、数传电台到WiFi数传的完整连接方案,涵盖驱动安装、串口参数配置、常见故障排查等实用技巧。无论你是刚接触

weixin_33860528的博客 360

(1)无线电失控保护(一)

Ardupilot官网关于《Failsafe Mechanisms》的翻译 —《(1) 无线电失控保护》。

无人机开发(开源Ardupilot) 1万+

Ardupilot Pre-Arm安全检查程序分析

目录 目录 摘要 第一:Pre-Arm简介 第二:Pre-Arm报错需知 1.使用前准备 使用Pre-Arm信息分析不能解锁原因: 2.解锁失败的原因 摘要 本节主要分析ardupilot多旋翼部分的Pre-Arm 安全检查程序,欢迎批评指正!!! 第一:Pre-Arm简介 Ardupilot:ArduCopter多旋翼 固件内部有一套非常完善的...

陌城烟雨 1万+

MediaPipe实战:从零构建人脸关键点检测应用

本文详细介绍了如何使用Google的MediaPipe框架从零构建一个实时人脸关键点检测应用。文章深入剖析了MediaPipe的三段式检测流水线,提供了Android平台的完整实战教程,包括环境配置、模型加载、摄像头集成、关键点绘制以及性能调优指南,帮助开发者快速实现高效、跨平台的人脸AR特效与交互功能。

weixin_29100927的博客 339

yanshee 机器人全流程指南

2.点击yanshee app右上角根据提示操作 3.当手机显示成功连接 ,按下机器人胸前按钮说出“ip地址”4.根据机器人播报的ip地址加上:8888使用浏览器访问,你就会看到 jupyterd的界面,里面可以新建文件也可以改他存在的文件。我们使了yanshee机器人,这个是面向K12、中高职、高校学生推出的开源人形机器人教育平台,应用于课程教学、竞赛、科研活动等场景。我们接下来可以根据这些apl做许多好玩的,比如控制他运动,跳舞唱歌,it`s easy。注意电脑,手机,机器人必须连同一个网。

qq_44827929的博客 7610

CST电子枪仿真实战:从零搭建粒子追踪模型到磁场聚焦优化

本文提供了一份CST电子枪仿真实战指南,详细讲解了从零开始搭建粒子追踪模型的全过程。内容涵盖项目初始化、Track Solver求解器基础、几何建模、粒子源定义,并重点介绍了如何通过引入和优化静磁场(如聚焦线圈配置)来实现电子束的聚焦,帮助工程师高效预测和优化束流品质。

game4的博客 333

Deeplabv3+改进1:添加CBAM注意力机制|有效涨点

我们提出卷积块注意力模块(CBAM),这是一种简单而有效的前馈卷积神经网络注意力模块。给定一个中间特征图,我们的模块会依次沿两个独立维度(通道和空间)推断注意力图,然后将注意力图与输入特征图相乘,以实现自适应特征细化。由于 CBAM 是一个轻量级且通用的模块,它可以无缝集成到任何 CNN 架构中,几乎不会增加开销,并且可以与基础 CNN 一起端到端训练。我们通过在 ImageNet-1K、MS COCO 检测和 VOC 2007 检测数据集上进行的大量实验验证了 CBAM。

AIcurator的博客 1688

大数据ZooKeeper(一):ZooKeeper基本知识

Zookeeper是一个分布式协调服务的开源框架。主要用来解决分布式集群中应用系统的一致性问题。ZooKeeper本质上是一个。

Lansonli(蓝深李)的博客 3147

使用pyqt5实现可勾选的测试用例界面

使用pyqt5实现可勾选的测试用例界面

天赐好车的博客 629

VS2019项目使用CGAL6.1配置教程详细步骤

在VS2019项目中使用CGAL详细步骤

插件开发 331

Kong API Gateway 配置与深入

Kong是一个开源的、高性能的API网关,提供了一种简单易用的服务间路由、流量管理和安全防护方案,其最初起源于Nginx Inc.,但后迁移至Apache Software Foundation。Kong支持RESTful、GraphQL、TCP/UDP等协议,可与AWS Lambda、Azure Functions、Google Cloud Functions等云函数平台集成。其主要功能包括:服务发现与负载均衡、请求代理、身份认证与授权、缓存、日志记录、监控指标、灰度发布、多种插件等。

AI天才研究院 2281

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: ArduPilot代码解析之四 — 姿态和位置控制
下一篇: ArduPilot代码解析之六 — GPS和位置传感
timmy-uav
博客等级 码龄26年 526粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

timmy-uav

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值