求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
要资料
 
追随技术信仰

随时听讲座
每天看新闻
 
 
目录
Autoware.Auto
安装
系统依赖性和目标环境
使用 ADE 安装
使用 ADE 安装 arm64 系统
没有使用 ADE 安装
SVL 仿真器
使用
自动代客泊车示范
F1Tenth 演示1
F1Tenth 演示2
启动和测试行为计划
启动和测试全局计划
地图创建
初始化 NDT 定位器
运行 EKF 过滤器进行本地化
3D感知堆栈
记录/回放计划
使用rosbag进行本地化演示
Autoware Auto启动场景仿真器
建立
设计
Autoware Auto常见的设计-1
Autoware Auto常见的设计-2
Autoware.Auto 控制器设计
Autoware.Auto 驱动程序设计
Autoware.Auto 设计融合
Autoware.Auto 本地化
Autoware.Auto 的地图
Perception设计
Autoware.Auto 的 设计计划
Autoware.Auto 的 设计跟踪
Autoware.Auto 的 预测
Autoware.Auto 的系统
Autoware.Auto 的工具
Autoware.Auto 提供的指南
 
 
自动代客泊车示例
李澎涛,俎涛 翻译(火龙果软件工程)
4302 次浏览
6次  

自动代客泊车

概述

自动代客泊车 (AVP) 演示使用 Autoware.Auto 提供代客泊车服务。 它是由 Autoware 成员于 2020 年实现的,在这篇文章中有更详细的描述。

目标是引导汽车自动停在停车场,并通过智能手机自动返回到上/下车区域。

AVP 演示使用 Autoware.Auto 提供以下功能:

  1. 自动将汽车从预定义的下客区(例如停车场入口)开到外部系统指示的停车位。
  2. 将汽车停在停车位,从该停车位附近的车道开始。
  3. 驶出停车位。
  4. 开车到预先定义的接送区(例如停车场的出口)。
  5. 实现上述目标时自动停止障碍物。

重复演示的最简单方法是在 Simulation 中运行它。 给定适当的硬件,它当然可以在现实生活中重复,也可以在 物理演示 中详细说明。

先决条件

要运行此演示,需要以下输入:

如果按照说明设置了 SVL 仿真器 ,则这两个组件应该在 下的仿真中开箱即用 /opt/AutowareAuto/share/autoware_demos/data 。

仿真

要运行 LGSVL 仿真器,需要 NVIDIA 显卡。 可以在 此处 找到有关要求的其他信息。

这些指令已在多台机器上成功测试,这些是此类机器的规格:

  • Intel(R) Core(TM) i9-9900KF CPU @ 3.60GHz(16 个虚拟内核),64GB RAM
  • NVIDIA GeForce RTX 2080 与 8 GB 内存
警告 如果机器因同时运行仿真和自动驾驶堆栈而过载,则预计性能会下降。 请参阅 缺乏计算资源 。 建议在一台机器上运行 Simulator 和 RViz2,在另一台机器上运行 autoware 堆栈。

设置和启动

运行和控制仿真需要两个独立的终端。

设置

1.安装 ADE

2.接下来在 ADE 中打开 终端 1 并按照 SVL 仿真器 页面上的说明安装、配置预设(推荐)或自定义仿真,然后运行仿真器:

$ ade 输入
ade$ /opt/lgsvl/仿真器 &

3.同样在 终端 1 中,启动可视化:

ade$ source /opt/AutowareAuto/setup.bash
ade$ ros2 启动 autoware_auto_launch autoware_auto_visualization.launch.py

警告

仅限自定义 LGSVL 仿真: 如果通过按下 LGSVL Web GUI 中的播放按钮立即开始仿真,Autoware.Auto 堆栈将在启动时发出警告和错误消息,直到本地化被初始化(见下文)。 为避免这种情况,请不要开始仿真; 即,不要按播放按钮!

发射

