系统:ubuntu22.04
ros版本: ros humble
scenario runner版本:0.9.13【这个版本的sr可以适配carla 0.9.13和carla 0.9.14】
carla版本:0.9.14
carla-ros-bridge版本:https://github.com/gezp/carla_ros
一、安装前提
1. 安装carla 0.9.14+sr 0.9.13
参考教程:https://blog.csdn.net/eowyn0406/article/details/152897168
注意教程中虚拟环境的python和carla的安装路径需要改为你自己的配置,你的~/.bashrc末尾添加:
bash
conda activate your_conda_env
export CARLA_ROOT=/替换为你的carla服务器路径/carla0914
export PYTHONPATH=$PYTHONPATH:$CARLA_ROOT/PythonAPI/carla/dist/carla-0.9.14-py3.7-linux-x86_64.egg
【更稳定的方法】
新建一个sh文件,添加如下内容,然后运行一遍脚本。注意carla版本和python版本,根据这两个选择egg文件和whl文件。
bash
conda activate py37
# 配置CARLA
export CARLA_ROOT=/your_root_to_carla/carla0914
export PYTHONPATH=${CARLA_ROOT}/PythonAPI/carla/dist/carla-0.9.14-py3.7-linux-x86_64.egg
# 配置SCENARIO_RUNNER
export SCENARIO_RUNNER_PATH=/home/eowyn/sr0914/scenario_runner-0.9.13
export PYTHONPATH=$PYTHONPATH:${CARLA_ROOT}/PythonAPI/carla
export PYTHONPATH=$PYTHONPATH:${SCENARIO_RUNNER_PATH}
2. 安装ros humble
自己找教程装,不需要虚拟环境,直接装。
二、安装carla-ros-bridge
首先,确保你的系统是ubuntu 22.04, ros huble 已安装,carla 0.9.14已安装。
然后,我们来安装carla-ros-bridge。我依然选择在虚拟环境中安装。
- 准备carla API 安装文件:
从https://github.com/gezp/carla_ros/releases/下载红框中两个文件,一个whl,一个egg。whl文件用于安装在虚拟环境,egg用于配置路径。下载后,移动到${CARLA_ROOT}/PythonAPI/carla/dist/路径下。
- 新建一个conda虚拟环境,python=3.10
bash
conda create -n ros-bridge python=3.10
conda activate ros-bridge # 激活虚拟环境
# 安装whl文件
cd ${CARLA_ROOT}/PythonAPI/carla/dist # 假设你已经将whl文件放到这个路径下了
pip3 install carla-0.9.14-cp310-cp310-linux_x86_64.whl
配置CARLA_ROOT和PYTHONPATH:
bash
export CARLA_ROOT=/root/to/your/carla/carla0914
export PYTHONPATH=$PYTHONPATH:${CARLA_ROOT}/PythonAPI/carla/dist/carla-0.9.14-py3.10-linux-x86_64.egg
- 后续操作都在虚拟环境ros-bridge中
bash
# 安装依赖
sudo apt install ros-humble-derived-object-msgs
# 为ros-bridge新建一个路径
mkdir -p ~/carla-ros-bridge/catkin_ws/src
cd ~/carla-ros-bridge/catkin_ws/src
git clone --recurse-submodules https://github.com/gezp/carla_ros.git -b humble-carla-0.9.14
cd .. #回到ros-bridge工作目录下:~/carla-ros-bridge/catkin_ws/
# 使用rosdep安装所有依赖
rosdep install --from-paths src --ignore-src -r
# 在虚拟环境中安装pygame库,可能还需要numpy等,根据最后的运行提示安装其他必要的python库
pip install pygame
# 编译
colcon build --symlink-install
# 配置本项目环境,使得在其他路径下也可以运行本项目的ros节点
source install/setup.bash
三、测试ros-bridge
运行下面的命令,看ros-bridge是否可以正常工作。
bash
# 打开一个终端,运行carla服务器
cd /root/to/carla/carla0914
./CarlaUE4.sh # or ./CarlaUE4.sh -RenderOffScreen
# 另开一个终端
cd ~/carla-ros-bridge/colcon_ws
source /opt/ros/humble/setup.bash # 如果ros没有配置全局变量,则运行此命令,否则跳过
source install/setup.bash # source the workspace
# launch the `carla ros-bridge`
ros2 launch carla_ros_bridge carla_ros_bridge.launch.py synchronous_mode:=True town:=Town03 # <town number, eg: 03>
# 另开一个终端, launch the objects.json
cd ~/carla-ros-bridge/colcon_ws
source /opt/ros/humble/setup.bash # 如果ros没有配置全局变量,则运行此命令,否则跳过
source install/setup.bash # source the workspace
# 注意替换objects.json的路径
ros2 launch carla_spawn_objects carla_example_ego_vehicle.launch.py spawn_sensors_only:=False objects_definition_file:=/absolute/path/to/objects.json
# 另开一个终端, launch the rviz2
cd ~/carla-ros-bridge/colcon_ws
source /opt/ros/humble/setup.bash # 如果ros没有配置全局变量,则运行此命令,否则跳过
source install/setup.bash # source the workspace
# 运行rviz2界面
rviz2 -d /path/to/carla_ros.rviz
可能会遇到transform3d的问题,可以配置软连接,将本地环境中的相关库连接到虚拟环境中。
运行效果:

四、方便一些的环境配置方法
脚本如下,保存为sh脚本,运行即可。
bash
#!/bin/bash
# 激活conda虚拟环境
conda activate ros-bridge
# 设置 ROS2
source /opt/ros/humble/setup.bash
source /home/eowyn/carla-ros-bridge/catkin_ws/install/setup.bash
# 配置CARLA和SCENARIO_RUNNER,避免重复路径
export CARLA_ROOT=/home/eowyn/carla0914
export SCENARIO_RUNNER_PATH=/home/eowyn/sr0914/scenario_runner-0.9.13
# 函数:安全添加路径到 PYTHONPATH
add_to_pythonpath() {
local new_path="$1"
if [[ -n "$PYTHONPATH" ]]; then
# 检查路径是否已存在
if [[ ":$PYTHONPATH:" != *":$new_path:"* ]]; then
export PYTHONPATH="$new_path:$PYTHONPATH"
fi
else
export PYTHONPATH="$new_path"
fi
}
# 按优先级添加路径(后添加的优先级更高)
add_to_pythonpath "${SCENARIO_RUNNER_PATH}"
add_to_pythonpath "${CARLA_ROOT}/PythonAPI/carla"
add_to_pythonpath "${CARLA_ROOT}/PythonAPI/carla/dist/carla-0.9.14-py3.10-linux-x86_64.egg"
echo "环境配置完成"
echo "PYTHONPATH 包含以下路径:"
echo "$PYTHONPATH" | tr ':' '\n'
bash
chomd +x set_bridge.sh
source set_bridge.sh
运行效果:

参考教程:https://learnopencv.com/ros2-and-carla-setup-guide/#aioseo-carla-ros2-bridge-setup