MWC_v2.2 LOOP函数详解与代码解析
5星 · 超过95%的资源 需积分: 43 100 浏览量
更新于2024-09-09
1
收藏 216KB DOC 举报
MWC_v2.2代码解读主要关注的是LOOP()函数在一款无人飞行器控制程序中的实现与功能。该函数是整个控制系统的核心部分,负责处理遥控器输入并根据这些输入调整飞行器的姿态控制。以下是关于该函数的详细解析:
1. 变量定义:
- `uint8_trcDelayCommand`:表示电机运行模式切换间隔,以50Hz的RC测量周期为单位。
- `uint8_trcSticks`:保存上一指令组合的杆位状态,用于组合控制策略。
- 一系列整数变量(如`terror`, `errorAngle`, `delta`, `PTerm`, `ITerm`, 等)用于计算PID(比例-积分-微分)控制算法中的误差、角速度差以及各阶段的积分和微分项。
2. PID控制器:
- `LOOP()`函数利用PID算法来稳定飞行器的姿态。PID控制器是一种常见的闭环控制方法,通过比较设定的目标值(errorAngle)与实际值,调整电机的输出(throttle)以减小误差。它包括三个参数:比例P、积分I和微分D,分别对应于PTerm、ITerm和DTerm。
3. 滤波与延迟处理:
- 在函数中,有对RC信号的实时处理,通过`computeRC()`函数对接收到的遥控器信号进行循环滤波,这有助于减少噪声影响,提高控制精度。滤波过程涉及取多组数据的平均值,确保在80毫秒的时间窗口内得到更稳定的信号。
4. 特殊遥控器支持:
- MWC_v2.2代码还考虑到了特定类型的遥控器,如SPEKTRUM和OPENLRSv2MULTI。针对这些遥控器,有专门的读取函数,确保兼容性并获取正确的输入数据。
5. 定时器与状态管理:
- `static uint32_trcTime`记录当前时间,`timestamp_fixated`可能用于固定时间相关的操作,如保持初始的油门值直到某个特定时间点。
6. 初始化与状态跟踪:
- 函数中包含静态变量(如`lastGyro[]`, `delta1[]`, `delta2[]`),用于存储历史数据以便计算加速度和角速度的变化。另外,还有误差积分变量如`terrorGyroI[]`和`terrorAngleI[]`,用于更新PID控制器的积分项。
MWC_v2.2的LOOP()函数是一个复杂的控制逻辑核心,它结合了PID算法、信号处理技术以及对不同遥控器的支持,确保了飞行器在接收到遥控器指令后能准确、稳定地执行动作。理解并调试这样的代码对于维护和优化无人机性能至关重要。
2021-10-10 上传
2021-09-30 上传
2021-10-02 上传
2021-10-01 上传
2022-09-22 上传
2022-07-14 上传
李大戮
- 粉丝: 1
- 资源: 28
最新资源
- 探索AVL树算法:以Faculdade Senac Porto Alegre实践为例
- 小学语文教学新工具:创新黑板设计解析
- Minecraft服务器管理新插件ServerForms发布
- MATLAB基因网络模型代码实现及开源分享
- 全方位技术项目源码合集:***报名系统
- Phalcon框架实战案例分析
- MATLAB与Python结合实现短期电力负荷预测的DAT300项目解析
- 市场营销教学专用查询装置设计方案
- 随身WiFi高通210 MS8909设备的Root引导文件破解攻略
- 实现服务器端级联:modella与leveldb适配器的应用
- Oracle Linux安装必备依赖包清单与步骤
- Shyer项目:寻找喜欢的聊天伙伴
- MEAN堆栈入门项目: postings-app
- 在线WPS办公功能全接触及应用示例
- 新型带储订盒订书机设计文档
- VB多媒体教学演示系统源代码及技术项目资源大全