技术分享 | 惊了!学完了自动驾驶的道路识别,我忽然明白了...
Posted 阿木实验室
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术分享 | 惊了!学完了自动驾驶的道路识别,我忽然明白了...相关的知识,希望对你有一定的参考价值。
turtlebot简介
相信很多接触过ROS的人,对turtlebot这个机器人都不陌生。它是一款低成本、开源的个人机器人套件,有着ROS的官方支持,是ROS的标准平台。turtlebot系列的设计有着易于购买、搭建和组装,并且可以从ROS wiki下载官方的SDK进行二次开发的特点,是作为入门级不可或缺的机器人移动平台。
turtlebot至今已经发布了三代,今天将会介绍如何以turtlebot3为载体,在gazebo中实现自动驾驶中寻路(lane detection)功能。
前期准备
工欲善其事必先利其器,要想通过turtlebot3实现自动驾驶功能,首先需要安装一些环境。本次测试是基于 ubuntu 20.04的ROS Noetic版本。
1. 安装turtlebot3环境
打开终端,输入
cd ~/catkin_ws/src/
git clone https://github.com/ROBOTIS-GIT/turtlebot3.git
cd turtlebot3
git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3_autorace_2020.git
git clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
sudo apt install ros-noetic-image-transport ros-noetic-cv-bridge ros-noetic-vision-opencv python3-opencv libopencv-dev ros-noetic-image-proc
当我们完成以上环境安装以后,编译即可
cd ~/catkin_ws
catkin_make
当我们编译完成以后,可以尝试启动仿真环境。
打开终端,输入命令
roslaunch turtlebot3_gazebo turtlebot3_autorace_2020.launch
当出现以下图片,表示仿真环境成功安装
2. 相机校准
自动驾驶在很大程度上依赖于视觉处理,因此相机校准对于成功完成任务起着重要作用。在gazebo仿真环境中不需要校准相机的内参,但需要校准相机外参。注意:在实际使用中需要按照一定的步骤详细校准相机的内外参数。
首先我们启动仿真环境
roslaunch turtlebot3_gazebo turtlebot3_autorace_2020.launch
新开一个终端(这里推荐使用 terminator,非常好用的一款终端,可以分屏)
roslaunch turtlebot3_autorace_camera intrinsic_camera_calibration.launch
新开一个终端,输入
roslaunch turtlebot3_autorace_camera extrinsic_camera_calibration.launch mode:=calibration
新开一个终端,输入
rqt
然后在rqt的界面,选择
plugins > visualization > Image view。
创建两个窗口(重复操作两次)
在左边的窗口选择/camera/image_extrinsic_calib/compressed话题,
在右边的窗口选择 /camera/image_projected_compensated话题。
如下图所示。
然后再次打开一个终端,输入
rosrun rqt_reconfigure rqt_reconfigure
在窗口的左边选择 /camera/image_projection 和
/camera/image_compensation_projection。
调整参数,然后观察rqt的两个窗口。直到左边窗口的红色线框在道路内,右边为道路的俯视图。如下图所示。
对应参数如图所示。
当参数调好以后,不要点击保存。找到加载参数的源文件,手动修改。在本文中,两个参数的位置都在
~/catkin_ws/src/turtlebot3/turtlebot3_autorace_2020/turtlebot3_autorace_camera/calibration/extrinsic_calibration/
目录下
在文件中找到上述文件,将对应的参数修改
compensation.yaml文件内容
projection.yaml文件内容
至此,在gazebo仿真环境中相机参数调节环节结束。
3. 道路检测
当我们完成相机校准以后,下一步就可以进行道路检测了。
注意:车道检测左侧为黄色,右侧为白色。确保黄色车道在机器人的左侧。
打开终端,输入
roslaunch turtlebot3_gazebo turtlebot3_autorace_2020.launch
新开终端,输入
roslaunch turtlebot3_autorace_camera intrinsic_camera_calibration.launch
新开终端,输入
roslaunch turtlebot3_autorace_camera extrinsic_camera_calibration.launch
新开终端,输入
roslaunch turtlebot3_autorace_detect detect_lane.launch mode:=calibration
新开终端,输入
rqt
在rqt的界面,选择 /detect/image_lane/compressed 话题,可以看到车道检测的结果。
如下图所示。
选择话题
/detect/image_yellow_lane_marker/compressed ,
可以看到左边黄色的线,如下图所示。
但这并不是我们想要的结果,我们仅仅需要左边的黄色的线,因此需要调节参数。
选择话题
/detect/image_white_lane_marker/compressed
可以看到右边白色的线,如下图所示。
这也不是我们想要的结果。需要调节参数。
新开终端,输入
rosrun rqt_reconfigure rqt_reconfigure
选择窗口左边的 detect_lane ,调节参数,让左边的黄色线只检测到黄色,右边的白色线变得更加饱满。调节最终结果如下图所示
调节的参数如下图
同上面的操作一样,打开源文件路径,对应参数列表修改参数。在本文中,参数文件位于
~/catkin_ws/src/turtlebot3/turtlebot3_autorace_2020/turtlebot3_autorace_detect/param/lane/
lane.yaml文件内容
Tips:
线的滤色校准在实际中会因为物理环境而变得困难,例如房间内的光线亮度等。
首先校准hue值,从低到高。
然后校准 saturation 值,从低到高
最后校准 lightness 值,从低到高。但是在源代码中有自动调节,所以校准亮度值没有意义。只需将其设置为255即可。
上述所提参数校准,参考的是HSV色彩模型。
至此,道路检测校准完成。
4. 仿真
首先关闭所有的终端,然后开始测试。
roslaunch turtlebot3_gazebo turtlebot3_autorace_2020.launch
roslaunch turtlebot3_autorace_camera intrinsic_camera_calibration.launch
roslaunch turtlebot3_autorace_camera extrinsic_camera_calibration.launch
roslaunch turtlebot3_autorace_detect detect_lane.launch
roslaunch turtlebot3_autorace_driving turtlebot3_autorace_control_lane.launch
视频教程:
5.结束语
自动驾驶是未来的一个趋势,也是当前前沿热门技术。Turtlebot3的自动驾驶提供了用于科研与教学的低成本,小型低速自动驾驶的一个平台和方法,让我们可以对自动驾驶有一个基础的认知。
阿木实验室致力于前沿IT科技的教育和智能装备,让机器人研发更高效!
公众号:阿木实验室 ( 领取免费资料包)
官方淘宝店:阿木实验室(可购买硬件配件)
硬件咨询:yanyue199506(欢迎洽谈合作)
课程咨询:jiayue199506 (免费领取机器人工程师学习计划)
- End -
技术发展的日新月异,阿木实验室将紧跟技术的脚步,不断把机器人行业最新的技术和硬件推荐给大家。看到经过我们培训的学员在技术上突飞猛进,是我们培训最大的价值。如果你在机器人行业,就请关注我们的公众号,我们将持续发布机器人行业最有价值的信息和技术。
阿木实验室
官网:https://www.amovlab.com/
以上是关于技术分享 | 惊了!学完了自动驾驶的道路识别,我忽然明白了...的主要内容,如果未能解决你的问题,请参考以下文章
车道线识别基于matlab hough变换道路检测直线检测含Matlab源码 2074期