无人机目标检测模块教学例程 - 二维码探寻降落
提示
建议阅览以下内容:
运行
- 打开终端,执行以下命令
./Prometheus/Scripts/simulation/tutorial_demo/find_aruco_marker.sh
- 等待程序全部启动完成
使用步骤
-
点击图像话题右边的刷新按钮,切换rqt_image_view的图像话题到
/uav1/detection/image
,查看二维码检测的可视化(无人机在没有起飞时,摄像头朝下画面可能为白色) -
输入二维码id,目前world中有id为1~20二维码,比如这里输入17
-
遥控器解锁无人机,并切换到
RC_POS_CONTROL
模式,等待无人机起飞并保持悬停(或手动飞行到一定高度) -
遥控器切换到
COMMAND_CONTROL
,无人机绕圆飞行,并且在绕圆到过程中进行二维码识别,如果识别到与步骤2
输入的Id相同的二维码,则终止圆飞行,前往对应二维码进行自主降落
程序运行逻辑
视觉与控制分离为不同的ros节点。视觉节点从图像数据上提取目标信息(如目标类别,位姿等)并将消息发送出来;控制节点从视觉节点中拿到数据,控制无人机执行相应指令,实现视觉、控制的功能复用。
检测发布所有二维码在相机坐标系位置
Modules/object_detection/cpp_nodes/aruco_det.cpp
接收二维码信息,转化为机体系坐标,在机体惯性坐标系控制无人机到达二维码上方悬停。
Modules/tutorial_demo/advanced/find_aruco_marker/src/main.cpp
无人机控制
无人机绕圆飞行,在绕圆的移动的过程中,持续进行检测二维码,实时将检测到的二维码与输入的二维码id进行匹配,如果id相同则终止绕圆飞行,执行二维码降落控制。