autoware.universe 使用之Rosbag replay simulation放包仿真

本文将按照官方文档,通过播放rosbag录制包进行可视化模拟,中间也报了很多错误,特此记录下来,以免后续踩坑。
电脑配置如下:
   ubuntu20.04
   cuda: cuda-11.6
   nvidia-driver 535
   ros2: foxy

关于autoware.universe安装可参考我之前的博客链接,我是在ubuntu20.04上使用docker安装拉取环境进行手动安装,可供大家参考。

1. 下载bag包和对应的地图文件

将下载好的文件放到./autoware_map/文件夹下。

  • 下载地图
gdown -O ~/autoware_map/ 'https://docs.google.com/uc?export=download&id=1A-8BvYRX3DhSzkAnOcGWFw5T30xTlwZI'
unzip -d ~/autoware_map/ ~/autoware_map/sample-map-rosbag.zip
  • 下载rosbag包
gdown -O ~/autoware_map/ 'https://docs.google.com/uc?export=download&id=1VnwJx9tI3kI_cTLzP61ktuAJ1ChgygpG'
unzip -d ~/autoware_map/ ~/autoware_map/sample-rosbag.zip

执行上述命令时报错:
在这里插入图片描述

参考文章安装gdown:

git clone https://github.com/wkentaro/gdown.git
cd gdown
pip install gdown

安装后发现在终端直接输入gdown仍然会报上述错误。故直接进入gdown项目,新建.py文件,写python代码下载:

import gdown
# 例如
url = "https://docs.google.com/uc?export=download&id=1A-8BvYRX3DhSzkAnOcGWFw5T30xTlwZI"
output = "sample-map-rosbag.zip"
gdown.download(url, output)

执行代码可能会因为时间问题报错,我这里是使用了代理才成功下载。
下载完成后,将压缩包解压放到autoware_map目录下。

unzip -d ~/autoware_map ~/autoware_map/sample-map-rosbag.zip

其他zip文件同理下载。之后我会把相关zip包和data放到百度云中,有需要的可自取。

2. 创建autoware_data文件夹

将以下文件放到autoware_data文件夹下:
image_projection_based_fusion
lidar_apollo_instance_segmentation
lidar_centerpoint
tensorrt_yolo
tensorrt_yolox
traffic_light_classifier
traffic_light_fine_detector
traffic_light_ssd_fine_detector
yabloc_pose_initializer
......

文件下载可以参官网地址进行下载,也可直接下载我分享的百度云链接。

3. 进入容器,放包测试

  • 进入容器
rocker --nvidia --x11 --user --volume $HOME/autoware --volume $HOME/autoware_map --volume $HOME/autoware_data/ -- ghcr.io/autowarefoundation/autoware-universe:latest-cuda
  • source
source ./autoware/install/setup.bash
  • ros2 launch 打开模拟器
ros2 launch autoware_launch logging_simulator.launch.xml map_path:=$HOME/autoware_map/sample-map-rosbag vehicle_model:=sample_vehicle sensor_model:=sample_sensor_kit
  • 新开终端,和上述方法一致,进入容器,source环境
  • 放包,包里因为涉及隐私问题,没有图像
ros2 bag play ./autoware_map/sample-rosbag/sample.db3 -r 0.2 -s sqlite3

  上述命令执行完,正常情况下模拟器中会显示地图和雷达信息,小车会根据线路移动,并且周围车辆等会有包围框等信息输出,如下图所示:
在这里插入图片描述

但是,我的模拟器中出现两个问题:
  (1) 整个画面有延迟,点云地图加载有延迟,且时有时无;
  (2) 周围目标没有输出任何包围框信息,说明检测就没起作用。我查看终端信息,发现中间有error信息输出。
  有上述错误出现而且包里没有图像,故检测基本应该使用激光雷达相关的算法检测得到,但是上述并没有输出检测信息,说明激光雷达相关算法那里可能出了问题。从相关的launch.xml文件中也能看到激光雷达检测使用的是centerpoint,正好我主要目的是测试lidar_centerpoint检测结果。故现在单独启动lidar_centerpoint算法查看。

