2023.7.17 更新了安装环境与部分细节
Carla 0.9.13 与ROS bridge安装记录
安装环境:
Ubuntu 20.04
CPU: i5-13490F
GPU: RTX 4070
内存:32GB DDR5
ROS:Noetic
python: 3.7
建议挂着VPN
前期准备
Carla
确保你能够正常运行carla并且不报错,我使用0.9.14时,被一个程序崩溃折磨了很久,没有找到有效的解决方法
但是换回0.9.13之后,暂时没有遇到过这个报错
4.26.2-0+++UE4+Release-4.26 522 0
Disabling core dumps.
Signal 11 caught.
Malloc Size=65538 LargeMemoryPoolOffset=65554
CommonUnixCrashHandler: Signal=11
Malloc Size=131160 LargeMemoryPoolOffset=196744
Malloc Size=131160 LargeMemoryPoolOffset=327928
Engine crash handling finished; re-raising signal 11 for the default handler. Good bye.
Segmentation fault (core dumped)
(55条消息) 【仿真】CARLA可能遇到的相关问题总结_Kin__Zhang的博客-CSDN博客
自动驾驶开发与Carla模拟器 4:Carla ROS Bridge_哔哩哔哩_bilibili
关于Conda虚拟环境
不知道为什么,我处于conda虚拟环境的时候,加载不出来任何在安装ros的时候已经安装的python依赖,所以如果有在命令行窗口中启动了conda 虚拟环境的,建议先 conda deactivate 回到原来安装ros时的默认环境,否则使用ros bridge时会出现大量的依赖包丢失的情况
去github下载ros bridge
这里采用源码编译的方式,这样子比较容易修改代码和查找错误
mkdir -p ~/carla-ros-bridge/catkin_ws/src
cd ~/carla-ros-bridge
git clone --recurse-submodules https://github.com/carla-simulator/ros-bridge.git catkin_ws/src/ros-bridge
注意,使用git clone必须有--recurse-submodules的参数,如果不使用git clone,直接下载的压缩包会发现carla_msgs文件夹中没有文件,需要下载完ros bridge之后必须去github中单独把carla_msg下载下来
![](https://img-blog.csdnimg.cn/img_convert/8561b310f2f6a70b09475d7971efd2ea.png)
下载完之后,参考官方的教程或者按照你的喜好进行编译
source /opt/ros/melodic/setup.bash
cd catkin_ws
rosdep update
rosdep install --from-paths src --ignore-src -r
catkin_make # alternatively catkin_make
按照requirements.txt安装相关依赖,这个文件在你git clone或者下载的
![](https://img-blog.csdnimg.cn/img_convert/c7e5a2f993a2744c99a36fbfd79c82e9.png)
文件夹里面
![](https://img-blog.csdnimg.cn/img_convert/ca027162a413c03bd058ee1a9258e0ec.png)
cd xxx/ros-bridge-master
pip install -r requirements.txt # 确保你当前的python是 3.7
可能的报错:(only in python2.7)
xxxxx...
Collecting transform3d
xxxxx
File "versioneer.py", line 370
LONG_VERSION_PY: Dict[str, str] = {}
SyntaxError: invalid syntax
解决方法:装低版本的transform3d:
sudo -H pip2 install -U transform3d==0.3.1
另外,建议单独更新一下networkx,以避免后面的报错
pip install networkx
编译完成之后
在**~/.bashrc**或你的命令行窗口的相关启动文件中,加入:
export CARLA_ROOT=<path-to-carla> # 你的carla路径
export PYTHONPATH=$PYTHONPATH:$CARLA_ROOT/PythonAPI/carla/dist/carla-<carla_version_and_arch>.egg:$CARLA_ROOT/PythonAPI/carla
因为我们用的是carla-0.9.13以及python 3.7,所以<carla_version_and_arch> = 0.9.13-py3.7-linux-x86_64
然后,source一下你存放carla-ros-bridge的工作空间的devel/setup.bash
# For GitHub repository installation of ROS bridge
source ~/carla-ros-bridge/catkin_ws/devel/setup.bash
先启动一下Carla:cd 到你的Carla路径
./CarlaUE4.sh
尝试运行ros bridge,下面选一个运行即可,两个都运行的话会有节点冲突而报错:
# Option 1: start the ros bridge
roslaunch carla_ros_bridge carla_ros_bridge.launch
# Option 2: start the ros bridge together with an example ego vehicle
roslaunch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle.launch
如果能够正常运行且不报错,则基本上安装没什么问题
如果有报错Module not found: agent.xxx的,或者ImportError: no module named CARLA的,都是egg文件路径没有加入命令行的启动文件中,找不到相应的路径,或者你没有关闭conda虚拟环境,还有直接使用apt安装的也可能会出现这种问题,我改成使用源码安装就解决了
然后,来测试一下ad_demo
source ~/carla-ros-bridge/catkin_ws/devel/setup.bash
roslaunch carla_ad_demo carla_ad_demo.launch
正常情况下,会切换地图然后弹出一个manual control的窗口,并且车子直接进行自动驾驶
![](https://img-blog.csdnimg.cn/img_convert/3a0ceb4474ee700a648418ee9d46be79.png)
如果命令行一直提示waiting for route,最可能的原因是networkx版本太旧了,没有更新版本,导致无法加载一些东西,导致路径规划无法生效
解决方法:
sudo apt remove python-networkx
pip install --user networkx
然后试着打开rviz看看情况
rviz -d src/carla-ros-bridge/carla_ad_demo/config/carla_ad_demo.rviz
一切正常的话,会出现以下界面,并且车辆进行自动驾驶
![](https://img-blog.csdnimg.cn/img_convert/0e5c1d20438ddc138336bd73214d14c5.png)