当前位置: 首页 > news >正文

Ubuntu 20.04 部署 CARLA 9.14 与 ROS 桥接实战:从环境配置到联合仿真

1. 环境准备与基础配置

在Ubuntu 20.04上部署CARLA 9.14需要特别注意Python版本和系统依赖的兼容性。实测发现Python 3.7是最稳定的选择,这里推荐使用Anaconda进行环境管理。我遇到过直接使用系统Python导致库冲突的问题,用虚拟环境能完美避开这些坑。

首先从清华镜像站下载Anaconda最新版,速度比官网快很多。安装完成后立即创建专用环境:

conda create -n carla_py37 python=3.7 conda activate carla_py37

CARLA本体建议从南方科技大学镜像站获取预编译版本,下载时注意要同时获取AdditionalMaps地图包。有次我忘了下地图包,结果仿真场景只有空荡荡的马路,排查了半天才发现问题。

系统级依赖安装这些就够了:

sudo apt-get install -y libgeographic-dev python3-pip pip install --upgrade pip

2. CARLA核心安装与验证

解压下载的CARLA包后,需要将地图包内容复制到Import目录,然后执行导入脚本:

cp AdditionalMaps_0.9.14.tar.gz /opt/carla-simulator/Import/ cd /opt/carla-simulator/Import/ ./ImportAssets.sh

测试运行建议先用低画质模式,能显著降低GPU负载:

./CarlaUE4.sh -prefernvidia -quality-level=Low -RenderOffScreen

这时候打开另一个终端,可以运行PythonAPI示例测试基础功能。记得先安装示例依赖:

cd PythonAPI/examples pip install -r requirements.txt python3 manual_control.py

如果看到车辆模型能正常渲染且可以通过键盘控制,说明基础环境已经OK。我遇到过OpenGL版本不兼容导致的黑屏问题,更新NVIDIA驱动后解决。

3. ROS桥接深度配置

ROS桥接是联合仿真的关键,需要特别注意版本匹配。实测CARLA 9.14对应melodic/noetic都可以,但Python版本必须统一。建议在conda环境外单独创建ROS工作空间:

mkdir -p ~/carla_ros_ws/src cd ~/carla_ros_ws catkin_make

克隆官方ros-bridge源码后,修改CARLA_VERSION文件确保版本号正确。这个细节坑过我两次,版本不匹配会导致奇怪的段错误:

echo "0.9.14" > src/ros-bridge/carla_ros_bridge/src/carla_ros_bridge/CARLA_VERSION

编译前必须安装这些ROS依赖:

sudo apt install ros-noetic-ackermann-msgs ros-noetic-derived-object-msgs pip install transforms3d pyyaml opencv-python

4. 联合仿真实战技巧

启动顺序非常关键,正确的流程应该是:

  1. 先启动CARLA服务端
  2. 再启动ROS bridge
  3. 最后加载控制节点
# 终端1 ./CarlaUE4.sh -carla-rpc-port=2000 # 终端2 roslaunch carla_ros_bridge carla_ros_bridge.launch # 终端3 roslaunch carla_spawn_objects carla_spawn_objects.launch

调试时建议关注这几个关键topic:

  • /carla/ego_vehicle/vehicle_status查看车辆状态
  • /carla/ego_vehicle/lidar检查传感器数据
  • /tf确认坐标系关系

遇到过bridge连接超时的问题,后来发现是防火墙阻止了端口2000。如果遇到类似情况,可以先用telnet localhost 2000测试端口连通性。

5. 性能优化与常见问题

在笔记本上运行时,这些参数能提升流畅度:

./CarlaUE4.sh -quality-level=Low -benchmark -fps=20

内存泄漏是个常见问题,建议每2小时重启一次服务。可以通过htop观察内存占用情况,超过80%就需要警惕了。

这些错误我踩过坑:

  1. libp11-kit.so.0: undefined symbol→ 重新安装openssl
  2. Unable to find UE4 game→ 检查CARLA安装路径
  3. Sensor data timeout→ 调整fixed_delta_seconds参数

对于自动驾驶算法开发,建议先用carla_manual_control测试基础功能,再逐步接入自己的算法模块。记得在launch文件中设置synchronous_mode为True以保证数据同步。

http://www.jsqmd.com/news/492623/

相关文章:

  • 云容笔谈效果展示:不同光影设定(晨光/烛光/月色)下的红颜情绪表达
  • AltiumDesigner AI实战:高效PCB设计全流程
  • 使用Qwen3-ASR-1.7B开发语音控制机器人系统
  • Python虚拟环境实战:如何在不同conda环境中共享CUDA的libcupti.so.12文件
  • AD2S1210与DSP28335 SPI通信全为1?硬件排查实战记录
  • Java服务器开发:零基础实战指南
  • 从VCF到admixture分析:手把手教你用conda和plink搞定群体结构分析
  • 【秣厉科技】LabVIEW工具包——HIKRobot(海康机器人系列)
  • DeepChat入门实战:用DeepChat+Llama3:8b完成一份完整的产品需求文档生成
  • Pandas数据清洗避坑指南:从NA值处理到标准化实战
  • RedisInsight保姆级教程:从安装到实战操作String/Hash/JSON数据类型
  • DeepChat数据库课程设计:智能问答系统开发全流程
  • STC AiCube-ISP V6.96A实战:5分钟搞定互补SPWM波形生成(含DMA配置避坑指南)
  • Vue.js安装指南:快速搭建开发环境
  • TensorFlow-v2.9镜像部署全解析:从安装到实战一步到位
  • Qwen3-14B多场景落地:制造业用其解析设备故障日志并生成维修建议
  • 深入浅出:OSIP协议栈在嵌入式系统中的应用与优化技巧
  • 构建高可用语音识别服务:SenseVoice-Small的负载均衡与容灾设计
  • Phi-3-vision-128k-instruct部署教程:国产昇腾910B平台ACL适配与性能调优
  • YOLOv8实战:如何选择最适合你的模型(从nano到x全解析)
  • Qwen3字幕系统实战:清音刻墨镜像预置中文标点智能断句规则库
  • Z-Image-Turbo孙珍妮LoRA模型应用案例:高校新媒体中心AI宣传图批量生成流程
  • Qwen3-ASR-0.6B语音识别实战:Python爬虫音频数据自动转写
  • HPM6750EVK2开发板入门实战:从工程创建到串口打印Hello World的完整流程解析
  • 动态开点线段树实战:如何用C++解决CF915E这类超大数据范围问题
  • 避坑指南:用mpl_toolkits.basemap绘制地图时你可能遇到的3个编码问题
  • 546456546
  • AVPro Video在Unity中的避坑指南:解决视频播放常见问题
  • 蓝牙条码枪在uniapp中的两种连接方式对比:HID模式 vs BLE模式
  • DeOldify镜像免配置VS手动部署:时间成本对比(5分钟vs3小时)实测