收藏 分享(赏)

7 姿态控制和预览.doc

上传人:yjrm16270 文档编号:6802233 上传时间:2019-04-22 格式:DOC 页数:5 大小:117.67KB
下载 相关 举报
7 姿态控制和预览.doc_第1页
第1页 / 共5页
7 姿态控制和预览.doc_第2页
第2页 / 共5页
7 姿态控制和预览.doc_第3页
第3页 / 共5页
7 姿态控制和预览.doc_第4页
第4页 / 共5页
7 姿态控制和预览.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、 这里,我们以高度保持模式为例,对姿态控制程序调用关系进行了详细介绍。如有问题,可以交流 。新浪WalkAnt,转载本博客文章,请注明出处,以便更大范围的交流,谢谢。第八部分 姿态控制预览英文参考:http:/ http:/liung.github.io/blog/apm/2014-08-31-APM-ArduCopter 姿态控制概览.html手动飞行模式,诸如自稳模式(Stabilize Mode)、特技模式(Acro Mode)、飘逸模式(Drift Mode),其程序结构如下图:在主循环执行过程中(比如 Pixhawk 的任务调度周期 2.5ms,400Hz;APM2.x 为10ms,

2、100Hz ),每一个周期,程序会按下述步骤执行: 首先,高层次文件 flight_mode.pde 中的 update_flight_mode()函数被调用。通过检查 control_mode 变量,前飞行器的飞行模式(使用变量),然后执行相应飞行模式下的_run()函数(如自稳模式的 stabilize_run,返航模式(RTL)的 rtl_run 等)。执行_run 的结果是,系统将会找到与飞行模式相对应的命名为 control_.pde 飞行控制文件(比如:control_stabilize.pde,control_rtl.pde 等)。 _run 函数负责将用户的输入(从 g.rc_

3、1.control_in,g.rc_2.control_in 等读入)转换为此时飞行模式下的倾斜角(lean angle)、滚转速率(rotation rate)、爬升率(climb rate)等(也就是设置目标值 rollpitchyawthrottle)。举个例子:AltHold(定高, altitude hold)模式中将用户的滚转和俯仰输入转换为倾斜角(单位:角度/),将偏航输入转换为滚转速率(单位:/s),将油门输入转换为爬升率(单位:cm/s)。 _run 函数最后还必须要完成的就是将预期角度、速率等参数传送给姿态控制和/或方位控制库(它们都放在 AC_AttitiudeContr

4、ol 文件夹内)。 AC_AttitiudeControl 库提供了 5 种可能的方法来调整飞行器的姿态,下面来说明最通用的三种方法:1) angle_ef_roll_pitch_rate_ef_yaw():该函数需要一个地轴系坐标下滚转和偏航角度,一个地轴系坐标下的偏航速率。例如:传递给该函数三个参数分别为,roll = -1000, pitch = -1500, yaw = 500 代表飞行器此时向左倾斜 10,低头 15,向右偏航速率为 5/s。2) angle_ef_roll_pitch_yaw():该函数接受地轴系下的滚转、俯仰和偏航角。和上面的函数类似,不过参数 yaw = 500

5、 代表飞行器北偏东 53) rate_bf_roll_pitch_yaw():该函数接受一个体轴系下的滚转、俯仰和偏航角速率(/s)。例如:传递给该函数三个参数:roll = -1000, pitch = -1500, yaw = 500 代表飞行器此时左倾速率 10/s,低头速率 15/s,绕 Z 轴速率为 5/s。 当上述这些函数调用之后,就会接着调用AC_AttitudeControl:rate_controller_run()函数,将上面所列举的函数的输出转化为滚转、偏航和俯仰输入,并使用 set_roll,set_pitch,set_yaw 和 set_throttle 方法将这些输

6、入发送给 AP_Motors 库。另外, AC_PosControl 库用来控制飞行器的 3D 方位。不过通常只用来调整比较简单的Z 轴方向(如姿态控制),这是因为许多需要复杂 3D 方位调整的飞行模式( 例如悬停Loiter)使用的是“AC_WPNav 库”。总之,AC_PosControl 库中常用的方法有:1) set_alt_target_from_climb_rate():将爬升率(cm/s)作为参数,用来更新一个需要调整的相对高度目标。2) set_pos_target():接受一个以系统中的 home 位置作为参考点的 3D 位置矢量(单位:cm)。 如果调用了 AC_PosCo

7、ntrol 中的任何一个方法,那么在该飞行模式下就必须调用函数 AC_PosControl:update_z_controller()。这样的话,就可以启用 Z 轴的方位控制 PID 循环,并向 AP_Motors 库发送低级别的油门信息。同样,如果调用了 xy 轴的函数,那就就必须调用 AC_PosControl:update_xy_controller()函数。 AP_Motors 库含有“ 电机混合模式”代码。这些代码负责将从AC_AttitudeControl 和 AC_PosControl 库发送过来的滚转、俯仰、偏航角度和油门值信息转换为电机的相对输出值(例如:PWM 值)。因此,

8、这样高级别的库就必须要使用如下函数:1) set_roll(),set_pitch(),set_yaw():接受在-4500,4500角度范围内的滚转、俯仰和偏航角。这些参数不是期望角度或者速率,更准确的讲,它仅仅是一个数值。例如,set_roll(-4500)将代表飞行器尽可能快的向左滚转。2) set_throttle():接受一个范围在0,1000的相对油门值。0 代表电机关闭,1000 代表满油门状态。 虽然对于不同飞行器构型(如四旋翼,Y6,传统直升机等)的控制代码中有许多不同的类,但这些类中都有一个相同的函数 output_armed,负责将这些滚转、俯仰、偏航和油门值转换为 PW

9、M 类型输入值。这转换的过程中,会应用到 stability patch,用来控制由于飞行器构型限制所引起的轴系的优先级问题(例如四旋翼的四个电机不可能在做最大速度滚转时四个电机的油门同时达到最大,因为必须一部分电机输出小于另一部分才能引起滚转)。在执行函数 output_armed 的最后,还将调用hal.rcout-write(),把期望 PWM 值传递给 AP_HAL 层。 AP_HAL 库(硬件抽象层)提供了针对所有飞控板统一的接口。实际控制中,hal.rc_out-write()函数将接受到的来自于 AP_Motors 类中指定的 PWM 值,输出至飞控板对应的 PWM 端口(pin 端)。前面的文章:Pixhawk 源码笔记一:APM 代码基本结构:http:/ 源码笔记二:APM 线程:http:/ 源码笔记三:串行接口 UART 和Console: http:/ 源码笔记四:学习 RC Input and Output http:/ 源码笔记五:存储与 EEPROM 管理http:/ 源码笔记六:源码预览与 APM:Copter 程序库http:/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报