PX4之commander详解

news2024/12/23 17:50:52

如前所述commander的作用主要处理各种事件,调度控制系统的运行,事件包括遥控输入、用户指令、状态变更等。调度的作用主要设置控制系统运行的变量和模式,以使控制系统按照用户期望的模式运行,实现不同的控制功能。控制系统主要由navigator,pos_control,att_control构成。这里引用的是PX4略早期的一个版本,不同版本的PX4处理流程略有不同,整体框架大致上应该是一样的。

commander的处理在commander.cpp中的Commander::run()函数中实现

在进行一系列的初始化程序之后,进入一个while循环,这个while循环为commander的工作流程。按照一定频率运行,每一个循环依次检查各种事件和信息,进行处理。每一个循环的主要处理流程如下所示。其中右边文字备注了对应的处理以及相关的状态和标志位。

进行的顺序为
1 参数更新(param update),检查已有的参数更新,如有更新则进行相应的处理
2 检查电源按钮状态(power button check),如果检测到按下状态,则执行关闭系统(shutdown)
3 更新手动输入(manual input),主要是用户通过遥控器(Radio Controller)的输入
4 离线控制检查(offboard control check),离线控制指通过上位机发送到飞控板的控制指令
5 数据通道检测(telemetry status check),检查所有的数据链通道
6 飞行检查(flight check),主要检查传感器(加速度计、陀螺仪、气压计等)的状态,设置对应的标志位(flag)
7 系统供电检查(system power check),这里主要是飞控板的供电检查
8 安全检查,这里主要检查ekf的输出安全性,如果通过则把arming state切换到standby
9 更新位置信息(position update)
10 位置准确性检查(position accuracy check)
11 着陆检查(land detect check)
12 CPU载荷检查(cpuload check)
13 电池状态检查(battery status check)

14 子系统检查(subsystem check),子系统包括传感器等
15 电机状态(arming state)从init切换到standby,standy状态允许电机启动
16 任务结果处理(mission result handle)
17 地理栅栏更新与处理(geofence update & handle)
18 摇杆拨动处理(stick move handle)
19 任务飞行结束检查(mission flight termination check)
 20 遥控输入处理(rc input check & handle)

21 数据链检查(datalink check)
22 电机故障检查(actuator failure detect)
23 起飞完成处理(takeoff complete handle),起飞完成后切换到auto mission或auto loiter状态
24 遥控失联处理(rc signal lost handle),飞行状态切换到loiter
25 命令检查和处理(command check&handle),处理用户指令
26 故障检查(failure check)
27 返航位置检查和更新(home position check & update)

28 设置导航模式(set nav_state)
29 设置控制模式(set control_state)
30 播放音调(play tunes),根据状态、发生的事件播放对应的音调
31 闪烁指示灯(blink LEDs),根据飞行器状态按对应模式闪烁指示灯

 

 

 

 

 

其中主要的处理任务用黄色的方框进行表示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/597143.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PIC 使能485/422_Part2.1使能485_Tx_Only

1.需求 工作中需要把目前设备的单向232转为485/422模式,实现双向通讯,目前查找相关资料。突然想到一件事,我是否能让232现有的单向上发线同时连工控机的tx,rx,然后靠协议,来定时切换PIC一侧的tx rx?PIC可能不支持这个…

零基础学会用Airtest-Selenium对Firefox进行自动化测试

1. 前言 本文将详细介绍如何使用AirtestIDE驱动Firefox测试,以及脱离AirtestIDE怎么驱动Firefox(VScode为例)。 看完本文零基础小白也能学会Firefox浏览器自动化测试!!! 2. 如何使用AirtestIDE驱动Firef…

MyBatis 所有的 jdbcType类型

MyBatis处理MySQL字段类型date与datetime 1) DATETIME 显示格式:yyyy-MM-dd HH:mm:ss 时间范围:[ 1000-01-01 00:00:00到9999-12-31 23:59:59]2) DATE 显示格式:yyyy-MM-dd 时间范围:[1000-01-01到9999-12-31]3&#…

【SpringCloud】1.一文带你入门SpringCloud微服务

文章目录 1. 搭建父工程2. 搭建注册中心3. 搭建一个服务提供者4. 搭建一个服务消费者5. 整合OpenFeign实现服务之间的调用 1. 搭建父工程 最近打算使用 springcloud 搭建微服务玩一下,用到的东西大致有以下这些: jdk 1.8idea 2019maven 3.6.3springclo…

