小型机器人平台Autoware集成

随着越来越多的人对在更易获取的环境中尝试Autoware产生兴趣,开发者们正逐渐转向小型移动机器人,将其作为开始尝试自动驾驶的低成本方式。

小型机器人平台Autoware集成
AI模型价格对比 | AI工具导航 | ONNX模型库 | Vibe Coding教程 | PLC在线仿真器 | Tripo 3D | Meshy AI | ElevenLabs | KlingAI | ArtSpace | Phot.AI | InVideo

Autoware是一款专为汽车设计的自动驾驶开源软件。然而,并非每个人都能使用全尺寸自动驾驶汽车进行研究、测试或学习。随着越来越多的人对在更易获取的环境中尝试Autoware产生兴趣,开发者们正逐渐转向小型移动机器人,将其作为开始尝试自动驾驶的低成本方式。

为了支持这些努力,TIER IV发布了一个示例仓库,展示了如何为移动机器人配置Autoware,为任何希望尝试自动驾驶的人提供了一个易上手的起点。

本文介绍了该仓库——autoware.sample_mobile_robot——并包含了针对WHILL移动机器人平台的具体配置示例。

1、配置概览

为了实现自主运行,我们在WHILL平台上安装了传感器和一台车载计算机,该平台可以使用外部控制信号驱动。在这个配置中,我们安装了一台用于运行Autoware的计算机、一个3D激光雷达、一个摄像头和一个IMU。下图展示了这些传感器、计算机和基础车辆之间的连接方式。更多细节请查看仓库中的docs文件夹。

2、autoware.sample_mobile_robot

autoware.sample_mobile_robot仓库是一个将Autoware与小型移动机器人集成的项目。它是autowarefoundation/autoware仓库的一个分支,作为一个包含autoware.repos文件的元仓库。基于这个repos文件,我们准备了包含启动文件和参数文件的autoware_launch包、将Autoware连接到车辆的车辆接口,以及车载摄像头驱动的仓库。有关这些仓库的详细信息,请参阅autoware.sample_mobile_robot的README。

2.1 比较默认配置

接下来,让我们看看小型移动机器人的系统配置。默认情况下,配置遵循Autoware节点图所示的结构。不过,在这个项目中,我们调整了配置,并创建了一个突出显示这些变化的图表。在该图表中,此配置中未激活的节点和模块被灰色显示,以便更容易地看出差异。

感知组件的配置取决于机器人上安装的传感器。在这个示例中,配置包含一个激光雷达和一个摄像头。因此,依赖雷达或GNSS的功能未被使用。

在默认配置中,来自多个激光雷达的数据会在被传递给感知等其他组件之前合并。由于我们这里只使用了一个激光雷达,点云数据无需合并就直接发送给这些组件。

接下来是感知组件。在这个配置中,我们禁用了交通灯识别功能和与雷达相关的功能,因为机器人没有配备雷达。

最后,让我们看看规划组件。它的许多功能是为在公共道路上行驶的汽车设计的。由于像这样的小型移动机器人通常设计在人行道或室内运行,因此只有其中一部分功能是相关的。出于这个原因,我们在此配置中禁用了许多模块。

2.2 车辆接口和手动驾驶

ros2_whillautoware_ros2_whill_adapter 这两个包用于将Autoware连接到WHILL平台。下图展示了这些组件如何与Autoware交互。更多细节请参阅每个仓库中的文档。

Autoware还包含一个名为autoware_joy_controller的包,允许您手动操作车辆。由于小型移动机器人没有驾驶员座椅,当您需要在Autoware运行时将机器人移出其路径,或是在采集数据时,这个功能非常有用。在自主运行期间,控制器也可以用于发送启动或紧急停止指令。在我们的配置中,控制器通过蓝牙无线连接。

2.3 关键参数

sample_mobile_robot仓库包含了许多修改后的参数。在这里,我们将重点介绍那些对使用Autoware运行小型移动机器人特别重要的参数。

大部分更改都在规划组件中。由于机器人的整体尺寸远小于汽车,因此与转弯路径规划和整体速度规划相关的某些值需要减小。

以下是我们修改的规划组件中的一些关键参数。

autoware_launch/config/planning/scenario_planning/lane_driving/behavior_planning/behavior_path_planner/behavior_path_planner.param.yaml

refine_goal_search_radius_range: 1.0
input_path_interval: 0.1
output_path_interval: 0.1

