目录
- 1 什么是Carla?
- 2 Carla预编译版安装
- 2.1 独立显卡配置
- 2.2 安装ROS
- 2.3 启动虚拟环境
- 2.4 安装Carla预编译版
- 2.5 安装carla-ros-bridge
- 3 测试案例
- 常见问题
1 什么是Carla?
Carla
是由西班牙巴塞罗那自治大学计算机视觉中心指导开发的开源仿真模拟器,旨在帮助开发者设计、训练和评估自动驾驶系统,其特点是
- 高度可定制的城市环境: Carla提供了一个开放且可定制的城市环境,包括道路、车辆、行人、交通信号灯等元素,可以根据需要进行调整和修改;
- 真实感的仿真环境: Carla致力于提供高度真实的仿真环境,使开发者能够在虚拟世界中测试各种自动驾驶算法和系统,以及评估它们在真实世界中的表现;
- 开放的API和工具: Carla提供了丰富的API和工具,使开发者能够轻松地与仿真环境交互,并自定义和扩展平台以满足其特定需求;
- 多种传感器模拟: Carla支持模拟各种传感器,包括摄像头、激光雷达、毫米波雷达等,使开发者能够测试不同传感器组合的性能;
- 支持多种平台: Carla可在Windows、Linux和macOS等多个平台上运行,为开发者提供了灵活的选择;
- 活跃的社区支持: Carla拥有一个活跃的开发者社区,提供文档、教程和技术支持,帮助开发者更好地利用该平台进行自动驾驶研究和开发。
Carla
和ROS
都是开源的软件平台,具有高度的可定制性和灵活性。通过将两者结合使用,开发者可以根据自己的需求定制和扩展仿真环境和功能,从而更好地满足自动驾驶系统开发的需求。例如,通过Carla
和ROS
的联合使用,开发者可以在仿真环境中模拟各种传感器,并使用ROS
进行数据采集、处理和分析,从而加速自动驾驶系统的开发和优化。
2 Carla预编译版安装
本文系统环境:
- Carla 0.9.12
- Ubuntu 20.04
- Python 3.7
2.1 独立显卡配置
本文只介绍图形化安装方案,更多安装方式请看ROS从入门到精通0-2:Win10+Ubuntu双系统安装、配置、卸载保姆级图文教程
- 搜索
Additional Drivers
- 直接选择驱动,点击
Apply Changes
安装即可。
- 重启设备后输入
nvidia-smi
出现以下界面则安装成功
2.2 安装ROS
本文只介绍ROS1的最基本安装过程,更详细的安装、卸载教程请看ROS从入门到精通0-3:ROS简介、安装与常见问题,ROS2的环境配置请看ROS2从入门到精通0-2:ROS2简介、对比ROS1与详细安装流程
- 设置软件源
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
- 设置秘钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
- 更新软件源
sudo apt update
- 安装ROS(推荐安装桌面完整版安装——包含
ROS
、rqt
、rviz
、2D/3D仿真器等)# kinetic sudo apt install ros-kinetic-desktop-full # noetic sudo apt install ros-noetic-desktop-full # melodic sudo apt install ros-melodic-desktop-full
- ROS环境变量配置
# kinetic echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc # noetic echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc # melodic echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
2.3 启动虚拟环境
新建名为carla
的虚拟环境
conda create -n carla python=3.7
并启动
conda activate carla
接下来的所有操作都在虚拟环境中进行。对虚拟环境不熟悉的请看Anaconda安装与Python虚拟环境配置保姆级图文教程(附速查字典)
2.4 安装Carla预编译版
进入Carla官网
下载需要的Carla
版本到本地
安装Carla
的Python
接口
cd ./PythonAPI/carla/dist
pip install carla-0.9.12-cp37-cp37m-manylinux_2_27_x86_64.whl
配置环境变量
sudo vim ~/.bashrc
增加Carla
相关配置
# Carla
export CARLA_ROOT=/home/winter/AutoDriving/carla
export PYTHONPATH=$PYTHONPATH:$CARLA_ROOT/PythonAPI/carla/dist/carla-0.9.12-py3.7-linux-x86_64.egg:$CARLA_ROOT/PythonAPI/carla
接着启动Carla
即可,遇到问题请看常见问题
小节
./CarlaUE4.sh
2.5 安装carla-ros-bridge
首先提供apt
安装方式
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1AF1527DE64CB8D9
sudo add-apt-repository "deb [arch=amd64] http://dist.carla.org/carla $(lsb_release -sc) main"
sudo apt-get update
sudo apt-get install carla-ros-bridge
但这个方式容易被墙,目前没找到好的解决方案
Err:13 http://dist.carla.org/carla focal InRelease
Could not connect to dist.carla.org:80 (34.227.255.250), connection timed out
Reading package lists... Done
W: Failed to fetch http://dist.carla.org/carla/dists/focal/InRelease Could not connect to dist.carla.org:80 (34.227.255.250), connection timed out
W: Some index files failed to download. They have been ignored, or old ones used instead.
所以本文采用源码编译
- 创建ROS工作空间
mkdir -p ~/carla-ros-bridge/catkin_ws/src
- 下载
carla-ros-bridge
源码cd ~/carla-ros-bridge git clone --recurse-submodules https://github.com/carla-simulator/ros-bridge.git catkin_ws/src/ros-bridge
- 安装依赖
cd catkin_ws rosdep update rosdep install --from-paths src --ignore-src -r
- 编译
catkin_make
- 安装pyton依赖
cd src/ros-bridge/ pip install -r requirements.txt
- 设置环境变量
添加sudo vim ~/.bashrc
# Carla-ros bridge source ~/AutoDriving/carla-ros-bridge/catkin_ws/devel/setup.bash
3 测试案例
- 终端1:启动
Carla
./CarlaUE4.sh -prefernvidia
- 终端2:启动
carla_ros_bridge
测试用例
其中的参数含义如下roslaunch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle.launch town:='town01'
use_sim_time
: 应将此设置为True
,以确保ROS
使用仿真时间而不是系统时间。此参数将使ROS
的/clock
话题与CARLA
仿真时间同步。host
与port
: 使用Python
客户端连接到CARLA
的网络设置。timeout
: 等待成功连接服务器的时间- passive: 被动模式用于同步。当启用时,
ROS
桥将暂时处于后台,等待所有传感器的所有预期数据都被接收。 synchronous_mode
: 如果为false
,则数据在每次world.on_tick()
和每次sensor.listen()
回调时发布。如果为true
(默认值),则ROS
桥在下一次tick
之前等待所有预期的传感器消息。这可能会减慢整体仿真速度,但可以确保可重现的结果。fixed_delta_seconds
: 仿真步骤之间的仿真时间(增量秒)。它必须小于0.1ego_vehicle
: 角色名称用于识别自我车辆。相关话题将被创建以便可以从ROS
对这些车辆进行控制。town
: 可以使用可用的CARLA
城镇(例如,town01
)或一个OpenDRIVE
文件(以.xodr
结尾)register_all_sensors
: 如果为false
,则仅注册由桥梁生成的传感器;如果为true
,则注册仿真中存在的所有传感器。
按B
后可以控制车跑起来
-
终端3:
Rviz
可视化对
Rviz
不熟悉的可以看ROS从入门到精通2-1:机器人3D可视化工具——Rviz。运行rosrun rqt_graph rqt_graph
可以看到如下所示的话题网络,说明
Carla
传感器数据通信正常
打开Rviz
订阅相关话题可以看到
至此,Carla
预编译版安装与ROS
联合仿真的基本流程结束
常见问题
-
运行
./CarlaUE4.sh
后报错MESA-INTEL: warning: Performance support disabled, consider sysctl dev.i915.perf_stream_paranoid=0 X Error of failed request: BadDrawable (invalid Pixmap or Window parameter) Major opcode of failed request: 149 () Minor opcode of failed request: 4 Resource id in failed request: 0x340003b Serial number of failed request: 298 Current serial number in output stream: 308 terminating with uncaught exception of type std::__1::system_error: mutex lock failed: Invalid argument Signal 6 caught. Segmentation fault (core dumped)
解决方案:这实际上是两个问题,首先
sudo sysctl dev.i915.perf_stream_paranoid=0
接着采用
./CarlaUE4.sh -prefernvidia
运行
Carla
即可 -
ImportError: No module named transforms3d.euler
解决方案:在虚拟环境中
pip install transforms3d
-
CARLA python module version 0.9.13 required. Found: 0.9.12
解决方案:修改
carla-ros-bridge
中默认的Carla
版本。在carla-ros-bridge/catkin_ws/src/ros-bridge/carla_ros_bridge/src/carla_ros_bridge/CARLA_VERSION
中修正为0.9.12
即可 -
连接超时:
RuntimeError: time-out of 2000ms while waiting for the simulator, make sure the simulator is ready and connected to localhost:2000
解决方案:修改
carla-ros-bridge/catkin_ws/src/ros-bridge/carla_ros_bridge/launch/carla_ros_bridge.launch
中的<!--arg name='timeout' default='2'/>等待接收仿真器的时间 单位 s--> <arg name='timeout' default='200'/>
🔥 更多精彩专栏:
- 《ROS从入门到精通》
- 《Pytorch深度学习实战》
- 《机器学习强基计划》
- 《运动规划实战精讲》
- …