自动代客泊车
概述
自动代客泊车 (AVP) 演示使用 Autoware.Auto 提供代客泊车服务。 它是由 Autoware 成员于 2020 年实现的,在这篇文章中有更详细的描述。
目标是引导汽车自动停在停车场,并通过智能手机自动返回到上/下车区域。
AVP 演示使用 Autoware.Auto 提供以下功能:
- 自动将汽车从预定义的下客区(例如停车场入口)开到外部系统指示的停车位。
- 将汽车停在停车位,从该停车位附近的车道开始。
- 驶出停车位。
- 开车到预先定义的接送区(例如停车场的出口)。
- 实现上述目标时自动停止障碍物。
重复演示的最简单方法是在 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 地图和激光雷达地图的停车场的物理硬件上运行。
要使用您自己的地图在实体车辆上运行演示:
- 将 中 的 PCD 映射的路径 .pcd 和文件的路径替换 为您自己的映射文件的路径。 .yaml src/tools/autoware_demos/ param /map_publisher_vehicle.param.yaml
- .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 而开发的系统架构如下所示:
|