上期搭建好了 Carla + ROS 环境,跑通了传感器数据流。但这期才是真正让仿真"活起来"的关键——添加 NPC 车辆和行人,让场景有真实的交通流。
先回顾一下整体流程
Carla UE4(仿真服务端)
↓
Carla ROS Bridge(数据桥接)
↓
生成 NPC 车辆和行人
↓
RVIZ 中可以看到动态场景
第一步到第三步:跟第一期一样
启动容器、启动 Carla UE4、启动 ROS Bridge,这三个步骤不变,按第一期的顺序来就行。
# 终端1:启动容器
cd carla_sim
bash docker/scripts/dev_start.sh
bash docker/scripts/dev_into.sh
# 终端1内:启动 Carla UE4
cd /opt/carla_ws
bash ./CarlaUe4.sh
# 终端2:启动 ROS Bridge
cd carla_sim
bash docker/scripts/dev_into.sh
source ros_bridge_env.sh
cd /opt/carla_ws/ros_bridge_ws
source devel/setup.bash
cd /opt/carla_ws
roslaunch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle.launch
第四步:添加 NPC
新开一个终端,同样进入容器,然后执行 NPC 生成脚本:
cd /opt/carla_ws
python scripts/spawn_random_npc.py
默认会生成 10辆车 + 5个行人。
如果需要自定义数量:
# 20辆车 + 10个行人
python scripts/spawn_random_npc.py _vehicle_count:=20 _walker_count:=10
脚本执行后,Carla UE4 场景中会立刻出现 NPC 车辆和行人。车辆会自动行驶,行人目前只是静止的不会走动(后面解决这个问题),整个场景瞬间有了真实感。
这时候打开 RVIZ,可以看到激光雷达点云中出现了动态的目标点,相机图像里也能看到车辆和行人经过。
NPC 是怎么动起来的
Carla 自带的 Traffic Manager 负责控制 NPC 的行为:
| 功能 | 说明 |
|---|---|
| 自动行驶 | NPC 车辆会沿着道路行驶 |
| 跟车距离 | 自动保持与前车的安全距离 |
| 行人漫游 | 行人在人行道上随机走动 |
| 交通规则 | NPC 会等红灯、让行 |
不需要我们自己写行为逻辑,调用 Traffic Manager 的 API 就能实现。
跟第一期的区别
| 维度 | 第一期只有自车 | 第二期加了 NPC |
|---|---|---|
| 场景 | 空旷,只有一辆车 | 有交通流,像真实道路 |
| 传感器数据 | 静态背景 | 动目标,有感知价值 |
| 算法验证 | 只能做单帧检测 | 可以做跟踪、预测 |
有了 NPC 之后,你的目标检测、障碍物跟踪算法才有了用武之地。
演示视频
往期回顾
如果本文对你有帮助,欢迎点赞、收藏。 遇到问题可以评论区留言交流,也欢迎转发给需要的朋友。