在同一 ADE 实例中或在第二台机器上的新 ADE 实例中 打开一个新 终端 2 /opt/AutowareAuto ,按如下方式运行 Milestone 3 的启动文件,以使用来自 的预编译包:

$ ade 输入
ade$ source /opt/AutowareAuto/setup.bash
ade$ ros2 启动 autoware_demos avp_sim.launch.py

或者,如果源代码已在本地修改,则先构建,然后启动:

$ ade 输入
ade$ cd AutowareAuto
ade$ colcon build --packages-up-to autoware_demos
ade$ 源安装/setup.bash
ade$ ros2 启动 autoware_demos avp_sim.launch.py

笔记 这将自动启动预设仿真! 如果希望运行自定义 LGSVL 仿真,则必须将额外参数显式传递给上述命令,以便忽略预设,如下所示:

ade$ ros2 启动 autoware_demos avp_sim.launch.py​​ with_lgsvl:=false

要中断已启动的进程,请点击 Ctrl c 。 在构建时关闭仿真可以节省计算资源以加速构建。

执行上述步骤时,RViz 窗口应显示 Autoware.Auto 堆栈看到的内容。 如果使用自定义仿真,系统最初没有本地化,汽车暂时放置在地图框的原点。 终端 2 显示与启动堆栈相关的输出,类似于:

[信息] [lgsvl_interface_exe-2]:进程以 pid [20292] 启动
...
[rviz2-20] 解析机器人 urdf xml 字符串。

此处有过有出现错误信息; 则检查下 故障排除

默认情况下,RViz 处于 Move Camera 鼠标可以控制视图的模式,如下所示:

  • 左键单击并拖动以旋转
  • 中键平移
  • 右键单击放大

从窗口左侧的面板更改实体在 RViz 中的显示方式和显示方式的属性。 通过单击指向左侧的小三角形来隐藏该面板。 当该面板隐藏时,RViz 中的输出应如下所示,其中在运行预设仿真时汽车显示为半透明灰色模型,或在自定义仿真案例中显示为白色轮廓:

初始视图,预设仿真

初始视图,未本地化,自定义仿真

初始化本地化(仅在使用自定义仿真时适用)

在 LGSVL 仿真中,车辆会在地图上不同于原点的特定位置生成。 Autoware.Auto 堆栈中使用的 NDT 定位器当前需要对接近事实的车辆姿态进行初始猜测。 在最初的猜测之后,当汽车移动时,NDT 应该会跟随。

初始化 NDT 定位 器0中给出了详细说明 。

完成 NDT 的初始化后,导航回 LGSVL 窗口并按下窗口左下角的播放按钮。

开车到下客区(仅在使用自定义仿真时适用)

现在 NDT 已初始化, 如果仿真尚未运行,请 运行仿真。

为了重现 现实生活 中的演示,请手动将车辆从生成点驾驶到下车区,如下图所示。 花一两分钟在地图上绕几圈看看是什么地方可能是值得的。

使用向上和向下箭头键分别加速或制动。 左右箭头键用于车辆转向。 初始化后,车辆应置于行驶模式。 要将其更改为反向,请使用 PageDown 键。 PageUp 键可用于将车辆放回 Drive。 有关 LGSVL 中控制的更多信息,请按左下角的控制器按钮。

在下图中,橙色框表示激光雷达对象,红点表0026示作为仿真人工输入生成的激光雷达点,白点表示定位系统用作参考的点云图。 所有这些可视化都可以在 RViz 中切换。

如下图所示,让 LGSVL 仿真中的汽车与 RViz 中的位置对齐意味着系统已正确定位并为下一步做好准备。

LGSVL 仿真和 RViz 中落客区的位置

笔记 也可以先开车到下车区,然后在那里初始化 NDT。

自动泊车

原则上,车辆可以停在地图上标明的任何停车位。 在实物演示中,参考停车位是从停车区车道尽头算起的右侧第 5 个停车位。 在仿真器中,尝试在 AutonomouStuff 地图中最西端的停车位组南端的第 5 个位置停车。

下客区和目标停车位的位置

