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

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

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

说明:

  • 本教程主要介绍如何在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初始加载是不带交通灯模块的,需要额外加载

  • 额外加载交通灯模块是快速切换红黄绿灯,切换时候较快,不足以满足校准,所以需要修改切换灯的时间

  • 新终端,修改turtlebot3_autorace_2020/turtlebot3_autorace_core/nodes下的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

演示视频

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: none