1. Verti-Bench 越野仿真平台概述
Verti-Bench 是一个基于 Project Chrono 的高保真越野仿真平台,专门用于研究车辆在极端地形下的移动性能。作为一个开源仿真工具,它整合了物理引擎、传感器模拟和地形建模等核心功能,为自动驾驶、机器人导航和车辆动力学研究提供了完整的测试环境。
在实际应用中,Verti-Bench 能够模拟各种复杂地形条件下的车辆行为,包括泥泞、沙地、岩石等不同路面特性。通过精确的物理计算和传感器数据模拟,研究人员可以在虚拟环境中测试算法性能,大幅降低实地测试的成本和风险。
2. 系统环境准备
2.1 基础系统配置
在开始安装前,我们需要确保系统满足最低要求。推荐使用 Ubuntu 20.04 LTS 作为基础操作系统,这是目前 ROS2 Foxy 官方支持最稳定的版本。
首先更新系统并安装基础开发工具:
bash复制sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential cmake git curl wget
注意:建议在执行系统更新前创建系统快照,以防升级过程中出现意外情况导致系统无法启动。
2.2 GPU 驱动与 CUDA 安装
Verti-Bench 的传感器模拟模块需要 CUDA 支持。以下是 NVIDIA 驱动和 CUDA 的安装步骤:
- 检查当前显卡驱动状态:
bash复制nvidia-smi
- 如果未安装驱动,安装推荐版本:
bash复制sudo apt install nvidia-driver-525 -y
sudo reboot
- 安装 CUDA 11.8 Toolkit(注意跳过驱动安装):
bash复制wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run
在安装界面中,取消勾选 Driver 选项,只保留 Toolkit 安装。
- 配置环境变量:
bash复制echo 'export PATH=/usr/local/cuda-11.8/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
验证安装:
bash复制nvcc --version
3. ROS2 Foxy 环境搭建
3.1 系统基础配置
在安装 ROS2 前,需要确保系统 locale 设置正确:
bash复制sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
3.2 添加 ROS2 软件源
bash复制sudo apt install -y curl gnupg2 lsb-release
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 $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
3.3 安装 ROS2 Foxy 桌面版
bash复制sudo apt update
sudo apt install -y ros-foxy-desktop python3-argcomplete
sudo apt install -y ros-foxy-geometry-msgs
sudo apt install -y python3-colcon-common-extensions
重要提示:为避免与后续 Conda 环境冲突,不建议将 ROS2 环境变量加入 bashrc。需要时手动加载:
bash复制source /opt/ros/foxy/setup.bash
4. Python 环境配置
4.1 Miniconda 安装
bash复制wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
安装完成后,重新加载 bash 配置:
bash复制source ~/.bashrc
4.2 创建专用 Python 环境
bash复制conda create -n verti_bench_env python=3.9 -y
conda activate verti_bench_env
5. Python 依赖安装
5.1 关键依赖安装顺序
Verti-Bench 对 Python 包版本有严格要求,必须按以下顺序安装:
- 首先安装指定版本的 NumPy:
bash复制conda install numpy=1.24.0 -c conda-forge -y
- 安装 PyTorch(CUDA 11.8 版本):
bash复制pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
- 安装强化学习相关包:
bash复制pip install gymnasium
pip install stable-baselines3[extra]
- 安装基础科学计算包:
bash复制pip install pyyaml scipy evdev-binary matplotlib pandas
- 安装与 NumPy 1.24.0 兼容的 OpenCV:
bash复制pip install opencv-python==4.5.5.64
5.2 版本锁定
为防止后续安装其他包时自动升级关键依赖,需要锁定版本:
bash复制echo "numpy ==1.24.0" >> $CONDA_PREFIX/conda-meta/pinned
6. grid_map 编译与安装
6.1 系统依赖安装
bash复制conda deactivate # 临时退出 conda 环境
sudo apt install -y libeigen3-dev libtinyxml2-dev
6.2 源码编译
bash复制mkdir -p ~/Code/grid_map_ws/src
cd ~/Code/grid_map_ws/src
git clone https://github.com/ANYbotics/grid_map.git -b ros2
cd ~/Code/grid_map_ws
source /opt/ros/foxy/setup.bash
rosdep install --from-paths src --ignore-src -r -y
export CMAKE_POLICY_VERSION_MINIMUM=3.5
colcon build --symlink-install
验证安装:
bash复制source install/setup.bash
ros2 pkg list | grep grid_map
7. PyChrono 编译与配置
7.1 源码准备
bash复制conda activate verti_bench_env
mkdir -p ~/Code/verti_bench_workspace
cd ~/Code/verti_bench_workspace
git clone -b 901 https://gitee.com/zhangzicheng/chrono.git
7.2 系统依赖安装
bash复制sudo apt install -y libirrlicht-dev libgl1-mesa-dev libx11-dev \
libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev \
libglu1-mesa-dev freeglut3-dev libopenmpi-dev openmpi-bin \
swig libeigen3-dev
conda install -c conda-forge mkl=2020 irrlicht=1.8.5 glfw -y
7.3 第三方依赖安装
- 安装 Blaze 3.8:
bash复制cd ~/Code/verti_bench_workspace
wget https://bitbucket.org/blaze-lib/blaze/downloads/blaze-3.8.tar.gz
tar -xzf blaze-3.8.tar.gz
mv blaze-3.8 ~/Code/third_party/blaze
- 安装 OptiX 7.7(需从 NVIDIA 官网下载后安装):
bash复制cd ~/Code/third_party
chmod +x ~/Downloads/NVIDIA-OptiX-SDK-7.7.0-linux64-x86_64.sh
./NVIDIA-OptiX-SDK-7.7.0-linux64-x86_64.sh --skip-license --prefix=/home/bingo/Code/third_party/optix7
7.4 编译 Chrono
bash复制cd ~/Code/verti_bench_workspace
mkdir chrono_build && cd chrono_build
cmake ../chrono \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX \
-DCH_ENABLE_MODULE_IRRLICHT=ON \
-DCH_ENABLE_MODULE_VEHICLE=ON \
-DCH_ENABLE_MODULE_SENSOR=ON \
-DCH_ENABLE_MODULE_MULTICORE=ON \
-DCH_ENABLE_MODULE_GPU=ON \
-DCH_ENABLE_MODULE_PYTHON=ON \
-DCH_ENABLE_MODULE_PARSERS=ON \
-DCH_ENABLE_MODULE_OPENGL=ON \
-DBUILD_DEMOS=OFF \
-DBUILD_TESTING=OFF \
-DOptiX_INSTALL_DIR=/home/bingo/Code/third_party/optix7 \
-DOptiX_ROOT_DIR=/home/bingo/Code/third_party/optix7 \
-DBLAZE_INSTALL_DIR=/home/bingo/Code/third_party/blaze \
-Dtinyxml2_DIR=/home/bingo/Code/third_party/tinyxml2_install/lib/cmake/tinyxml2 \
-Durdfdom_DIR=/home/bingo/Code/third_party/urdfdom_install/lib/urdfdom/cmake \
-Durdfdom_headers_DIR=/home/bingo/Code/third_party/urdfdom_headers_install/share/urdfdom_headers/cmake \
-DPYTHON_EXECUTABLE=$CONDA_PREFIX/bin/python \
-DPYTHON_LIBRARY=$CONDA_PREFIX/lib/libpython3.9.so \
-DPYTHON_INCLUDE_DIR=$CONDA_PREFIX/include/python3.9 \
-DNUMPY_INCLUDE_DIR=$CONDA_PREFIX/lib/python3.9/site-packages/numpy/core/include
make -j4
8. Verti-Bench 部署与验证
8.1 源码获取
bash复制cd ~/Code/verti_bench_workspace
git clone --depth 1 https://github.com/RobotiXX/verti_bench.git
cd verti_bench
git lfs pull
8.2 环境变量配置
创建 Conda 激活脚本:
bash复制mkdir -p $CONDA_PREFIX/etc/conda/activate.d
cat > $CONDA_PREFIX/etc/conda/activate.d/verti_bench.sh << 'EOF'
#!/bin/bash
export PYTHONPATH=/home/bingo/Code/verti_bench_workspace/chrono_build/bin:/home/bingo/Code/verti_bench_workspace/chrono_build/lib:$PYTHONPATH
export LD_LIBRARY_PATH=/home/bingo/Code/verti_bench_workspace/chrono_build/lib:$LD_LIBRARY_PATH
export CHRONO_DATA_DIR=/home/bingo/Code/verti_bench_workspace/verti_bench/envs/data/
export PYTHONPATH=/home/bingo/Code/grid_map_ws/install/grid_map_msgs/lib/python3.8/site-packages:$PYTHONPATH
export PYTHONPATH=/home/bingo/Code/verti_bench_workspace:$PYTHONPATH
EOF
chmod +x $CONDA_PREFIX/etc/conda/activate.d/verti_bench.sh
8.3 验证安装
创建验证脚本:
python复制#!/usr/bin/env python3
import sys
import os
import numpy
import pychrono.core
import pychrono.vehicle
import pychrono.sensor
import pychrono.irrlicht
print("PyChrono 模块导入成功")
print(f"NumPy版本: {numpy.__version__}")
print(f"CHRONO_DATA_DIR: {os.environ.get('CHRONO_DATA_DIR', '未设置')}")
try:
from grid_map_msgs.msg import GridMap
print("grid_map_msgs 导入成功")
except ImportError as e:
print(f"grid_map_msgs 导入失败: {e}")
运行验证:
bash复制conda activate verti_bench_env
python validate_verti_bench.py
9. 常见问题排查
9.1 NumPy 版本冲突
症状:_ARRAY_API not found 错误
解决方案:
bash复制pip uninstall numpy -y
pip install numpy==1.24.0
pip install opencv-python==4.5.5.64
echo "numpy ==1.24.0" >> $CONDA_PREFIX/conda-meta/pinned
9.2 模型文件缺失
症状:Error loading OBJ file
解决方案:
bash复制export CHRONO_DATA_DIR=/home/bingo/Code/verti_bench_workspace/verti_bench/envs/data/
cd /home/bingo/Code/verti_bench_workspace/verti_bench
git lfs pull
9.3 ROS2 命令不可用
症状:ros2: command not found
解决方案:手动加载 ROS2 环境
bash复制source /opt/ros/foxy/setup.bash
9.4 grid_map_msgs 导入失败
症状:No module named 'grid_map_msgs'
解决方案:
bash复制export PYTHONPATH=/home/bingo/Code/grid_map_ws/install/grid_map_msgs/lib/python3.8/site-packages:$PYTHONPATH