在仿真或实机中录制好之后,可以播放录制文件查看效果。关闭除 rqt 外的其他终端,重新再打开一个终端,运行:
roscore
再打开一个新终端,运行:
rosbag play xx.bag #你录制的bag文件名
rqt 中出现录制的画面则代表播放成功。

执行识别脚本: 播放录制画面的过程中,在 /catkin_ws/src/tutorials/tutorial_vision/scripts 目录下打开一个新终端,输入:
python qr_detector.py
如果录制画面播放结束就再播放一遍。
输出识别结果: 再打开一个新终端,输入:
rostopic echo /qr_result
当二维码出现在画面中间时,识别结果即会输出在终端里。

滤波处理: 在二维码图像的采集过程中,会受到各种噪声和干扰的影响,因此在实机进行二维码识别时,需要对识别代码进行滤波处理,否则可能出现无法识别的现象。 两种常见的滤波处理方法:
#中值滤波:cv_image = cv2.medianBlur(cv_image,5)#高斯滤波:cv_image = cv2.GaussianBlur(cv_image,(5,5),0)
加在 qr_detector.py 的下图位置:

2. cifar100图像识别
本教程中识别所用模型权重已提前训练完成,训练与识别均在仿真环境中完成。 1)首先将训练好的模型权重放到 tutorials/tutorial_vision/model 文件夹下(注意模型名称要和 launch 文件中配置的一致):

2)然后启动 gazebo:
roslaunch tutorial_gazebo sim.launch
3)启动一个识别样例,这里直接运行了 run_yolo_detect.launch:
roslaunch tutorial_vision run_yolo_detect.launch run_mavros:=false run_fast_lio:=false run_driver:=false
如果因为没有配置 cuda 而出错,那么需要将 tutorial_vision 中的 yolov5.launch 里的 <arg name=”device” default=”cuda:0″/> 改成 <arg name=”device” default=”cpu”/>
4)这时可以打开 rqt 查看摄像头画面,打开后再打开一个终端,查看当前话题列表:
rostopic list
可以看到话题列表中有 /yolo_detect 这个话题,识别结果会发送到此话题中。

5)订阅此话题查看识别结果(需等到飞机飞到图片上方):
rostopic echo /yolo_detect
若识别成功,/yolo_detect 话题会输出识别结果,并弹出 detect input 窗口显示刚才识别的图片。若无法识别,则需手动开启识别服务(命令行运行:rosservice call /toggle_yolo_detect “{}”)。
