Skip to content

使用场景进行规划评估#

介绍#

Autoware 规划堆栈的性能通过一系列定义的场景进行评估,这些场景概述了 其他道路使用者的行为,并指定自动驾驶汽车的成功和失败条件,请参阅 作为 自我 .这些方案以机器可读的格式指定,并使用 Scenario Simulator 工具执行. 下面提供了用于创建、执行和分析这些场景的三个主要工具的简要定义.

  • 场景编辑器: 用于创建和编辑的基于 Web 的 GUI 工具 scenario 文件.
  • 场景模拟器: 旨在模拟这些 机器可读的场景.它配置环境,规定其他道路使用者的行为,并设置 成功和失败条件.
  • 自动软件评估器: 一个基于 Web 的 CI/CD 平台,便于上传、 场景及其相应地图文件的分类和执行.它允许并行场景 执行并提供详细的结果.

创建方案#

场景是使用场景编辑器工具创建的,该工具提供了一个用户友好的界面来定义道路使用者. 他们的行为,以及自我载体的成功和失败条件.

为了演示场景创建过程,我们将创建一个简单的场景.

场景定义#

  • 初始条件: 自我车辆在直车道上行驶,一辆自行车停在同一车道上.
  • 行动: 当自我车辆与自行车之间的纵向距离小于 10 米时,自行车 开始以 2 m/s 的速度移动.
  • 成功条件: 自我车辆到达目标点.
  • 故障条件: 自我的车辆与自行车相撞.

场景创建#

  1. 打开 场景编辑器 工具.
  2. MAP 选项卡加载地图.在本教程中,我们将使用 LEO-VM-00001 映射,该映射可以下载 来自 Autoware 评估员地图部分.
  3. Edit 选项卡中,从 Add Entity 部分添加 ego vehicle 和 bicycle.添加后,选择 ego 车辆并从 Edit 选项卡设置其目的地.

    scenario-create-tutorial-01.png

  4. 设置好 bicycle、ego vehicle 和 ego vehicle 的目的地位置后,将 自行车的速度达到 0 m/s,如下所示.然后,点击 场景 选项卡,然后点击 添加新行为 按钮.用 this,定义一个动作,当满足 distance 条件时,自行车开始移动.

    scenario-create-tutorial-02.png

  5. 如下所示,为名为 act_start_bicycle 的作定义启动条件.此条件检查距离 在自我车辆和自行车之间.如果距离小于或等于 10 米,则触发该作.

    scenario-create-tutorial-03.png

  6. 在开始条件之后,为此作定义一个 事件.由于此事件没有其他条件, 设置 SimulationTime 大于 0 的虚拟条件,如下所示.

    scenario-create-tutorial-04.png

  7. 为此事件定义 行动.此作会将 actor Bicycle0 的速度设置为 2 m/s.

    scenario-create-tutorial-05.png

  8. 该方案现在已准备好进行测试.您可以通过单击 导出场景 选项卡导出场景 按钮.

    scenario-create-tutorial-06.png

创建场景的重要说明#

  • 我们制作的教程是一个简单的场景实现,适用于更复杂的定义和其他道路使用者作, 请参考 Scenario Simulator 文档.
  • 由于场景格式的复杂性,并非所有场景都支持 GUI 中的编辑 特征.因此,如果有任何项目不支持或难以使用 GUI 进行编辑,您可以 使用文本编辑器直接编辑和调整方案.在这种情况下,将检查方案格式的架构 ,以便您可以放心地进行编辑.
  • 了解其他复杂场景实现的最佳方法是查看现有场景.您可以查看 scenarios 中 自动软件评估器 以查看其他实现.

使用 Scenario Simulator 运行场景#

创建 Scenario Simulator 环境#

  • 克隆 Autoware 主存储库.
git clone https://github.com/autowarefoundation/autoware.git
  • 创建源目录.
cd autoware
mkdir src
  • 导入 Autoware 和 Scenario Simulator 所需的存储库.
vcs import src < autoware.repos
vcs import src < simulator.repos
  • 如果您是第一次安装 Autoware,则可以使用 提供了 Ansible 脚本.请参考 自动软件源安装页面 了解更多信息.
./setup-dev-env.sh
  • 安装依赖的 ROS 包.

除了核心组件之外,Autoware 和 Scenario Simulator 还需要一些 ROS 2 软件包.rosdep 工具允许 自动搜索和 安装此类依赖项.您可能需要在 rosdep install 之前运行 rosdep update.

source /opt/ros/humble/setup.bash
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
  • 构建工作区.
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release

使用 Scenario Simulator 执行场景#

我们在上面创建了一个示例场景,并将其导出到我们的本地计算机中.现在,我们将使用 场景模拟器.

  • 首先,我们应该在场景文件中定义 lanelet2_map.osmpointcloud_map.pcd 文件.默认情况下, 配置如下:
RoadNetwork:
  LogicFile:
    filepath: lanelet2_map.osm
  SceneGraphFile:
    filepath: lanelet2_map.pcd

用户应该根据我们之前下载的 map 文件来更改 filepath 字段.您可以找到 Autoware Evaluator 的 Maps 部分中的 lanelet2_map.osmpointcloud_map.pcd 文件.

注意: 尽管 pointcloud_map.pcd 文件是必需的,但它不会在模拟中使用.因此,您可以 为此字段定义虚拟文件.

  • 定义 map 文件后,我们可以使用 Scenario Simulator 执行场景.命令如下:
