(略微更新以下本文)
目前carla-autoware bridge官方已经更新,这里是上一版本的安装过程,旧版本网站:
carla-simulator/carla-autowaregithub.com

本文总结了CARLA与autoware和ROS的联合仿真的安装过程和一些问题。主要参考了以下链接: 1. Autoware-Carla Bridge的官方链接为:
https://github.com/carla-simulator/carla-autowaregithub.com
2. Carla-ROS Bridge的官方链接为:
https://github.com/carla-simulator/ros-bridgegithub.com
和
https://carla.readthedocs.io/en/latest/ros_installation/carla.readthedocs.io
1. 安装Carla-Autoware-Bridge
预先安装的软件
- Carla 0.9.7 (官方链接用的是0.9.6版本) 第一个疑问解决 :官方的ROS-bridge其实是不支持0.9.6及以下的CARLA版本的,我安装之后看了下autoware-carla里面ros-bridge的
文件,发现这里用的ROS-bridge其实是支持CARLA 0.9.4版本及其以上,所以 autoware-carla已经包含了ros-bridge, 也就是不需要额外再安装ROS-bridge了。readme.md
- Autoware 1.12.0 (安装详情可以见我的这篇博客)
Carla-Autoware-Bridge安装过程
其实Carla-Autoware-Bridge本质上算是一个ROS Package,整个包的大小大约在
1.6GB
左右。其安装过程按照官方链接中的指令做基本就可以。
但是遇到的问题就是下载太慢,git clone中有子文件夹。1. Ubuntu下安装
git lfs
(直接跟着官方链接走就可以)
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
git lfs install
- 下载Carla-Autoware-Bridge文件包
cd ~
git lfs clone https://github.com/carla-simulator/carla-autoware.git
cd carla-autoware
git submodule update --init
疑问解决: 这一步需要花费很多时间,请保持耐心 。这里要用
git submodule update --init
是因为当用
git clone 网址
下载时,文件包中的子文件夹不会被下载。
git submodule update --init
的作用就是自动下载子文件夹。(后续ROS-Bridge也有相同的问题)
创建catkin工作空间、安装相关依赖并编译#初始化工作空间
cd catkin_ws
source ~/autoware.ai/install/setup.bash
catkin_init_workspace src/
#安装依赖
rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
#编译工作空间
catkin_make
其中
source ~/autoware.ai/install/setup.bash
的作用和在autoware的运行中一样,都是把autoware中的子节点加入到环境变量中。后续的
catkin_init_workspace src/
是常规的ROS中初始化工作空间的指令。
如果
rosdep update出现网络连接问题,可以参考我的这篇博客
运行Carla-Autoware-Bridge
- 启动Carla服务器
cd <path-to-Carla_0.9.7.4>
./CarlaUE4.sh -opengl
(最好把这些指令存到
~
目录下的shell脚本中,方便启动) 2. 启动Carla-Autoware-Bridge
export CARLA_AUTOWARE_ROOT=~/carla-autoware/autoware_launch
export CARLA_MAPS_PATH=~/carla-autoware/autoware_data/maps
source $CARLA_AUTOWARE_ROOT/../catkin_ws/devel/setup.bash
export PYTHONPATH=$PYTHONPATH:~/CARLA_0.9.7.4/PythonAPI/carla/dist/carla-0.9.7-py2.7-linux-x86_64.egg
roslaunch $CARLA_AUTOWARE_ROOT/devel.launch
这里的
export CARLA_MAPS_PATH=~/carla-autoware/autoware_data/maps
的作用是把相关的pcd点云文件加入到环境变量中,不添加的会可能rivz中不显示激光雷达地图。如果不添加
carla-0.9.7-py2.7-linux-x86_64.egg
到环境变量中会出现导入carla库失败
ImportError: no module named CARLA的情况。
以下代码用来检查carla环境变量是否配置成功:
python -c 'import carla;print("Success")'
输入以上指令之后会出现一个pygame的窗口显示运行结果,等上一段时间车辆会开始缓慢行驶。也可以手动控制车辆,==
按下B键即可切换。==
(如果车辆没有自动行驶,说明devel.launch
启动中出现错误,建议根据终端显示的报错信息进行调试。) 这里
我遇到的坑是
缺少几个python模块:分别是
networkx
和
simple_pid
出现的报错如下:
File "<path-to-user>/carla-autoware/catkin_ws/src/ros-bridge/carla_waypoint_publisher/src/carla_waypoint_publisher/carla_waypoint_publisher.py", line 30, in <module>
from agents.navigation.global_route_planner import GlobalRoutePlanner
File "<path-to-user>/CARLA_0.9.7.4/PythonAPI/carla/agents/navigation/global_route_planner.py", line 11, in <module>
import networkx as nx
ImportError: No module named networkx
[carla_waypoint_publisher-7] process has died [pid 11565, exit code 1, cmd /home/guo/carla-autoware/catkin_ws/src/ros-bridge/carla_waypoint_publisher/src/carla_waypoint_publisher/carla_waypoint_publisher.py __name:=carla_waypoint_publisher __log:=/home/guo/.ros/log/3f7c326a-a0b1-11ea-abbb-e0d55ea64ade/carla_waypoint_publisher-7.log].
log file: /home/guo/.ros/log/3f7c326a-a0b1-11ea-abbb-e0d55ea64ade/carla_waypoint_publisher-7*.log
用以下指令安装确实的包:
pip install networkx
pip install simple_pid
安装simple_pid后建议检测一下终端是否会出现警告,如下
python
from simple_pid import PID
出现以下情况
<path-to-user>/.local/lib/python2.7/site-packages/simple_pid/PID.py:22UserWarning: time.monotonic() not available in python < 3.3, using time.time() as fallback warnings.warn('time.monotonic() not available in python < 3.3, using time.time() as fallback')
之后打开目录对应的文件,将
time.monotonic
改为
time.time
即可
- 启动Rviz ROS中的RVIZ能够帮助可视化carla城市中的激光点图。 (这里不需要用autoware中的rviz)
rosrun rviz rviz
当然,也可以通过autoware的
runtime manager
打开rviz显示。
启动之后效果图如下:(Carla-Autoware-Bridge中已经包含各个城市的激光点云数据)
动图如下:
2. 源码安装ROS-Bridge
踩坑:第一次安装尝试了apt安装Carla-ROS-Bridge,运行时报错。为节省时间,我直接按照官网要求进行源码安装(开发者),我觉得apt安装和源码安装bridge出现报错的原因是一样的,因为用源码安装,在
git clone
过程中文件夹
ros-bridge
中的
carla_msgs
为空,对应ros-bridge的github网址中高亮的文件:
下载的工程带有submodule,可以用
git submodule update --init
进行子文件夹下载。(我是直接从github下载的,没有用该指令,不能保证其有效性。)
预先安装的软件
- ROS Kinetic
- Carla 0.9.7.4
ROS-Bridge的源码安装过程
这里的源码安装过程就直接搬运官网指令了,基本不会出现什么问题。
mkdir -p ~/carla-ros-bridge/catkin_ws/src
cd ~/carla-ros-bridge
git clone https://github.com/carla-simulator/ros-bridge.git
cd catkin_ws/src
ln -s ../../ros-bridge
source /opt/ros/kinetic/setup.bash #Watch out, this sets ROS Kinetic.
cd ..
#install required ros-dependencies
rosdep update
rosdep install --from-paths src --ignore-src -r
#build
catkin_make
运行过程
- 配置相关环境变量(最好只对当前终端使用)
source ~/carla-ros-bridge/catkin_ws/devel/setup.bash
- 启动carla 0.9.7.4
**# Option 1: start the ros bridge
roslaunch carla_ros_bridge carla_ros_bridge.launch
# Option 2: start the ros bridge together with RVIZ
roslaunch carla_ros_bridge carla_ros_bridge_with_rviz.launch
# Option 3: start the ros bridge together with an example ego vehicle
roslaunch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle.launch**