无人机目标检测模块教学例程 - 二维码自主降落

二维码自主降落.gif

提示

建议阅览以下内容:

二维码检测概述

运行

  1. 打开终端,执行以下命令
./Prometheus/Scripts/simulation/tutorial_demo/autonomous_landing.sh
  1. 等待程序全部启动完成

使用步骤

  1. 点击图像话题右边的刷新按钮,切换rqt_image_view的图像话题到/uav1/prometheus/camera/rgb/image_landpad_det,查看二维码检测的可视化(无人机在没有起飞时,摄像头朝下画面可能为白色)

  2. 遥控器解锁无人机,并切换到RC_POS_CONTROL模式,等待无人机起飞并保持悬停(或手动飞行到一定高度)

  3. 遥控器切换到COMMAND_CONTROL,无人机飞行到一定高度识别二维码,执行降落程序,等待无人机完成降落

程序运行逻辑

image.png 视觉与控制分离为不同的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三个方向上到速度(距离远速度越快),完成无人机的降落控制。