(1)背景
在入门自动驾驶领域的时候,笔者主要使用的工具是QT+ROS+Gazebo,在该行业工作一段时间之后,发现各家都有自己的仿真平台,只能在公司平台使用,但是如果个人要做城区的仿真,前面所说的工具链(QT+ROS+Gazebo)显然是不够便捷的。目前主要调研了两个开源的平台,第一个是 Autoware.universe,第二个就是国内Apollo平台,matlab适用于高校仿真环境,但不适用于量产(量产还是以c++为主),所以就不重点介绍matlab平台了,这次先说说Autoware平台。
首先介绍Autoware的安装及使用,后面会大概说一下自己使用的感受。
(2)Autoware安装
个人电脑系统是Ubunt20.04,安装目前主要的参考是官方文档(比较靠谱,很友好,还会列举可能会遇到的问题):https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/docker-installation-devel/。
第一步: 克隆仓库
git clone https://github.com/autowarefoundation/autoware.git
第二步:安装依赖项
- cuda稍微好一点的电脑会自带,但是此项不是必须项
- docker的安装参考官方文档即可
https://docs.docker.com/engine/install/ubuntu/
https://docs.docker.com/engine/install/linux-postinstall/ - 安装nvidia的 container
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit - 安装rocker
https://github.com/osrf/rocker#installation
到此,所有依赖安装完毕。
(3)Autoware仿真
3.1 下载官方的image:
docker pull ghcr.io/autowarefoundation/autoware-universe:latest-cuda
3.2 创建autoware_map文件目录,用于存储地图demo文件:
mkdir autoware_map
3.3 以gpu加速的形式启动docker:(注意:如果没有成功安装nvidia cuda,无法使用)
rocker --nvidia --x11 --user --volume $HOME/autoware --volume $HOME/autoware_map -- ghcr.io/autowarefoundation/autoware-universe:latest-cuda
3.4 如果没有安装nvidia cuda,可以使用下面的命令进入docker:
rocker -e LIBGL_ALWAYS_SOFTWARE=1 --x11 --user --volume $HOME/autoware --volume $HOME/autoware_map -- ghcr.io/autowarefoundation/autoware-universe:latest-cuda
3.5 进入autoware空间,导入源码:
cd autoware
mkdir src
vcs import src < autoware.repos
3.6 在docker中,安装ros依赖(需要多次尝试,由于网络不好,所以经常会更新失败):
sudo apt update
rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
3.7 源码编译:(如果需要加速编译,使用第二行命令即可;此处时间也比较长,大概半小时左右)
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
MAKEFLAGS="-j4" colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
因为后期使用,不需要重新编译所有模块,只需要编译自己所在业务的package,使用如下这行命令即可:
colcon build --packages-select autoware_launch
3.8 测试使用
下载官方的地图,之后解压即可
gdown -O ~/autoware_map/ 'https://docs.google.com/uc?export=download&id=1499_nsbUbIeturZaDj7jhUownh5fvXHd'
运行测试case
source ~/autoware/install/setup.bash
ros2 launch autoware_launch planning_simulator.launch.xml map_path:=$HOME/autoware_map/sample-map-planning vehicle_model:=sample_vehicle sensor_model:=sample_sensor_kit
此时,我的电脑提示下面的错误,后来仔细检查是因为autoware_launch模块并没有被编译,所以重新对该模块进行了编译,后续能在autoware/install文件夹中找到“autoware_launch”文件:
Package 'autoware_launch' not found: "package 'autoware_launch' not found, searching:
再次运行上面的两条命令,出现了期待的画面。
在顶栏中选择合适的起点和终点即可规划出路径,点击“OperationMode”下的“Auto”按钮,车辆即可按照规划出来的路径行驶。(如果起点或终点在车道中逆行是无法规划出轨迹的)
(4)使用感受
因为笔者主要从事的是planning模块的工作,所以主要看了相关的架构,整个autoware的框架图如下所示(图片来自官网):
看下来整体架构是和市场上的自驾公司差不多的,但是内部所使用的算法和目前国内主流的方案差别较大,主要体现在决策和优化部分,在绕行避障的case中,autoware使用的是模型预测方法来规避障碍物,而不是QP方法,包括变道也是。作为额外的研究工作,大家可以去看看官方文档和源码,也许能给自己带来一些启发。