新闻中心 新闻
技术分享 | turtlebot3自动驾驶之道路信号检测
新闻 2021-09-02 09:40:17

前言

在上一篇文章中,我们介绍了turtlebot3如何检测道路,以便于让其能正确的在道路中央行驶。本文将会介绍turtlebot3在行驶过程中,遇见一些常见的交通信号,例如:红绿灯、转弯等交通标志。

 


1. 理论

turtlebot3对交通标志的识别,采用的是 SIFT算法(https://docs.opencv.org/master/da/df5/tutorial_py_sift_intro.html)。详情可以点击这个链接。这里就不再详细叙述。

2. T型路口标志检测

首先启动仿真环境

roslaunch turtlebot3_gazebo turtlebot3_autorace_2020.launch

新开终端,输入

export TURTLEBOT3_MODEL=burger

(建议将上面这一行,加入到 ~./bashrc文件末尾)

roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

新开终端,输入

rqt_image_view

  接着我们将turtlebot3手动移动到仿真环境中,并且能在rqt中看到交通标志。(在实际环境中可以手动将turtlebot3放在交通标志面前)如下图所示

1.png 

 

 

此时选择话题 /camera/image_compensated 然后去掉交通标志以外的部分(换句话仅仅截图包含交通标志的部分)将图像保存在这个目录下(本文的例子)

~/catkin_ws/src/turtlebot3/turtlebot3_autorace_2020/turtlebot3_autorace_detect/image/

文件名应该与源代码中使用的名称相匹配。这里为 intersection.png。(如下图所示)

2.png 

 

 

新开终端,输入

roslaunch turtlebot3_autorace_camera intrinsic_camera_calibration.launch

新开终端,输入

roslaunch turtlebot3_autorace_camera extrinsic_camera_calibration.launch

新开终端,输入

roslaunch turtlebot3_autorace_detect detect_sign.launch mission:=intersection

这里需要说明一下,sift算法已经申请专利,在某些OpenCV版本中无法使用,并且需要修改源代码。具体可以查看下面这个链接。(https://stackoverflow.com/questions/64525121/sift-surf-set-opencv-enable-nonfree-cmake-solution-opencv-3-opencv-4

本文使用的的环境是已经完整编译的OpenCV4.1.0版本。

然后打开源代码:~/catkin_ws/src/turtlebot3/turtlebot3_autorace_2020/turtlebot3_autorace_detect/nodes/detect_intersection_sign62行。修改如下

3.png 

这里建议将

detect_intersection_sign

detect_construction_sign

detect_level_crossing_sign

detect_parking_sign

detect_tunnel_sign

均做修改,否则后面运行将会报错

再次运行上面最后一个启动命令,打开rqt,选择话题/detect/image_traffic_sign/compressed ,就可以看到特征匹配的图像。如下图

4.png 

 

至此,就完成了turtlebot3对交通标志的检测,下文提到的其余交通标志的检测方式类似。

Tips:

roslaunch turtlebot3_autorace_detect detect_sign.launch mission:=xxxxx

xxxx改为

intersection

construction

parking

level_crossing

tunnel

 

3. 左转弯标志检测

打开小车键盘控制节点,将小车移动到对应的交通标志前

 

roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

 

5.png 

 

新开终端,输入

roslaunch turtlebot3_autorace_detect detect_sign.launch mission:=intersection

然后在rqt里面将话题选择为 /detect/image_traffic_sign/compressed即可看到匹配

6.png 

需要说明的是,识别结果取决于你截图保存下来的交通标志。如果在面前没有识别,可以尝试重新截图,然后再次运行,或者移动小车。

 

4. 道路施工标志检测


继续移动小车至仿真环境中的施工标志面前

打开终端输入:

roslaunch turtlebot3_autorace_detect detect_sign.launch mission:=construction

如果运行报错,需要修改源代码

 

7.png 

 

 8.png 

 

5. 泊车标志检测

将小车移动到泊车标志面前,输入

roslaunch turtlebot3_autorace_detect detect_sign.launch mission:=parking

 

9.png 

 

6. 停车标志检测

将小车移动到停车标志前面, 输入

roslaunch turtlebot3_autorace_detect detect_sign.launch mission:=level_crossing

 

10.png

 

 

 

7. 隧道标志检测

将小车移动到停车标志面前,输入

roslaunch turtlebot3_autorace_detect detect_sign.launch mission:=tunnel

11.png



阿木实验室致力于前沿IT科技的教育和智能装备,让机器人研发更高效!


公众号:阿木实验室 ( 领取免费资料包)

官方淘宝店:阿木实验室(可购买硬件配件)

硬件咨询:yanyue199506(欢迎洽谈合作)

课程咨询:jiayue199506 (免费领取机器人工程师学习计划)





- End -

技术发展的日新月异,阿木实验室将紧跟技术的脚步,不断把机器人行业最新的技术和硬件推荐给大家。看到经过我们培训的学员在技术上突飞猛进,是我们培训最大的价值。如果你在机器人行业,就请关注我们的公众号,我们将持续发布机器人行业最有价值的信息和技术。


您的浏览器版本过低,建议下载更换以下浏览器:

官方店铺

 阿木实验室

联系电话

028-87872048

扫一扫,快速加入

硬件评测

群号652692981

课程学习

群号652692981