从下车区,通过点击 2D Goal Pose RViz中的按钮选择停车位,在地图中点击并选择,选择停车位和汽车的方位,隐式选择迎面停车和倒车停车。

使用 RViz 选择停车位

然后堆栈开始规划轨迹并可视化沿途的姿势。 规划任务分为两个步骤,车道跟随和停车本身。 在停车阶段,添加虚拟障碍物以引导车辆进入正确的位置。

停车规划器可视化

进一步的演示

停车后,可以按照上述程序指示车辆离开停车位并返回下车区,以向规划者发送新的目标姿势。 提到的姿势只是示例,也可以指示车辆在地图中的任意车道上转到另一个姿势,或者可以尝试在其他停车位停车。

已知限制

  • 在执行计划时,会忽略其他目标姿势。 要么等到车辆达到目标姿势,要么退出堆栈并重试。
  • 地图上的一些停车位太紧而无法容纳雷克萨斯,停车规划器可能会失败,导致车辆不再移动。
  • 不支持定位车辆当前所在车道上的停车位
  • 车辆需要处于前进档
  • 一旦自动驾驶,手动驾驶将不再起作用,因为车辆会激活制动器以保持在先前定义的目标位置

通过网络界面控制车辆

作为在 RViz 中使用鼠标选择目标姿势的替代方法,可以使用与堆栈的其余部分一起启动的 Web 界面。

在 Web 浏览器中打开 http://127.0.0.1:8000/ 主机系统以将目标姿势发送到车辆。 这就要求

  • 将车辆手动驾驶到上图所示地图上的 位置
  • 堆栈在地图中被初始化和本地化

如果满足上述条件,请单击例如 Reverse park Web 浏览器中的按钮。 本质上,这发布了堆栈计划的目标姿势。 监控姿势坐标

ade$ source /opt/AutowareAuto/setup.bash
ade$ ros2 主题 echo /planning/goal_pose

自动代客泊车网页界面

故障排除

缺乏计算资源

并行运行 LGSVL 仿真器和用于 AVP 演示的 Autoware.Auto 堆栈的计算需求很高,配备消费级 NVidia 加速器的常用笔记本电脑可能无法满足。

资源匮乏有多种表现:

  • 当车辆在仿真中四处移动并卡在过去的位置时,定位无法跟随车辆,
  • 车辆不动时,定位不规律地跳跃

解决方案 :要么在不同的机器上运行仿真和 Autoware.Auto 堆栈(推荐),要么在具有更好 GPU 的更强大的计算机上运行两者。

在两台不同的机器上运行 Autoware 时,请确保两台机器在同一个子网中,并且 UDP 多播未被防火墙或路由器阻止。

初始化

启动仿真和堆栈后,控制台充满了这样的错误:

[object_collision_estimator_node_exe-18] [WARN] [1613130016.283356960] [planning.object_collision_estimator_node]:on_bounding_box
无法将 base_link 转换为地图。
[behavior_planner_node_exe-19] [INFO] [1613130016.285522103]
[planning.behavior_planner_node]:
等待本地化结果可用
[lanelet2_global_planner_node_exe-15] [错误] [1613130016.285673175] [planning.lanelet2_global_planner_node]:
无法将姿势转换为地图框
[behavior_planner_node_exe-19] [INFO] [1613130016.320455277]
[planning.behavior_planner_node]:
等待本地化结果可用
[lanelet2_global_planner_node_exe-15] [错误] [1613130016.321167460] [planning.lanelet2_global_planner_node]:
无法将姿势转换为地图框
[p2d_ndt_localizer_exe-4] [错误] [1613130016.337780380]
[localization.p2d_ndt_localizer_node]:
找不到“map”和“base_link”之间的连接,因为它们不是同一棵树的一部分。Tf 有两个或更多未连接的树。

解决方案 初始化本地化(仅在使用自定义仿真时适用)

LGSVL 停留在 API 就绪状态——在多台机器上运行

