JetBot ROS AI Kit 教程四、ROS OpenCV
来自Waveshare Wiki
JetBot ROS AI Kit 进阶教程目录
- JetBot ROS AI Kit 教程一、雷达数据分析
- JetBot ROS AI Kit 教程二、SLAM激光雷达建图
- JetBot ROS AI Kit 教程三、自主导航
- JetBot ROS AI Kit 教程四、ROS OpenCV
- JetBot ROS AI Kit 教程五、ROS智能语音
- JetBot ROS AI Kit 教程六、Jetson nano 安装ROS系统及环境配置
- JetBot ROS AI Kit 教程七、Ubuntu 虚拟机安装ROS系统及环境配置
- JetBot ROS AI Kit 教程八、ROS语音环境配置
- JetBot ROS AI Kit 主页
前言
- 由于机器人不方便显示图像,OpenCV如下程序均在虚拟机端运行。机器人启动摄像头节采集图像并压缩传输,虚拟机接收压缩图像并处理。
- 在机器人端运行如下命令启动摄像头节点。
roslaunch jetbot_pro csi_camera.launch #启动摄像头节点
- 【注意:运行OpenCV程序前必须保证机器人摄像头节点正常启动,否则程序运行没响应或者出错】
步骤1、使用CV Brige将ROS图像话题转为OpenCV图像
- 通过cv brige 将ros 图像话题转为opencv图像,并将图像转为灰度图再发布ROS图像话题
roslaunch jetbot_pro cv_video.launch
步骤2、图像校准
- 通过camera_info相机信息话题数据校准摄像头图像,运行此程序前需要先校准摄像头
roslaunch jetbot_pro calibration.launch #摄像头校准
- 摄像头图像形变得到修复
步骤3、轮廓检测
- 寻找原始图像的轮廓并显示,最后为轮廓添加彩色动感效果
roslaunch jetbot_pro contours.launch
步骤4、颜色识别
- 程序运行后将检测图像中的蓝色,并将蓝色图像单独过滤显示
roslaunch jetbot_pro color_tracking.launch
- 程序默认检查的颜色为蓝色,也可以通过鼠标框选图像中色彩来设置识别的颜色。
- 【注意:选择鲜艳的颜色容易识别;框选中的范围必须是单色,框选多种颜色会导致HSV范围太宽而不能正常识别】
- 框选颜色后也可以通过动态参数调整HSV范围来微调颜色。运行如下命令启动动态参数调节界面,选择color_tracking
- 优先调节色调H的范围确定颜色类型,然后在调节饱和度S 和明度V的范围,使识别效果更佳
rosrun rqt_reconfigure rqt_reconfigure
步骤5、运动检测
- 输入以下命令启动运动检测节点
roslaunch jetbot_pro motion_detect.launch
- 启动程序后,在图像中将会检测运动的物体并把它框出来,右边图像显示运动物体的残影
步骤6、物体追踪
- 输入以下命令启动物体追踪节点
roslaunch jetbot_pro object_tracking.launch
- 启动程序后,在图像窗口中拖动速度选择要追踪的物体,创建追踪对象后左上角将显示追踪算法类型,移动物体后,蓝色框也将跟随物体移动
- 注意:选择图像复杂的物体更容易追踪,移动速度过快容易丢失追踪对象
- 程序支持['BOOSTING', 'MIL', 'KCF', 'TLD', 'MEDIANFLOW', 'GOTURN', 'MOSSE', 'CSRT']等八种追踪算法,默认使用的MOSSE算法,此算法速度快,但是准确率低。选择KCF准确度会更高,但是此算法对网络传输速度要求更高,网络传输速度慢时容易导致图像延迟卡顿
- 输入以下命令采用KCF追踪算法
roslaunch jetbot_pro object_tracking.launch tracker_type:="KCF"
步骤7、AR视觉
- 输入以下命令启动AR视觉节点
roslaunch jetbot_pro pose.launch
- 程序运行后将检测棋盘纸,并在棋盘纸上显示一个立方体,棋盘纸移动立方体也跟着移动
步骤8、人脸检测
- 输入以下命令启动人脸检测节点
roslaunch jetbot_pro face_detect.launch
- 程序运行后将在图像中检测人脸,当检测到人脸后将用绿色方框显示出人脸位置
步骤9、视觉巡线
- 注意:视觉巡线需要启动摄像头节点和机器人底盘节点,如果摄像头节点已启动不需要重复启动。
roslaunch jetbot_pro jetbot.launch #启动底盘节点 roslaunch jetbot_pro csi_camera.launch #启动摄像头节点
- 输入以下命令启动视觉巡线节点
roslaunch jetbot_pro line_follow.launch
- 程序启动后,拖动鼠标框选线选择颜色,左边为识别的图像,右边为巡线效果。
- + 表示识别图像的中心位置,然后根据图中蓝线斜率调节机器人角速度实现巡线效果
- 程序同时也启动了动态参数调试界面,如果没有显示line_follow可以点击 Refresh 更新一下。
- 你可通过动态参数调整HSV范围来微调颜色。优先调节色调H的范围确定颜色类型,然后在调节饱和度S 和明度V的范围,使识别效果更佳
- 其中:
- linear为设置小车线速度
- kp,kd为电机速度PID参数
- test为机器人启动开关
- 选择好颜色后,可以勾选test启动机器人开始选择寻迹线,当识别到线时机器人沿线运动,冲出线外或者没识别到线时机器人停止
- 初次启动linear的值设置小一点,速度慢一点防止冲出线外。
- 调节Kp,Kd值实现更换的巡线效果,先调节比例参数Kp,然后再调节积分参数kd。【你可以启动电机波形显示来观察改变Kp、Kd后响应结果】