PX4-航点到达判定代码分析

这里主要分析源代码https://github.com/PX4/Firmware/blob/master/src/modules/navigator/mission_block.cpp

里面的is_mission_item_reached 判断航点是否到达的代码,代码分析如下:

航点到达判断

当飞行器的高度误差小于爬升高度误差时进入航点飞行模式

航点到达判断流程如下所示:

1、如果为特殊飞行模式,比如空闲模式、录像模式、相机设置模式,直接判定返回
2、检测到起飞 且 路径点未到达  进入以下判定
    2.1 如果不是旋翼 且 飞行模式为航点飞行模式 进入以下判定
        2.1.1 如果水平误差小于2*NAV_LOITER_RAD 且 高度误差大于2*NAV_FW_ALT_RAD
                进入盘旋模式 LOITER飞行模式
        2.1.2 如果水平误差小于1.2*NAV_LOITER_RAD 且 高度误差小于NAV_FW_ALT_RAD
                盘旋上升完成,重新进入定点飞行模式
    2.2 如果是旋翼 且 模式为起飞
        如果飞行器高度 大于 航点高度减NAV_FW_ALT_RAD 
            则认为航点已经到达
    2.3 其他飞行器起飞模式
        如果距离误差小于NAV_ACC_RAD 且 垂直误差小于NAC_FW_ALT_RAD
            则认为航点已经到达
    2.4 不是旋翼 且 模式为空闲飞行模式
        如果距离误差小于1.2*NAV_ACC_RAD 且 垂直误差小于NAC_FW_ALT_RAD
            则认为航点已经到达
    2.5 不是旋翼 且 模式为空闲盘旋上升模式
        如果距离误差小于1.2*NAV_ACC_RAD 且 垂直误差小于NAC_FW_ALT_RAD
            则认为航点已经到达
    2.6 如果是 DELAY 模式
        直接认为到达
    2.7 其他模式 (正常航点飞行模式)
        计算 mission_accp_rad
        距离误差小于mission_accp_rad 且 垂直误差小于NAC_FW_ALT_RAD
            则航点已到达
3、路径点已到达 且 飞机偏航角未到达 进入以下判定
    计算航向误差
    如果误差在阈值范围内 且 航向不需要保持
        则航向角已到达
4、路径点已到达 且 偏航角已到达 进入以下判定
    检查飞机在航点轨道内是否足够长
5、非以上情况 
    返回false 未到达

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值