技术分享 | turtlebot3自动驾驶之道路信号检测
Posted 阿木实验室
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术分享 | turtlebot3自动驾驶之道路信号检测相关的知识,希望对你有一定的参考价值。
前言 在上一篇文章中,我们介绍了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放在交通标志面前)如下图所示 此时选择话题 /camera/image_compensated 然后去掉交通标志以外的部分(换句话仅仅截图包含交通标志的部分)将图像保存在这个目录下(本文的例子) /catkin_ws/src/turtlebot3/turtlebot3_autorace_2020/turtlebot3_autorace_detect/image/ 文件名应该与源代码中使用的名称相匹配。这里为 intersection.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_sign第62行。修改如下 这里建议将 detect_intersection_sign detect_construction_sign detect_level_crossing_sign detect_parking_sign detect_tunnel_sign 均做修改,否则后面运行将会报错 再次运行上面最后一个启动命令,打开rqt,选择话题/detect/image_traffic_sign/compressed ,就可以看到特征匹配的图像。如下图 至此,就完成了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 新开终端,输入 roslaunch turtlebot3_autorace_detect detect_sign.launch mission:=intersection 然后在rqt里面将话题选择为 /detect/image_traffic_sign/compressed,即可看到匹配 需要说明的是,识别结果取决于你截图保存下来的交通标志。如果在面前没有识别,可以尝试重新截图,然后再次运行,或者移动小车。
4.道路施工标志检测 继续移动小车至仿真环境中的施工标志面前 打开终端输入: roslaunch turtlebot3_autorace_detect detect_sign.launch mission:=construction 如果运行报错,需要修改源代码
5.泊车标志检测 将小车移动到泊车标志面前,输入 roslaunch turtlebot3_autorace_detect detect_sign.launch mission:=parking
6.停车标志检测 将小车移动到停车标志前面, 输入 roslaunch turtlebot3_autorace_detect detect_sign.launch mission:=level_crossing
7.隧道标志检测 将小车移动到停车标志面前,输入 roslaunch turtlebot3_autorace_detect detect_sign.launch mission:=tunnel
GZH:阿木实验室 ( 领取免费资料包) TB店:阿木实验室(可购买硬件配件) 硬件:yanyue199506(欢迎洽谈合作) 课程:jiayue199506 (免费领取机器人工程师学习计划)
- End -
技术发展的日新月异,阿木实验室将紧跟技术的脚步,不断把机器人行业最新的技术和硬件推荐给大家。看到经过我们培训的学员在技术上突飞猛进,是我们培训最大的价值。如果你在机器人行业,就请关注我们的公众号,我们将持续发布机器人行业最有价值的信息和技术。 阿木实验室致力于前沿IT科技的教育和智能装备,让机器人研发更高效!
以上是关于技术分享 | turtlebot3自动驾驶之道路信号检测的主要内容,如果未能解决你的问题,请参考以下文章