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

文章目录

  • Prometheus全自主无人机开源软件平台
    • 项目创始人介绍
  • 背景
    • 多旋翼无人机发展历史:
    • 多旋翼无人机的优势
    • 多旋翼无人机的应用场景
    • 什么是自主无人机?
    • 无人机的基本组成(航模)
  • PX4生态系统
    • PX4飞行控制栈
    • Dronecode 基金会
    • PX4 - uORB消息机制
    • PX4 - MAVLink模块
    • PX4 飞控硬件 - Pixhaw
    • PX4 QGroundControl 地面站
    • PX4 MAVLink通信协议
    • PX4 Mavros 功能包
    • PX4 优势
    • Prometheus与PX4的关系
  • Prometheus
    • Prometheus模块介绍
    • Prometheus 开发团队
    • Prometheus安装及上手
    • Prometheus 模块框架
      • Prometheus 共用模块
      • Prometheus 控制模块
      • Prometheus 建图定位模块
      • Prometheus 规划模块
      • Prometheus 目标识别模块
      • Prometheus 任务模块
    • prometheus_gazebo模块
    • Prometheus 模块关系
    • Prometheus开发流程
    • 基于Gazebo的软件在环仿真
    • Prometheus功能展示
      • 无人机控制
      • 多机编队控制
      • 建图
      • ORB-SLAM
      • 全局/局部避障
      • 轨迹优化
      • 自主降落
      • 形状穿越
      • 颜色巡线
      • KCF框选追踪
      • 数字识别
      • Prometheus未来规划
    • 配套课程 - Prometheus自主无人机二次开发课程

  • 标题 : Prometheus 二次开发课程入门:
  • 起源: 根据戚博士整理讲解的资料整理的学习笔记,有兴趣的同学可以去系统学习下 -
    -【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第1张图片
  • 课程网址:https://bbs.amovlab.com/plugin.php?id=zhanmishu_video:video&mod=video&cid=43
  • 课程介绍: 本课程偏重Prometheus项目中的基础知识和操作实践,适合项目入门者,购买课程后会定期安排线上答疑活动(语音交流,方便透彻!)
  • 课程项目网址 : https://github.com/amov-lab/Prometheus

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

项目创始人介绍

【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第2张图片

  • 戚煜华
  • 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生态系统

【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第3张图片

PX4飞行控制栈

  • PX4是用于无人机的开源飞行控制软件。
  • 该项目为无人机开发人员提供了一套灵活的工具,以共享技术,从而为无人机应用创建量身定制的解决方案。
  • PX4提供了提供无人机硬件支持和软件堆栈的标准,从而允许生态系统以可扩展的方式
    构建和维护硬件和软件。
  • PX4 Github主页:https://github.com/PX4/Firmware (3.7k stars,410 contributor)

Dronecode 基金会

【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第4张图片

  • 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消息
【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第5张图片

PX4 飞控硬件 - Pixhaw

Ø 常见的Pixhawk,硬件标准开源
【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第6张图片

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)的实时双向通信
    【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第7张图片

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二次开发课程 】01 Prometheus简介 (学习笔记)_第8张图片

Prometheus 共用模块

Ø Prometheus项目自定义消息
l ControlCommand.msg
l DroneState.msg
l Message.msg
l …
Ø 共用的库函数

【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第9张图片

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二次开发课程 】01 Prometheus简介 (学习笔记)_第10张图片

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二次开发课程 】01 Prometheus简介 (学习笔记)_第11张图片

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二次开发课程 】01 Prometheus简介 (学习笔记)_第12张图片

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二次开发课程 】01 Prometheus简介 (学习笔记)_第13张图片

Prometheus 任务模块

Ø 订阅来自规划、目标检测模块的处理结果
Ø 发布统一的控制指令至控制模块
l “/prometheus/control_command”
Ø 处理任务逻辑,生成统一的控制指令,重要代码
l autonomous_landing.cpp
l circle_crossing.cpp
l number_detection.cpp
l indoor_competition.cpp
【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第14张图片

prometheus_gazebo模块

Ø config:各类配置文件(如rviz)
Ø cpp_nodes、py_nodes:与仿真相关的节点源文件
Ø gazebo_plugin:gazebo插件
Ø models:自定义的无人机、传感器模型
Ø worlds:自定义的场景
Ø launch:demo 的启动脚本
【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第15张图片

Prometheus 模块关系

Ø 常见的无人机自主飞行应用
l 无GPS环境自主导航
l 基于视觉的目标追踪
l 基于Aruco码的自主降落
【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第16张图片

Prometheus开发流程

  • Ø 科研/比赛/产品开发…
  • Ø 硬件选型
    l 机架、传感器、机载电脑等
  • Ø 软件(功能)选型
    l 飞控软件、机载处理软件
  • Ø 二次开发(可能不需要)
  • Ø 仿真测试
    l 代码功能测试
    l 节约时间与成本
  • Ø 实物实验
    l 综合验证
    【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第17张图片

基于Gazebo的软件在环仿真

【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第18张图片

Ø PX4到仿真器。PX4给仿真器只会发送一个HIL_ACTUATOR_CONTROLS的MAVLink消息,熟悉PX4的应该知道这个对应的uORB消息是
actuator_outputs.msg,也就是姿态控制器最后的输出控制量。这里也就意味着,混控是在仿真器中进行的,仿真器中也包含电机的模型。
Ø 仿真器到PX4。仿真器的作用就是模拟真实飞行,即模拟计算出真实飞行时的传感器状态,包括GPS,IMU等,将这些信息发送给飞控后,再由
飞控中的估计模块计算出飞机状态量。
Ø 外部到PX4。这里的外部就比如地面站QGC(可以外接遥控器),Mavros,Dronecode SDK等,这里也就可以模拟我们平时控制飞机的方式。
Ø 个人经验表明: PX4-Gazebo仿真的意义与价值在于代码测试,代表可行性,不代表性能

【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第19张图片

Prometheus功能展示

无人机控制

【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第20张图片

ü 无人机位置环控制器二次开发
ü 内置多个示例开发程序,并提供测试工具

ü 无人机之间分布式通信
ü 集群控制算法二

多机编队控制

【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第21张图片

ü 无人机之间分布式通信
ü 集群控制算法二次开发

建图

ü RTAB-Map或Octomap
ü 传感器可选择:双目、RGBD相机、激光雷达

【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第22张图片

ORB-SLAM

ü SLAM算法测试
ü 多种SLAM算法选择【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第23张图片

全局/局部避障

ü 全局路径规划算法
ü 局部规划算法(APF、V
【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第24张图片

轨迹优化

Ø FastPlanne
【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第25张图片

自主降落

【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第26张图片

形状穿越

【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第27张图片

颜色巡线

【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第28张图片

KCF框选追踪

【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第29张图片

数字识别

【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第30张图片

Prometheus未来规划

配套地面站 Prometheus Statio
【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第31张图片

Ø 机载电脑专用地面站:QGC只是PX4的地面站,
Prometheus Station将服务于机载电脑端的便利
开发。
Ø 摆脱nomachine、SSH等远程桌面的开发方式
Ø 各类消息一目了然、展示度更高
Ø 集成绘图、logo功能
【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记)_第32张图片

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

Ø 授课老师:Prometheus开发团队
Ø 特别嘉宾:Dronecode全球社区负责人
Ø 课程大纲:
u Prometheus入门与介绍
u 自主无人机平台搭建
u 无人机建模与控制
u 无人机建图与定位
u 无人机运动规划
u 无人机目标检测

你可能感兴趣的:(【Prometheus二次开发课程 】01 Prometheus简介 (学习笔记))