Advertisement

Turtlebot3自动驾驶2020仿真教程-交通灯识别

阅读量:

目录

TurtleBot3自动驾驶系统仿真教学-课程大纲
TurtleBot3自动驾驶系统仿真教学-软件安装步骤
TurtleBot3自动驾驶系统仿真教学-相机标定过程
TurtleBot3自动驾驶系统仿真教学-车道检测技术
TurtleBot3自动驾驶系统仿真教学-交通标志识别系统
TurtleBot3自动驾驶系统仿真教学-交通信号灯识别模块
TurtleBot3自动驾驶系统仿真教学-复杂道路场景导航
TurtleBot3自动驾驶系统仿真教学-施工区域避障技术
TurtleBot3自动驾驶系统仿真教学-智能泊车系统开发
TurtleBot3自动驾驶系统仿真教学-交通设施感知技术


说明:

  • 本教程将详细讲解在TB3自动驾驶2020仿真平台中实现交通灯识别的具体流程。
  • 考虑到该仿真平台具有固定的特性
  • 因此建议首先采用系统预设设置进行初步测试
  • 如果测试结果不理想,则需要对相关参数进行微调以优化识别效果

操作步骤

  • 新终端,启动gazebo节点
复制代码
    $ 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_traffic_light.launch mode:=calibration

默认情况下,gazebo初始加载是不带交通灯模块的,需要额外加载

为了快速实现红黄绿灯的切换,在实际操作中发现该过程速度较快却无法满足校准要求。因此需要对调制周期进行相应设置。

新终端设备,请对位于该目录下的特定节点配置文件(如core_node_mission)进行编辑

复制代码
 $ rosed turtlebot3_autorace_core core_node_mission

    
 ## 光标切换到51行,该步骤是为在gazebo上红灯将被切换为黄灯的流程
    
  
    
     elif self.traffic_state == 2:
    
         if abs(self.current_time - time.time()) > 3:  # 此处的数字3表示3秒后由红灯切换为黄灯,修改此处数值为你想要的红灯等待时间  
    
             rospy.wait_for_service('gazebo/spawn_sdf_model')
    
             spawn_model_prox = rospy.ServiceProxy('gazebo/spawn_sdf_model', SpawnModel)
    
             spawn_model_prox(
    
                 'traffic_light_yellow',
    
                 self.yellow_light_model,
    
                 "robotos_name_space",
    
                 self.initial_pose,
    
                 "world")

首先执行校核黄灯的操作,在随后切换绿灯的过程中加入time sleep()函数以配置相应的等待时间。

  • 新终端,加载gazebo任务
复制代码
    $ roslaunch turtlebot3_autorace_core turtlebot3_autorace_mission.launch
  • 新终端, 打开可视化界面
复制代码
    $ rqt

在Rqt的左上方菜单栏中点击Plugins选项,在其子菜单中选择Cisualization后再选择Image view功能模块。按照操作流程依次创建并配置三个窗口,并对其分别订阅/detect/image_red_light/detect/image_yellow_light/detect/image_green_light以及 /detect/image_traffic_light这四个主题配置项

请输入图片描述
请输入图片描述
请输入图片描述
  • 新终端,打开rqt_reconfigure工具
复制代码
    $ rosrun rqt_reconfigure rqt_reconfigure
请输入图片描述

完成对该函数detect_traffic_lane的单击操作后,请根据实际需求设置相关参数以滤除红绿黄三种颜色,并参考附图中的效果进行验证

新型终端将被配置以保存到 turtlebot3_autorace_detect-param-traffic-light/ 文件中的 traffic_light.yaml 文件中

复制代码
 $ rosed turtlebot3_autorace_detect traffic_light.yaml

    
  
    
  
    
 ---
    
 detect:
    
   traffic_light:
    
     red:
    
       hue_l: 0
    
       hue_h: 26
    
       saturation_l: 239
    
       saturation_h: 255
    
       lightness_l: 123
    
       lightness_h: 250
    
     yellow:
    
       hue_l: 19
    
       hue_h: 33
    
       saturation_l: 237
    
       saturation_h: 255
    
       lightness_l: 231
    
       lightness_h: 255
    
     green:
    
       hue_l: 40
    
       hue_h: 113
    
       saturation_l: 210
    
       saturation_h: 255
    
       lightness_l: 131
    
       lightness_h: 255

测试

关闭上面的打开的所有终端

新终端,启动gazebo节点

复制代码
    $ roslaunch turtlebot3_gazebo turtlebot3_autorace_2020.launch
  • 新终端,启动相机的内标定
复制代码
    $ roslaunch turtlebot3_autorace_camera intrinsic_camera_calibration.launch
  • 新终端,启动交通灯单独任务程序
复制代码
    $ roslaunch turtlebot3_autorace_core turtlebot3_autorace_core.launch mission:=traffic_light
  • 新终端,设定decided_mode为3
复制代码
    $ rostopic pub -1 /core/decided_mode std_msgs/UInt8 "data: 3"
  • 新终端,加载gazebo任务
复制代码
    $ roslaunch turtlebot3_autorace_core turtlebot3_autorace_mission.launch

全部评论 (0)

还没有任何评论哟~