PX4-12-飞行任务框架

2023-05-16

飞行任务指的是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-日志框架与常用日志消息

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PX4-12-飞行任务框架 的相关文章

  • PX4通过I2C方式添加自定义传感器(2)

    PX4 I2C通信方式传感器驱动分析 xff08 以ets airspeed为例 xff09 1 说明 这篇文章我们就来看看I2C传感器的驱动过程 xff0c 当然里面也有很多东西我不是很理解 xff0c 所以仅谈我领悟的一些东西 我就以e
  • 编译PX4固件

    PX4编译 文章目录 PX4编译疑难杂症bug1bug2catkin build isolated 官方脚本Step1Step2 安装常用依赖Step3 创建并运行脚本Step4 补全代码子模块Step5 验证仿真 官方offboard 例
  • PX4/Pixhawk---uORB深入理解和应用

    The Instructions of uORB PX4 Pixhawk 软件体系结构 uORB 主题发布 主题订阅 1 简介 1 1 PX4 Pixhawk的软件体系结构 PX4 Pixhawk的软件体系结构主要被分为四个层次 xff0c
  • PX4位置控制offboard模式说明

    offboard模式的开发及应用 一 px4固件的模式 px4固件支持10几种飞行模式 xff0c 从代码结构上分析 xff0c 分为基本模式 自定义模式和自定义子模式 1 基本模式 基本模式又分为 xff0c 位置控制模式 自稳模式 手动
  • PX4 GAZEBO无人机添加相机并进行图像识别

    PX4 GAZEBO无人机添加摄像头并进行图像识别 在之前完成了ROS的安装和PX4的安装 xff0c 并可以通过roslaunch启动软件仿真 接下来为无人及添加相机 xff0c 并将图像用python函数读取 xff0c 用于后续操作
  • PX4 Bootloader下载及编译过程中的问题解决

    买来的雷迅的板子都是Bootloader已经烧进去了 xff0c Fireware也已经刷进去了 如果是自制的板子 xff0c 上位机根本没法识别板子 xff0c 必须先烧写下载Bootloader后编译好的bin文件 这篇记一下自己下载及
  • Ubuntu下构建PX4软件

    本搭建过程基于http dev px4 io starting building html xff0c 希望大家互相交流学习 原文 xff1a Building PX4 Software xff08 构建PX4软件 xff09 PX4 ca
  • px4源码编译指南

    px4源码编译指南 强烈推荐大家去看官网的英文文档 xff0c 国内的博客杂七杂八 xff0c 官网的中文也很久没有更新 xff0c 这几天自己踩了很多坑 xff0c 写个教程希望能帮助到大家 xff08 本文选用平台是pixhawk1 1
  • PX4飞控之PWM输出控制

    PX4飞控之PWM输出控制 多旋翼电调如好盈XRotor xff0c DJI通用电调等都支持PWM信号来传输控制信号 常用的400Hz电调信号对应周期2500us xff0c 一般使用高电平时间1000us 2000us为有效信号区间 xf
  • PX4 ---- Mixer

    文章目录 Mixer 混合控制 作用输入输出装载混控文件MAVROS代码解析总结示例MAINAUX Mixer 混合控制 作用 经过位置控制和姿态控制后 xff0c 控制量通过 actuator controls发布 xff0c 其中 co
  • PX4模块设计之九:PX4飞行模式简介

    PX4模块设计之九 xff1a PX4飞行模式简介 关于模式的探讨1 需求角度1 1 多旋翼 MC multi copter 1 1 1 RC控制模式1 1 1 1 Position Mode1 1 1 2 Altitude Mode1 1
  • PX4模块设计之三十:Hysteresis类

    PX4模块设计之三十 xff1a Hysteresis类 1 Hysteresis类简介2 Hysteresis类成员变量介绍3 Hysteresis类迟滞逻辑4 Hysteresis类重要方法4 1 Hysteresis bool ini
  • pixhawk px4 commander.cpp

    对于复杂的函数 xff0c 要做的就是看函数的输入是什么 来自哪里 xff0c 经过处理后得到什么 给谁用 xff0c 这样就可以把程序逻辑理清 中间的分析就是看函数如何处理的 span class hljs keyword extern
  • px4下载指定版本的固件、git用法

    https hub fastgit org PX4 PX4 Autopilot git describe tag 查看当前版本号 git tag l 查看所有版本 xff0c 也就是打个tag git checkout v1 9 1 跳转到
  • PX4 OffBoard Control

    终于还是走上了这一步 xff0c 对飞控下手 xff0c 可以说是一张白纸了 记录一下学习的过程方便以后的查阅 目录 一 ubuntu18 04配置px4编译环境及mavros环境 二 PX4的OffBoard控制 1 搭建功能包 2 编写
  • PX4——Range Finder 篇

    Range Finder 此处选用的是 Benewake 下的 Lidar 参数设置 General Configuration 除了官方的参数设置外 xff0c 我在 EKF2 中还找到了 EKF2 RNG AID 参数 xff0c 用来
  • 【PX4 飞控剖析】06 树莓派加载安装ROS,Mavros以及PX4固件

    PX4 飞控剖析 06 树莓派加载安装Mavros以及PX4固件 1 树莓派 刷镜像1 1 用Win32DiskImager刷入ubuntu mate 16 04 2 desktop armhf raspberry pi的镜像 1 2 开机
  • PX4之常用函数解读

    PX4Firmware 经常有人将Pixhawk PX4 APM还有ArduPilot弄混 这里首先还是简要说明一下 xff1a Pixhawk是飞控硬件平台 xff0c PX4和ArduPilot都是开源的可以烧写到Pixhawk飞控中的
  • PX4通过参数脚本给飞控导入参数

    PX4通过参数脚本给飞控导入参数 先找一架正常能飞的无人机连接地面站 在参数页面右上角点击工具 gt 保存到文件 保存的时候文件名注明参数的相关信息 然后将需要加载参数的无人机连接至地面站 xff0c 注意需要加载参数的无人机必须和保存的参
  • 飞行姿态解算(三)

    继之前研究了一些飞行姿态理论方面的问题后 又找到了之前很流行的一段外国大神写的代码 来分析分析 第二篇文章的最后 讲到了文章中的算法在实际使用中有重大缺陷 大家都知道 分析算法理论的时候很多情况下我们没有考虑太多外界干扰的情况 原因是很多情

