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

多二维码.gif

提示

建议阅览以下内容:

二维码检测概述

运行

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

使用步骤

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

  2. 输入二维码id,目前world中有id为1~20二维码,比如这里输入17 image.png

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

  4. 遥控器切换到COMMAND_CONTROL,无人机绕圆飞行,并且在绕圆到过程中进行二维码识别,如果识别到与步骤2输入的Id相同的二维码,则终止圆飞行,前往对应二维码进行自主降落

程序运行逻辑

image.png 视觉与控制分离为不同的ros节点。视觉节点从图像数据上提取目标信息(如目标类别,位姿等)并将消息发送出来;控制节点从视觉节点中拿到数据,控制无人机执行相应指令,实现视觉、控制的功能复用。

检测发布所有二维码在相机坐标系位置

Modules/object_detection/cpp_nodes/aruco_det.cpp

接收二维码信息,转化为机体系坐标,在机体惯性坐标系控制无人机到达二维码上方悬停。

Modules/tutorial_demo/advanced/find_aruco_marker/src/main.cpp

无人机控制

无人机绕圆飞行,在绕圆的移动的过程中,持续进行检测二维码,实时将检测到的二维码与输入的二维码id进行匹配,如果id相同则终止绕圆飞行,执行二维码降落控制