ros2 launch scenario_test_runner scenario_test_runner.launch.py \
record:=false \
scenario:=`/path/to/scenario/sample.yaml` \
sensor_model:=sample_sensor_kit \
vehicle_model:=sample_vehicle
  • 现在,该场景将在 Scenario Simulator 中执行.您可以在 RViz 窗口中看到模拟.
  • 要在 RViz 中播放场景时查看场景中的条件详细信息,您应该启用 条件组 标记 默认情况下,它未启用.

enable-condition-group.png

  • 通过使用 Condition Group 标记,您可以在 场景.因此,调查该场景会有所帮助.

condition-group-show.png

了解 Autoware 评估器#

Autoware Evaluator 是一个基于 Web 的 CI/CD 平台,可促进 scenarios 及其相应的映射文件.它允许并行场景执行,并提供详细的 结果.

**注意:Autoware Evaluator 是一个私人工具.目前,您应该被邀请加入 AWF 项目才能访问它. 但是,AWF 项目将是公开的,它正在开发中.

  • 创建帐户后,请联系 AWF ODD WG 负责人 Hiroshi IGATA (hiroshi.igata@tier4.jp) 邀请参加 Autoware Evaluator 的 AWF 项目.建议参加一次 ODD 工作组会议,以简短地参加 介绍您自己和您的兴趣.ODD 工作组信息 是 here.

让我们逐页探索 Autoware Evaluator 界面.

场景#

Scenarios 选项卡中,用户可以查看、搜索和筛选所有上传的 Scenarios.如果您正在寻找特定的 方案中,您可以使用此页面的搜索栏来查找它. 如果场景标记为 tick,则表示该场景已由 Manager 审核通过,否则等待 一篇评论.

目录#

目录 选项卡显示场景目录,即为特定使用案例创建的一组套件. 在 Evaluator 中,用户可以对目录中的所有方案执行测试.

catalog-page.png

套件#

套件 是指为特定测试目的而创建的一组场景,它是 scenario 组.它可以分配给任何目录以测试使用案例.

Maps#

地图 选项卡显示场景中使用的地图列表.开发人员可以找到他们需要的地图 执行场景.

Reports#

Reports 选项卡显示场景测试的结果列表.在这里,用户可以查看最新的测试执行.

reports.png

上面的屏幕截图显示了公共道路公交车目录的最新测试执行.在 source 列中, 将显示包含最新提交的 default Autoware 存储库.要进行更深入的分析,用户可以单击标题以 查看综合结果.

test-executed-report.png

单击测试执行的标题将指向一个页面,其中显示构建日志和每个测试的单独测试结果 套房.通过选择 ID 列中的链接,用户可以访问每种花色的详细结果.

suite-test-result.png

单击 ID 链接后,用户可以查看套件中方案的详细测试结果.例如,在 在我们的案例中,198 个场景中有 183 个成功.此页面是开发人员进一步研究的有用资源 失败的场景.

single-scenario-report.png

  • ID 链接到显示场景详细测试结果的页面.
  • 方案名称 链接到显示方案定义的页面.
  • 标签 表示场景失败的条件;如果成功,此字段将保持为空.
  • 状态 显示场景中失败和成功的案例计数.

要更深入地调查此特定场景,我们应该点击 ID 链接.

report-with-cases.png

对于此方案,四个案例中有三个失败.每个 case 都表示更改 ego_speed 参数.深入探讨 进入失败的案例,点击 ID 链接.

single-case-report.png

此页面向我们展示了失败案例的详细信息.我们可以通过调查来了解为什么这个案子失败了 消息 .对于我们的情况,消息 是 模拟失败:CustomCommandAction 类型为 exitFailure 的是由匿名条件 (OpenSCENARIO.Storyboard.Story[0] 触发的.Act[_EndCondition].机动组[0].机动[0].事件[1].StartTrigger.ConditionGroup[1] 中.条件 [0]):StoryboardElement 的状态act_ego_nostop_check` (= completeState) 被赋予状态 completeState?

从此消息中,我们可以了解到用于检查车辆未停止的作已完成 州.并且,场景作者将此条件设置为失败条件.因此,该方案失败了.

  • 要在本地测试方案,您可以使用上面标记为 image 的链接下载方案及其地图. 上一节介绍了在本地计算机上运行场景.
  • 要比较测试执行情况以分析场景何时成功运行,您可以使用 比较报告 按钮,该按钮显示先前测试执行的结果.

compare-results.png

  • 要查看场景是如何失败的,您可以通过单击 Play 按钮来重播场景.它显示已执行的测试.

scenario-replay.png

  • a) 帮助我们快退或快进的栏
  • b) 显示是否满足成功和失败条件
  • c) 显示作和事件的状态及其启动条件

如需进一步支持#

对于新用户来说,创建场景并使用 Autoware Evaluator 对其进行分析会很复杂.如果您需要进一步的帮助 或支持,您可以通过以下方式联系 Autoware 社区 Autoware Discord 服务器,您可以询问有关场景创建过程的问题 或 odd 频道中的 Autoware Evaluator.此外,您还可以参加每周的 ODD 工作组会议,以获得 社区.您可以加入 ODD 工作组邀请组 以获取会议邀请.

  • ODD 工作组会议每周在周一下午 2:00 (UTC) 的单一时间段举行.

其他有用的页面#