随机推荐

  • Android使用Google Breakpad进行崩溃日志管理

    开发过程中 xff0c 最担心的问题就是程序崩溃 xff0c 而且还不知道崩溃的原因 xff0c 现在使用Google Breakpad来跟踪崩溃的位置 xff0c 非常方便 xff1b 由于目前使用Mac系统开发 xff0c Google
  • Python--使用jieba进行分词并计算词权重

    span class token keyword import span jieba span class token keyword import span xlrd span class token keyword import spa
  • 商务统计_13 使用excel拟合曲趋势线

    趋势线拟合 xff1a 选中两列数据 xff0c 汇制带平滑曲线的散点图选中图中曲线 xff0c 右键 增加趋势线在右边的趋势线格式中 xff0c 将 显示公式 amp 显示R平方值 打勾选择合适的趋势线 xff0c 指数 xff0c 线性
  • 解决k8s无法安装flannel

    手动创建 kube flannel yml文件 span class token punctuation span root 64 k8smaster span class token punctuation span span class
  • 树莓派 VNC Viewer 远程桌面配置教程 及 显示 cannot currently show the desktop 的解决方法

    树莓派 VNC Viewer 远程桌面配置教程 在此之前你需要能够登录树莓派 xff0c 使用命令窗口对树莓派进行操控 下面的操作使用的是ssh对树莓派进行控制 启用VNC服务 打开终端 xff0c 进入配置界面 span class to
  • 分享几个找论文参考文献的网站

    1 库问搜索 打造免费开源文献资源共享平台 http www koovin com 2 论文驿站 免费中文文献库 xff0c 顶级论文数据库 xff0c 每天同步更新 https www lunwenyizhan com 3 中国知网 ht
  • 解决ubuntu全屏后分辨率低的问题

    Ubuntu 设置屏幕分辨率显示Unknown display 无法设置分辨率 解决方法 方法一 xff1a xff08 临时性 xff0c 重启会失效 xff09 使用xrandr命令调节分辨率 xff0c 带 号的为当前分辨率 xff0
  • ubuntu18.04安装WINEHQ时出现的问题:E: 文件 list 第 x 行的记录格式有误 /etc/apt/sources.list (Component) E: 无法读取源列表。

    ubuntu18 04安装WINEHQ时出现的问题 xff1a E 文件 list 第 x 行的记录格式有误 etc apt sources list Component E 无法读取源列表 详细安装过程可以参考 xff08 官网 xff0
  • Hexo系列——(一) Hexo的安装与使用

    目录 前言一 安装Node js和Git1 安装node js和npm xff0c npm是node js的包管理工具2 更新npm的镜像源 3 全局安装n管理器 用于管理node js 4 安装最新的node js xff08 stabl
  • 协方差和协方差矩阵的定义和理解

    先复习一下这个 xff1a 均值 标准差 方差 为什么需要协方差 xff1f 上面几个统计量看似已经描述的差不多了 xff0c 但我们应该注意到 xff0c 标准差和方差一般是用来描述一维数据的 xff0c 但现实生活我们常常遇到含有多维数
  • dockerfile 中运行 apt-get update 报错 returned a non-zero code: 100

    在 docker 中运行 apt get update 报错 returned a non zero code 100 出现问题 xff1a 在构建 docker 执行 Dockerfile 中的 RUN apt get update 时报
  • Opencv 实现简单UDP局域网实时摄像头传输 (一)

    做项目需要用到网络编程及摄像头捕捉 xff0c 经过简单学习完成一个简单的视频发送 发送端 sender cpp include 34 stdafx h 34 include 34 WinSock2 h 34 include lt open
  • 使用3D地面站(AcmeGCS)的编队飞行

    使用3D地面站 xff08 AcmeGCS xff09 的编队飞行 无人机编队飞行的方法有很多种 xff0c 本文演示一种使用PX4 43 3D地面站 AcmeGCS 43 ROS的多机控制方法 PX4提供了非常好的软件仿真环境 xff0c
  • PX4-1-开源飞控项目

    分享完工具系列 xff0c 我们开始PX4飞控技术的分享 xff0c 写分享相对于自己写笔记要难很多 xff0c 在整理自己笔记的过程中也重新思考很多问题 飞控技术的分享系列更多分享的是思路和框架 对于PX4这种大型开源项目 xff0c 源
  • PX4-3-uORB

    uORB Micro Object Request Broker 微对象请求代理器 是PX4中非常重要且关键的一个模块 xff0c 用于各个模块之间的数据交互 实际上uORB是一套跨 进程 的IPC通讯模块 在PX4中 xff0c 所有的功
  • PX4-5-SPI-IIC设备驱动

    在之前的分享中 xff0c 我们聊了PX4的通信框架和任务调度框架 xff0c 现在我们讲一下PX4的设备驱动 PX4支持很多种设备 xff0c 根据通信方式的不同大致分为 xff1a SPI IIC设备 串口设备 IO设备 CAN设备 这
  • PX4-6-串口设备驱动

    上一篇我们讲了PX4的SPI IIC设备驱动 xff0c 现在讲一下PX4的串口设备 PX4的串口设备驱动框架比SPI IIC设备简单不少 xff0c 使用了两种底层实现方式 xff1a 一种是系统自带的标准字符设备接口 xff0c 一种是
  • Uav开发杂记-4-无人机开发的C-C++

    无人机的软件开发主要使用C C 43 43 开发 xff0c APM和PX4的应用层开发更多的使用C 43 43 开发 作为叠代完善了非常多年的比较大型的开源飞控项目 xff0c 其代码框架对于刚开始接触的新手而言是比较复杂的 一些同学私信
  • AcmeIot-3-在嵌入式设备中运行ROS2

    ROS2是作为第二代ROS xff0c 对ROS1进行了重大的优化 xff0c 主要的特点有 xff1a 实现跨平台运行 xff0c 可以运行在Linux windows Mac RTOS xff0c 甚至没有操作系统的裸机 实现真正的分布
  • PX4-12-飞行任务框架

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