< >
Home » Turtlebot3自动驾驶教程_视频版 » Turtlebot3自动驾驶入门教程-车道识别

Turtlebot3自动驾驶入门教程-车道识别

说明

  • 介绍如何通过摄像头来识别车道

操作步骤

  • [Remote PC] 新终端,启动roscore
 $ roscore
  • [TurtleBot SBC] 新终端,启动摄像头
$ roslaunch turtlebot3_autorace_camera turtlebot3_autorace_camera_pi.launch
  • [TurtleBot SBC] 新终端,打开action模式下的内标定程序
$ export AUTO_IN_CALIB=action
$ roslaunch turtlebot3_autorace_camera turtlebot3_autorace_intrinsic_camera_calibration.launch
  • [Remote PC] 新终端,打开action模式下的外标定程序
$ export AUTO_EX_CALIB=action
$ roslaunch turtlebot3_autorace_camera turtlebot3_autorace_extrinsic_camera_calibration.launch
  • 主要调整feature detector/color filter来优化对象识别

  • 将tb3放置在车道中间,左边为黄色线,右边为白色线

  • [Remote PC] 新终端,启动calibration模式下的车道识别

 $ export AUTO_DT_CALIB=calibration
 $ roslaunch turtlebot3_autorace_detect turtlebot3_autorace_detect_lane.launch
  • [Remote PC] 新终端,启动rqt
 $ rqt
  • 在左上角选择plugins -> visualization -> Image view 新建图像窗口

  • 打开第二个图像窗口,选择topic:/detect/image_yellow_lane_marker/compressed

  • 打开第三个图像窗口,选择topic:/detect/image_lane/compressed

  • 打开第四个图像窗口,选择topic:/detect/image_white_lane_marker/compressed

  • 如果一切正常,左右屏幕将显示黄线和白线的过滤图像,中心屏幕将显示机器人应该去的路径

  • 在标定模式下,左右屏幕将显示白色,中央屏幕可能显示异常结果

  • 应该调整滤镜参数以显示正确的线条和方向

  • [Remote PC] 新终端,启动rqt_reconfigure

$ rosrun rqt_reconfigure rqt_reconfigure
  • 由于实际物理环境包括房间内的光亮等,车道的彩色滤波的校准过程有时会非常困难

  • 校准时可以参考turtlebot3_autorace_detect/param/lane/lane.yaml里面的参数值

  • 首先校准色调低 - 高值。 色调值表示颜色,每种颜色,如黄色,白色,都有自己的色调值区域(参考hsv图)

  • 然后校准饱和度低 - 高值。 每种颜色也有自己的饱和度。

  • 最后,校准亮度低 - 高值。 将亮度高值设置为255.清晰过滤的线条图像将为您提供清晰的通道结果。

  • 最终校准好的参数值保存在PC端的turtlebot3_autorace_detect/param/lane/lane.yaml的参数文件里

  • 效果图:
    请输入图片描述

注意事项:

  • 以上效果图仅供参考,请根据实际环境来设置参数
  • 由于车道识别极其容易受到环境光线影响,校准时应将机器人放置在不同位置测试车道检测效果,比如手持机器人绕行车道几圈来测试识别效果

车道识别测试

  • [Remote PC] 完成标定之后关闭 rqt_rconfigure and turtlebot3_autorace_detect_lane
  • [Remote PC] 新终端,启动action模式下的车道识别测试
 $ export AUTO_DT_CALIB=action
 $ roslaunch turtlebot3_autorace_detect turtlebot3_autorace_detect_lane.launch
  • [Remote PC] 新终端,启动车道识别控制程序
 $ roslaunch turtlebot3_autorace_control turtlebot3_autorace_control_lane.launch
  • [TurtleBot SBC] 新终端,启动tb3
 $ roslaunch turtlebot3_bringup turtlebot3_robot.launch

FAQ

  • 错误一:执行车道识别测试步骤时,容易出现以下错误
[ERROR] [1531197022.305949]: bad callback: <bound method DetectLane.cbFindLane of <__ main __. DetectLane instance at 0x7ff7b58a9cf8 >>
Traceback (most recent call last):
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/rospy/topics.py", line 750, in _invoke_callback
    cb (msg)
  File "/ home / cutop14 / catkin_ws / src / turtlebot3_autorace / turtlebot3_autorace_detect / nodes / detect_lane", line 170, in cbFindLane
    self.left_fit = np.array ([np.mean (self.mov_avg_left [:: - 1] [:, 0] [0: MOV_AVG_LENGTH]),
AttributeError: DetectLane instance has no attribute 'mov_avg_left'
  • 问题所在:无法识别到车道

  • 解决方法:需要重新校准,得出能稳定地识别到车道的参数

演示视频

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: turtlebot3自动驾驶入门教程