【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)

  • Post author:
  • Post category:其他


  • 标题 : Prometheus 二次开发课程入门:

  • 起源: 根据戚博士整理讲解的资料整理的学习笔记,有兴趣的同学可以去系统学习下 –



    在这里插入图片描述
  • 课程网址:https://bbs.amovlab.com/plugin.php?id=zhanmishu_video:video&mod=video&cid=43
  • 课程介绍: 本课程偏重Prometheus项目中的基础知识和操作实践,适合项目入门者,购买课程后会定期安排线上答疑活动(语音交流,方便透彻!)
  • 课程项目网址 : https://github.com/amov-lab/Prometheus



Prometheus全自主无人机开源软件平台



项目创始人介绍

在这里插入图片描述

  • 戚煜华
  • Prometheus开源项目创始人
  • Ø 阿木实验室P系列无人机技术负责人

    本科及博士毕业于北京理工大学,在自主无人机平台搭建及二次开发方面经验丰富
  • 参与多项航空航天科研院所无人机相关项目
  • 曾获得2017年国际微小型无人机比赛第三名
  • 已在铂贝学院开设PX4自主无人机线下培训课程10余次,累计培训学员300余人次。 目前在International

    Journal of Systems Science及Robotics and Autonomous Systems等SCI期刊上发表论文4篇,会议论文3篇。

    主要研究方向为:无人机控制、自主避障



背景



多旋翼无人机发展历史:

l 早期(1907 – 1990):大型载人旋翼飞行器,军用为主

l 复苏期(1990-2004):MEMS普及,最早的消费级旋翼机

l 快速发展期(2005-2013):开源飞控成熟、关注的高校和公司越来越多

l 爆发期(2014-至今):2015年为“无人机元年”,市场规模达66.4亿元,无人机被广泛应用



多旋翼无人机的优势

① 结构简单,成本低

② 垂直起降能力

③ 空中悬停能力

④ 超强机动



多旋翼无人机的应用场景

人类难以达到、重复性强或工作环境比较恶劣

Ø 核心价值在于形成空中平台,结合其他部件扩展应用

Ø 常见的应用有:航拍、农业植保、电力巡检、物流运

输、警用执法、地质勘探、灯光表演、森林防火等



什么是自主无人机?



无人机的基本组成(航模)

l 机架

l 动力系统:电机、电调、桨、电池

l 控制系统:飞控板

l 通信系统:图/数传、遥控器、地面站

Ø 自主无人机

l 传感器:自主感知外部环境

l 机载电脑:更复杂的运算、给飞控提供上层控制指令

l 无人机比赛中所谓的自主无人机就是说:按下起飞键后,

不能进行任何操作,飞机自主完成任务,并能安全且准确

降落的无人



PX4生态系统

在这里插入图片描述



PX4飞行控制栈

  • PX4是用于无人机的开源飞行控制软件。
  • 该项目为无人机开发人员提供了一套灵活的工具,以共享技术,从而为无人机应用创建量身定制的解决方案。
  • PX4提供了提供无人机硬件支持和软件堆栈的标准,从而允许生态系统以可扩展的方式

    构建和维护硬件和软件。
  • PX4 Github主页:https://github.com/PX4/Firmware (3.7k stars,410 contributor)



Dronecode 基金会

在这里插入图片描述

  • PX4目前由Dronecode基金会管理,同时,Dronecode还

    托管QGroundControl, MAVLink等开源项目。
  • Ø Dronecode基金会是为开源无人机项目提供开源治理服务的

    机构。基金会注册于美国,隶属于Linux基金会的非盈利机构,

    支持PX4生态的可持续发展。
  • Ø 它的作用是开源治理,开源项目和行业标准的传播、推广、

    社区运营、以及举办每年的开发者大会。
  • Ø Dronecode 基金会的会员来自于参与PX4生态系统建设的公

    司和组织



PX4 – uORB消息机制

  • PX4代码内部的一种消息形式,类似于ROS的topic

    Ø 用于PX4各模块间传递消息

    Ø 消息查询:Firmware/msg



PX4 – MAVLink模块

Ø MAVLink模块负责MAVLink相关的参数设置, MAVLink消息的解压和收取、 MAVLink消息的打包和发送。

这样使得我们如果想使用发过来的消息,直接去订阅相关的topic就行。

Ø 由于MAVLink消息封装还是较为复杂、解包也需要一定的时间,所以对于一些需要低延时的命令可以不走

MAVLink协议,直接通过数传给飞控发送一些消息也可以,就是自己要在飞控端写接收的模块

