功能介绍
注意
下方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) -
吊舱状态:/uav*/gimbal/state
发布者:gimbal(gimbal_server.cpp)
订阅者:communication_bridge(gimbal_basic_topic.cpp)
具体数据内容可以参考Prometheus中common模块的prometheus_msgs功能包的msg文件,UAVState.msg、UAVControlState.msg、UAVCommand.msg、SwarmCommand.msg、GimbalState.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、焦距等控制。吊舱控制话题如下:
-
吊舱控制话题::/uav*/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接口。
- 提供离线地图瓦片下载
- 根据无人机经纬度信息,实时显示无人机当前位置
- 配合单机控制中的经纬高控制,通过点击地图,自动填入经纬度,实现点哪儿飞哪儿
- 支持OFFBOARD模式下航点规划功能
平面地图
地面站内嵌平面地图,实现下列功能:
- 根据无人机位置(position)信息,实时显示无人机位置
- 根据控制指令信息,在平面地图上指明各无人机要飞到的位置
- 集群控制自主分配后,可以查看预期飞往的位置,避免交叉情况出现
- 提供打点功能,记录轨迹、集群多机、定位精度等数据,可将数据保存为xlsx文件,然后通过散点图复现轨迹。
虚拟摇杆
地面站支持如下功能:
- 支持鼠标或者键盘控制
- 提供三轴、偏航最大速度设置接口
- 提供回到初始点按钮
视频流拉取
地面站支持如下功能:
- 支持rtsp流
- 支持rtmp流
ROS参数
地面站支持如下功能:
- 加载参数
- 支持修改参数,达到调参作用
- 支持一键修改全部无人机
一键启动
地面站支持一键启动程序功能,支持如下功能:
- 一键启动对应程序,如单机控制、集群控制等相关程序。
- 提供自定义一键启动接口,用户通过自己设置生成对应程序启动按钮。
日志记录
地面站支持日志记录功能,记录数据如下:
- 无人机状态数据
- 无人机控制状态数据
- 信息反馈数据
三维数据可视化图
主要为适配路径规划功能所开发,ubuntu版本和windows版本采用不同实现方式,其中ubuntu版本基于librviz开发,windows则采用qtopengl开发。
支持以下三维数据显示:
- OCTOMAP点云图
- 膨胀点云图
- 无人机模型
- 无人机轨迹
- 无人机规划轨迹
- 无人机目标点
串口转发
一般用于H16遥控器和RTK模块同时使用情况,用于转发rtcm协议数据,支持如下功能:
- 串口数据接收查看
- 串口数据转发(目前仅支持UDP转发)
图像操作
根据拉取的图像,支持如下功能:
- 截图
- 录像
自定义消息发送
根据自行设定自定义数据,将其发送到机载端通信节点,然后通信节点提供对应接口,进行二次开发。