我们还对与规划组件相关的地图组件做了一些调整。在此配置中,从导入的矢量地图生成的中心线分辨率(用于路径跟踪)设置为1.0 [m]。

autoware_launch/config/map/lanelet2_map_loader.param.yaml

center_line_resolution: 1.0

接下来是控制组件。lateral_controller的默认MPC设置不适用于没有转向机构的小型移动机器人,因此我们在这里改用pure_pursuit。您可以通过启动文件中的参数选择横向控制器,我们还针对小型移动机器人调整了pure_pursuit参数。

autoware_launch/launch/autoware.launch.xml

<! - Control →
<group if="$(var launch_control)">
<include file="$(find-pkg-share autoware_launch)/launch/components/tier4_control_component.launch.xml">
<arg name ="lateral_controller_mode" value="pure_pursuit"/>
<arg name="enable_autonomous_emergency_braking" value="false"/>
</include>
</group>

还有一个针对差速两轮驱动机器人的重要参数。当此参数设置为true时,它会启用一项功能,防止车辆在启动后立即急转弯。该功能旨在支持在转弯中途启动或执行泊车操作等情况。然而,由于差速两轮驱动机器人没有转向机构,启用此功能可能会在某些情况下阻止机器人启动。为避免这种情况,对于没有转向功能的机器人,应将其禁用。

autoware_launch/config/control/trajectory_follower/longitudinal/pid.param.yaml

enable_keep_stopped_until_steer_convergence: false

最后,让我们看看定位组件。汽车通常在室外运行,但小型移动机器人在室内运行的可能性同样大。自定位参数需要根据环境进行调整,但每次环境变化都手动调整参数文件并不实际。为简化这一过程,仓库包含了两个目录——indoor和outdoor——并且启动文件已修改,以便您可以根据需要切换。

autoware_launch/config/localization/ndt_scan_matcher

localization/ndt_scan_matcher/
├── indoor
│   ├── ndt_scan_matcher.param.yaml
│   └── pointcloud_preprocessor
│       ├── crop_box_filter_measurement_range.param.yaml
│       ├── random_downsample_filter.param.yaml
│       └── voxel_grid_filter.param.yaml
└── outdoor
    ├── ndt_scan_matcher.param.yaml
    └── pointcloud_preprocessor
        ├── crop_box_filter_measurement_range.param.yaml
        ├── random_downsample_filter.param.yaml
        └── voxel_grid_filter.param.yaml

autoware_launch/launch/autoware.launch

<! - Localization →
<group if="$(var launch_localization)">
<include file="$(find-pkg-share autoware_launch)/launch/components/tier4_localization_component.launch.xml">
<arg name="input_pointcloud" value="/sensing/lidar/top/pointcloud_before_sync"/>
<arg name="environment" value="indoor"/>
</include>
</group>

2.4 系统设置

即使您使用本文介绍的一模一样的硬件配置,仅仅构建sample_mobile_robot仓库也是不够的——您还需要配置和校准传感器。autoware.sample_mobile_robot的README包含了指向Autoware文档的链接,其中涵盖了传感器细节、设置程序和校准方法。请在搭建系统时参考这些资源。

3、演示

我们在一个受控的封闭环境中的人行道上对机器人进行了自主测试。此配置需要点云地图和矢量地图,可以按照Autoware文档中的创建地图部分来生成。

bag2lanelet工具在创建小型移动机器人的矢量地图时非常有用,它可以让您根据手动操作期间记录的轨迹生成车道。矢量地图的创建方法与汽车不同,后者依赖于道路上的车道标线。矢量地图可以使用Vector Map Builder工具创建和编辑。

在演示视频中,您可以看到机器人启动、遇到障碍物停止,然后在障碍物清除后继续前进。

我们还在封闭的室内环境中测试了物体检测。一个人体模型和一辆自行车被放置在机器人前方,它们被检测为行人和骑行者。需要注意的是,这里介绍的小型移动机器人配置使用了简单的传感器设置,可能导致物体检测不稳定。

4、结束语

这个示例项目是TIER IV持续努力的一部分,旨在使Autoware更具适应性,更易于在不同类型的车辆上使用——从乘用车到小型移动机器人。

通过分享这样的实际示例,我们希望降低开发者的入门门槛,加速自主机器人的实验和学习。该仓库将定期更新,以跟上最新版本的Autoware。我们希望它对你的项目有所帮助。


原文链接:Integrating Autoware on small robot platforms

汇智网翻译整理,转载请标明出处