PrometheusGroundStation-Pro使用手册
注意
该软件目前仅支持Prometheus-v2,建议先在仿真熟悉地面站的使用后再在真机上使用。
PrometheusGroundStation-Pro简介
该软件是使用Qt开发的基于Prometheus自主无人机开源项目的人机交互界面,简化了Prometheus的操作和使用流程,同时采用TCP/UDP通信机制,避免了ROS1多机通信繁琐的配置。
该地面站可以让用户更快复现Prometheus中的各种功能,且同时适用于真机和仿真系统。
该地面站目前已适配了Prometheus项目中绝大数功能。包括但不限于单机、集群、吊舱、视觉控制操作、以及数据的实时反馈等。
communication功能包简介
Prometheus通信子模块,该模块和PrometheusGroundStation-Pro版息息相关。
该模块通过接收地面站发送的指令,将其转换为ROS话题、ROS服务等消息以达到控制无人机的作用。
该模块会通过订阅ROS话题、ROS服务等消息,然后将数据发送到组播地址(也可以是UDP地址),然后地面站通过监听对应端口拿到数据在界面上进行显示。
准备工作
环境要求
一台x86架构电脑
windows10、windows11、ubuntu 18.04、ubuntu 20.04系统(目前windows版本仅在windows10和windows11上进行测试,其他windows版本可以自行测试使用)
软件下载
注意
因为协议上的一些变动,导致协议不匹配,可能会导致地面站使用失败的情况,可以查看更新记录查看更多对应情况。
Ubuntu版本
下载完成后需要赋予权限,操作如下:
chmod a+x PrometheusGroundStation-Pro.AppImage
注意
下载完成、权限赋予后,先双击启动,创建下方配置文件存放路径,同时查看程序是否正常,上述操作完成后关闭软件。
Gstreamer依赖安装
sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
注意
如果缺少Gstreamer依赖,可能导致Gstreamer拉流失败。
注意
1.23.05.09版本前下面存放路径修改为~/Documents/PrometheusGround/。
下载完成后解压到home路径下的/Documents/PrometheusGroundStation/中(~/Documents/PrometheusGroundStation/)。
注意
该模块必须下载,且必须将其放到指定路径,否则会导致地面站无法显示地图。
下载完成后解压到home路径下的/Documents/PrometheusGroundStation/中(~/Documents/PrometheusGroundStation/)。
编译该功能包:
# 需要ROS环境(自行配置)、其他环境(sudo apt install ros-melodic-qt-build)
cd ~Documents/PrometheusGround/myrviz
catkin_make
注意
该模块可选择下载(不下载也不会影响使用),该模块目前暂未进行真机测试,仅限仿真使用。
Windows版本
注意
1.23.05.09版本及以后版本才支持windows系统。
下载完成后解压到系统文档路径下的PrometheusGroundStation文件夹中。(~/文档/PrometheusGroundStation/)。
rviz模块暂不支持windows版本。
P系列无人机配置文件
专门针对P系列无人机增加的一些功能启动按钮,方便用户的程序的使用。
准备完成
准备完成后,如果上方配置文件全部下载,那么存放路径以及文件夹如下图所示:
下图为ubuntu系统,1.23.05.09版本之前的地面站路径存放,之后版本 PrometheusGround 文件夹变更为 PrometheusGroundStation 文件夹:
下图为windows系统:
注意
如果使用地面站添加了无人机,会出现一些其他数据存储文件,该情况是正常的。
功能介绍
注意
下方ROS话题的发布者和订阅者为相关节点,括号内为对应文件,如无超链接则表示该文件为阿木实验室闭源仓库文件;如需查看,请联系相关人员。
数据监控
地面站会实时显示无人机的状态,包含以下话题的数据:
-
无人机状态:/uav*/prometheus/state
发布者:uav_control_main_*(uav_estimator.cpp)
订阅者:communication_bridge(uav_basic_topic.cpp) -
无人机控制状态:/uav*/prometheus/control_state
发布者:uav_control_main_*(uav_controller.cpp)
订阅者:communication_bridge(uav_basic_topic.cpp) -
无人机控制指令:/uav*/prometheus/command
发布者:swarm_control_node(swarm_control.cpp),communication_bridge(uav_basic_topic.cpp)
订阅者:communication_bridge(uav_basic_topic.cpp) -
集群控制指令:/prometheus/swarm_command
发布者:communication_bridge(swarm_control_topic.cpp)
订阅者:communication_bridge(swarm_control_topic.cpp) -
吊舱状态:/gimbal/state
发布者:gimbal(gimbal_server.cpp)
订阅者:communication_bridge(gimbal_basic_topic.cpp) -
跟踪误差数据:/gimbal/track
发布者:tracker_ros(kcf.cpp)
订阅者:communication_bridge(gimbal_basic_topic.cpp)
具体数据内容可以参考Prometheus中common模块的prometheus_msgs功能包的msg文件,UAVState.msg、UAVControlState.msg、UAVCommand.msg、SwarmCommand.msg、GimbalState.msg和VisionDiff.msg。
消息反馈
地面站会根据用户操作、触发不同的信息反馈,根据消息反馈的提示可以更好的操作地面站。消息反馈话题如下:
-
信息反馈:/uav*/prometheus/text_info
发布者:uav_control_main_*(uav_controller.cpp),swarm_control_node(swarm_control.cpp)等
订阅者:communication_bridge(uav_basic_topic.cpp)
具体数据内容可以参考Prometheus中common模块的prometheus_msgs功能包的msg,TextInfo.msg。
单机控制
地面站会根据用户的操作,发送不同的指令以控制无人机,包含当前点悬停、初始点悬停、降落,以及移动模式下惯性系、机体系中的位置、速度、定高,轨迹、姿态、经纬高控制等。单机控制话题如下:
-
无人机控制指令:/uav*/prometheus/command
发布者:communication_bridge(uav_basic_topic.cpp)
订阅者:uav_control_main_*(uav_controller.cpp)
具体数据内容可以参考Prometheus中common模块的prometheus_msgs功能包的msg,UAVCommand.msg。
集群控制
地面站会根据用户操作,发送不同的指令以控制总个集群系统,包含位置控制、控制模式设置、队形变换设置、队形间距设置等。集群控制话题如下:
-
集群控制指令:/prometheus/swarm_command
发布者:communication_bridge(swarm_control_topic.cpp)
订阅者:swarm_control_node(swarm_control.cpp)
具体数据内容可以参考Prometheus中common模块的prometheus_msgs功能包的msg,SwarmCommand.msg。
吊舱控制
地面站会根据用户操作,发送不同的指令去控制吊舱,包含roll、pitch、yaw、焦距等控制。吊舱控制话题如下:
-
吊舱控制话题::/gimbal/control
发布者:communication_bridge(gimbal_basic_topic.cpp)
订阅者:gimbal(gimbal_server.cpp)
具体数据内容可以参考Prometheus中common模块的prometheus_msgs功能包的msg,GimbalControl.msg。
视觉控制
地面站会根据用户操作,去框选、取消框选,以及获得目标检测的结果,去点击对应目标ID框、取消点击对应目标ID框。相关话题如下:
-
目标检测话题:/deepsort_ros/object_detection_result
发布者:deepsort(main.cpp)
订阅者:communication_bridge(object_tracking_topic.cpp) -
视觉控制话题:/detection/bbox_draw
发布者:communication_bridge(gimbal_basic_topic.cpp)
订阅者:tracker_ros(kcf.cpp)
具体数据内容可以参考Prometheus中common模块的prometheus_msgs功能包的msg,MultiDetectionInfoSub.msg和WindowPosition.msg。
百度地图
地面站内嵌百度地图,并使用相关SDK,实现下列功能:
- 支持在线、离线两种模式,同时支持街道图、卫星图等多种观看模式,并且可以使用百度地图部分API接口。
- 提供离线地图瓦片下载
- 根据无人机经纬度信息,实时显示无人机当前位置
- 配合单机控制中的经纬高控制,通过点击地图,自动填入经纬度,实现点哪儿飞哪儿
平面地图
地面站内嵌平面地图,实现下列功能:
- 根据无人机位置(position)信息,实时显示无人机位置
- 根据控制指令信息,在平面地图上指明各无人机要飞到的位置
- 集群控制自主分配后,可以查看预期飞往的位置,避免交叉情况出现
- 提供打点功能,记录轨迹、集群多机、定位精度等数据,可将数据保存为xlsx文件,然后通过散点图复现轨迹。
虚拟摇杆
地面站支持如下功能:
- 支持鼠标或者键盘控制
- 提供三轴、偏航最大速度设置接口
视频流拉取
地面站支持如下功能:
- 支持rtsp流
- 支持rtmp流
ROS参数
地面站支持如下功能:
- 加载参数
- 支持修改参数,达到调参作用
- 支持一键修改全部无人机
一键启动
地面站支持一键启动程序功能,支持如下功能:
- 一键启动对应程序,如单机控制、集群控制等相关程序。
- 提供自定义一键启动接口,用户通过自己设置生成对应程序启动按钮。
日志记录
地面站支持日志记录功能,记录数据如下:
- 无人机状态数据
- 无人机控制状态数据
- 信息反馈数据
rviz(仿真)
地面站支持rviz基本功能,该功能目前没有任何进行真机测试,建议仿真使用(如果使用真机测试,可能存在风险,如飞行器失控、伤人、坠毁等,此功能后续会逐步完善)。
串口转发
一般用于H16遥控器和RTK模块同时使用情况,用于转发rtcm协议数据,支持如下功能:
- 串口数据接收查看
- 串口数据转发(目前仅支持UDP转发)
图像操作
根据拉取的图像,支持如下功能:
- 截图
- 录像
界面说明
该章节主要对PrometheusGroundStation-Pro做一个总体界面说明。
主界面
上图中标注介绍如下:
-
标注1:主导航栏,包括主界面、系统设置、消息反馈、调试帮助,通过点击进行切换
-
标注2:当前无人机、可通过此处下拉框重新选择当前控制的无人机
-
标注3:无人机重要信息数据监控,包括控制状态、控制器、飞行模式、保护触发和电量。
-
标注4:主界面副导航栏,一个有五个导航栏,其中视频监控、地图监控、数据监控为默认显示,集群控制和rviz需要去系统设置中打开才会显示
-
标注5:当前无人机的位置、速度、姿态、期望位置、期望速度的数据(相关msg文件(UAVState.msg))。
-
标注6:无人机控制接口(相关教程参考链接,相关msg文件(UAVCommand.msg),相关代码(uav_controller.cpp))与按钮联系:
Agent_CMD 按钮名 简介 Init_Pos_Hover 初始点悬停 无人机回到解锁点上方 Current_Pos_Hover 当前点悬停 无人机保持当前位置进行悬停,一般用于移动模式后 Land 降落 无人机降落 Move 上传 无人机根据不同子模式以及控制量进行自主移动 上图中除了四个按钮,还有一个下拉框,以及多个输入框,下拉框为选择移动子模式,输入框为输入控制量(输入框无数据时会提示用户输入的控制量,不输入默认为0),下面解释这些移动子模式接口:
移动子模式 下拉框对应 惯性系定点控制 XYZ_POS 惯性系定高速度控制 XY_VEL_Z_POS 惯性系速度控制 XYZ_VEL 机体系位置控制 XYZ_POS_BODY 机体系速度控制 XYZ_VEL_BODY 机体系定高速度控制 XY_VEL_Z_POS_BODY 轨迹追踪控制 TRAJECTORY 姿态控制(来自外部控制器) XYZ_ATT 绝对坐标系下的经纬度 LAT_LON_ALT 这里简单介绍一下惯性系和机体系:
- 惯性系:x轴指向东边,y轴指向北边,z轴指向天。
- 机体系:以无人机当前位置为原点,机头向前方向为x轴,垂直机头90度向左为y轴,垂直xy平面向上为z轴。
注意
根据子模块的选择不同,地面站上控制量输入也会有对应变化,具体使用可参考第五章。
下面会分别介绍主界面副导航栏:
视频监控
上图中标注介绍如下:
-
标注1
- 播放:播放视频流
- 暂停:暂停视频流
-
标注2:以下操作均需启动对应吊舱、视觉模块程序。
-
停止:点击两次后吊舱回中。
-
框选:一般用于框选跟踪,鼠标左键按住点和释放点两点成一个框,当两点x、y两轴距离小于9px时,视为取消框选。
-
点击:一般用于目标识别后,左键点击需要跟踪的目标框。右键取消点击。
-
手动控制:一般用于吊舱控制,操作如下表格:
ffmpeg gsteramer yaw 在图像中间按住鼠标左键左右拖动 在图像中间按住鼠标左键左右拖动 pitch 在图像中间按住鼠标左键上下拖动 在图像中间按住鼠标左键上下拖动 roll 在图像中间按住鼠标右键左右拖动 在图像左上角、左下角、右上角和右下角,按住鼠标左键左右拖动 如果吊舱支持焦距控制,使用鼠标滑轮进行控制。
-
相关msg文件参考:GimbalControl.msg,WindowPosition.msg,MultiDetectionInfoSub.msg,GimbalState.msg
注意
仅支持阿木实验室G1吊舱和Q10F吊舱,其余吊舱需自己适配。同时在框选、点击、手动控制模式下地面站无法进行移动。
百度地图
上图中标注介绍如下:
- 标注1:百度地图和平面地图切换按钮
- 标注2:百度地图的部分SDK接口
- 标注3:切换街道图和卫星图
- 标注4:无人机的实时位置显示
- 标注5:标度尺
- 标注6:在线地图和离线地图切换
- 标注7:一些其他显示模式,包括地球、三维模式等;离线地图仅支持普通模式。
- 标注8:点击该按钮后会刷新无人机位置;
- 标注9:标注2中使用后,可清除标注2在地图上生成的覆盖物。
- 标注10:瓦片下载表格,包括级别、瓦片数量、下载进度,瓦片级别越高,那么精度也越高、瓦片数量也就越多。
- 标注11:选择瓦片下载的类型,分为街道图、卫星图和路网图三种;混合图(简单理解就纯卫星图是没有地名的,而混合图是在卫星图基础上加上地名)需要卫星图和路网图都要下载。
- 标注12:选择瓦片下载的区域,分为可视区域、行政区域、框选区域三种。其中行政区域配合标注13使用;框选区域配合标注2使用。
- 标注13:选择瓦片下载的区域。
- 标注14:上述瓦片下载的类型和区域选择完成后,该按钮会在标注10中显示具体瓦片数据。
- 标注15:选择全部瓦片或者取消全选。
- 标注16:目录一般而言不需要修改,软件会根据选择下载的类型自动将瓦片放到对应文件中。
- 标注17:提示
- 标注18:打开文件自己选择路径下载;
- 标注19:开始下载瓦片和停止下载瓦片,需要先点击标注14加载按钮。
百度地图
上图中标注介绍如下:
- 标注1:百度地图和平面地图切换按钮
- 标注2:百度地图的部分SDK接口
- 标注3:切换街道图和卫星图
- 标注4:无人机的实时位置显示
- 标注5:标度尺
- 标注6:在线地图和离线地图切换
- 标注7:一些其他显示模式,包括地球、三维模式等;离线地图仅支持普通模式。
- 标注8:点击该按钮后会刷新无人机位置;
- 标注9:标注2中使用后,可清除标注2在地图上生成的覆盖物。
- 标注10:瓦片下载表格,包括级别、瓦片数量、下载进度,瓦片级别越高,那么精度也越高、瓦片数量也就越多。
- 标注11:选择瓦片下载的类型,分为街道图、卫星图和路网图三种;混合图(简单理解就纯卫星图是没有地名的,而混合图是在卫星图基础上加上地名)需要卫星图和路网图都要下载。
- 标注12:选择瓦片下载的区域,分为可视区域、行政区域、框选区域三种。其中行政区域配合标注13使用;框选区域配合标注2使用。
- 标注13:选择瓦片下载的区域。
- 标注14:上述瓦片下载的类型和区域选择完成后,该按钮会在标注10中显示具体瓦片数据。
- 标注15:选择全部瓦片或者取消全选。
- 标注16:目录一般而言不需要修改,软件会根据选择下载的类型自动将瓦片放到对应文件中。
- 标注17:提示
- 标注18:打开文件自己选择路径下载;
- 标注19:开始下载瓦片和停止下载瓦片,需要先点击标注14加载按钮。
平面地图
上图中标注介绍如下:
- 标注1:平面地图显示区
- 标注2:存在的无人机名字和图标
- 标注3:无人机位置、偏航显示
数据监控
上图中标注介绍如下:
- 标注1:选中查看数据的无人机
- 标注2:无人机状态具体数据信息
- 标注3:无人机控制状态、无人机控制指令、吊舱状态等未展开数据,可以通过点击展开具体数据信息
相关msg参考文件:UAVState.msg,UAVControlState.msg,UAVCommand.msg,GimbalState.msg和VisionDiff.msg。
集群控制
由于该界面实现功能与集群子模块相互配合,同时适用于集群子模块的真机和仿真,而集群子模块作为Prometheus的付费子模块,所以这里不做介绍,详情可以参考集群子模块介绍。
RVIZ
该模块与rviz基本类似,且支持自定义添加数据。
注意:该模块目前测试较少,建议在仿真中使用,真机请谨慎使用。
系统设置
下面会分别介绍系统设置副导航栏:
虚拟摇杆设置
提示
虚拟摇杆是通过调用Prometheus中的XYZ_VEL_BODY(机体系速度控制)接口实现,所以机头方向为x轴。
上图中标注介绍如下:
- 标注1:是否开启虚拟摇杆,开启后会在主界面中的视频监控界面显示。
- 标注2:查看虚拟摇杆的x轴最大速度,以及设置x轴最大速度。
- 标注3:查看虚拟摇杆的y轴最大速度,以及设置y轴最大速度。
- 标注4:查看虚拟摇杆的z轴最大速度,以及设置z轴最大速度。
- 标注5:查看虚拟摇杆的yaw最大角速度,以及设置yaw最大角速度。
虚拟摇杆设置
提示
虚拟摇杆是通过调用Prometheus中的XYZ_VEL_BODY(机体系速度控制)接口实现,所以机头方向为x轴。
上图中标注介绍如下:
- 标注1:是否开启虚拟摇杆,开启后会在主界面中的视频监控界面显示。
- 标注2:查看虚拟摇杆的x轴最大速度,以及设置x轴最大速度。
- 标注3:查看虚拟摇杆的y轴最大速度,以及设置y轴最大速度。
- 标注4:查看虚拟摇杆的z轴最大速度,以及设置z轴最大速度。
- 标注5:查看虚拟摇杆的yaw最大角速度,以及设置yaw最大角速度。
其他
上图中标注介绍如下:
- 标注1:视频流拉取设置,第一个输入框为视频流前缀,第二个输入框为视频流后缀。IP不用自己手动设置,会默认为当前选中无人机的IP。
- 标注2:选择拉流方式,其中ffmpeg支持rtsp和rtmp,图像会将窗口填充满;gsteramer支持rtsp,图像会按比例显示。
- 标注3:rviz功能包路径,即在准备工作中下载的rviz模块配置功能包,点击文件路径按钮选中运行脚本,然后通过点击开启在主界面中开启rviz界面。
- 标注4:设置平面地图无人机到达距离,即误差为多少时判定无人机到达目标点。
- 标注5:设置平面地图无人机到达时间,即在到达距离误差范围内一定时间判定确定到达目标点,然后去掉目标点引导线。
- 标注6:组播IP地址设置,接收该组播地址数据。如需更改,需要配合通信节点一起修改。
- 标注7:平面地图打点功能,通过输入总时间、频率,选择需要打点的当前无人机或者全部无人机,启动按钮为打开打点功能,关闭按钮为关闭打点轨迹和打点功能, 保存数据按钮则会保存打点的数据存到xlsx文件中。
- 标注8:语言切换功能,其中有些英文并不完善,如果需要完善请自行二次开发。
- 标注9:主题切换功能,包括深色主题和浅色主题。深色主题适合室内,浅色适合室外。
- 标注10:版本号信息。
串口转发设置
提示
该界面仅在PrometheusGroundStation-Pro_v1.0.230227版本后才支持,主要用于H16遥控器-RTK模块(rtcm协议数据)的转发。
上图中标注介绍如下:
- 标注1:串口相关参数设置,以及打开关闭串口。
- 标注2:转发的地址以及端口,还有发送协议的类型,开启和关闭转发。
- 标注3:加载默认参数(P600旗舰款视觉跟踪系列款)。
- 标注4:清空标注5中的数据。
- 标注5:串口接收到的数据,检查串口数据是否正常。
连接设置
上图中标注介绍如下:
- 标注1
- 编号:与无人机机载端uav_id对应,同时与通信节点ROBOT_ID对应。
- 主机地址:无人机IP地址。
- 类型:目前仅允许无人机。
- 标注2
- 全选,勾选上后,选中所有无人机。
- 添加,标注1中数据填写完成后,点击该按钮后将无人机添加到标注3中。
- 删除,为防止误操作,需要点击标注3中要删除的无人机(选择项中勾选框无效),然后会将对应数据加载到标注1,然后才可以点击删除按钮。
- 修改,为防止误操作,需要点击标注3中要修改的无人机(选择项中勾选框无效),然后会将对应数据加载到标注1,然后在标注1中进行修改,修改完成后点击修改按钮即可。
- 连接,可点击标注3中选择一栏的勾选框选择性连接,也可点击全选按钮,然后连接全部无人机。
- 断开连接,可点击标注3中选择一栏的勾选框选择性断开连接,也可点击全选按钮,然后断开全部无人机。
- 重启,为防止误操作,需要点击标注3中要重启的无人机(选择项中勾选框无效),然后会将对应数据加载到标注1,然后才可以点击重启按钮;如果直接点击重启按钮则会关闭全部无人机(即修改、删除按钮不生效情况)。
- 关机,为防止误操作,需要点击标注3中要关闭的无人机(选择项中勾选框无效),然后会将对应数据加载到标注1,然后才可以点击关闭按钮;如果直接点击关机按钮则会关闭全部无人机(即修改、删除按钮不生效情况)。
- 自动连接,勾选后,以后再次启动地面站会自动连接一次全部无人机。
- 标注3:添加的无人机的连接数据表格。
集群设置
上图中标注介绍如下:
- 标注1:开启的集群为仿真模式(一台仿真电脑运行)还是真机模式(多个机载电脑交互),请根据实际情况选择。
- 标注2:集群数量,该值需要和通信节点集群数量对应。
- 标注3:选择要集群的无人机,一般而言是连续的几台无人机,建议将不需要集群的无人机删除。
- 标注4:队形距离,变化对应过程中无人机之间的间隔,单位为m。
- 标注5:开启集群控制和关闭集群控制按钮,通过点击开启集群控制按钮开启主界面集群控制界面,关闭反之。
集群设置
上图中标注介绍如下:
- 标注1:开启的集群为仿真模式(一台仿真电脑运行)还是真机模式(多个机载电脑交互),请根据实际情况选择。
- 标注2:集群数量,该值需要和通信节点集群数量对应。
- 标注3:选择要集群的无人机,一般而言是连续的几台无人机,建议将不需要集群的无人机删除。
- 标注4:队形距离,变化对应过程中无人机之间的间隔,单位为m。
- 标注5:开启集群控制和关闭集群控制按钮,通过点击开启集群控制按钮开启主界面集群控制界面,关闭反之。
吊舱控制
上图中标注介绍如下:
- 标注1:此处为表明视觉控制指令到达机载端后,通过何种形式发送给到视觉相关程序。此处默认为ROS/MSG,一般不用修改。
- 标注2:打开自主降落程序和关闭自主降落程序,此处机载程序暂时不完善。所以可将打开自主降落按钮视为视觉、吊舱控制接口开启。
- 标注3:自主降落程序功能,暂不完善,不使用。
- 标注4:自主降落程序功能参数跳转,暂不完善,不使用。
- 标注5:打开目标识别与追踪和关闭目标识别与追踪程序,此处机载程序暂时不完善。所以可将打开目标识别与追踪按钮视为视觉、吊舱控制接口开启。
数据设置
上图中标注介绍如下:
- 标注1:数据填充区,一行就是一个数据,通过下拉框选择数据类型,输入框输入具体数据,删除可删除该行数据。
- 标注2:添加按钮,添加一个数据。
- 标注3:发送按钮,将标注1中的所有数据发送给当前无人机的机载端,可在通信节点预留接口中自行开发使用。
调试设置
上图中标注介绍如下:
- 标注1:按钮名,即点击标注4生成按钮后会生成一个以该名的按钮。
- 标注2:运行指令,即点击生成的按钮后,在通信节点端启动的程序;输入格式如下:
- launch文件:roslaunch xxx xxx.launch
- shell脚本文件:/home/amov/xxx/xxx.sh
- 其他命令:gnome-terminal -- xxx(命令)
- 标注3:发送方式,即点击生成的按钮后,发送给当前无人机还是全部无人机。
- 标注4:生成按钮,该按钮会将标注1、标注2、标注3数据生成一个按钮。如果不可用,说明按钮已经生成。
- 标注5:删除,删除该按钮和该行所有数据。
- 标注6:添加,新增一行数据进行填充数据(可填充自定义的指令,不限于Prometheus),然后生成对应按钮。
控制模块
上图中标注介绍如下:
- 标注1:控制模块参数,该表格表明参数的名字、值和简单介绍。
- 标注2:加载,点击该按钮后会加载标注1的数据。
- 标注3:如果进行修改参数,选择修改当前无人机还是全部无人机。
参考文件路径:Prometheus/Modules/uav_control/launch/uav_control_outdoor.yaml
控制模块
上图中标注介绍如下:
- 标注1:控制模块参数,该表格表明参数的名字、值和简单介绍。
- 标注2:加载,点击该按钮后会加载标注1的数据。
- 标注3:如果进行修改参数,选择修改当前无人机还是全部无人机。
参考文件路径:Prometheus/Modules/uav_control/launch/uav_control_outdoor.yaml
通信模块
上图中标注介绍如下:
- 标注1:通信模块参数,该表格表明参数的名字、值和简单介绍。
- 标注2:加载,点击该按钮后会加载标注1的数据。
- 标注3:如果进行修改参数,选择修改当前无人机还是全部无人机。
参考文件路径:Prometheus/Modules/communication/launch/bridge.launch
集群控制
上图中标注介绍如下:
- 标注1:集群模块参数,该表格表明参数的名字、值和简单介绍。
- 标注2:加载,点击该按钮后会加载标注1的数据。
- 标注3:如果进行修改参数,选择修改当前无人机还是全部无人机。
参考文件路径:Prometheus/Modules/swarm_control/config/swarm_control_p600.yaml
提示
上述文件在集群模块中,而集群模块作为付费子模块,需要单独购买,如果没有购买此处会加载失败;如需使用请联系相关人员购买。
轨迹控制
上图中标注介绍如下:
- 标注1:轨迹控制参数,该表格表明参数的名字、值和简单介绍。
- 标注2:加载,点击该按钮后会加载标注1的数据。
- 标注3:如果进行修改参数,选择修改当前无人机还是全部无人机。
参考文件路径:Prometheus/Modules/uav_control/launch/uav_command_pub.yaml
消息反馈
上图中标注介绍如下:
- 标注1:消息反馈数据,可根据信息进行调试和操作。
- 标注2:清空,清空消息,即清空标注1信息。
消息反馈语句解析
例如:[Node1 INFO 2023.01.13 16:44:53] Simulation UAV1 connection succeeded!!!
可以将其拆分为下列几部分:
拆分部分 | 解释 |
---|---|
Node1 | 通信节点1号(1为通信节点ROBOT_ID的值) |
INFO | 消息反馈警告级别 |
2023.01.13 16:44:53 | 消息反馈时间戳 |
Simulation UAV1 connection succeeded!!! | 提示语句 |
消息反馈警告级别如下表格:
警告级别 | 解释 |
---|---|
INFO | 正常运行状况下反馈给地面站的信息,例如程序正常启动,状态切换的提示信息等 |
WARN | 无人机或软件程序出现意外情况,依然能正常启动或继续执行任务,小概率会出现危险状况,例如无人机RTK无法维持退出到GPS,视觉跟踪目标突然丢失重新搜寻目标等 |
ERROR | 无人机或软件程序出现重大意外情况,无法正常启动或继续执行任务,极有可能会出现危险状况,需要中断任务以及人为接管控制无人机,例如通信中断,无人机定位发散,ROS节点无法正常启动等 |
FATAL | 任务执行过程中,软件崩溃或无人机飞控崩溃导致无人机完全失控,需要迅速人为接管控制无人机降落减少炸机损失 |
调试帮助
上图中标注介绍如下:
- 标注1:demo示例,官方提供的启动的仿真,会进一步完善和补充。
- 标注2:自定义demo,由使用者提供的自己添加的按钮。
使用手册
注意
P系列无人机以它本身wiki为准。
该章节主要介绍PrometheusGroundStation-Pro的功能使用。
连接无人机
注意
该步骤十分重要,基本上所有操作都是基于此步骤。
该小节讲述地面站连接无人机的使用过程,此处以仿真举例,可以分为前面4步,第5步为断开无人机:
地面站添加无人机
按上述步骤操作即可,下面简单介绍步骤流程:
- 点击 系统设置,跳转到系统设置界面。
- 点击 连接设置,跳转到连接设置界面。
- 输入编号,即目标无人机ID,不可随便输入,需要与机载端无人机ID对应,不然会导致无法接收到无人机数据。
- 输入主机地址,即目标无人机IP地址。
- 选择UAV即可,目前暂不支持UGV。
- 点击添加,将步骤3到步骤5输入或选择的数据生成表格中一行数据。
- 该行就是添加的无人机。
此时进行下一步操作,参数检查修改。
参数检查修改
提示
建议固定地面站IP以及空中端IP,防止反复修改。
参数修改本质上是通信模块的参数修改,修改方式有两种:
- launch文件修改参数(长期有效)
- 地面站修改参数(通信节点存活期间有效)
遇到如下两种情况需要将组播地址设置为地面站IP:
- 地面站和仿真跑在一台电脑上,且不连接网络,此时无法形成组网,需将组播IP和地面站IP设置都127.0.0.1。
- 使用无法组网的数据链路时(如H16遥控器等),需要将组播IP设置为地面站IP。
这两种情况会导致地面站无法接收机载端的数据,所以无法使用地面站去修改参数。
launch文件修改参数
上述两种情况可以参考该launch文件(组播地址默认为地面站地址):/Prometheus/Modules/communication/launch/h16_bridge.launch
一般而言只需要修改上图中框选中的参数,上图中标注介绍如下:
- 标注1:第一个参数为是否开启自启(即点击连接和断开连接是否运行脚本命令),第二三个参数为点击连接和断开连接的参数脚本指令。
- 标注2:第一个参数为地面站IP,第二个参数为无人机ID,第三个参数为是否是仿真使用(1为是,0为否)。
地面站修改参数
按上述步骤操作即可,下面简单介绍步骤流程:
- 点击 系统设置,切换到系统设置界面。
- 点击 参数设置,切换参数设置界面。
- 点击 通信模块,切换通信模块参数显示界面。
- 点击 加载,加载机载端参数,加载完成后,会通过消息反馈进行提示,如果没有提示请检查数据链路(组网)情况或通信节点是否正常启动。
- 双击 地面站IP(也可以是其他参数)参数的值,即可进行修改,修改完后也会有消息反馈进行提示。
参数脚本指令写法可以参考如下:
# shell脚本 如果shell脚本中已经写了gnome-terminal -- ,下方的可以省略
gnome-terminal -- '/home/amov/Prometheus/Scripts/simulation/px4_gazebo_sitl_test/px4_sitl_indoor.sh'
#launch文件
gnome-terminal -- roslaunch prometheus_uav_control uav_control_main_indoor.launch
#其他指令,下述指令为杀死除了通信节点和主节点的其他节点
gnome-terminal -- rosnode kill `rosnode list | grep -v /communication_bridge | grep -v /rosout`
launch文件部分参数修改参考(仿真情况):
# ...
<arg name="autoload" default="true"/>
<arg name="uav_control_start" default="'/home/amov/Prometheus/Scripts/simulation/px4_gazebo_sitl_test/px4_sitl_indoor.sh'"/>
<arg name="close_uav_control" default="gnome-terminal -- rosnode kill `rosnode list | grep -v /communication_bridge | grep -v /rosout`"/>
# ...
<arg name="ground_stationt_ip" default="127.0.0.1"/>
<arg name="uav_id" default="1"/>
<arg name="is_simulation" default="1"/>
# ...
提示
可以将autoload参数置为false,然后手动启动仿真,这种方式也是可行的。
注意
其他参数根据实际情况进行修改,如其他模块配置文件路径等等。
此时进行下一步操作,启动通信节点。
启动通信节点
启动launch文件
编译通信模块
首次运行请进行对通信模块的编译,请将通信模块进行编译,进入Prometheus路径,执行下方指令即可:(如已编译,跳过此步骤)
./compile_communication.sh
运行通信模块
# 参考,如修改的是h16_bridge.launch,则启动h16_bridge.launch
roslaunch prometheus_communication_bridge h16_bridge.launch
提示
如果购买阿木实验室P系列无人机(Prometheus-v2版本),该节点会设置为开机自动启动。
启动完成后,进行最后一步操作,地面站连接无人机。
可能会遇到的问题
编译过程中找不到x264.h头文件
缺少依赖,安装如下指令:
sudo apt-get install libx264-dev
运行launch文件出现如下错误
RLException: error loading <rosparam> tag:
file does not exist [/home/amov/Prometheus/Modules/swarm_control/config/swarm_control_p600.yaml]
XML is <rosparam command="load" file="$(arg prometheus_moudles_url)$(arg swarm_control_yaml)"/>
The traceback for the exception was written to the log file
没有集群模块代码(付费子模块),将launch文件中的集群配置文件参数删除即可。
地面站连接无人机
按上述步骤操作即可,下面简单介绍步骤流程:
- 选择 要连接的无人机。
- 点击 连接,此时如果参数开启了自动启动(autoload设置为true),会启动单机启动脚本(uav_control_start参数设置的值)。
- 消息反馈反馈连接成功。
地面站断开无人机
按上述步骤操作即可,下面简单介绍步骤流程:
- 选择 要断开连接的无人机。
- 点击 断开连接,此时如果参数开启了自动启动(autoload设置为true),会启动单机关闭脚本(close_uav_control参数设置的值)。
- 消息反馈反馈断开连接成功。
单机控制
该小节讲述地面站单机操作的使用过程:
提示
如果第1步中开启了自启动,并设置了对应脚本,第2步可以跳过。
启动控制节点
以仿真为例,打开终端输入如下指令(包括仿真和控制节点):
# 室内仿真
'/home/amov/Prometheus/Scripts/simulation/px4_gazebo_sitl_test/px4_sitl_indoor.sh'
地面站操作
参考主界面界面介绍标注6说明,基本上大多数功能都有说明,移动模式按照输入框提示输入对应数据即可。
这里主要详解介绍一下移动模式中的轨迹控制和经纬高控制两种子模式:
轨迹控制
注意
该控制接口需要配合uav_command_pub节点使用。
参数修改
按上述步骤操作即可,下面简单介绍步骤流程:
- 点击 系统设置,切换到系统设置界面。
- 点击 参数设置,切换参数设置界面。
- 点击 通信模块,切换通信模块参数显示界面。
- 点击 加载,加载机载端参数,加载完成后,会通过消息反馈进行提示,如果没有提示请检查数据链路(组网)情况或通信节点是否正常启动。
- 选择 参数trajectory_ground_control的值,修改为ture,收到打印成功的消息反馈后表示修改成。(也可以直接去修改通信节点的launch文件,这里就不详细介绍了)
注意
如果需要修改轨迹控制中圆心、速度等,可以在参数设置中加载轨迹控制参数进行调整,操作基本大同小异,这里就不详细介绍了。
启动轨迹控制节点
提示
可以用两种方式启动,一种是手动启动,另一种是地面站启动;建议使用地面站启动。
手动启动
通过打开终端,输入下方指令:
roslaunch prometheus_uav_control uav_command_pub.launch
地面站启动
通过自定义一个按钮,将轨迹控制节点的命令封装,正常关闭后会自动保存到配置文件,再次打开依旧存在,可反复使用。
按上述步骤操作即可,下面简单介绍步骤流程:
- 点击 系统设置,切换到系统设置界面。
- 点击 调试设置,切换调试设置界面。
- 点击 添加按钮。
- 在最新生成的区域中填写要生成按钮的名字(traject)。
- 填写运行指令(roslaunch prometheus_uav_control uav_command_pub.launch)。
- 发送方式选择。
- 最后点击生成按钮。
上述操作完成后,可以在调试帮助界面中查看生成按钮,进行如下操作:
按上述步骤操作即可,下面简单介绍步骤流程:
- 点击 调试帮助,切换到调试帮助界面。
- 点击刚才生成的按钮 traject,启动轨迹控制节点。
输入控制量
上述操作完成后,跳转回主界面:
按上述步骤操作即可,下面简单介绍步骤流程:
- 下拉框选择轨迹控制模式。
- 下拉框选择轨迹控制中,绕圆移动、绕8移动、前后移动以及左右移动选择一种。
- 输入框输入持续的时间。
- 点击上传按钮,开始执行任务。
经纬高控制
绝对坐标系下的经纬高控制,可以通过点击地图自动填入经纬度数据到输入框,实现点哪飞哪。
提示
如果发现地图上没有无人机,可以在地图右侧拉出隐藏框点击更新位置按钮。
按上述步骤操作即可,下面简单介绍步骤流程:
- 点击 主界面,跳转回主界面。
- 下拉框 选择经纬高控制。
- 点击 地图监控,跳转到地图监控界面。
- 选中 标注点。
- 在地图上点击,此时点击点的经纬度将填入到经纬度输入框中,此时填入高度即可。
警告
注意右下角刻度尺,通过点击点输入经纬度时防止超出无人机的地理围栏。
集群控制
该功能为付费子模块,如需使用请先联系相关人员购买。购买完成后查看集群子模块使用手册进行使用。
视频流拉取
按上述步骤操作即可,下面简单介绍步骤流程:
-
点击 系统设置,切换到系统设置界面。
-
点击 基本设置,切换基本设置界面。
-
点击 其他,切换到其他界面。
-
第一行有两个输入框,分别是视频流的地址前后缀,前后缀举例如下:
- 前缀:rtsp:// 或者 rtmp://
- 后缀:原始图像为 :8554/demo 或者 识别检测图像为 :8553/demo
- 中间IP表示当前无人机的IP。
第二行选择拉流内核分为两种情况:
- ffmpeg:支持rtsp以及rtmp,图像会填充满显示区域。
- gsteramer:仅支持rtsp,图像会按比例显示。
上述操作完成后,通过点击主界面中的视频监控查看推流过来的画面。
吊舱控制
该小节讲述地面站操作吊舱等视觉接口的使用,操作如下:
连接无人机
参考连接无人机即可。
视频流拉取
参考视频流拉取即可。
开启控制接口
根据上述步骤操作即可,操作完成后会有消息反馈提示,即打开吊舱和视觉相关接口控制。
返回主界面
具体操作可参考视频监控。
百度地图
注意
需要将准备工作中的地图配置文件下载并放到对应目录,否则会导致地图无法使用。
该小节讲述地面站百度地图功能的使用。
瓦片下载
首先根据步骤1选择瓦片下载类型,分别为街道图、卫星图和路网图。其中混合图为卫星图和路网图(上图就为混合图)。
根据步骤2选择下载的区域:
- 可视区域:软件当前地图显示的边界为大小进行下载。
- 行政区域:通过行政下拉框选择或者输入行政地点进行下载。
- 框选区域:在地图上框选一个区域为边界进行下载。
然后根据步骤3点击加载按钮,然后通过步骤4选择要下载的瓦片级别,然后步骤5点击下载。
注意
如果瓦片是配合地面站使用,目录一般而言是不需要修改的。
这里主要讲一下框选区域下载,步骤如下图所示:
根据步骤1选择框选区域,然后步骤2选择对应接口,然后步骤3在地图上进行框选即可。
上述步骤完成后,依旧是点击加载按钮,选择要下载的瓦片级别,最后点击下载。
其他功能
可参考地图监控中对于各个按钮的标注解释。
平面地图
该小节讲述地面站平面地图功能的使用。
显示期望位置
上图中蓝色箭头指向位置即为期望位置。
注意
因为平面地图,本质上是一个散点图,所以坐标轴左负右正;而无人机的坐标轴与之相反,所以会进行一个转换,以无人机为准,上下为x轴,左右为y轴(且左为正)。图上为期望位置(1,1,1)。
设置到达距离以及到达时间
一般而言,默认时间为3s,距离0.5m,这意味着当无人机进入目标点0.5m内,一旦超过3s即表明到达目标点,然后将目标线路箭头删除。
根据上述步骤即可设置到达距离以及时间。
平面地图到达距离:即无人机到达目标点多远距离判断其到达。
平面地图到达时间:即无人机到达平面地图到达距离内多长时间为到达,到达后目标线消失。
打点以及生成xlsx文件
前三步骤基本一致,步骤4输入打点的总时间以及频率,还有是否打印全部无人机或者选择打印当前无人机。步骤4输入完成后。点击步骤5即可跳转到平面地图查看打点详情,然后可以返回点击保存位置数数据生成xlsx文件(建议打点完成后在点击)。如果需要消除掉打点轨迹,点击关闭按钮即可,但是需要注意,点击关闭后将无法保存位置数据。
集群模式下选择打印全部无人机,点击保存数据时会将全部无人机位置数据存在一张xlsx表中。
可以将生成的位置数据表生成图表,以达到显示一段时间的轨迹记录。效果如上图(轨迹控制-圆)。
虚拟摇杆
根据上述步骤打开虚拟摇杆,同时设置各轴以及偏航的最大速度(默认为0)。
目前仅支持拉流内核为gsteramer才可使用,所以还需要进入其他选择gsteramer拉流,然后返回主界面。
虚拟摇杆可以使用鼠标控制以及键盘控制(需要焦点在虚拟摇杆上,点击一下虚拟摇杆即可)。
鼠标控制
- 鼠标左键按下,上下左右拖动控制无人机前后左右移动。
- 鼠标右键按下,上下控制无人机的z轴高度,左右控制无人机偏航。
- 鼠标释放,停止无人机移动。
键盘控制
- 键盘上下左右控制无人机前后左右移动。
- 键盘shift+上下控制无人机z轴高度,shift+左右控制无人机偏航。
- 键盘home按钮回到初始点悬停。
虚拟摇杆主要使用机体系-速度控制(XYZ_VEL_BODY),所以无人机前为机头方向。
ROS参数读写
根据上述步骤即可。
通过点击加载按钮,加载对应模块的参数,然后通过双击步骤4中的值进行修改。其中,加载和修改都会有消息反馈,可以根据反馈消息查看是否加载成功或修改成功。
如果需要一键修改全部无人机的某一参数,可以勾选右下角修改全部无人机选项。
一键启动
步骤4输入数据,其中运行指令输入roslaunch指令或者脚本文件(shell脚本 .sh文件)可直接填写,如果需要输入其他指令,可以参考如下指令:
# gnome-terminal -- 运行指令
# 如下面这个指令,关闭除了主节点和通信节点的其他节点。
gnome-terminal -- rosnode kill ‘rosnode list | grep -v /communication_bridge | grep -v /rosout’
然后点击生成按钮,会在调试帮助中的自定义demo中生成对应的按钮,可以通过选择发送方式选择全部无人机启动,也可以通过删除按钮删除该按钮,如下图所示。
其他设置
语言切换
通过点击简体语言和英语进行切换,并不完善。
主题切换
通过点击深色和浅色进行切换。
组播地址设置
一般情况下不需要修改,默认即可,如果要修改需同时修改机载端。
RVIZ
注意
该模块目前暂未进行真机测试,请在仿真下进行使用。如需使用请先进行准备工作将rviz功能包进行配置。
添加rviz路径
rviz界面
操作与rviz基本相似,这里就不详细介绍了。
串口转发
使用流程
按上述步骤操作即可,下面介绍步骤流程:
- 点击 系统设置,跳转到系统设置界面。
- 点击 连接设置,跳转到连接设置界面。
- 点击 串口转发设置,跳转到串口转发设置界面。
- 设置串口相关参数,分别为串口号、波特率、数据位、校验位、停止位和流控制,这里就不详细说明这些参数(可自行百度了解),然后点击开启串口,此时如果串口有数据则右边框中会有数据打印。
- 设置转发的协议类型(目前仅支持UDP)、目标地址和目标端口,设置完成后点击开启转发即开始转发。
P600旗舰款(H16遥控器+RTK模块)使用
前三步骤与使用流程的前三步骤一致,后面步骤如下:
- 加载默认配置
- 选择正确的串口号(一般为ttyUSB0,需用户自行检查并设置)
- 打开串口
- 开启转发
图像操作
注意
以下功能在PrometheusGroundStation-Pro_v1.0.230303版本及以后版本才支持。
截图
该功能目前仅支持ffmpeg拉流方式。
在主界面视频监控中双击画面即可保存当前帧画面。
保存路径:home路径下的/Documents/PrometheusGround/image文件夹中。
录像
上述标注1为录像开关。
两种拉流方式录像功能使用有所不同。
ffmpeg拉流录像操作
勾选即可开始录制。
取消勾选或点击暂停时会自动保存文件。
gstermer拉流录像操作
勾选后需要重新拉流(重新点击播放按钮)才会生效。
取消勾选后点击暂停即可保存文件。
保存路径:home路径下的/Documents/PrometheusGround/video文件夹中。
常见问题
输入框无法输入
- 请检测输入法,因为大部分输入框中都添加了正则表达式匹配,如果输入不规范会导致无法输入情况。
仿真情况下没有反馈消息打印
- 检查是否连接网络,因为通信节点回传到地面站的数据均走udp组播,udp组播需要连接网络。
- 如果不能连接网络,可以将通信节点launch文件中的组播地址改成127.0.0.1也可。
真机情况下没有反馈消息打印
- 检查连接是否正常(互相能否ping通)。
- 检查网关是否设置,如果没有设置网关请设置。
- 关闭其他网络开关,如果使用网线连接,则关闭wifi等其他网络,反之亦然。
- 如果上述均不能解决,且使用的是路由器,则可能是路由器没有正确地配置或支持组播传输导致。可以检查路由器的配置,确保它正确的支持组播传输。
更新记录
v1.23.01.09
- 添加版本号消息
v1.23.02.03
- 集群自主分配-动捕情况下设置以1号机为分配中心
- 集群定位状态正常情况增加,情况如下
- GPS(定位源)-GPS_FIX_TYPE_DGPS(定位状态)
- RTK(定位源)-GPS_FIX_TYPE_RTK_FLOATR(定位状态)
v1.23.02.27
- 集群自主分配逻辑优化
- 修复电量警告bug、进行集群动态分配时点击取消会取消掉勾选动态分配
- 集群界面添加全部降落按钮
- 删除组播地址修改
- 添加rtk数据串口转发功能
v1.23.03.03
- 优化ffmpeg拉流图像显示
- 增加ffmpeg拉流下视频流截图(png格式)功能、录像(mp4格式)功能
- 增加gstermer拉流下视频流录像(avi格式)功能
- 增加检验地面站多次启动问题
v1.23.05.09
-
支持Windows版本
-
增加生成飞行数据Matlab绘图功能
v1.23.06.05
- 修改协议,无人机状态和无人机控制数据增加时间戳数据
- 部分文字描述修改
- 部分bug修复
v1.23.07.10
- 部分文字描述修改
- 增加部分数据颜色提醒
- 修复协议不一致导致地面站崩溃问题
Prometheus版本对应情况
地面站开始版本 | 地面站最后版本 | Prometheus开始分支号(v2) | Prometheus最后分支号(v2) |
---|---|---|---|
v1.23.01.09 | v1.23.05.09 | 2022年12月之后 | 608ad0ce0cb138e18bb6a85d301ff94dd2d78965 |
v1.23.06.05 | v1.23.07.10 | f9d8f94ea48fc18ebff7b052e4914b65ca285b22 | a8d857d36b88c2d5792b69b3083b6cef2a11ed0a |
v1.23.07.17 | 上一版本最后分支之后 |
注意
Prometheus版本可以通过使用git checkout指令跳到对应分支。
# 进入Prometheus文件夹,打开终端
# 可以通过git checkout指令跳转到对应分支
# 比如使用的v1.23.07.10版本地面站,指定Prometheus最后的分支号
git checkout a8d857d36b88c2d5792b69b3083b6cef2a11ed0a