二维码识别

1 准备开始

在进行二维码识别前,我们需要做一些准备。

  1. 打印二维码,二维码放在了/handsfree_ros_ws/src/handsfree/handsfree_ar_tags/config目录下
    picture

    tips:这里由于算法缘故,若将二维码在手机上打开进行识别,摄像头很难识别出来!

  2. 确保摄像头可以正常工作,可以根据驱动测试中的rgbd_camera测试完成这一步。(如果之前已经测试完成,请忽略此步骤)

注意:要关掉有进程正在运行的终端,请在该窗口使用 Ctrl+C 来中断程序,然后在关掉该窗口。

2 简明步骤

您只需要打开2个终端,分别输入下面2条命令

roslaunch handsfree_camera view_camera.launch
roslaunch handsfree_ar_tags ar_indiv_rgb_camera.launch

然后在镜头前晃动印有二维码的纸张(不要晃太快哦!)

tips:roslaunch handsfree_camera view_camera.launch也可以用roslaunch handsfree_camera camera.launch来替代。前者会自打开RViz可视化界面,后者不会打开可视化界面,但是可以根据您个人的喜欢,使用其他可视化界面。

3 识别二维码

  1. 打开终端(Ctrl+Alt+T),运行摄像头驱动节点并打开可视化界面

     roslaunch handsfree_camera view_camera.launch
    

    这条指令运行了摄像头的驱动节点,并且将RViz可视化界面打开了。如果您只需要运行摄像头的驱动节点,可以将上面的命令roslaunch handsfree_camera view_camera.launch替换为roslaunch handsfree_camera camera.launch
    rgbd-run

    如果您的RViz可视化界面没有这两个摄像头的窗口,那么需要您手动添加,点击左下角的 Add按钮进行添加,会弹出一个小窗口,选中里面的Camera,然后点击ok就会添加成功.
    rviz_add_camera_01

    添加成功后,需要进行设置,才能让Camera框显示图像,找到侧边栏的Camera点击使其展开,将Visiblity选框中的勾去掉,设置Image Topic的图像话题,一般我们选择的是/camera/rgb/image_raw和/camera/depth/image_raw
    rviz_add_camera_02

    如果添加的Camera组件无法显示画面,则更改为Image组件去做上诉同样的操作。

  2. 启动二维码识别节点

    打开一个新终端,我们选择使用RGB图像数据进行二维码识别,输入下面这条指令

     roslaunch handsfree_ar_tags ar_indiv_rgb_camera.launch
    

    正常情况下,会显示:
    ar_indiv_rgb_camera

    或者选择使用深度图像数据进行二维码识别,指令如下

     roslaunch handsfree_ar_tags ar_indiv_depth_camera.launch
    

    tips:上面两条命令二选一即可,它们都是使用开源的二维码识别库ar_track_alvar进行二维码的识别,ar_indiv_rgb_camera.launchar_indiv_depth_camera.launch文件的主要区别是订阅的话题不同,更多资料请参考ar_track_alvarWIKI

  3. 查看二维码信息

    我们可以在之前打开的RViz可视化界面上看到二维码的信息
    rviz_rgb_qr

    或者打开一个新终端,用 rostopic echo 命令查看摄像头所识别二维码的话题 /ar_pose_marker 的实时信息

     rostopic echo /ar_pose_marker
    

    运行结果如下图
    code_rgb_qr

    当您将二维码移动到镜头处,就会看到该窗口打印的信息发生了变化
    ar-topic

    在摄像头打印出二维码的topic信息后,您会看到positionorientation的信息,这是机器人通过摄像头获取的数据将二维码所在空间的位置和姿态计算了出来。这些数据将会为机器人跟踪二维码提供便利。

  4. 小结

    识别二维码需要在终端运行两条指令,打开两个节点

    • 先要运行摄像头的驱动节点,确保摄像头能够被开启,捕获图像数据。
    • 需要运行二维码的识别节点,确保摄像头能处理图像数据,将二维码识别出来。

results matching ""

    No results matching ""