当前位置:网站首页>APM电机输出逻辑(Motors类详解)
APM电机输出逻辑(Motors类详解)
2022-07-29 20:37:00 【公子_羽】
一、概述
电机类是控制类与PWM输出之间的桥梁。向上屏蔽了机架类型,动力类型;向下输出了控制类输出的控制值(归一化-1~1之间的数值)。
二、类图分析
见图(1)左下角部分,AP_Motors是其他所有电机类的父类。多旋翼的话是AP_MotorsMulticopter类继承AP_Motors;变浆距类飞行器是AP_MotorsHeli继承AP_Motors。这通过编译命令控制(./waf copter 生成前一个;./waf heli生成后一个)。再后一层的子类通过地面站的参数控制,取决于所选的机架类型。
电机控制的类图
图(1)
见图(1)右上角部分,AC_AttitudeControl类包含AP_Motors电机类的引用,在被AC_AttitudeControl_Multi继承,最后包含于Copter中。因此Copter中的*attitude_control指针所指向的区域包含AP_Motors部分的代码。同时,Copter类也包含*Motors的指针。
在Copter::init_ardupilot()函数中调用allocate_motors()函数。

图(2)
如图(2)所示,在初始化的时候,根据motor_frame_class参数,实例化具体的Copter::motors指针。再将Copter::motors指针作为参数,传给attitude_control类初始化。因此attitude_control类中的motors就是Copter::motors。
三、电机输出分析
在Copter::fast_loop()函数中以400Hz频率调用motors_output().
下图是APM飞控电机输出的调用顺序图(以直升机输出为例)。向下箭头表示调用关系。

hal.rcout->push()函数输出PWM.
hal.rcout->write(uint8_t chan,uint16_t period_us):该函数将period_us脉宽的pwm写入chan通道。chan从0开始计数,0表示1通道。
边栏推荐
- [Database] mysql date format conversion
- C# WPF给综合实战项目加个帮助文档
- A dish hold up valuations billions of mt. Pickled fish, can move beyond the edge food safety?
- 一线技术人应该关注的四种思维能力
- Analysis of Crypto in Pi 2
- 最小jvm源码分析
- 网站ping端口的操作方法和命令介绍
- 博世集团启动量子数字孪生计划
- 三品牌下半年将带来多款新品,东风日产将迎来“产品大潮”
- Cooler Navigation helps you shop easily in shopping malls without confusion
猜你喜欢
随机推荐
七个易犯的 IT 管理错误—以及如何避免
A dish hold up valuations billions of mt. Pickled fish, can move beyond the edge food safety?
关于论青少年尽早学少儿编程之说
回归——岭回归
诺氟沙星-DNA复合物|半乳糖化脂质体-聚阳离子-DNA复合物|注意事项
刘畊宏男孩女孩看过来!运动数据分析挖掘!(附全套代码和数据集)
336. Palindromic Pairs
微信小程序 31 分包机制
第二好PyTorch新手课程;论文写作指南;使用µGo语言开发迷你编译器;超高效使用Transformer的扩展库;前沿论文 | ShowMeAI资讯日报
分析少年派2中的Crypto
MySQL数据查询 - 简单查询
如何让 x == 1 && x == 2 && x == 3 等式成立
分布式限流 redission RRateLimiter 的使用及原理
[ACTF2020 新生赛]Exec 1
OAuth,JWT ,OIDC你们搞得我好乱啊
南华早报 | 助力亚洲最具公信力报章实现AD域自动化管理
WPF 实现抽屉菜单
MySQL - 设计游戏用户信息表
Break the rules!MongoDB introduces SQL?
JS实现百叶窗特效









