Skip to content

定位(Localization)启动文件#

概述#

Autoware 定位(Localization)堆栈启动 正如我们在 [Launch Autoware] 中提到的,以 autoware_launch.xml 启动(../index.md) 页面. autoware_launch 套餐包括 tier4_localization_component.launch.xml 用于从 autoware_launch.xml 启动定位(Localization)启动文件调用. 此图描述了 autoware_launchautoware_universe 包中的一些 Autoware 定位(Localization)启动文件流.

localization-launch-flow

Autoware 定位(Localization)启动流程图

注意

Autoware 项目是一个大型项目. 因此,当我们管理 Autoware 项目时,我们会使用特定的 参数. ROS 2 为这些启动文件提供了参数覆盖功能. 有关更多信息,请参阅 官方 ROS 2 启动文档. 例如 如果我们在顶级启动中定义一个参数, 它将覆盖较低级别启动时的值.

tier4_localization_component.launch.xml#

tier4_localization_component.launch.xml 启动文件是 autoware_launch 包中的主要定位(Localization)组件启动文件. 此启动文件在 autoware_universe 存储库的 tier4_localization_launch 包中调用 localization.launch.xml. 我们可以在 tier4_localization_component.launch.xml 修改定位(Localization)启动参数.

TIER IV 实现的当前定位启动器支持多种定位方法,包括姿势估计器和扭曲估计器. tier4_localization_component.launch.xml 有两个参数来选择要启动的估计器:

  • pose_source: 此参数指定了pose_estimator,目前支持 ndt (默认)、yablocartageagleye 进行定位(Localization). 默认情况下,Autoware 会为姿势估计器启动 ndt_scan_matcher. 您可以将 YabLoc 用作基于相机的定位方法. 有关 YabLoc 的更多详细信息, 请参阅 autoware_universe 的 YabLocREADME of YabLoc. 此外,您可以将Eagleye用作基于GNSS & IMU &轮式里程计的定位方法.有关 Eagleye 的更多详细信息,请参阅 Eagleye.

    你可以在 tier4_localization_component.launch.xml 上设置 pose_source 参数, 例如,如果您想使用 Eagleye 作为pose_source, 您需要更新 tier4_localization_component.launch.xml ,如下所示:

    - <arg name="pose_source" default="ndt" description="select pose_estimator: ndt, yabloc, eagleye"/>
    + <arg name="pose_source" default="eagleye" description="select pose_estimator: ndt, yabloc, eagleye"/>
    

    此外,您还可以使用命令行覆盖启动参数:

    ros2 launch autoware_launch autoware.launch.xml ... pose_source:=eagleye
    
  • twist_source: 此参数指定当前支持 gyro_odom (默认) 和 eagleye 的 twist_estimator. 默认情况下, Autoware 为 Twist Estimator 启动 gyro_odometer. 另外,你可以使用 eagleye 作为 twist 源,请参考 Eagleye. 如果您想将 Twist 源更改为 eagleye,您可以更新 tier4_localization_component.launch.xml ,如下所示:

    - <arg name="twist_source" default="gyro_odom" description="select twist_estimator. gyro_odom, eagleye"/>
    + <arg name="twist_source" default="eagleye" description="select twist_estimator. gyro_odom, eagleye"/>
    

    或者,您可以使用命令行覆盖启动参数:

    ros2 launch autoware_launch autoware.launch.xml ... twist_source:=eagleye
    
  • input_pointcloud: 此参数指定定位(Localization)点云管道的输入点云.默认值为 /sensing/lidar/top/outlier_filtered/pointcloud 是 Sensing 的 PointCloud Pre-processing 管道的输出. 您可以根据您的 LiDAR 主题名称更改此值, 或者您可以选择使用串联点云:

    - <arg name="input_pointcloud" default="/sensing/lidar/top/outlier_filtered/pointcloud" description="The topic will be used in the localization util module"/>
    + <arg name="input_pointcloud" default="/sensing/lidar/concatenated/pointcloud"/>
    

您可以添加所有必要的参数 以 tier4_localization_component.launch.xml 启动文件,就像这些示例一样. 如果您想更改陀螺仪里程表扭转输入主题, 您可以在 tier4_localization_component.launch.xml 启动文件上添加此参数:

+ <arg name="input_vehicle_twist_with_covariance_topic" value="<YOUR-VEHICLE-TWIST-TOPIC-NAME>"/>

注意: 速度转换器包提供的陀螺仪里程表输入主题. 此软件包将于 sensor_kit 推出.有关更多信息, 请查看 速度转换器套件.

使用非 NDT 位姿估计器时的注意事项#

注意

由于 NDT 是目前最常用的pose_estimator,因此默认情况下会注册 NDT 诊断以进行监控. 当使用 NDT 以外的 pose_estimator 时,NDT 诊断将始终标记为过时,从而导致系统进入safe_fault状态. 根据紧急情况的参数,这可能会升级为完全紧急情况,从而阻止自动驾驶.

要解决此问题,请修改 system_error_monitor 的配置文件. 在 system_error_monitor.param.yaml 文件中,/autoware/localization/performance_monitoring/matching_score 表示 NDT 的聚合诊断. 为了防止在未启动 NDT 时出现紧急情况,请从配置中删除此条目. 请注意,模块名称 /performance_monitoring/matching_scorediagnostics_aggregator/localization.param.yaml 中指定.