Ø 简单来讲,就是负责MAVLink消息的收发

Ø mavlink_main.cpp 主cpp

Ø mavlink_message.cpp 负责发送mavlink消息

Ø mavlink_receiver.cpp 负责接收mavlink消息

在这里插入图片描述



PX4 飞控硬件 – Pixhaw

Ø 常见的Pixhawk,硬件标准开源

在这里插入图片描述



PX4 QGroundControl 地面站

QGroundControl 地面站

Ø 通过MAVLink消息与飞控进行通信

Ø 常见功能:

① 刷固件

② 初始设置

③ 电调校准

④ 飞控参数调节

⑤ 监控飞控状态

⑥ 航点任务上传

⑦ 日志下载

Ø 免费使用且全开源,可进行二次开发



PX4 MAVLink通信协议

MAVLink全称是Micro Air Vehicle Message Marshalling Library,是一种轻量级的消息传输协议,用于无人机之间(或机载组件之间)的通信。

Ø MAVLink协议格式与PAYLOAD帧

在这里插入图片描述

Ø MAVLink 支持二次开发。MAVLink工具链可以通过指定的XML文件生成支持多种编程语言(C、C++、

python,java等11种)的MAVLink库。常见的地面站(QGC、MP等)、飞控(PX4、APM等)及其他

MAVLink系统(MAVROS、MAVSDK等)均是使用生成得到的MAVLink库进行的开发。MAVLink及其相关源

码均遵循MIT协议,即可以无限制的在闭源应用中使用



PX4 Mavros 功能包

  • 顾名思义,Mavros就是MAVLink+ROS。 Mavros是

    PX4官方提供的一个运行于ROS下收发MAVLink消息的工

    具(接口),利用Mavros可以发送MAVLink消息给飞控

    (可以控制飞机),并且可以从飞控中接受数据(例如:

    飞控的位置速度 IMU数据等等)。
  • Ø 机载电脑(Prometheus)通过Mavros可以实现与飞控

    (即PX4)的实时双向通信

    在这里插入图片描述



