![](https://img-blog.csdnimg.cn/a6425813f5f741fa803d86ce2618c506.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
ardupilot 固定翼/垂起代码分析-4.2.3版本
文章平均质量分 81
该专栏主要介绍固定翼/垂直起降构型的代码逻辑,和大家一起探讨ardupilot开源代码的开发。
天津华兴通盛航空科技有限公司
天津华兴通盛航空科技有限公司成立于2021年,是一家从事无人研究和试验发展为主的企业。
公司以技术创新为牵引,以国产化为抓手,打造核心设计能力、关键设备生产、云端智能协同为一体的多维度、全产业链的布局。
展开
-
ardupilot/Ardupilot V4.3.4 源码解析:mode.h
*当使用STICK_MIXING=0时,如果某个飞行模式设置了航行器的目标位置,则该模式会控制是否忽略控制输入。/*如果某个飞行模式设置了飞行器的目标位置(即航点),那么STICK_MIXING=0将控制是否忽略控制输入。确定飞行模式:首先,需要确定要定义目标高度轮廓的特定飞行模式,例如手动飞行、定高模式或自动驾驶模式等。例如,手动飞行模式下可能没有特定的高度轮廓,而定高模式下可能需要设定一个固定的目标高度,也就是说,在这种情况下,如果飞行模式将航行器的目标位置设定好了,那么控制输入可能会被忽略。原创 2023-08-17 08:30:00 · 218 阅读 · 0 评论 -
ardupilot/Ardupilot V4.3.4 源码解析:mode.cpp
/ 然而,布尔变量的取值与实际意义相反,前推油门使用'does_auto_throttle',而垂直油门使用'is_vtol_man_throttle'。在这个例子中,handle_automatic_flight_mode_change() 函数根据失控保护触发的条件来执行相应的操作。update_rc_failsafe_throttle(new_mode) # 更新RC失控保护油门设置。set_rc_failsafe_throttle(1300) # 设置失控保护油门为1300。原创 2023-08-16 08:30:00 · 209 阅读 · 0 评论 -
ardupilot/Ardupilot V4.3.4 源码解析:Attitute.cpp(2)
/ 在这种情况下,`guided_state.target_heading` 是以弧度表示的,取值范围在 -π 到 π 之间(默认为 4 )。综上所述,你需要根据具体情况计算新的 `aerodynamic_load_factor` 并限制 `nav_roll_cd`,// 脚本程序在过去的50毫秒内没有调用set_target_throttle_rate_rpy函数。// 获取积分器值待办。计算一个新的 `aerodynamic_load_factor` 并限制 `nav_roll_cd`,原创 2023-08-15 09:42:33 · 248 阅读 · 0 评论 -
ardupilot/Ardupilot V4.3.4 源码解析:Attitute.cpp(1)
在飞行控制中,偏航速率控制是指控制飞机偏航运动的变化速率。纯速率控制器通过根据期望的偏航速率和测量到的实际偏航速率之间的误差产生控制输出,以使得飞机的偏航速率逐渐趋近于期望值。积分器通过积累俯仰误差并添加到控制输出中,可以在俯仰持续变化的情况下提供额外的控制力,以稳定飞机的俯仰姿态*/根据用户的要求,可以使用 ACRO_YAW_RATE 参数来缩放偏航速率的大小,以满足用户的需求。//对速度面进行调节 在工程实践上,由于空速测量的限制,可能没有真正的速度信息,这个案件的限制更加严格。原创 2023-08-11 12:00:46 · 198 阅读 · 0 评论 -
ardupilot/Ardupilot V4.3.4 源码解析:AP_Arming.cpp
*如果我们在这里发送一条消息来阻止舵机的解锁/禁用,那么进行舵面检查的人可能会因为接收到该消息而感到困扰。通过启用Q_ASSIST_SPEED,可以在四旋翼与固定翼飞行的过渡中提供额外的控制和稳定性,从而改善飞行性能和操纵性。因此,在启用或禁用Q_ASSIST_SPEED之前,应仔细评估和测试飞行器的表现,并根据实际情况进行相应的参数设置。/*在看门狗复位期间,可以绕过解锁检查,以允许在复位之前已被解锁的情况下进行飞行中的解锁。/*在看门狗重置时绕过解锁检查,并在重置之前已解锁的情况下允许在飞行中解锁,原创 2023-08-07 08:30:00 · 242 阅读 · 0 评论 -
ardupilot/Ardupilot V4.3.4 源码解析:altitude.cpp(2)
如果current_loc位于地形的低处,那么即使其气压高度较低,也有可能current_loc位于loc的上方。// 如果我们在目标高度的滑行坡线最小值(米)GLIDE_SLOPE_MIN内,则重置偏移量以不使用滑行坡道。// 使用最大爬升速率的50%,以便我们不会持续处于100%油门状态,并且在地表上留有更多余地。// 在因过高的滑行坡度而中止着陆后,我们使用距上次着陆尝试的偏移量。根据目的地的高度与指定起始高度之间的差异,重新设置用于滑降道的高度偏移量。// 范围变化超过全范围的20%将重置计数器。原创 2023-08-05 17:05:09 · 150 阅读 · 0 评论 -
ardupilot/Ardupilot V4.3.4 源码解析:altitude.cpp(1)
例如,如果位置结构提供了500米的高度,并且terrain_alt标志已设置,如果我们知道当前的地形海拔高度是200米,则应将目标高度设置为200米而不是500米。// 根据已完成的部分来调整目标高度偏差的方法可以确保新的目标高度考虑了已经完成的部分,并使飞行路径更加平滑和连贯。3) 使用adjusted_altitude_cm()函数,将当前高度和海拔偏移值作为参数传入,得到修正后的目标高度。例如,如果当前高度为100米,您希望将目标高度提高10米,通过应用海拔偏移值,可以将目标高度设置为110米。原创 2023-08-05 15:12:25 · 127 阅读 · 0 评论 -
ardupilot/Ardupilot V4.3.4 源码解析:afs_plane.cpp固定翼飞机特有的类文件
/ 配置为反向推力,使用 TRIM。// 配置为反向推力,使用 TRIM。设置所有频道的radio_out值为终止值。// 为故障安全设置飞行器电机输出。// 气动终止的默认终止方法。// 正常油门,使用最小值。// 移除襟翼回转的限制。返回当前控制模式的 AFS_MODE。// 执行VTOL着陆。// 同时解锁以确保点火被阻断。固定翼飞机特有的类文件。原创 2023-08-04 13:41:48 · 175 阅读 · 0 评论 -
ardupilot/Ardupilot V4.3.4 源码解析:Plane.h(2)
/ Loiter Time指令中应该在环绕飞行中停留的时间量,单位为毫秒。//例如,在延迟命令中,condition_start记录了延迟的起始时间。//例如在延迟命令中,condition_start记录了延迟的起始时间。//上一个航点和当前航点之间的高度差,单位厘米。//盘旋循环圈开始时的高度。用于检测每圈的高度变化。//在环绕飞行中所需的总旋转量,用于盘旋转弯命令.//FBWB/CRUISE模式下高度控制的最后输入。//海平面上方的目标高度,单位厘米。//先前的目标方位,用于更新sum_cd。原创 2023-08-03 08:23:21 · 218 阅读 · 0 评论 -
ardupilot/Ardupilot V4.3.4 源码解析:Plane.h(1)
include <AP_HAL/AP_HAL.h> // 硬件板卡信息库 它可能是最重要的库,因为它包含读取无线、写入电机、处理数字和模拟端口、串行通信、实时操作调度程序、将数据包写入 SD 存储器等所有命令。#include <AP_Common/AP_Common.h> // 常用函数库,例如用于串行通信的高低部件转换器,角度测量系统之间的转换(弧度到角度)等。请记住,最佳的延迟时间取决于具体的应用场景和设备要求。原创 2023-08-03 08:12:44 · 350 阅读 · 0 评论 -
ardupilot/Ardupilot V4.3.4 源码解析:Ardupilot.cpp
if (AP_HAL::millis() - plane.launch_detector_pin_last_inactive_time_ms < ((uint32_t)plane.g2.launch_detector_delay_ms)) { // 虽然已经触发,但是没有达到延时时间。if (hal.gpio->read(plane.g2.launch_detector_pin) == plane.g2.launch_detector_polarity) { // 处于已触发状态。原创 2023-08-02 11:22:19 · 515 阅读 · 0 评论 -
ardupilot/arduplane/mode_qloiter.cpp 垂起定点模式
/ 调用具有四位小数精度保守平滑增益的姿态控制器。// 如果启用,则切断IC发动机。// 更新高度目标和调用位置控制器。// 电机允许在整个可使用范围内运转。// 导航滚转和俯仰由定高控制器控制。// 飞手输入,使用航向率时间常数。// 设置垂直速度和加速度限制。// 设置垂直速度和加速度限制。// 处理飞手的滚转和俯仰输入。// 禁止重新初始化目标位置。// 初始化 loiter。// 运行垂直起降无人机定高控制器。// 运行定高控制器。原创 2022-11-27 09:40:27 · 273 阅读 · 1 评论 -
ardupilot/arduplane/mode_loiter.cpp 定点模式
/ 根据update_fbwb_speed_height调整的全局目标以更新航点高度。// 从这里沿着一条直线到达下一个航路点,该点不是定高的中心点。// 公差最初为10度,每完成一个定高绕飞一圈,公差增加10度。// 公差最初为10度,每完成一个定高绕飞一圈,公差增加10度。// 如果当前航向与bearing_cd对齐,则返回true。// 0表示从航路点中心退出,1表示从切线出口位置退出。// 如果当前航向与目标位置的矢量对齐,则返回true。// 确保本地目标高度与用于定高导航的导航目标相同。原创 2022-11-25 20:48:52 · 428 阅读 · 0 评论 -
ardupilot/arduplane/attitude.cpp 姿态控制解析
/ 在该飞行状态下,需要处理roll_sensor的极点和nav_roll的极点干扰问题,如果该问题处理不当,会给控制器解算带来混乱。//如果设置了LANDING_FLARE RCx_OPTION开关,并且在FW模式下,手动油门,油门空转,//并且设置了飞行选项FORCE_FLARE_ATTITUDE,则将俯仰设置为LAND_pitch_CD。//在自动起飞的爬升阶段,由于空速估计不准确的问题,在没有使用空速传感器的情况下,缩放被抑制。// 逐渐减小积分系数,以防止积分器在低速时出现过大的情况。原创 2022-11-23 11:31:47 · 880 阅读 · 0 评论 -
ardupilot/arduplane/mode_auto.cpp
自动模式调度模式解析原创 2022-11-16 10:40:10 · 335 阅读 · 0 评论 -
ardupilot/arduplane/altitude.cpp 高度保持程序/地形跟踪控制解析
ardupilot/arduplane/altitude.cpp 高度保持程序/地形跟踪控制解析原创 2022-11-16 10:25:25 · 591 阅读 · 0 评论 -
ardupilot/arduplane/takeoff 起飞模式分析(2)-mode_takeoff.cpp
这是无人机相对起飞位置开始定点盘旋的距离,方位与位于起飞方向相同(发动机启动时飞机所面对的方向)// @描述: 起飞模式下 无人机机翼保持水平的高度,也就是说,在该高度下,无人机禁止滚转。// @描述: 初始爬升至TKOFF_LVL_ALT的目标俯仰角度。// @显示名称: Takeoff mode altitude。// @描述: 起飞模式下的目标高度。// @参数: LVL_PITCH。// @参数: LVL_ALT。// @范围: 0 200。// @范围: 0 500。原创 2022-11-13 09:15:52 · 318 阅读 · 0 评论 -
ardupilot/arduplane/takeoff 起飞模式分析(1)-takeoff.cpp
对ardupilot plane起飞模式的设计逻辑、代码结构的解析,并给出了具体的设置方式原创 2022-11-12 10:00:26 · 1399 阅读 · 0 评论