说明:

  • 本教程主要介绍如何在TB3自动驾驶2020的仿真中交通杆识别的校准和测试流程
  • 由于在该仿真环境是固定不变的,所以可以先使用程序默认配置好的参数进行测试,若效果不好再重新校准

校准

  • 新终端,启动gazebo节点
$ roslaunch turtlebot3_gazebo turtlebot3_autorace_2020.launch
  • 新终端,启动键盘控制节点,移动TB3到交通杆的信号标志的车道前,让其能清楚地看到标志
$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
  • TB3移动到位置后,关闭键盘控制节点
  • 新终端,启动相机的内标定
$ roslaunch turtlebot3_autorace_camera intrinsic_camera_calibration.launch
  • 新终端,启动相机外标定
$ roslaunch turtlebot3_autorace_camera extrinsic_camera_calibration.launch
  • 新终端,启动交通灯检测校准节点
$ roslaunch turtlebot3_autorace_detect detect_level_crossing.launch mode:=calibration
  • 新终端,默认情况下,gazebo初始加载是不带交通杆模块的,需要额外加载
$ roslaunch turtlebot3_autorace_core turtlebot3_autorace_mission.launch
  • 新终端,打开可视化界面
$ rqt
  • 点击rqt左上角菜单栏Plugins -> Cisualization -> Image view,依次添加三个窗口且分别订阅/detect/image_level_color_filtered/compressed/detect/image_level_color_filtered/compressed两个主题

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

  • 打开rqt_reconfigure工具
$ rosrun rqt_reconfigure rqt_reconfigure
  • 点击detect_level_crossing后调整参数来过滤红色,实际需要的过滤效果可以参考上图

Turtlebot3自动驾驶2020仿真教程-交通杆识别_自动驾驶_02

  • 新终端,将调整好的值写入turtlebot3_autorace_detect/param/level/level.yaml文件中
$ rosed turtlebot3_autorace_detect level.yaml 
---
detect:
  level:
    red:
      hue_l: 0
      hue_h: 179
      saturation_l: 24
      saturation_h: 255
      lightness_l: 207
      lightness_h: 255

测试

  • 关闭前面打开的所有终端,重新打开终端运行以下命令
  • 新终端,启动gazebo节点
$ roslaunch turtlebot3_gazebo turtlebot3_autorace_2020.launch
  • 新终端,启动键盘控制节点,移动TB3到交通杆的信号标志的车道前,让其能清楚地看到标志
$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
  • TB3移动到位置后,关闭键盘控制节点
  • 新终端,启动相机的内标定
$ roslaunch turtlebot3_autorace_camera intrinsic_camera_calibration.launch
  • 新终端,启动交通杆检测单独任务程序
$ roslaunch turtlebot3_autorace_core turtlebot3_autorace_core.launch mission:=level_crossing
  • 新终端,加载gazebo任务
$ roslaunch turtlebot3_autorace_core turtlebot3_autorace_mission.launch
  • 新终端,设定decided_mode为2
$ rostopic pub -1 /core/decided_mode std_msgs/UInt8 "data: 2"