二维码检测使用案例
二维码
- 二维码下载网站
- 使用的二维码类型为apriltag,类型为36h11

使用
- 调整配置文件
- 配置文件位于
<kuavo_ros_application>/src/ros_vision/detection_apriltag/apriltag_ros/config/tags.yaml
修改/添加对应要识别的目标二维码id以及尺寸,单位为mstandalone_tags:
[
{id: 0, size: 0.042, name: 'tag_0'},
{id: 1, size: 0.042, name: 'tag_1'},
{id: 2, size: 0.042, name: 'tag_2'},
{id: 3, size: 0.04, name: 'tag_3'},
{id: 4, size: 0.04, name: 'tag_4'},
{id: 5, size: 0.04, name: 'tag_5'},
{id: 6, size: 0.04, name: 'tag_6'},
{id: 7, size: 0.04, name: 'tag_7'},
{id: 8, size: 0.04, name: 'tag_8'},
{id: 9, size: 0.04, name: 'tag_9'},
] - 配置文件位于
示例程序
- 路径:
<kuavo-ros-opensource>/src/demo/examples_code/tag_detect/get_tag_info.py
启动步骤
- 在启动脚本前需要先启动上位机load_robot_head.launch文件
# 在上位机执行
cd ~/kuavo_ros_application
source devel/setup.bash #确保已编译成功
# 根据实际机器人版本启动程序:
# 旧版4代, 4Pro
roslaunch dynamic_biped load_robot_head.launch
# 标准版, 进阶版, 展厅版, 展厅算力版
roslaunch dynamic_biped load_robot_head.launch use_orbbec:=true
# Max版
roslaunch dynamic_biped load_robot_head.launch use_orbbec:=true enable_wrist_camera:=true
- 可视化二维码检测预览图
# 在上位机执行
cd ~/kuavo_ros_application
source devel/setup.bash
python3 src/ros_vision/detection_apriltag/detection_show/tag_detection_show.py
- rqt观察识别效果
新建一个终端输入:
rqt_image_view
选择 /tag_detections_image topic

- 获取检测结果示例程序
# 在下位机执行
cd ~/kuavo-ros-opensource
source devel/setup.bash
python3 src/demo/examples_code/tag_detect/get_tag_info.py
获取检测结果说明
⚠️ 因为/robot_tag_info依赖于tf树,所以需要下位机让机器人站立,该话题才会生效
- 基于相机坐标系:
/tag_detections;基于机器人基坐标系:/robot_tag_info - 修改示例程序中订阅话题可以获取二维码基于相机坐标系和基于机器人基坐标系的不同位姿信息
示例代码说明
AprilTagProcessor类:负责处理AprilTag的检测数据,包括初始化ROS节点、转换四元数到欧拉角、获取AprilTag数据、根据ID查找AprilTag以及计算AprilTag的平均数据。quaternion_to_euler函数:将四元数转换为欧拉角中的yaw角,用于表示旋转。get_apriltag_data函数:从ROS话题中获取AprilTag检测数据,并提取每个标签的ID、位置和姿态。get_apriltag_by_id函数:根据指定的ID查找AprilTag数据。get_averaged_apriltag_data函数:获取指定ID的AprilTag的多次检测数据,并计算其平均位置和姿态。- 主程序:创建
AprilTagProcessor实例,初始化ROS节点,并获取指定ID的AprilTag的平均数据。