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

保姆级教程:在Ubuntu 20.04上从源码编译Carla 0.9.4(含Anaconda环境配置与UE4.21.2安装)

在Ubuntu 20.04上从源码构建Carla 0.9.4仿真环境的完整指南

自动驾驶仿真平台的搭建往往充满版本依赖的"暗礁"。本文将带你用最新Ubuntu 20.04系统,避开Python环境冲突、UE4编译陷阱等典型问题,完成Carla 0.9.4从源码到可运行环境的全流程构建。不同于网络上基于旧系统的零散教程,本指南特别针对Anaconda虚拟环境管理UE4.21.2源码编译两大痛点提供系统化解决方案。

1. 环境准备与依赖安装

1.1 系统基础配置

首先确保Ubuntu 20.04系统已更新至最新状态:

sudo apt update && sudo apt upgrade -y

安装必备的开发工具链:

sudo apt install -y \ build-essential \ clang-8 \ lld-8 \ g++-9 \ cmake \ ninja-build \ libtbb-dev \ libpng-dev \ libjpeg-dev \ libtiff-dev \ libxml2-dev \ libogg-dev \ libvorbis-dev \ libfreetype6-dev \ libzmq3-dev \ libboost-all-dev \ python3-dev \ python3-pip

关键版本调整:Ubuntu 20.04默认使用较新的编译器,但部分Carla组件需要兼容性设置:

sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-8 80 sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-8 80 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 90

1.2 Anaconda环境配置

为避免系统Python与项目需求冲突,我们使用Anaconda创建独立环境:

wget https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh bash Anaconda3-2021.05-Linux-x86_64.sh

创建专用于Carla的Python 3.7环境(比原版要求的3.5更稳定):

conda create -n carla_build python=3.7 -y conda activate carla_build pip install --upgrade pip setuptools nose2

注意:虽然Carla 0.9.4官方推荐Python 3.5,但在实际测试中3.7版本兼容性更好且能避免许多过时依赖问题

2. Unreal Engine 4.21.2源码编译

2.1 获取UE4源码

  1. 注册Epic Games账号并关联GitHub账户
  2. 接受Epic Games组织的邀请(检查注册邮箱)
  3. 克隆指定版本的UE4源码:
git clone --depth=1 -b 4.21.2-release https://github.com/EpicGames/UnrealEngine.git ~/UnrealEngine-4.21.2

2.2 编译安装UE4

进入源码目录执行编译:

cd ~/UnrealEngine-4.21.2 ./Setup.sh ./GenerateProjectFiles.sh make -j$(nproc)

常见问题解决方案:

问题现象解决方法
编译时OpenGL报错安装最新NVIDIA驱动时包含OpenGL组件
内存不足导致崩溃使用make -j4减少并行编译任务
缺少依赖项根据错误提示安装对应开发包

2.3 环境变量配置

将以下内容添加到~/.bashrc

# Unreal Engine Path export UE4_ROOT=~/UnrealEngine-4.21.2 export PATH="$UE4_ROOT/Engine/Binaries/Linux:$PATH"

验证安装:

source ~/.bashrc UE4Editor

3. Carla 0.9.4源码构建

3.1 获取Carla源码

克隆Carla仓库并切换到0.9.4版本:

git clone https://github.com/carla-simulator/carla.git ~/carla cd ~/carla git checkout 0.9.4

3.2 资源文件准备

由于官方资源下载可能受限,建议手动处理:

  1. 创建资源目录结构:
mkdir -p ~/carla/Unreal/CarlaUE4/Content/Carla
  1. 将下载的Content_0.9.4.tar.gz解压到上述目录

3.3 编译Carla

在Anaconda环境下执行完整构建流程:

conda activate carla_build make setup make LibCarla make CarlaUE4Editor

关键编译参数调整:

  • 修改Util/BuildTools/setup.sh中的Python路径指向conda环境
  • 确保BOOST_PYTHON版本与Python环境匹配

3.4 Python API构建

为Python 3.7构建接口(原版需调整):

make PythonAPI.3.7

验证Python接口:

import carla client = carla.Client('localhost', 2000) print(client.get_available_maps())

4. 运行与调试

4.1 启动Carla服务端