4. 测试lidar_centerpoint

# 里面涉及到的路径可以根据实际路径修改
ros2 launch lidar_centerpoint lidar_centerpoint.launch.xml model_name:=centerpoint_tiny model_path:=$HOME/autoware_data/lidar_centerpoint model_param_path:=$(ros2 pkg prefix lidar_centerpoint --share)/config/centerpoint_tiny.param.yaml build_only:=true

其中,build_only默认为False,当设置为True时,会将onnx转为engine。

在执行上述命令时报错:
在这里插入图片描述
解决方法:
  根据github上的问题,我查看了本机上的nvidia-driver是535的,故尝试将nvidia-driver 由535改为545。参考文章

# 1. 添加 NVIDIA 图形驱动 PPA:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update

# 2. 查看可用的 NVIDIA 驱动版本:
apt search nvidia-driver

# 3. 安装最新的 NVIDIA 驱动:这个过程非常慢!
sudo apt install nvidia-driver-545

# 重启
reboot

# 再次查看,发现nvidia-driver 545成功安装
nvidia-smi

nvidia-driver 由535换为545后,上述错误消失。再次执行上述命令,又迎来新的报错:
在这里插入图片描述  我仔细看了终端输出发现engine已经生成了,是生成之后报的错误。查找了资料,其中有的是说是runtime和engine初始定义的顺序不对,导致最终销毁时runtime先被销毁就会出现这种错误。这个就涉及到代码层面的问题了,我查了autoware github上的报错问题,并没有找到类似的报错。我猜想可能不是上面说的这个问题。后来看到一篇博客说这个error不影响,可以忽略。然后我又重新执行了上述命令,将build_only设置为False。终端显示:
在这里插入图片描述没有报错。之后我通过Ctrl+C结束进程,发现有显示上述错误:
在这里插入图片描述上面报错应该没有什么影响,后续如果有影响,我会再回来更新。

5. 重新放包测试

回到前面第3节,重新打开模拟器、同时放包,发现已经可以显示包围框、轨迹规划路径等等
在这里插入图片描述

6. 其他报错

  • error1

在这里插入图片描述

原因是忘记source环境了

source ./autoware/install/setup.bash
  • error2

在这里插入图片描述报错原因是直接使用了别人生成的engine,将对应文件中的engine删除,设置build_only:=true重新生成engine即可。

7. 参考

官方文档

https://github.com/autowarefoundation/autoware.universe/issues/6461

https://zhuanlan.zhihu.com/p/674766674

百度云链接(有空会放)

autoware.universe是一个开源的自动驾驶软件平台,它旨在提供一个灵活且易于使用的工具,以支持自动驾驶系统的开发和部署。autoware.universe demo是该平台的演示版本,用于展示其功能和能力。 autoware.universe demo的功能包括感知、规划、控制和用户界面等方面。通过搭载传感器(如相机、激光雷达等),它可以实时获取环境信息,并对周围的道路、车辆和障碍物进行识别和跟踪。然后,它利用规划算法生成最佳的行驶路径,并通过车辆控制将其转化为实际的驾驶指令。此外,autoware.universe demo还提供了用户界面,使用户可以轻松地监视和调整自动驾驶系统的行为。 通过autoware.universe demo,用户可以直观地了解自动驾驶系统是如何运作的。他们可以观察到传感器获取的原始数据,以及系统的感知结果和规划路径等信息。此外,他们还可以通过用户界面对系统的设置进行调整,以适应不同的驾驶场景和需求。 autoware.universe demo的目的是鼓励更多的开发者参与自动驾驶技术的研究和创新。通过提供一个易于使用和可定制的平台,开发者可以更加方便地测试和验证自己的想法和算法。同时,autoware.universe demo还可以作为教育工具,帮助初学者对自动驾驶系统有更深入的理解。 总而言之,autoware.universe demo是autoware.universe平台的演示版本,展示了自动驾驶系统的感知、规划、控制和用户界面等功能,旨在促进自动驾驶技术的研究和创新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值