技术分享 | 惊了!学完了自动驾驶的道路识别,我忽然明白了...

turtlebot简介

相信很多接触过ROS的人,对turtlebot这个机器人都不陌生。它是一款低成本、开源的个人机器人套件,有着ROS的官方支持,是ROS的标准平台。turtlebot系列的设计有着易于购买、搭建和组装,并且可以从ROS wiki下载官方的SDK进行二次开发的特点,是作为入门级不可或缺的机器人移动平台。

turtlebot至今已经发布了三代,今天将会介绍如何以turtlebot3为载体,在gazebo中实现自动驾驶中寻路(lane detection)功能。

前期准备

工欲善其事必先利其器,要想通过turtlebot3实现自动驾驶功能,首先需要安装一些环境。本次测试是基于 ubuntu 20.04ROS Noetic版本

1. 安装turtlebot3环境

打开终端,输入

cd ~/catkin_ws/src/git clone https://github.com/ROBOTIS-GIT/turtlebot3.gitcd turtlebot3git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.gitgit clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3_autorace_2020.gitgit clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations.gitsudo apt install ros-noetic-image-transport ros-noetic-cv-bridge ros-noetic-vision-opencv python3-opencv libopencv-dev ros-noetic-image-proc

当我们完成以上环境安装以后,编译即可

cd ~/catkin_wscatkin_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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值