ROS系列2.2:使用ROS进行AprilTag识别

ROS创建工作环境

首先安装 Ubuntu20.04 及 ROS-noetic

sudo apt-get install ros-noetic-usb-cam         安装usb_cam

设置VMware连接  虚拟机-设置-USB控制器-USB兼容性,将USB2.0改成USB3.1

mkdir catkin_ws      在~根目录下创建一个工作环境,一般我们取名为catkin_ws

cd catkin_ws

mkdir src

在~/catkin_ws/src这里下载这两个文件夹:

  • https://gitcode.net/mirrors/ros-perception/image_pipeline/-/tree/noetic/camera_calibration  (只需要camera_calibration这个包)
  • https://gitcode.net/mirrors/ManiiXu/Apriltags2_VO?utm_source=csdn_github_accelerator

cd ~/catkin_ws

catkin_make

 

单目摄像头标定

准备好打印有这张图片的A4纸:

 

Camera Calibration

 

在catkin_ws目录下右键打开终端,在终端窗口左上角再打开三个终端

VMware连接相机       虚拟机-可移动设备-camera-连接

第一个终端输入roscore

第二个终端输入roslaunch usb_cam usb_cam-test.launch

第三个终端输入

rosrun camera_calibration cameracalibrator.py --size 7x5 --square 0.018 image:=/usb_cam/image_raw camera:=/usb_cam

将打印的标定图在相机框架中移动:
要出现摄像头的各个位置
要求:
相机的左侧,右侧,顶部和底部的棋盘格
X栏 - 在视野中左/右
Y栏 - 视野中的顶部/底部
尺寸栏 - 朝向/离开并从相机倾斜
棋盘填满整个视野
棋盘向左,向右,向上和向下倾斜(歪斜)
在每个步骤中,保持棋盘静止,直到图像在校准窗口中突出显示。

如果摄像头闪退,不运行roscore命令减小系统负载

移动棋盘时,你会看到校准侧栏上的三个条的长度增加。当CALIBRATE按钮亮起时,你有足够的数据进行校准,可以单击CALIBRATE查看结果。

校准可能需要大约一分钟。按钮可能是灰色的,但只是等待,它正在工作。

结果处理:

点击save,会卡一会。

点击upload。数据会自动导入。

重新启动摄像头

标定完成。

相机标定好的yaml文件一般会在/home/yourname/.ros/camera_info路径下(ctrl+H查看隐藏文件夹)

 

 

开始检测

准备好打印有apriltag的白纸

在catkin_ws目录下右键打开终端,在终端窗口左上角再打开几个终端

VMware连接相机       虚拟机-可移动设备-camera-连接

第一个终端输入roscore

第二个终端输入roslaunch usb_cam usb_cam-test.launch

第三个终端输入source devel/setup.bash再输入roslaunch apriltags2_ros continuous_detection.launch

第四个终端输入source devel/setup.bash再输入rostopic echo /tag_detections

Tip : 如果想避免每次都source,可以

  • 更改~目录下的.bashrc文件,在末尾添加一行source ~/catkin_ws/devel/setup.bash
  • ~目录下打开终端,输入sudo gedit .bashrc_profile
  • 在.bashrc_profile文件中输入以下代码:
  • if [ -f ~/.bashrc ]; then
        . 
    ~/.bashrc                                                                                                                    
    fi
  • 输入source .bashrc

依次运行,会看到 tag_detections 从 detections=[] 变为 detections: 二维码的位姿信息

如果想将二维码可视化:

打开第五个终端,输入source devel/setup.bash再输入rostopic echo /tag_detections_image

打开第六个终端,输入rosrun rviz rviz

将红圈的map改为usb_cam,点击add按钮添加话题,首先把二维码检测的话题添加进去

二维码检测的话题添加进去后在左下角就可以看到被标记出来的二维码标签,再将路径和姿态两个话题添加进去

这时主图出现的是一个箭头,将蓝色圆圈的内容修改为Axes,就可以看到主图所示

 

如果想查看工作具体是怎样进行的,可以再新建终端,运行 rosrun rqt_graph rqt_graph

 

 

如果无法识别你的特定AprilTag:

可以试着修改二维码标签在世界坐标系下的位姿:

catkin_ws/src/Apriltags2_VO/apriltags2_ros/config路径下的tags.yaml文件

tag_bundles:
  [
    {
      name: 'my_bundle',
      layout:
        [
          {id: 0, size: 0.143, x: 0.0000, y: 0.0000, z: 0.0, qw: 0.707, qx: 0.0, qy: 0.0, qz: -0.707},
          {id: 1, size: 0.143, x: 1.2000, y: 0.0000, z: 0.0, qw: 0.707, qx: 0.0, qy: 0.0, qz: -0.707},
          {id: 2, size: 0.143, x: 2.4000, y: 0.0000, z: 0.0, qw: 0.707, qx: 0.0, qy: 0.0, qz: -0.707},
          {id: 3, size: 0.143, x: 3.6000, y: 0.0000, z: 0.0, qw: 0.707, qx: 0.0, qy: 0.0, qz: -0.707},
          {id: 4, size: 0.143, x: 4.8000, y: 0.0000, z: 0.0, qw: 0.707, qx: 0.0, qy: 0.0, qz: -0.707}
        ]
    }
  ]

先测量自己AprilTag的二维码边长(单位:米),修改id: 1下的二维码 x: 和 y:

 

 

非原创,参考CSDN文章如下:

使用Apriltag2-ROS对相机进行定位                                                                                     https://blog.csdn.net/TFZ941214/article/details/90711885

apriltags2_ros应用实践——如何在realsense d435i上使用apriltags二维码实现定位           https://blog.csdn.net/qq_41839222/article/details/89606859

ros学习之camera calibration 单目摄像头标定                                 https://blog.csdn.net/weixin_43331257/article/details/82932904

ROS运行调用摄像头无法显示的解决办法                                         https://blog.csdn.net/Amazingren/article/details/83411899

ROS usb_cam 试错汇总                                                                                                 https://blog.csdn.net/weixin_46311087/article/details/113791152

ros学习之camera calibration 单目摄像头标定                                                                https://blog.csdn.net/weixin_43331257/article/details/82932904

posted @ 2023-07-06 02:16  diejobdeath  阅读(1216)  评论(0)    收藏  举报