1. Autoware概述
Autoware中自带软件库,可以实现感知、融合、定位、决策等多种功能。创建完Workspace后,可通过以下命令启动场景模拟程序:
source install/setup.bash
ros2 launch scenario_test_runner scenario_test_runner.launch.py \
architecture_type:=awf/universe \
record:=false \
scenario:='$(find-pkg-share scenario_test_runner)/scenario/sample.yaml' \
sensor_model:=sample_sensor_kit \
vehicle_model:=sample_vehicle
运行示例:(图片来自官方文档)
如果需要定制化参数,需要对相关的包进行修改。
2. Autoware版本信息
- Autoware.AI是Autoware基于ROS的第一个发行版,由于它的架构以及代码之间缺乏统一标准等问题,使得开发者在下一代ROS 2版本中,进行了大幅重写与改动。
- Autoware.Auto是基于ROS 2的发行版,但是它对新工程师的门槛过高,难以向系统中添加新的功能或进行大的架构改动,使得Autoware决定创建一个名为Autoware Core/Universe的新架构。
- Autoware Core/Universe
- Autoware Core继承了Autoware.Auto的策略,维护稳定且经过良好测试的代码库,官方对Core的维护也较严格。
- Autoware Universe是Core的一个扩展,对代码质量的要求相对较低,Universe提供的功能也更丰富。
3. Autoware Benchmark现状
3.1 benchmark_tool_node
- Autoware.Auto通过benchmark_tool_nodes包提供了可测试的Benchmark工具。
- 测量指标:
- Lidar obstacle detection accuracy
- Lidar obstacle detection iteration speed
- Camera obstacle detection accuracy
- Camera obstacle detection iteration speed
- Multimodal localization iteration speed
- NDT node iteration speed
- NDT node iteration speed
- Local planner iteration speed
- iteration speed: the time elapsed from the published topic to the output topic of the system
- 链接:autoware.auto/benchmark-tool-nodes
- 缺点:适用于Autoware.Auto,是否兼容Autoware.Universe未知。
3.2 Perception_benchmark_tool
- Autoware Foundation提供的对Waymo数据集下Autoware.Universe感知栈的测试工具。
测试结果示例:
- 链接:perception_benchmark_tool
- 缺点:难以对结果进行分析,且只包含对感知模块的测试。
3.3 Defining temporal performance metrics on components
- Autoware官方文档提供了与时间性能相关的指标,推荐测试的工具有CARET和ros2_tracing。
- 时间性能指标分为两种类型:执行频率和响应时间。
- Execution frequency is observed using rate of Inter-Process Communication (IPC) messages.
- Response time is duration elapsed through a series of processing. A series of processing is referred to as a path.
- 应该重点关注的messages和paths:
- Messages and paths on boundaries where observed values from sensors are consumed(传感器的数据被消耗的地方)
- Messages and paths on boundaries of functions, e.g., a boundary of perception and planning(功能的边界,例如感知和规划)
- Ps. 一个功能可能包含了多个处理组件,功能的边界是指与该功能相关的最初和最末组件
- Messages and paths on boundaries where timer-based frequency is switched(定时器频率发生切换的地方)
- Messages and paths on boundaries where two different messages are synchronized and merged(不同消息同步和合并的地方)
- Messages that must be transmitted at expected frequency, e.g., vehicle command messages(必须以预期频率传输的消息,如汽车指令消息)
- 测量指标:
- 关键消息的执行频率
- 关键路径的响应时间
- 缺点:虽然提供了很多可供测量的指标,但是并没有具体的操作指令,需要借助第三方工具CARET、ros2_tracing来实现。
- 链接:defining-temporal-performance-metrics
3.4 Evaluating real-time performance
- Autoware官方提供的一份关于评估实时性能的文档。该文档提供了对实时性能进行测试的步骤及案例。
- 测试步骤:
- 设置单节点运行
- 隔离CPU
- 单独运行节点
- 测量和可视化
- 主要思路:
- 为了消除调度的影响,被测节点应该独立运行,使用与整个Autoware系统运行时相同的逻辑。
- 通过ros2_single_node_replayer 工具可以记录整个Autoware系统运行期间被测节点收到的所有topic,并使用相同的逻辑重播该节点的运行过程,完成相关指标的测试和数据可视化。
- 官方推荐的数据分析工具:pmu_analyzer。
- 测试指标:
- Callback的周转时间
- 缺点:
- 没有直接提供可运行的库,只关注了测试思路。
- 该文档针对Intel CPU,而AVA平台是ARM架构的CPU。
- 可能需要真实的Lidar等组件的参与,是否可在仿真阶段使用未知。
- 链接:evaluating-real-time-performance/
3.5 Autoware_Perf
- 由JSA2022提出的对ROS 2 Tracing的改进,该论文指出,ROS 2 Tracing目前只能测量当前系统中运行的ROS 2节点的回调执行时间;无法测量节点执行时间,也无法测量节点间通信延迟。
- Autoware_Perf工具实现了对节点间端到端延迟的测量,并对跟踪数据进行了可视化。
- 缺点:该工具针对Autoware.Auto版本开发,且该工具并非官方提供。