创建新场景教程

本教程介绍如何使用 ScenarioRunner 和 ScenarioManager 套件创建和运行新场景。

我们将新场景称为 NewScenario。要创建它,只需要几个步骤。

创建一个空的 Python 类

转到 Scenarios 文件夹并使用新 Python 文件中的 NewScenario 名称创建一个新的 Python 类 new_scenario.py。类应该从 BasicScenario 类派生。结果,该类应如下所示:

class NewScenario(BasicScenario):
    """
    Some documentation on NewScenario
    :param world is the CARLA world
    :param ego_vehicles is a list of ego vehicles for this scenario
    :param config is the scenario configuration (ScenarioConfiguration)
    :param randomize can be used to select parameters randomly (optional, default=False)
    :param debug_mode can be used to provide more comprehensive console output (optional, default=False)
    :param criteria_enable can be used to disable/enable scenario evaluation based on test criteria (optional, default=True)
    :param timeout is the overall scenario timeout (optional, default=60 seconds)
    """

    # some ego vehicle parameters
    # some parameters for the other vehicles

    def __init__(self, world, ego_vehicles, config, randomize=False, debug_mode=False, criteria_enable=True,
                 timeout=60):
        """
        Initialize all parameters required for NewScenario
        """

        # Call constructor of BasicScenario
        super(NewScenario, self).__init__(
          "NewScenario",
          ego_vehicles,
          config,
          world,
          debug_mode,
          criteria_enable=criteria_enable)


    def _create_behavior(self):
        """
        Setup the behavior for NewScenario
        """

    def _create_test_criteria(self):
        """
        Setup the evaluation criteria for NewScenario
        """

填充Python类

NewScenario 类中,您必须定义代码示例中提到的以下方法。

初始化方法

初始化方法旨在设置场景和所有车辆所需的所有参数。这包括选择正确的车辆、在正确的位置生成它们等。为了简化这一点,您可能需要使用basic_scenario.py中定义的 setup_vehicle() 方法。

CreateBehavior 方法

此方法应设置包含场景期间所有非自我车辆行为的行为树。行为树应该使用atomic_scenario_behavior.pyatomic_scenario_behavior.py 中定义的原子行为。

CreateTestCriteria 方法

此方法应设置一个包含场景的所有评估标准的列表。该标准应基于 atomic_scenario_criteria.py 中定义的原子标准。

注意: 从此列表py_tree中将自动创建并行!

添加场景配置

最后,场景配置应添加到该 examples/ 文件夹中。如果扩展已经存在的场景模块,则只需扩展相应的 XML,否则添加新的 XML 文件。在这种情况下,您可以使用任何现有的 XML 文件作为蓝图。

如果您想为一个场景添加多个自我车辆,请确保它们使用不同的参与者名称,例如

    <scenario name="MultiEgoTown03" type="FreeRide" town="Town03">
        <ego_vehicle x="207" y="59" z="0" yaw="180" model="vehicle.lincoln.mkz_2017" rolename="hero"/>
        <ego_vehicle x="237" y="-95.0754252474" z="0" yaw="90" model="vehicle.tesla.model3" rolename="hero2"/>
    </scenario>