ROS 2视觉应用:让机器人看懂世界
ROS 2相机标定
安装相机标定功能包
7.2.1 安装相机标定功能包
安装相机标定功能包camera_calibration
运行相机标定节点
7.2.2 运行相机标定节点
根据使用的相机和标定靶棋盘格尺寸,相应修改以下参数,运行命令后即可启动标定程序;
$ ros2 run camera_calibration cameracalibrator --size 8x6 --square 0.024 --ros-args -r
image:=camera/image_raw -p camera:=/default_cam
注意:新版本的 usb_cam 包中,
camera.launch.py
默认发布的话题名称为camera1/image_raw
,而标定程序需要的话题名称是camera/image_raw
。有两种解决方案:
-
在运行标定程序时,使用正确的话题名称:
-
或者在启动相机时重映射话题名称:
相机标定流程
7.2.3 相机标定流程
$ ros2 run usb_cam usb_cam_node_exe --ros-args -p
camera_info_url:=file:///home/guyuehome/.ros/camera_info/default_cam.yaml # 路径根据实际情况做出改动即可
$ ros2 run usb_cam usb_cam_node_exe --ros-args --params-file
/opt/ros/jazzy/share/usb_cam/config/params_1.yaml
OpenCV图像处理
安装OpenCV
7.3.1 安装OpenCV
在ROS 2中使用OpenCV
7.3.2 在ROS 2中使用OpenCV
$ ros2 run usb_cam usb_cam_node_exe
$ ros2 run learning_cv cv_bridge_test
$ ros2 run rqt_image_view rqt_image_view
视觉巡线
机器人视觉巡线仿真
7.4.2 机器人视觉巡线仿真
启动环境。
$ ros2 launch originbot_gazebo_harmonic load_originbot_into_line_follower_gazebo.launch.py
$ ros2 run rviz2 rviz2
真实机器人视觉巡线
7.4.3 真实机器人视觉巡线
# 机器人终端1:启动机器人底盘驱动节点
$ export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
$ ros2 launch originbot_bringup originbot.launch.py use_camera:=true
# 机器人终端2:运行视觉巡线节点,并且发布速度控制话题,控制机器人速度
$ export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
$ ros2 run originbot_linefollower follower
# 计算机端:订阅机器人相机看到的图像
$ ros2 run rqt_image_view rqt_image_view
二维码识别
二维码扫描库——Zbar
7.5.1 二维码扫描库——Zbar
相机识别二维码
7.5.2 相机识别二维码
# 计算机终端1:启动相机节点
$ ros2 launch usb_cam camera.launch.py
# 计算机终端2:启动二维码识别节点
$
ros2 run originbot_qrcode_detect originbot_qrcode_detect
# 计算机终端3:启动可视化界面
$ rqt
真实机器人相机识别二维码
7.5.3 真实机器人相机识别二维码
真实机器人二维码跟随
7.5.4 真实机器人二维码跟随
# 终端1:启动机器人运动底盘
$ ros2 launch originbot_bringup originbot.launch.py
# 终端2:启动二维码识别
$ ros2 launch qr_code_detection qr_code_detection.launch.py
# 终端3:启动二维码控制节点
$ ros2 run qr_code_control qr_code_control_node
深度学习视觉巡线
深度学习视觉巡线应用
7.6.2 深度学习视觉巡线应用
运行巡线模型.
# 进入功能包目录
$ cd /userdata/dev_ws/src/originbot/originbot_deeplearning/line_follower_perception/
# 运行基于深度学习的视觉巡线功能
$ ros2 run line_follower_perception line_follower_perception --ros-args -p
model_path:=model/resnet18_224x224_nv12.bin -p model_name:=resnet18_224x224_nv12
将OriginBot 机器人放置到巡线的场景中,在机器人端启动两个终端:
# 机器人中的终端1:启动零拷贝模式下的摄像头驱动,加速内部的图像处理效率
$ ros2 launch originbot_bringup camera_internal.launch.py
# 机器人中的终端2:启动机器人底盘
$ ros2 launch originbot_bringup originbot.launch.py
数据采集与模型训练
7.6.3 数据采集与模型训练
#计算机端
$ cd ~/dev_ws/src/originbot_desktop/originbot_deeplearning/line_follower_model
$ ros2 run line_follower_model annotation
利用计算机的CPU资源训练视觉巡线的模型。
# 计算机端
$ cd ~/dev_ws/src/originbot_desktop/originbot_deeplearning/line_follower_model
$ ros2 run line_follower_model training
模型效果评估测试
7.6.4 模型效果评估测试
# 计算机端
$ cd ~/dev_ws/src/originbot_desktop/originbot_deeplearning/line_follower_model
$ python3 line_follower_model/verify.py
在机器人中部署模型
7.6.5 在机器人中部署模型
$ cd ~/dev_ws/src/originbot_desktop/originbot_deeplearning/line_follower_model
$ ros2 run line_follower_model generate_onnx
# 机器人端
$ cd /userdata/dev_ws/src/originbot/originbot_deeplearning/line_follower_perception/
$ ros2 run line_follower_perception line_follower_perception --ros-args -p
model_path:=model/resnet18_224x224_nv12.bin -p model_name:=resnet18_224x224_nv12
YOLO目标检测
YOLO基本环境验证
7.7.2 YOLO目标检测部署
- 代码分支切换
- 配置Conda环境,下载依赖
# 创建一个名为 yolov5 的新 Conda 环境,并指定 Python 版本为 3.7 $ conda create -n yolov5 python=3.7 # 激活名为 yolov5 的 Conda 环境 $ conda activate yolov5 # 在激活的环境中安装 PyTorch、torchvision、 torchaudio,以及对应的 CUDA 11.7 支持 $ conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia # 安装 requirements.txt 文件中列出的所有 Python 包 $ pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple # 安装 apex 库 $ pip install apex -i https://pypi.tuna.tsinghua.edu.cn/simple
- 验证基本环境
机器人目标检测与跟随
7.7.4 机器人目标检测与跟随