PX4 优势

  • Ø PX4不仅仅只是飞控代码库,更是一个庞大的生态系统。它的优势在于 维护团队、学界/工业界共同参与、

    配套的软/硬件等等。
  • Ø 相比于APM,PX4的开源协议更加友好,代码更加适合科研开发者学习和使用。(个人观点



Prometheus与PX4的关系

  • Ø 由于PX4的生态系统还没有对自主无人机进行全覆盖,或者说,还没有提供成熟的解决方案。学术界和工业

    界也在不断的利用PX4进行自主无人机相关的开发工作。
  • Ø Prometheus项目是借助PX4的offboard模式,通过机载电脑读取飞控的状态并对飞控进行控制,从而构建

    一个全自主无人机系统。同时,利用PX4提供的Gazebo接口实现自主无人机的各类仿真测试,利用

    Pixhawk等硬件实现自主无人机的真实飞行测试



Prometheus



Prometheus模块介绍

什么是Prometheus?

  • Prometheus是一套开源的自主无人机软件平台,为无人机的智能与自主飞行提供全套解决方案。
  • 本项目基于PX4开源飞控固件,旨在为PX4开发者配套成熟可用的机载电脑端程序,提供更加简洁快速的开发体验。目前已集成建图、定位、规划、控制及目标检测等模块,并配套有Gazebo
  • 仿真测试代码。(绝大部分代码基于ROS进行开发)
  • Ø 项目网址:https://github.com/amov-lab/Prometheus

    Ø 项目支持:

    Ø 开发及维护团队

    Ø 诚挚邀请广大开发者为Prometheus项目贡献代码或以全职/兼职形式加入Prometheus项目维护团队,共同打造业界最好用的自主无人机软件平台,您将有机会获得免费的硬件支持或者相应的报酬
  • 阿木实验室

    阿木实验室

    在这里插入图片描述

Ø 目标:让研发更高效

Ø 主营业务:

Ø 线上课程、线下培训

Ø 二次开发平台

Ø 无人系统相关配件



Prometheus 开发团队

戚煜华

  • 中山大学博士后,本科及博士毕业于北京理工大学,
  • 在自主无人机平台搭建及二次开发方面经验丰富。参与多项航空航天科研院所无人机相关项目,曾获得2017年国际微小型无人机比赛第三名,已在铂贝学院开设PX4自主无人机线下培训课程10次,累计培训学员300余人次。 目前在International Journal of Systems Science及Robotics and Autonomous Systems等SCI期刊上发表论文4篇,会议论文3篇。
  • 主要研究方向为:无人机控制、自主避障等

金忍

  • 北京理工大学博士
  • 多年从事机器视觉、无人机视觉的开发及教学工作
  • 曾作为视觉组队长参加2017与2020年穆罕默德·本·扎耶德国际机器人挑战赛

    (MBZIRC),两次获得冠军。
  • 目前在Journal of Field Robotics等SCI期刊上发表论文3篇,会议论文2篇。擅长数据驱动算法编写、性能优化、实时计算等,研究兴趣主要包括深度学习,目标检测与跟踪,迁移学习,目标定位与姿态估计

江涛

  • 重庆大学博士后,北京理工大学博士
  • 具有多年无人机系统、控制和导航算法开发经验。参与过多项航空航天科研院所无人机相关项目
  • 曾获得2017年穆罕默德·本·扎耶德国际机器人挑战赛(MBZIRC)冠军。目前在Journal of the Franklin Institute等SCI期刊上发表无人机自主控制论文7篇。
  • 主要研究方向包括:无人机自主控制、移动机器人规划和定位建图等

李春雨

  • 北京理工大学在读博士
  • 具有丰富的竞赛经验及仿真系统的开发经验
  • 负责阿木实验室Prometheus系列无人机的视觉导航及仿真部分的开发。
  • 主要研究兴趣包括:无人机状态估计、无人机高机动自主飞行等



Prometheus安装及上手

  • 安装与编译

    l 系统要求:Ubuntu 1804

    l 详见Prometheus wiki

    Ø 无人机建模控制等相关理论学习

    Ø PX4,ROS等相关基础知识学习

    Ø Prometheus源码学习(源码有注释)

    l wiki与源码

    l 可在issue提问、微信群交流



Prometheus 模块框架

Ø Modules – 功能

l 每一个模块都是一个标准的ros功能包

l 每一个小功能都是一个ROS节点

Ø Simulator – 仿真器

Ø Experiment (仍在开发完善中

在这里插入图片描述



Prometheus 共用模块

Ø Prometheus项目自定义消息

l ControlCommand.msg

l DroneState.msg

l Message.msg

l …

Ø 共用的库函数

在这里插入图片描述



Prometheus 控制模块

  • 依赖Mavros功能包及prometheus_msgs功能包,重要代码

    l config文件夹中为控制器参数配置文件

    l px4_pos_controller.cpp

    l px4_pos_estimator.cpp

    l ground_station.cpp

    l …

    Ø 读取飞控中的各项状态,并发布为话题“/prometheus/drone_state”

    Ø 丰富了px4原有的offboard控制方式,提供以下控制接口用于任务模块开发(订阅话题“/prometheus/control_command”)

    l 怠速

    l 起飞

    l 悬停

    l 降落

    l 移动(包括定点,定速及其复合模式,以及轨迹追踪)

    Ø 可进行位置环控制器设计及分布式阵型控制器设计

    在这里插入图片描述



Prometheus 建图定位模块

Ø 视觉定位部分外部依赖ORB-SLAM2,重要代码:

l ros_rgbd_publish.cc

l ros_stereo_publish.cc

l ros_mono_publish.cc

l elas_stereo_node.cpp

l …

Ø 激光定位外部依赖cartographer_ros包

Ø 视觉及激光定位结果与PX4信息融合,发布无人机里程计信息

Ø 建图部分依赖RTAB-Map及Octomap

l RGBD建图

l 双目相机建图

l 激光建图

Ø 建图部分发布全局点云信息供规划模块使用

Ø 后续会加入视觉惯性里程计算法,如VINS-Fusion,maplab等

在这里插入图片描述



Prometheus 规划模块

现有功能:全局规划(A*)、局部规划(APF、VFH)、轨迹优化(Fastplanner)

Ø 订阅地图(局部/全局点云)、目标点、无人机当前位置等话题

Ø 发布规划结果至任务模块

l /prometheus/planning/desired_vel

l /prometheus/planning/a_star/desired_path

l /prometheus/planning/fastplanner/desired_trajectory

l …

Ø 重要代码

l apf.cpp

l vfh.cpp

l A_star.cpp

l bspline_optimizer.cpp

l …

Ø 后续会加入更多的规划类算法demo

在这里插入图片描述



Prometheus 目标识别模块

Ø 现有功能:二维码识别、椭圆识别、KCF追踪、数字识别(基于pytorch)、通

用目标识别(YOLO v3 tiny)、Siam-RPN追踪(基于pytorch)等

Ø 订阅摄像头数据

l “/prometheus/camera/rgb/image_raw”

Ø 发布识别结果,即目标在相机坐标系的位置

l “/prometheus/target”

Ø 重要代码

l config文件夹中为相机配置文件

l pytorch_mnist_det.py

l siam_rpn.py

l ellipse_det.cpp

l kcf_tracker.cpp

l YoloObjectDetector.cpp

l …

Ø 后续加入更多的目标检测算法

在这里插入图片描述



Prometheus 任务模块

Ø 订阅来自规划、目标检测模块的处理结果

Ø 发布统一的控制指令至控制模块

l “/prometheus/control_command”

Ø 处理任务逻辑,生成统一的控制指令,重要代码

l autonomous_landing.cpp

l circle_crossing.cpp

l number_detection.cpp

l indoor_competition.cpp

在这里插入图片描述



prometheus_gazebo模块

Ø config:各类配置文件(如rviz)

Ø cpp_nodes、py_nodes:与仿真相关的节点源文件

Ø gazebo_plugin:gazebo插件

Ø models:自定义的无人机、传感器模型

Ø worlds:自定义的场景

Ø launch:demo 的启动脚本

在这里插入图片描述



Prometheus 模块关系

Ø 常见的无人机自主飞行应用

l 无GPS环境自主导航

l 基于视觉的目标追踪

l 基于Aruco码的自主降落

在这里插入图片描述



Prometheus开发流程

  • Ø 科研/比赛/产品开发…
  • Ø 硬件选型

    l 机架、传感器、机载电脑等
  • Ø 软件(功能)选型

    l 飞控软件、机载处理软件
  • Ø 二次开发(可能不需要)
  • Ø 仿真测试

    l 代码功能测试

    l 节约时间与成本
  • Ø 实物实验

    l 综合验证

    在这里插入图片描述



基于Gazebo的软件在环仿真

在这里插入图片描述

Ø PX4到仿真器。PX4给仿真器只会发送一个HIL_ACTUATOR_CONTROLS的MAVLink消息,熟悉PX4的应该知道这个对应的uORB消息是

actuator_outputs.msg,也就是姿态控制器最后的输出控制量。这里也就意味着,混控是在仿真器中进行的,仿真器中也包含电机的模型。

Ø 仿真器到PX4。仿真器的作用就是模拟真实飞行,即模拟计算出真实飞行时的传感器状态,包括GPS,IMU等,将这些信息发送给飞控后,再由

飞控中的估计模块计算出飞机状态量。

Ø 外部到PX4。这里的外部就比如地面站QGC(可以外接遥控器),Mavros,Dronecode SDK等,这里也就可以模拟我们平时控制飞机的方式。

Ø 个人经验表明: PX4-Gazebo仿真的意义与价值在于代码测试,代表可行性,不代表性能

在这里插入图片描述



Prometheus功能展示



无人机控制

在这里插入图片描述

ü 无人机位置环控制器二次开发

ü 内置多个示例开发程序,并提供测试工具

ü 无人机之间分布式通信

ü 集群控制算法二



多机编队控制

在这里插入图片描述

ü 无人机之间分布式通信

ü 集群控制算法二次开发



建图

ü RTAB-Map或Octomap

ü 传感器可选择:双目、RGBD相机、激光雷达

在这里插入图片描述



ORB-SLAM

ü SLAM算法测试

ü 多种SLAM算法选择
在这里插入图片描述



全局/局部避障

ü 全局路径规划算法

ü 局部规划算法(APF、V

在这里插入图片描述



轨迹优化

Ø FastPlanne

在这里插入图片描述



自主降落

在这里插入图片描述



形状穿越

在这里插入图片描述



颜色巡线

在这里插入图片描述



KCF框选追踪

在这里插入图片描述



数字识别

在这里插入图片描述



Prometheus未来规划

配套地面站 Prometheus Statio

在这里插入图片描述

Ø 机载电脑专用地面站:QGC只是PX4的地面站,

Prometheus Station将服务于机载电脑端的便利

开发。

Ø 摆脱nomachine、SSH等远程桌面的开发方式

Ø 各类消息一目了然、展示度更高

Ø 集成绘图、logo功能

在这里插入图片描述



配套课程 – Prometheus自主无人机二次开发课程

Ø 授课老师:Prometheus开发团队

Ø 特别嘉宾:Dronecode全球社区负责人

Ø 课程大纲:

u Prometheus入门与介绍

u 自主无人机平台搭建

u 无人机建模与控制

u 无人机建图与定位

u 无人机运动规划

u 无人机目标检测



版权声明:本文为Maker_pace原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。