二维码识别与跟踪
Hint
操作环境及软硬件配置如下:
-
OriginBot机器人(Lite版/标准版/Pro版)
-
PC:Ubuntu (≥22.04) + ROS2 (≥humble)
在日常生活中,我们每天接触最多的图像识别场景是什么?扫码一定是其中之一。
微信登录要扫二维码,手机支付要扫二维码,共享单车也要扫二维码,除了这些在日常生活中已经非常普及的扫码场景,二维码在工业生产中也已经普遍应用,比如使用二维码标记物料型号,或者在二维码中保存产品的生产信息,只要通过相机一扫,很快就可以看到对应的内容。
二维码的编码方式有很多种,常见的是QR Code,主要用在移动设备上。
既然二维码可以保存很多信息,那是不是也可以和机器人结合一下,比如当机器人识别到不同二维码时,对应做出不同的动作?
接下来我们就尝试下让机器人识别二维码,并且跟随二维码运动。
二维码识别
SSH连接OriginBot成功后,在终端中输入如下指令,启动二维码识别功能:

在终端中输入如下指令,打开相机
启动web端显示:ros2 run websocket websocket --ros-args -p image_topic:=/image_jpeg -p image_type:=mjpeg -p only_show_image:=true & ros2 launch hobot_codec hobot_codec.launch.py codec_in_mode:=ros codec_in_format:=bgr8 codec_out_mode:=ros codec_out_format:=jpeg codec_sub_topic:=/qr_code_image codec_pub_topic:=/image_jpeg
WEB端查看例程效果
运行成功后,在同一网络的PC端,打开浏览器,输入 http://IP:8000 ,选择“web展示端”,即可查看图像和算法效果,IP为OriginBot的IP地址。
二维码跟踪
启动底盘
SSH连接OriginBot成功后,在终端中输入如下指令,启动机器人底盘:
启动二维码控制节点
关闭二维码识别节点,在终端中输入如下指令,启动二维码控制节点:
打开相机(同上,如果已经打开相机,可以跳过) 启动web端显示(同上,如果已经打开web端或者不需要显示,可以跳过)ros2 run websocket websocket --ros-args -p image_topic:=/image_jpeg -p image_type:=mjpeg -p only_show_image:=true & ros2 launch hobot_codec hobot_codec.launch.py codec_in_mode:=ros codec_in_format:=bgr8 codec_out_mode:=ros codec_out_format:=jpeg codec_sub_topic:=/qr_code_image codec_pub_topic:=/image_jpeg
二维码控制
默认识别二维码内容 Front,、Back、 Left、 Right 对小车控制,可以使用以下二维码 对小车控制
![]() |
![]() |
---|---|
![]() |
![]() |
查看控制模式
也可以识别二维码的相对位置实现对二维码的跟踪
在终端中输入如下指令,查看控制模式:
ros2 param get /qrcode_control control_with_qrcode_info
# False 不识二维码内容,只跟随二维码位置运动
# True 识别二维码内容,根据二维码内容执行命令
修改控制模式
在终端中输入如下指令,修改控制模式:
此时会识别二维码的相对位置发送速度
可以在文件 qrcode_control.cpp 中调整移动速度
可以在文件 qr_code_control_node.py 中调整移动速度