CS5466应用电路图|CS5466设计方案原理图|TypeC转HDMI8K30HZ(4K144HZ)芯片方案原理图

CS5466支持dsc1.1/12a压缩视频传输,是一款Type-C转HDMI8K30HZ或者4K144HZ方案芯片,其设计原理图如下: CS5466 Type-C/DP1.4转HDMI2.1的显示协议转换芯片, 内部集成了PD3.0及DSC decoder,可支持DP 2Lane最高8K30或4K144, 并能按客户…

拉取maven项目 pom出现 The <project> element is the root of the descriptor.

引入将各个module 修改JDK版本为1.8,然后再修改 Perferences -> Build -》Compiler -> Java Compiler各个版本,对各个项目改为1.8

Docker容器学习笔记

一、初始Docker 实质上:是将开发的代码和运行环境打包成一个容器。解决开发(开发环境)、测试(测试环境)、运维(生产环境)之间的沟通交流。 1.1Docker的概念 docker:解决跨环境迁移…

B. 广告投放

B. 广告投放 Problem - B - Codeforces 思路:对于这个题来说,我们很容易可以想到是一个dp问题,我们可以使用f[i][j]表示我们已经处理了前i-1个问题,并且当前剩余的人数是j的情况下,能够得到的最大的收益,那…

共享内存(内存映射的使用、注意事项、进程间通信、systemV共享内存)

一、内存映射 概念:使一个磁盘文件与内存中的一个缓冲区相映射,进程可以像访问普通内存一样对文件进行访问,不必再调用read,write。 mmap()的优点: 实现了用户空间和内核空间的高效交互方式 二、函数定义 void *mmap(void *ad…

PMP课堂模拟题目及解析(第17期)

161. 项目发起人任命一位高级工程师到指导委员会,来帮助监督项目管理计划。该工程师经常不同意由项目团队制定的计划,并在提交批准之前对项目管理计划表达严重关切。项目经理应该怎么做? A. 通知项目发起人,该工程师延迟了规划过程…

2、Kingbase - 修改密码报错

情况 Kingbase数据库修改密码后,重新连接失败 提示信息 致命错误: 用户 "system" Password 认证失败 (kbjdbc: autodetected server-encoding to be GB2312, if the message is not readable, please check database logs and/or host, port, dbname, u…

软件外包开发项目管理工具

随着软件项目的规模越做越大,项目管理人员需要使用工具管理项目进度,从而更有成效的管理好软件开发进度。软件开发的进度管理工具有很多,今天和大家分享一些常用的系统工具,希望对大家有所帮助。北京木奇移动技术有限公司&#xf…

phpStudy2018 mysql启动失败问题

phpStudy2018 mysql启动失败问题 1.winR运行窗口输入services.msc,检查服务里面有MySQLa没有。 有,就打开服务 没有,就打开phpstudy面板,点击其他选项菜单——>服务管理器——>MySQL——>安装服务;然后刷新…

C++ 继承 文字+图片+代码 超详细解刨

什么是继承? 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。 继承呈现了面向对象程序设计的层次结构&am…

二十分钟入门计算机视觉开源神器——课堂笔记

1,统一的深度学习框架,2.0 2,现状 3,代表算法库 (1)目标检测MMDetection 任务支持:目标家呢,实力分割,全景分割 覆盖广泛 算法丰富 使用方便 (2&#xff0…

2023年Q1美团财报解读:拨开云雾 始见月明

原文出处:走马财经 5月底,随着京东、阿里巴巴、腾讯、快手、拼多多、美团等相继发布财报,中国互联网主流大公司的财报发布季结束。 一方面他们体量够大,另一方面他们要么深耕零售,要么与零售、消费息息相关&#xff…

复原IP地址-回溯

1题目 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 . 分隔。 例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址,但是 "0.01…

17-Vue3中其它的 Composition API

目录 1、shallowReactive 与 shallowRef2、readonly 与 shallowReadonly3、toRaw 与 markRaw4、customRef5、provide 与 inject6、响应式数据的判断7、Composition API 的优势7.1 Options API 存在的问题7.2 Composition API 的优势 1、shallowReactive 与 shallowRef shallowR…

华为OD机试真题 Java 实现【快速开租建站】【2023Q1 200分】,附详细解题思路

一、题目描述 当前IT部门支撑了子公司颗粒化业务,该部门需要实现为子公司快速开租建站的能力,建站是指在一个全新的环境部署一套IT服务。 每个站点开站会由一系列部署任务项构成,每个任务项部署完成时间都是固定和相等的,设为1。…