P600旗舰款-视觉追踪系列的机载功能包放置于HOME目录,名字为p600_experiment
p600_experiment机载代码包
- 1、是工程编译生成的build文件
- 3、是工程编译生成的devel文件
- 2、可执行编译脚本
- 4、README.md
- 5、功能包源码src文件
- 6、P600旗舰款-视觉追踪系列的机载代码放置路径
源码src文件
在源码src文件里面包含了所有的功能包,每一个功能包相对独立,只有无人机控制代码启动launch文件实际存放于该代码仓库中,其他视觉、吊舱以及Prometheus等模块均已git submodule形式引入到该软件项目中,方便代码版本控制。
- 1、Prometheus子模块
- 2、吊舱控制子模块
- 3、圆X检测子模块
- 4、SiamRPN检测子模块
- 5、任务控制实现代码
- 6、一键启动launch文件和参数配置文件
p600_experiment功能包
- 1、mavros配置参数,分为室内参数和室外参数,默认加载室外参数,区分室内外
- 2、Prometheus控制配置参数,分为室内控制参数和室外控制参数,默认加载室外控制参数。终端控制参数室内外使用一套
- 3、Prometheus相机参数,包含相机的标定参数,编码配置参数一以及编码配置参数二,编码配置参数区分原始图像编码和检测图像编码
- 4、打开rviz配置文件
- 5、基本launch文件:包含g1吊舱启动文件,Q10f吊舱启动文件,h16通信启动文件,p600通信启动文件,p600室外gps机载启动文件,推流rtsp启动文件
- 6、视觉检测launch文件:包含p600 G1圆X降落启动文件,p600 Q10f圆X降落启动文件,p600 G1 SiamRPN框选跟踪启动文件,p600 Q10f SiamRPN框选跟踪启动文件
- 7、README.md:详细查看Wiki内容或者源码
- 8、开机自启动文件:开机自启动通信节点,主要与Prometheus专业版地面站配合使用
mission功能包
- 1、圆X降落控制代码实现:circlex_landing_gimbal.cpp
- 2、打印提示代码实现:printf_utils.h
- 3、SiamRPN框选跟踪控制代码实现:object_track.cpp
gimbal_control功能包
功能兼容性
Q10F | Amov G1 | |
---|---|---|
自动旋转搜索 | 支持 | 支持 |
3轴混合控制 | 支持 | 支持 |
变焦缩放 | 支持 | 不支持 |
最高分辨率 | 最高1080P 60fps | 4K@24/25/30/fps 2.7K@24/25/30/48/50/60fps 1080P@24/25/30/48/50/60/120fps 720P@24f/25/30/48/50/60/120/240fps |
视频拍摄,拍照 | 支持 | 支持 |
数据反馈类型 | 自动反馈、交互反馈 | 自动反馈 |
支持获取Imu角速度 | 支持 | 不支持 |
吊舱跟踪 | 支持 | 支持 |
偏航跟随 | 支持 | 支持 |
姿态保持 | 支持 | 不支持 |
视频输出接口 | USB | 网口 |
gimbal_control功能包文件如下:
- 1、开发帮助文档
- 2、README.md
- 3、demo启动脚本:包含G1 KCF框选跟踪demo;包含Q10f KCF框选跟踪demo;包含G1 键盘控制demo;包含Q10f 键盘控制demo
吊舱控制相关代码如下:
- 1、用于启动rtsp视频推流的配置文件
- 2、G1吊舱C++驱动
- 3、启动ROS node所需要用到的头文件
- 4、启动launch文件:包括另起终端下启动运行gimbal server节点;当前终端下启动运行gimbal server节点;启动rtsp视频推流,需要先启动gimbal server节点
- 5、ROS话题的message消息定义:和吊舱相关的自定义消息
- 6、Q10f吊舱C++驱动
- 7、键盘控制python脚本,须先启动gimbal server节点
- 8、吊舱ROS驱动
- 9、KCF目标跟踪
开发帮助
// 原始图像话题
image_pub = it.advertise("image_raw", 1);
// 吊舱控制
ros::Subscriber sub_ctl = n.subscribe<prometheus_gimbal_control::GimbalControl>("control", 10, ctlCallback);
// 吊舱跟踪
ros::Subscriber sub_track = n.subscribe<prometheus_gimbal_control::VisionDiff>("track", 10, trackCallback);
// 拍照,如果订阅为空,图像以时间命名,非空则以传入的字符串命名
ros::Subscriber save_pic = n.subscribe<std_msgs::String>("get_pic", 100, picCallback);
// 发布吊舱状态
ros::Publisher pub_rpy = n.advertise<prometheus_gimbal_control::GimbalState>("state", 10);
// 吊舱自动旋转搜索
ros::ServiceServer srv_search = n.advertiseService("search", search);
// 视频录制,文件存放在机载电脑
ros::ServiceServer srv_video = n.advertiseService("record_video", videoRecord);
// 控制吊舱是否对接受到track数据,做出反应
ros::ServiceServer srv_track = n.advertiseService("stop_track", stopTrack);
ros::Rate rate(20);
// 视频流数据来源,如果是品灵吊舱使用"0","1"表示摄像头id,Amov G1使用ip地址如"192.168.144.64"
n.param<std::string>("camera_id", camera_id, "0");
// id用于标示吊舱
n.param<int>("uav_id", uav_id, 0);
// 吊舱控制线所处于的端口
n.param<std::string>("tty_url", tty_url, "/dev/ttyUSB0");
// 读取的相机分辨率
n.param<int>("camera_width", camera_width, 640);
n.param<int>("camera_height", camera_height, 480);
// 拍照,视频录制所存放的路径
n.param<std::string>("save_path", save_path, "gimbal_video_data");
// 吊舱型号明
n.param<std::string>("gimbal_type", gimbal_type, "q10f");
相关约定: 视觉反馈发布话题通常命名为: /detection/image
siamprn_object_tracking功能包
SiamRPN相关原理介绍:SiamRPN算法概述-Prometheus使用手册
此代码由tensorrt官方example修改提取而来,读取pytorch导出的onnx文件,并在线解析转化为tensor Engine文件。由于改版本的tensorrt不支持动态卷积核权重,所以特征提取网络采用tensorrt加速,RPN区域建议网络仍然使用libtorch版本的torchscript进行推理计算,最终可以在720P的画质下达到40FPS帧率。
object_circlex_detection功能包
- 1、头文件:包含自定义的VisionDiff.h
- 2、一键安装依赖脚本
- 6、launch文件:包含启动gimbal图像部分以及圆X检测部分相关的启动launch文件
- 3、模型文件:下载bvlc_reference_caffenet.caffemodel模型
- 4、Caffe深度学习框架源码
- 5、圆X识别源码
Prometheus功能包
详细可查看PrometheusWiki使用手册
- 1、编译脚本:包含编译所有Prometheus模块的脚本或者某个模块的脚本
- 2、实验包:Prometheus提供的实验包位置,p600旗舰款-视觉追踪系列的实验包在机载端单独存放管理
- 3、Prometheus功能模块包:包含通信模块,未来飞行器大赛模块,目标检测模块等等
- 4、脚本文件
- 5、仿真模块