如果在运行 AVP 仿真后,LGSVL 仿真器仍然停留在 API 就绪启动画面,这通常是 Autoware 和 LGSVL 之间连接失败的症状。 默认情况下,AVP 仿真假定 LGSVL 在同一台机器上运行。

解决方案 api_endpoint_address :通过添加参数 将运行 LGSVL 的机器的地址/主机名明确指定到 AVP 仿真启动文件。 指定主机名 lgsvlmachine.local 运行 LG SVL 的机器的示例:

ade$ ros2 启动 autoware_demos avp_sim.launch.py​​ api_endpoint_address:=lgsvlmachine.local

LGSVL 仿真在 AVP 仿真启动时卡住或崩溃

如果 3D 仿真在通过 LG SVL 网页界面“运行”后卡住,或者在运行 AVP 仿真器后崩溃,这可能是由于传感器配置不正确造成的。 请检查您使用的是正确且最新的版本。

解决方案 配置车辆传感器

如果在运行预设仿真时出现此问题,则需要额外的步骤。 通常这不会发生,但可能是预设车辆随附的预设传感器配置不是最新的。

创建新的传感器配置后,使用按钮复制其 UUID,如下所示:

传感器配置 UUID 按钮位置

现在创建一个包含刚刚复制的值的新 YAML 文件,如下所示。 在下面的示例中,我们将 UUID c7d50f84 - 0a6b -4007 - 9b34-a723dc0e3d20 用于新的传感器配置:

# vehicle_sensor_configuration.param.yaml
---
/**:
ros__参数:
车辆:
config_uuid:c7d50f84-0a6b-4007-9b34-a723dc0e3d20

最后在传递覆盖参数文件的同时运行 AVP 仿真:

ade$ ros2 启动 autoware_demos avp_sim.launch . py​​ override_simulation_params:=./vehicle_ sensor_configuration.param.yaml

这应该会强制预设仿真使用您的自定义传感器配置。

规划器出现错误

如果全局规划器无法达到目标姿势,它会输出以下消息:

[lanelet2_global_planner_node_exe-15] [错误]

[planning.lanelet2_global_planner_node]:未找到全局路由!

解决方案 :这可能是因为位置太靠近车辆,因为全局规划器不考虑倒车并且在地图中的小巷内找不到路径。 尝试一个更远的姿势。

物理演示

物理 AVP 演示于 2020 年在美国加利福尼亚州圣何塞的一个停车场进行,雷克萨斯 RX 450h 配备了

有关雷克萨斯自主演示的视频,请查看 自主代客泊车演示的印象

设置和启动(硬件)

使用上面物理演示部分中定义的硬件,演示只能在具有 Lanelet2 地图和激光雷达地图的停车场的物理硬件上运行。

要使用您自己的地图在实体车辆上运行演示:

  1. 将 中 的 PCD 映射的路径 .pcd 和文件的路径替换 为您自己的映射文件的路径。 .yaml src/tools/autoware_demos/ param /map_publisher_vehicle.param.yaml
  2. .osm 将中的 Lanelet2 地图 的文件路径替换 src/tools/autoware_demos/ param/ lanelet2_map_provider.param.yaml 为您自己的地图文件的路径。

无论是使用您自己的地图还是现有的地图:

1.安装 ADE

2.在新终端中,运行 Milestone 3 的启动文件:

$ ade 输入
ade$ source /opt/AutowareAuto/setup.bash
ade$ ros2 启动 autoware_demos avp_vehicle.launch.py

在另一个终端中,启动 RViz2 进行可视化。

$ ade 输入
ade$ source /opt/AutowareAuto/setup.bash
ade$ ros2 启动 autoware_auto_launch autoware _ auto_visualization.launch.py

AVP ODD 的系统架构

为解决 Autoware.Auto 中的 AVP ODD 而开发的系统架构如下所示:


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



4302 次浏览
6次
欢迎参加课程:
数据建模方法与工具
MBSE(基于模型的系统工程)
基于 UML 和EA进行分析设计