08-2-TurtleBot3自动驾驶挑战赛2019

小芽科技 2022-07-26 12:02:53
Categories: Tags:

本文档由北京小芽科技翻译,原文来自于ROBOTIS官方技术文档

8.7 TurtleBot3 自动驾驶 2019 挑战赛

img

The AutoRace 2019是一个自主驾驶机器人平台的比赛。为了给机器人应用开发提供各种条件,比赛给出了尽可能少的结构规定。整个内容以软件(裁判系统的源代码)和硬件(比赛地图的stp/dwg文件)的方式开放。

整个机器人,甚至现场的裁判系统都是由ROS运行的,所以它将支持进一步制作多种内容。获取开放的各比赛项目的资料!

警告。请注意,您正在阅读本阶段的内容。如果你要参加2020年的AutoRace,请参阅[TurtleBot3 AutoRace 2020](https://emanual.robotis.com/docs/en/platform/turtlebot3/autonomous_driving/#turtlebot3-autorace-2020)。

8.7.1 TurtleBot3自动驾驶教程

8.7.2 教程:1. 要求

8.7.3 教程: 2.安装AutoRace软件包

远程 PC & TurtleBot SBC 打开终端,然后安装AutoRace软件包。

1
2
3
$ cd ~/catkin_ws/src/
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_autorace.git
$ cd ~/catkin_ws && catkin_make

8.7.4 教程:3. 安装额外的依赖包

Remote PC & TurtleBot SBC Open new terminal, then enter

1
$ sudo apt-get install ros-kinetic-image-transport ros-kinetic-cv-bridge ros-kinetic-vision-opencv python-opencv libopencv-dev ros-kinetic-image-proc

8.7.5 教程:4. 校准标定

教程:4.1. 相机成像校准

  1. 远程 PC 打开新终端,然后输入:

    1
    $ roscore
  2. TurtleBot SBC 打开新终端,然后输入:

    1
    $ roslaunch turtlebot3_autorace_camera turtlebot3_autorace_camera_pi.launch
  3. 远程 PC 打开新终端,然后输入:

    1
    $ rqt_image_view

    然后在复选框中点击 /camera/image/compressed 或者 /camera/image/ 话题。 如果一切正常,屏幕上应该显示机器人的视图。

  4. 远程 PC 打开新终端,然后输入:

    1
    $ rosrun rqt_reconfigure rqt_reconfigure

    然后,点击 “camera”,调整参数值,使相机显示干净、足够明亮的图像。之后,将每个值覆盖到turtlebot3_autorace_camera/calibration/camera_calibration/camera.yaml中。这将使摄像机从下一步开始按照你在这里设置的参数进行设置。

教程:4.2. 相机内参校准

  1. 远程 PC 打开新终端,然后输入:

    1
    $ roscore
  2. TurtleBot SBC 打开新终端,然后输入:

    1
    $ roslaunch turtlebot3_autorace_camera turtlebot3_autorace_camera_pi.launch
  3. 远程 PC 在A4大小的纸上打印用于相机校准的棋盘。该棋盘在turtlebot3_autorace_camera/data/checkerboard_for_calibration.pdf中。参见校准手册并修改写在turtlebot3_autorace_camera/launch/turtlebot3_autorace_intrinsic_camera_calibration.launch的参数值。

  4. 远程 PC 打开新终端,然后输入

    1
    2
    $ export AUTO_IN_CALIB=calibration
    $ roslaunch turtlebot3_autorace_camera turtlebot3_autorace_intrinsic_camera_calibration.launch
  5. 远程 PC 完成校准后,相机内参校准文件将被保存在 turtlebot3_autorace_camera/calibration/intrinsic_calibration/camerav2_320x240_30fps.yaml.

教程:4.3. 外在的相机校准

  1. 远程 PC 打开新终端,然后输入:

    1
    $ roscore
  2. TurtleBot SBC 打开新终端,然后输入:

    1
    $ roslaunch turtlebot3_autorace_camera turtlebot3_autorace_camera_pi.launch
  3. 远程 PC 打开新终端,然后输入:

    1
    2
    $ export AUTO_IN_CALIB=action
    $ roslaunch turtlebot3_autorace_camera turtlebot3_autorace_intrinsic_camera_calibration.launch
  4. 远程 PC 打开新终端,然后输入:

    1
    2
    $ export AUTO_EX_CALIB=calibration
    $ roslaunch turtlebot3_autorace_camera turtlebot3_autorace_extrinsic_camera_calibration.launch
  5. 远程 PC 打开新终端,然后输入:

    1
    $ rqt

    点击屏幕上方的 plugins->visualization->Image view 将为摄像机视图制作额外的监视器。在rqt板块中按照它制作2个额外的监视器。然后,在每个额外的监视器上选择/camera/image_extrinsic_calib/compressed/camera/image_projected_compensated主题。如果一切正常,其中一个屏幕将显示红色矩形的图像,另一个将显示基于彼此的地面投影视图(鸟瞰图)。

  6. 远程 PC 打开新终端,然后输入:

    1
    $ rosrun rqt_reconfigure rqt_reconfigure

    然后,调整/camera/image_projection/camera/image_compensation_projection中的参数值,对图像进行视觉修改。参数image_projection将改变/camera/image_extrinsic_calib/compressed图像的红色矩形的形状。本质相机校准将改变红色矩形所包围的图像,并将显示从车道上方看的图像。之后,将每个值覆盖到turtlebot3_autorace_camera/calibration/extrinsic_calibration/中的yaml文件上。这将使摄像机从下一步开始按照你在这里设置的参数进行设置。

教程:4.4. 识别的设置

到目前为止,所有的图像预处理都必须经过测试。

  1. 远程 PC 打开新终端,然后输入:

    1
    $ roscore
  2. TurtleBot SBC 打开新终端,然后输入:

    1
    $ roslaunch turtlebot3_autorace_camera turtlebot3_autorace_camera_pi.launch
  3. 远程 PC 打开新终端,然后输入:

    1
    2
    $ export AUTO_IN_CALIB=action
    $ roslaunch turtlebot3_autorace_camera turtlebot3_autorace_intrinsic_camera_calibration.launch
  4. 远程 PC 打开新终端,然后输入:

    1
    2
    $ export AUTO_EX_CALIB=action
    $ roslaunch turtlebot3_autorace_camera turtlebot3_autorace_extrinsic_camera_calibration.launch

    从现在开始,下面的描述将主要调整 feature detector / color filter ,用于物体识别。此后的每一次调整都是独立于其他过程的。然而,为了确保这一点,如果你想串联调整每个参数,请完美地完成每个调整,然后继续下一步。

8.7.6 教程:5. 任务

教程:5.1 车道检测

  1. 将机器人放在球道上。如果你正确放置了机器人,yellow line应该放在机器人的左边,当然,white line应该放在机器人的右边。确保 turtlebot3_robot软件包的turtlebot3_bringup节点尚未启动。如果它正在运行,机器人将突然在轨道上运行。

  2. 远程 PC 打开新终端,然后输入:

    1
    2
    $ export AUTO_DT_CALIB=calibration
    $ roslaunch turtlebot3_autorace_detect turtlebot3_autorace_detect_lane.launch
  3. 远程 PC 打开新终端,然后输入:

    1
    $ rqt

    点击屏幕上方的 plugins -> visualization -> Image view 将为摄像机视图制作额外的监视器。在rqt板中按照它制作3个额外的监视器。然后,在每个额外的监视器上选择/detect/image_yellow_lane_marker/compressed/detect/image_lane/compressed/detect/image_white_lane_marker/compressed主题。如果一切正常,左右屏幕将显示黄线和白线的过滤图像,中间屏幕将显示机器人应该去的车道。在校准模式下,左右屏幕将显示白色,中间屏幕可能显示异常的结果。从这里开始,你应该调整过滤器的参数,以显示出正确的线条和方向。

  4. 远程 PC 打开新终端,然后输入:

    1
    $ rosrun rqt_reconfigure rqt_reconfigure

    然后,调整/camera/image_projection/camera/image_compensation_projection中的参数值,对图像进行视觉修改。参数image_projection将改变/camera/image_extrinsic_calib/compressed图像的红色矩形的形状。本质相机校准将改变红色矩形所包围的图像,并将显示从车道上方看的图像。之后,将数值覆盖到turtlebot3_autorace_detect/param/lane/中的lane.yaml文件上。这将使摄像机从下一步开始按照你在这里设置的参数进行设置。

    TIP: 由于你所处的物理环境,包括房间里的光线亮度等原因,线色滤波的校准过程有时是很困难的。因此,你应该有耐心来执行这个程序。为了使一切都变得迅速,把turtlebot3_autorace_detect/param/lane/lane.yaml的值放在重新配置参数中,然后开始校准。首先校准色调低-高值。(1) 色相值意味着颜色,每种颜色,如 yellow, white,都有自己的色相值区域(参考hsv地图)。然后校准饱和度的低-高值。(2) 每个颜色也有自己的饱和度区域。最后,校准亮度的低-高值。(3) 在源代码中,有自动调整功能,所以校准亮度低值是没有意义的。只要把亮度的高值调到255即可。清晰的过滤后的线条图像会给你清晰的车道结果。

  5. 覆盖校准文件后,关闭rqt_rconfigureturtlebot3_autorace_detect_lane,然后输入

    1
    2
    $ export AUTO_DT_CALIB=action
    $ roslaunch turtlebot3_autorace_detect turtlebot3_autorace_detect_lane.launch
  6. 输入时检查输出结果是否正常

    远程 PC

    1
    $ roslaunch turtlebot3_autorace_control turtlebot3_autorace_control_lane.launch

    TurtleBot SBC

    1
    $ roslaunch turtlebot3_bringup turtlebot3_robot.launch

    输入这些命令后,机器人将启动运行。

教程: 5.2. 交通信号

  1. 交通标志检测需要一些交通标志的图片。使用rqt_image_view节点拍摄它们的照片,并通过Linux中任何一个photo editor来编辑它们的大小和形状。该节点通过 SIFT算法 找到交通标志,所以如果你想使用你定制的交通标志(在 “autorace_track “中没有介绍),只需注意 “交通标志中更多的边缘会使SIFT的识别结果更好”。

  2. 将机器人放在车道上。这时,交通标志应该放在机器人可以轻易看到的地方。确保 “turtlebot3_bringup “软件包的 “turtlebot3_robot “节点尚未启动。如果它处于运行状态,机器人可能会突然在轨道上运行。

  3. 远程 PC 打开新终端,然后输入:

    1
    $ rqt_image_view

    然后,在选择框中点击 /camera/image_compensated 主题。如果一切正常,屏幕上应该显示机器人的视图。

  4. 远程 PC “通过alt + print screen拍摄照片,用你喜欢的照片编辑器编辑拍摄的照片。之后,把图片放到你放置的turtlebot3_autorace软件包/turtlebot3_autorace/turtlebot3_autorace_detect/file/detect_sign/的地方,并按你的要求重新命名。(虽然,你应该改变写在源代码detect_sign.py中的文件名,如果你想改变默认的文件名)。

  5. 远程 PC 打开新终端,然后输入:

    1
    $ roslaunch turtlebot3_autorace_detect turtlebot3_autorace_detect_sign.launch
  6. 远程 PC 打开新终端,然后输入:

    1
    $ rqt_image_view

    然后,在选择框中点击/detect/image_traffic_sign/compressed主题。如果一切正常,屏幕将显示交通标志检测的结果,如果它成功地识别了它。

教程: 5.3. 交通灯

  1. 将机器人放在球道上。如果你正确放置了机器人,黄线应该放在机器人的左边,当然,白线应该放在机器人的右边。确保 turtlebot3_bringup 软件包的 turtlebot3_robot 节点尚未启动。如果它正在运行,机器人将突然在轨道上运行。

  2. 远程 PC 打开新终端,然后输入:

    1
    2
    $ export AUTO_DT_CALIB=calibration
    $ roslaunch turtlebot3_autorace_detect turtlebot3_autorace_detect_traffic_light.launch
  3. 远程 PC 打开新终端,然后输入:

    1
    $ rqt

    点击屏幕上方的 plugins -> visualization -> Image view 将为摄像机视图制作额外的监视器。在rqt板上按照它制作3个额外的监视器。然后,在每个额外的监视器上选择/detect/image_red_light/detect/image_yellow_light/detect/image_green_light/detect/image_traffic_light主题。如果一切正常,三个屏幕将显示红/黄/绿光的过滤图像,另一个屏幕将显示带有短字符串的识别颜色。在校准模式下,三个屏幕将显示白色,另一个屏幕可能显示普通结果。从这里开始,你应该调整过滤器的参数,以显示出正确的线条和方向。

  4. 远程 PC 打开新终端,然后输入:

    1
    $ rosrun rqt_reconfigure rqt_reconfigure

    then, adjust the parameter value in /detect_traffic_light. Changing the value of color filter will show the change of filtered view on each color’s screen. After that, overwrite value on to the traffic_light.yaml file in turtlebot3_autorace_detect/param/traffic_light/. This will set its parameters as you set here from next launching.

    然后,调整/detect_traffic_light中的参数值。改变颜色过滤器的值将在每种颜色的屏幕上显示过滤后的视图的变化。之后,将参数值覆盖到turtlebot3_autorace_detect/param/traffic_light/中的traffic_light.yaml文件上。这将从下一步开始设置它的参数,就像你在这里设置的一样。

    Tip: 和 [5.1 Lane Detection][lane_detection]一样

  5. 远程 PC 覆盖校准文件后,关闭rqt_rconfigureturtlebot3_autorace_detect_traffic_light,然后输入

    1
    2
    $ export AUTO_DT_CALIB=action
    $ roslaunch turtlebot3_autorace_detect turtlebot3_autorace_detect_traffic_light.launch
  6. 使用rqt_image_view节点,并检查结果是否良好

教程:5.4. 停车场

  1. 泊车 只需要一个准备,即交通标志识别。
  2. 将假机器人放在停车场的任何一个地方。
  3. 将机器人适当地放在车道上。

教程:5.5. 关卡穿越

  1. 关卡穿越在关卡上找到3个红色矩形,并计算关卡是打开还是关闭,以及机器人靠近多少。

  2. 将机器人正确地放在通道上。然后,将机器人带到关闭的关卡前。

  3. 远程PC 打开新的终端,然后输入

    1
    2
    $ export AUTO_DT_CALIB=calibration
    $ roslaunch turtlebot3_autorace_detect turtlebot3_autorace_detect_level.launch
  4. 远程PC 打开新的终端,然后输入

    1
    $ rqt

    点击屏幕上方的 plugins -> visualization -> Image view 将为摄像机视图制作额外的监视器。在rqt板上按照它制作3个额外的监视器。然后,在每个额外的显示器上选择/detect/image_level_color_filtered/detect/image_level主题。如果一切正常,三个屏幕将显示红色矩形的过滤图像,另一个屏幕将画一条连接矩形的线。在校准模式下,一个屏幕将显示白色,而另一个屏幕可能显示普通的结果。从这里开始,你应该调整过滤器的参数,以显示出正确的线条和方向。

  5. 远程PC 打开新的终端,然后输入

    1
    $ rosrun rqt_reconfigure rqt_reconfigure

    然后,调整/detect_level中的参数值。改变颜色过滤器的值会在每种颜色的屏幕上显示过滤后的视图变化。然后,把这个值覆盖到turtlebot3_autorace_detect/param/level/level.yaml文件中。这将从下一步开始,按照你在这里设置的参数进行设置。

    Tip: 和 [5.1 Lane Detection][lane_detection]一样

  6. 覆盖校准文件后,关闭rqt_rconfigureturtlebot3_autorace_detect_level,然后输入

    1
    2
    $ export AUTO_DT_CALIB=action
    $ roslaunch turtlebot3_autorace_detect turtlebot3_autorace_detect_level.launch
  7. 使用rqt_image_view节点,并检查结果是否良好。

教程: 5.6. 隧道

  1. 隧道节点将通过使用Turtlebot3导航包把你从入口带到出口。你应该校准的是绘制隧道地图(或者如果你使用的是自动追踪轨道,你不需要自己修改),并检查机器人在从隧道出来之前应该摆出的姿势(如果你使用的是默认地图,这也是不必要的)。
  2. 远程PC 在RViz上检查exitpose,同时 “SLAM “或 Navigation软件包正在运行。之后,将数值覆盖到detect_tunnel.py文件的第144行

8.7.7 教程:6. 运行自动驾驶

  1. 从现在开始,所有相关的节点将以 action mode运行。关闭 远程PC TurtleBot SBC 上的所有 ROS-related programs终端,如果有些程序还没有关闭。然后,将机器人正确地放在车道上。

  2. 远程PC 打开新的终端,然后输入

    1
    $ roscore
  3. TurtleBot SBC 打开新的终端,然后输入

    1
    $ roslaunch turtlebot3_bringup turtlebot3_robot.launch
  4. TurtleBot SBC 打开新的终端,然后输入

    1
    $ roslaunch turtlebot3_autorace_camera turtlebot3_autorace_camera_pi.launch
  5. 远程PC 打开新的终端,然后输入

    1
    2
    $ export AUTO_IN_CALIB=action
    $ roslaunch turtlebot3_autorace_camera turtlebot3_autorace_intrinsic_camera_calibration.launch
  6. 远程PC 打开新的终端,然后输入

    1
    2
    3
    4
    $ export AUTO_EX_CALIB=action
    $ export AUTO_DT_CALIB=action
    $ export TURTLEBOT3_MODEL=burger
    $ roslaunch turtlebot3_autorace_core turtlebot3_autorace_core.launch
  7. 远程PC 打开新的终端,然后输入

    1
    $ rostopic pub -1 /core/decided_mode std_msgs/UInt8 "data: 2"

    turtlebot3_autorace_core将控制软件包中的所有系统(打开和关闭启动,软件包中的节点。)

8.7.8 TurtleBot3汽车赛在线竞赛

img

8.7.9 在Gazebo中进行竞速比赛

AutoRace是由Gazebo提供的。我们在R-BIZ挑战赛中创造了一个环境TurtleBot3 AutoRace 2017。

CPU Intel Core i5 / 2 GHz Dual Core Processor
RAM 4GB
Storage 20Gb of free hard drive space
GPU NVIDIA GeForce GTX 9 series

警告:不要混淆你的真实相机校准配置文件和Gazebo校准配置文件。

注意: turtlebot3_autorace 软件包需要 turtlebot3_simulations 软件包作为先决条件。如果你在安装TurtleBot3 Simulations中没有安装它,请先安装它。

  1. 远程PC运行AutoRace Gazebo。你可以在Gazebo中看到AutoRace 2017的地图。

    1
    $ roslaunch turtlebot3_gazebo turtlebot3_autorace.launch

    img

  2. 远程PC运行任务启动。你可以在Gazebo看到 “交通灯”、”停放的TurtleBot3 “和 “收费站”。当TurtleBot3接近任务区时,它们会自动运行。

    1
    $ roslaunch turtlebot3_gazebo turtlebot3_autorace_mission.launch

    img

  3. 远程PC运行AutoRace启动。如果你想真实地运行AutoRace,你必须校准你的相机。

    1
    2
    3
    $ export GAZEBO_MODE=true
    $ export AUTO_IN_CALIB=action
    $ roslaunch turtlebot3_autorace_camera turtlebot3_autorace_intrinsic_camera_calibration.launch
  4. 远程PC 打开新的终端,然后输入

    1
    2
    3
    4
    $ export AUTO_EX_CALIB=action
    $ export AUTO_DT_CALIB=action
    $ export TURTLEBOT3_MODEL=burger
    $ roslaunch turtlebot3_autorace_core turtlebot3_autorace_core.launch
  5. 远程PC 打开新的终端,然后输入

    1
    $ rostopic pub -1 /core/decided_mode std_msgs/UInt8 "data: 2"