AWSIM是Autoware当前推荐使用的仿真工具,内部采用ros2-for-unity插件,能够直接发送ros2消息而不同采用中间转接模块,效率较高。
进行软件开发时各种依赖包的版本管理是让人头疼的问题,特别是在涉及到深度学习功能开发时不同模块依赖不同的版本的cuda及配套工具,问题尤其突出。docker是解决上述依赖问题的较好方案,并且作为轻量级的容器,性能开销极低。
如果AWSIM和Autoware都能够在docker环境中正常运行,将是理想的解决方案。但在实际测试中发现,将AWSIM放入docker会引起不明原因的程序崩溃,鉴于AWSIM软件包独立性较强,我们将AWSIM放在宿主机上直接运行,将Autoware放在docker内运行,基本达到预期。
AWSIM安装步骤:
在Linux上AWSIM运行需要PC配置如下:
Required PC Specs | |
---|---|
OS | Ubutnu 20.04 |
CPU | 6cores and 12thread or higher |
GPU | RTX2080Ti or higher |
Nvidia Driver (Linux) | >=460.27.03 |
注1:截至当前,AWSIM基于ubuntu 20.04开发,官方还未发布ubuntu 22.04版本,但autoware目前主分支版本已经切换成ros2 humble,而ros2 humble版本只支持ubuntu 22.04。(使用docker可以轻松的解决上述问题)
注2:系统整体运行显存占用约8G,建议选用显存不小于8G的显卡。
1. 安装Nvidia驱动
AWSIM运行只需要系统安装Nvidia驱动,不需要安装cuda,驱动的推荐安装方式如下:
// 1. Add Nvidia driver to apt repository.
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
// 2. Install the recommended version of the driver.
sudo ubuntu-drivers autoinstall
// 3. Reboot your machine to make the installed driver detected by the system.
sudo reboot
2. 安装Vulkan Graphics Library
sudo apt update
sudo apt install libvulkan1
3. 安装ros2 galactic版本
目前ros2 galactic已经停止维护,在ubuntu20.04上的ros2只有foxy版本处于维护状态,但AWSIM只支持galactic版,galactic版本安装步骤如下:
// 1. Set locale
locale # check for UTF-8
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
locale # verify settings
// 2. Setup Sources
sudo apt install software-properties-common
sudo add-apt-repository universe
sudo apt update && sudo apt install curl
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
// 3. Install ROS 2 packages
sudo apt update
sudo apt install ros-galactic-ros-base python3-argcomplete
// 4. Environment setup
# Replace ".bash" with your shell if you're not using bash
# Possible values are: setup.bash, setup.sh, setup.zsh
source /opt/ros/galactic/setup.bash
4. 下载安装AWSIM
从官方下载地址下载最新AWSIM版本,解压后给AWSIM.x86_64增加可执行权限。
chmod +x <path to AWSIM folder>/AWSIM.x86_64
5. 启动AWSIM
./<path to AWSIM folder>/AWSIM.x86_64
(1)启动界面
(2)rostopic list
Autoware安装步骤:
1. 从主仓库检出工程到本地~/autoware目录
// check out awsim-stable branch
git clone https://github.com/autowarefoundation/autoware.git - b awsim-stable
cd autoware
2. 配置开发环境
./setup-dev-env.sh docker
3. 下载仿真地图
从官方地址下载仿真地图,下载并解压到本地~/autoware_map目录,启动docker镜像(注:目前awsim-stable分支是基于ros2 galactic版本)
rocker --nvidia --x11 --user --volume $HOME/autoware --volume $HOME/autoware_map -- ghcr.io/autowarefoundation/autoware-universe:galactic-lates
4. 在docker环境中编译Autoware工程
// 1. Move to the workspace in the container
cd autoware
// 2. Create the src directory and clone repositories into it
mkdir src
vcs import src < autoware.repos
// 3. Update dependent ROS packages
sudo apt update
rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
// 4. Build the workspace
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
AWSIM + Autoware仿真运行:
1. 在docker环境中启动Launch Autoware
source install/setup.bash
ros2 launch autoware_launch e2e_simulator.launch.xml vehicle_model:=sample_vehicle sensor_model:=awsim_sensor_kit map_path:=<your mapfile location>
2. 配置宿主机 ROS2 配置,并启动AWSIM(这是本文核心重点)
(1) 创建配置文件 rmw_cyclonedds_cpp.xml
<CycloneDDS>
<Domain>
<General>
<NetworkInterfaceAddress>docker0</NetworkInterfaceAddress>
</General>
</Domain>
</CycloneDDS>
(2) 配置RWM
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
export CYCLONEDDS_URI=<path to rmw_cyclonedds_cpp file folder>/rmw_cyclonedds_cpp.xml
(3)启动AWSIM
./<path to AWSIM folder>/AWSIM.x86_64
3. 仿真运行
(1)Rviz显示界面