方式一:直接运行编辑器(适合开发调试)

make launch-only

方式二:运行打包后的独立版本

make package ./CarlaUE4.sh -quality-level=Epic

4.2 客户端连接示例

运行内置示例脚本:

cd PythonAPI/examples python manual_control.py

性能优化参数建议:

参数说明推荐值
-quality-level画质等级Low/Epic
-carla-server服务器模式无GUI更高效
-benchmark基准测试模式10.0-60.0

4.3 常见问题排查

Q:Python无法导入carla模块

  • 检查PYTHONPATH是否包含/path/to/carla/PythonAPI/carla/dist
  • 确认Python版本与编译时一致

Q:服务器连接超时

  • 确保服务端已完全启动(等待UE4编辑器加载完成)
  • 检查防火墙设置是否阻止2000端口

Q:渲染异常或崩溃

  • 更新显卡驱动至最新版本
  • 尝试添加-opengl-vulkan启动参数

在完成所有步骤后,你将获得一个完全本地的Carla仿真环境。不同于二进制版本,源码编译允许你深度定制传感器模型、物理参数等核心组件。我在实际项目中发现,通过调整CarlaSettings.ini中的参数,可以显著提高多车辆仿真的稳定性。

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

相关文章:

  • 从Focal Loss到ASL:多标签分类损失函数演进史与实战选型指南
  • 三步掌握百度网盘秒传:永久分享文件不再失效
  • 5分钟学会mPLUG视觉问答:本地图片分析工具搭建教程
  • 元机器人codebuddy开发实践,阶段二:接入沙箱 + 3D 建模模块生成智能体
  • LFM2.5-1.2B-Thinking完整教程:Ollama环境配置、模型使用与高级功能
  • 别再拍脑袋估算了!手把手教你用山东新规里的‘功能点法’算准软件开发预算
  • 如何用树状书签管理工具彻底解决浏览器书签混乱问题?
  • Vision Pro 8.4 保姆级安装教程:从下载到激活,手把手带你避开许可证过期坑
  • https://www.cnblogs.com/Un1corn/p/18615567
  • 从流体模拟到电磁场:梯度、散度、旋度在Unity/Blender中的3D可视化实战
  • SUPER COLORIZER色彩科学解析:模型如何学习并再现人类色彩认知
  • Qwen2.5-7B-Instruct商业应用:广告公司创意文案+分镜脚本生成
  • 别再死磕手册了!STM32F429以太网实战:手把手教你搞定MAC与PHY芯片选型与连接
  • 告别STM32,试试用FPGA+Verilog做超声波测距:精度与实时性的提升实战
  • C 语言转义字符算字节的完整规则
  • CC3200 Launchpad烧录避坑指南:TI Uniflash详细配置与常见错误解决
  • FUTURE POLICE在在线教育中的应用:如何为课程视频生成逐字对齐字幕
  • 别再默认轮询16台了!台达PLC-LINK高效通讯的M1355手动联机配置详解
  • 10分钟掌握Whisper-WebUI:如何免费快速完成语音转文字?
  • PMC P460-B4阵列卡在华三服务器上的RAID配置详解:从RAID1/RAID6选择到热备盘(专用 vs 自动替换)的实战对比
  • 为什么你的LangChain应用无法复现线上问题?生成式AI链路追踪的5个反直觉真相(内部审计报告首次公开)
  • Telemetry技术在现代网络运维中的高效应用
  • 告别PS!用Qwen-Image-Edit-2511实现智能抠图、局部重绘,简单3步
  • Spring AI 智能体开发实战:基于 Java 的落地方案详解
  • 别再手动催周报了!用泛微OA E9的提醒功能,5分钟搞定每周五自动邮件提醒
  • 汇川AM600系列硬件组态实战:从IO模块到伺服驱动的完整配置流程
  • B站缓存视频无法播放?m4s-converter让您的收藏永不消失
  • STEP7 V5.x保姆级教程:手把手教你完成S7-300 CPU315-2DP的硬件组态与IO地址规划
  • 幻境·流金开发者案例:接入企业微信机器人,实现群内@生成即时响应
  • 忍者像素绘卷多场景落地:教育机构像素化课件插图生成标准化流程