Skip to content

为 Autoware 创建车辆模型#

介绍#

本页介绍以下适用于车型的软件包:

  1. <YOUR-VEHICLE-NAME>_vehicle_description
  2. <YOUR-VEHICLE-NAME>_vehicle_launch

以前我们在 Creating Autoware Repositories 页面步骤. 例如我们创建了 tutorial_vehicle_launch 作为所述步骤的实现示例.请确保 _vehicle_launch 存储库包含在 Autoware 中.遵循下面的目录结构:

<YOUR-OWN-AUTOWARE-DIR>/
  └─ src/
       └─ vehicle/
            └─ <YOUR-VEHICLE-NAME>_vehicle_launch/
                 ├─ <YOUR-VEHICLE-NAME>_vehicle_description/
                 └─ <YOUR-VEHICLE-NAME>_vehicle_launch/

如果您的 fork Autoware 元存储库不包含 <YOUR-VEHICLE-NAME>_vehicle_launch 使用正确的文件夹结构 如上图所示,请添加你的 forked <YOUR-VEHICLE-NAME>_vehicle_launch 存储库添加到 autoware.repos 文件 并运行 vcs import src < autoware.repos 命令在您的终端中以在 autoware.repos 文件中导入新包含的存储库.

现在,我们已准备好为我们的车辆修改以下车辆模型包.首先,我们需要重命名描述并启动包:

<YOUR-VEHICLE-NAME>_vehicle_launch/
- ├─ sample_vehicle_description/
+ ├─ <YOUR-VEHICLE-NAME>_vehicle_description/
- └─ sample_vehicle_launch/
+ └─ <YOUR-VEHICLE-NAME>_vehicle_launch/

然后我们将在 sample_vehicle_description 和 sample_vehicle_launch 包的 package.xml 和 CMakeLists.txt 文件中更改包名称. 所以打开package.xml文件,并使用您喜欢的任何文本编辑器或 IDE CMakeLists.txt 文件,并执行以下更改:

更改 package.xml 文件中的 <name> 属性:

<package format="3">
- <name>sample_vehicle_description</name>
+ <name><YOUR-VEHICLE-NAME>_vehicle_description</name>
  <version>0.1.0</version>
  <description>The vehicle_description package</description>
  ...
  ...

更改 CmakeList.txt 文件中的 project() 方法

  cmake_minimum_required(VERSION 3.5)
- project(sample_vehicle_description)
+ project(<YOUR-VEHICLE-NAME>_vehicle_description)

  find_package(ament_cmake_auto REQUIRED)
...
...

请记住应用名称更改和项目方法 BOTH <YOUR-VEHICLE-NAME>_vehicle_description<YOUR-VEHICLE-NAME>_vehicle_launch ROS 2 包. 完成后,我们可以继续构建所述软件包:

colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release --packages-up-to <YOUR-VEHICLE-NAME>_vehicle_description <YOUR-VEHICLE-NAME>_vehicle_launch

Vehicle description#

这个包的主要目的是描述车辆尺寸,车辆的 3D 模型,车辆的 mirror_dimensions ,模拟器模型参数和车辆的 URDF.

vehicle_description 包的文件夹结构为:

<YOUR-VEHICLE-NAME>_vehicle_description/
   ├─ config/
   │     ├─ mirror.param.yaml
   │     ├─ simulator_model.param.yaml
   │     └─ vehicle_info.param.yaml
   ├─ mesh/
   │     ├─ <YOUR-VEHICLE-MESH-FILE>.dae (or .fbx)
   │     ├─ ...
   └─ urdf/
         └─ vehicle.xacro

现在,我们将根据我们的车辆设计修改这些文件.

mirror.param.yaml#

此文件描述了您的车辆后视镜尺寸 CropBox filter of PointCloudPreprocessor. 这对于从激光雷达的点云裁剪镜子非常重要.

mirror.param.yaml 由以下参数组成:

/**:
  ros__parameters:
    min_longitudinal_offset: 0.0
    max_longitudinal_offset: 0.0
    min_lateral_offset: 0.0
    max_lateral_offset: 0.0
    min_height_offset: 0.0
    max_height_offset: 0.0

镜像参数文件应该填充这个维度信息,请小心 min_lateral_offset 参数它可以是负值,如下面的 Mirror dimension 图所示.

mirror_dimensions

尺寸演示 mirror.param.yaml

警告

由于 tutorial_vehicle 中没有镜像,因此所有值都设置为 0.0. 如果您的车辆没有后视镜,您也可以将这些值设置为 0.0.

simulator_model.param.yaml#

此文件是 simulator environment. 请根据您的车辆规格更新这些参数.

有关变量的详细信息,请检查 simple_planning_simulator 包.该文件由以下参数组成:

/**:
  ros__parameters:
    simulated_frame_id: "base_link" # center of the rear axle.
    origin_frame_id: "map"
    vehicle_model_type: "DELAY_STEER_ACC_GEARED" # options: IDEAL_STEER_VEL / IDEAL_STEER_ACC / IDEAL_STEER_ACC_GEARED / DELAY_STEER_ACC / DELAY_STEER_ACC_GEARED
    initialize_source: "INITIAL_POSE_TOPIC" #  options: ORIGIN / INITIAL_POSE_TOPIC
    timer_sampling_time_ms: 25
    add_measurement_noise: False # the Gaussian noise is added to the simulated results
    vel_lim: 50.0 # limit of velocity
    vel_rate_lim: 7.0 # limit of acceleration
    steer_lim: 1.0 # limit of steering angle
    steer_rate_lim: 5.0 # limit of steering angle change rate
    acc_time_delay: 0.1 # dead time for the acceleration input
    acc_time_constant: 0.1 # time constant of the 1st-order acceleration dynamics
    steer_time_delay: 0.24 # dead time for the steering input
    steer_time_constant: 0.27 # time constant of the 1st-order steering dynamics
    x_stddev: 0.0001 # x standard deviation for dummy covariance in map coordinate
    y_stddev: 0.0001 # y standard deviation for dummy covariance in map coordinate

vehicle_info.param.yaml#

此文件存储 Autoware 模块的车辆尺寸. 请使用您的车辆信息进行更新. 您可以参考 车辆尺寸 页面进行详细的尺寸演示. 以下是 sample_vehiclevehicle_info.param.yaml:

/**:
  ros__parameters:
    wheel_radius: 0.383 # The radius of the wheel, primarily used for dead reckoning.
    wheel_width: 0.235 # The lateral width of a wheel tire, primarily used for dead reckoning.
    wheel_base: 2.79 # between front wheel center and rear wheel center
    wheel_tread: 1.64 # between left wheel center and right wheel center
    front_overhang: 1.0 # between front wheel center and vehicle front
    rear_overhang: 1.1 # between rear wheel center and vehicle rear
    left_overhang: 0.128 # between left wheel center and vehicle left
    right_overhang: 0.128 # between right wheel center and vehicle right
    vehicle_height: 2.5
    max_steer_angle: 0.70 # [rad]

请使用您的车辆信息更新 vehicle_info.param.yaml.

车辆 3D 模型#

您可以通过 autoware 将 .fbx 或 .dae 格式用作 3D 模型. 对于tutorial_vehicle, 我们将 3D 模型导出为 tutorial_vehicle_launch 存储库中的 .fbx 文件. 我们将在 vehicle.xacro 文件中设置 .fbx 文件路径.

vehicle.xacro#

此 .xacro 文件将车辆的 base_link 链接到 3D 网格. 因此,我们需要对这个文件进行一些修改.

<?xml version="1.0"?>
<robot xmlns:xacro="http://ros.org/wiki/xacro">
  <!-- load parameter -->
- <xacro:property name="vehicle_info" value="${xacro.load_yaml(`$(find sample_vehicle_description)/config/vehicle_info.param.yaml`)}"/>
+ <xacro:property name="vehicle_info" value="${xacro.load_yaml(`$(find <YOUR-VEHICLE-NAME>_vehicle_description)/config/vehicle_info.param.yaml`)}"/>

  <!-- vehicle body -->
  <link name="base_link">
    <visual>
      <origin xyz="${vehicle_info[`/**`][`ros__parameters`][`wheel_base`]/2.0} 0 0" rpy="${pi/2.0} 0 ${pi}"/>
      <geometry>
-       <mesh filename="package://sample_vehicle_description/mesh/lexus.dae" scale="1 1 1"/>
+       <mesh filename="package://<YOUR-VEHICLE-NAME>_vehicle_description/mesh/<YOUR-3D-MESH-FILE>" scale="1 1 1"/>
      </geometry>
    </visual>
  </link>
</robot>

您还可以修改 roll、pitch、yaw、x、Y、Z 和 Scale 值,以正确定位车辆的位置和方向.

请在完成 vehicle_description 包后构建 _vehicle_description 包.

cd <YOUR-AUTOWARE-DIR>
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release --packages-up-to <YOUR-VEHICLE-NAME>_vehicle_description <YOUR-VEHICLE-NAME>_vehicle_launch

启动车辆接口#

如果您的车辆接口已准备就绪, 然后,您可以在 vehicle_interface.launch.xml 中添加 vehicle_interface 启动文件. 请检查 创建车辆接口 页面了解更多信息.

用您自己的车辆启动规划模拟器#

完成 sensor_model)、individual_parameters 以及您车辆的车辆型号, 您已准备好使用自己的车辆启动 Planning Simulator. 如果您不确定 Autoware 项目文件夹中的每个自定义包是否已构建,请构建所有包:

cd <YOUR-AUTOWARE-DIR>
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release

要启动规划模拟器,在 Autoware 项目文件夹中获取 install/setup.bash 文件, 并在您的终端中运行以下命令:

ros2 launch autoware_launch planning_simulator.launch.xml map_path:=$HOME/Files/autoware_map/sample-map-planning/ vehicle_model:=<YOUR-VEHICLE-MODEL> sensor_model:=<YOUR-SENSOR-KIT> vehicle_id:=<YOUR-VEHICLE-ID>

例如, 如果我们尝试使用 tutorial_vehicle 规划模拟器:

ros2 launch autoware_launch planning_simulator.launch.xml map_path:=$HOME/Files/autoware_map/sample-map-planning/ vehicle_model:=tutorial_vehicle sensor_model:=tutorial_vehicle_sensor_kit vehicle_id:=tutorial_vehicle

规划模拟器将打开,您可以为您的车辆设置初始姿势, 使用 2D Pose Estimate 按钮或按键盘上的 P 键. 您可以单击所有位置进行车辆初始化.

tutorial_vehicle

我们在 rviz 上tutorial_vehicle TF 数据