从零到端到端自动驾驶实战-Pjoject2-第 1 章-环境搭建-CARLA-ROS2 集成 (下)

安装 carla-ros-bridge

克隆 ros-bridge 源码

# 创建 ROS2 工作空间
mkdir -p ~/carla_ws/src && cd ~/carla_ws/src

# 克隆 carla-ros-bridge (主分支适配 ROS2 Humble)
git clone --recurse-submodules \
  https://github.com/carla-simulator/ros-bridge.git

# 确认子模块也派下来了
cd ros-bridge
git submodule update --init --recursive

安装依赖

cd ~/carla_ws

# 安装 ROS2 依赖
sudo apt install python3-rosdep python3-vcstool -y

# 自动安装所有依赖
source /opt/ros/humble/setup.bash
rosdep install --from-paths src --ignore-src -r -y

# 安装额外的 Python 依赖
pip install transforms3d simple-pid

编译 ros-bridge

cd ~/carla_ws

# 使用 colcon 编译
colcon build --symlink-install

# 编译大约耗时 3-8 分钟
# 如果出现错误, 常见解决:
# - 'carla_msgs not found': 改用 git clone --recurse-submodules
# - 'colcon: command not found': apt install python3-colcon-common-extensions
# - 'transforms3d 没有': pip install transforms3d

# 编译完成后
source install/setup.bash

# 永久生效(添加到 .bashrc)
echo 'source ~/carla_ws/install/setup.bash' >> ~/.bashrc

最后一步:跑通你的第一个 Demo

所有准备工作完成,现在来验收成果:把 CARLA 的仿真数据引到 ROS2 生态里。

启动四个终端

# ===== 终端 1: CARLA 仿真器 =====
cd ~/carla
./CarlaUE4.sh -quality-level=Medium
# ===== 终端 2: ros-bridge + 生成 Ego 车 =====
source ~/carla_ws/install/setup.bash

ros2 launch carla_ros_bridge \
  carla_ros_bridge_with_example_ego_vehicle.launch.py \
  host:=localhost \
  port:=2000 \
  town:=Town10HD \
  timeout:=30

# 启动成功应看到:
# [carla_ros_bridge]: CARLA connected, got data:
# [carla_ros_bridge]: Publishing topics:
# [carla_ros_bridge]:   /carla/ego_vehicle/rgb_front/image
# [carla_ros_bridge]:   /carla/ego_vehicle/lidar
# [carla_ros_bridge]:   /carla/ego_vehicle/imu
# [carla_ros_bridge]:   /carla/ego_vehicle/odometry
# [carla_ros_bridge]:   ...
# ===== 终端 3: 查看 ROS2 话题和数据 =====
# 列出所有话题
ros2 topic list

# 查看相机图像的发布频率 (应约 20Hz)
ros2 topic hz /carla/ego_vehicle/rgb_front/image

# 查看IMU 数据
ros2 topic echo /carla/ego_vehicle/imu --once

# 查看车辆状态
ros2 topic echo /carla/ego_vehicle/vehicle_status --once
# ===== 终端 4: 启动 RViz2 可视化 =====
source ~/carla_ws/install/setup.bash

# 用 ros-bridge 提供的配置
rviz2 -d ~/carla_ws/src/ros-bridge/carla_ros_bridge/config/\
  carla_default.rviz

# 这时你应该看到:
# - 左上: 车辆前方 RGB 摄像头画面
# - 中心: 3D 场景, 中间显示实时激光点云, 车辆模型
# - 左下: 其他传感器(深度, 语义分割)

为者常成,行者常至