PX4-12-飞行任务框架

飞行任务指的是PX4的modules/flight_mode_manager组件,用于控制指令平滑。PX4的FlightTask框架设计还是比较有趣的,不论从软件架构还是控制算法方面,都是值得好好学习的代码框架。

我们在 PX4-9-控制数据流 文章的控制数据流图中讲到了FlightTask,从图中可以发现FlightTask在PX4的控制流中发挥的作用。这里我们更加深入的分析以下FlightTask的框架。

我们从类的继承关系和任务切换流程两方面来分析PX4的FlightTask框架。

类的继承关系

PX4的飞行任务类包括以下几类:

enum class FlightTaskIndex : int {
    None = -1,
    AutoFollowMe,
    AutoLineSmoothVel,
    Descend,
    Failsafe,
    ManualAcceleration,
    ManualAltitude,
    ManualAltitudeSmoothVel,
    ManualPosition,
    ManualPositionSmoothVel,
    Transition,
    Orbit,
    Count // number of tasks
};

与上图的类的继承关系对应,分别用于处理

自主跟随、自主飞行、降落、故障保护、手动飞行、飞行模型切换等

状态下的控制指令平滑等。

任务切换流程

PX4在FlightModeManager.cpp中对各个飞行任务进行初始化、运行与切换。其流程如图:

以上为PX4的飞行任务的大致结构,每个飞行任务内的具体算法就不一一展开了,感兴趣的同学可以自行深入阅读。

图表采用plantuml绘制,关注我的公众号,在下方留言 PX4飞行任务 可以获取图表的源码。

往期分享:

AcmeGCS-12-地图与任务规划优化

AcmeIot-3-在嵌入式设备中运行ROS2

PX4-11-日志框架与常用日志消息

这里会不定期更新一些我整理的无人机相关知识,欢迎关注分享。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值