无人机目标检测模块教学例程 - 二维码自主降落
提示
建议阅览以下内容:
运行
- 打开终端,执行以下命令
./Prometheus/Scripts/simulation/tutorial_demo/autonomous_landing.sh
- 等待程序全部启动完成
使用步骤
-
点击图像话题右边的刷新按钮,切换rqt_image_view的图像话题到
/uav1/prometheus/camera/rgb/image_landpad_det
,查看二维码检测的可视化(无人机在没有起飞时,摄像头朝下画面可能为白色) -
遥控器解锁无人机,并切换到
RC_POS_CONTROL
模式,等待无人机起飞并保持悬停(或手动飞行到一定高度) -
遥控器切换到
COMMAND_CONTROL
,无人机飞行到一定高度识别二维码,执行降落程序,等待无人机完成降落
程序运行逻辑
视觉与控制分离为不同的ros节点。视觉节点从图像数据上提取目标信息(如目标类别,位姿等)并将消息发送出来;控制节点从视觉节点中拿到数据,控制无人机执行相应指令,实现视觉、控制的功能复用。
接收图像信息,检测二维码,发布降落点在相机坐标系下的位置,消息为Modules/common/prometheus_msgs/msg/DetectionInfo.msg
Modules/object_detection/cpp_nodes/markers_landpad_det.cpp
接收消息并结合无人机姿态、位置计算出目标在机体惯性坐标系下的位置
Modules/tutorial_demo/advanced/autonomous_landing/src/autonomous_landing.cpp
有了目标在机体惯性系坐标后,就可以根据各个方向的距离误差,动态控制无人机速度接近降落点降落。
Modules/common/prometheus_msgs/msg/DetectionInfo.msg
: 包含对目标位置,姿态,视角的估计值。
无人机控制
视觉节点发布二维码降落板在无人机相机坐标系下到位姿,控制节点接收到此消息后结合相机距离无人机质心的安装偏移,姿态转化为机体惯性系下二维码降落板的位置。无人机根据降落板坐标,动态控制x、y、z三个方向上到速度(距离远速度越快),完成无人机的降落控制。