Carla Autoware及Carla ROS安装过程

文章目录

  • 1. 安装Carla-Autoware-Bridge
    • 预先安装的软件
    • Carla-Autoware-Bridge安装过程
    • 运行Carla-Autoware-Bridge
  • 2. 源码安装ROS-Bridge
    • 预先安装的软件
    • ROS-Bridge的源码安装过程
    • 运行过程

本文总结了CARLA与autoware和ROS的联合仿真的安装过程和一些问题。主要参考了以下链接:

  1. Autoware-Carla Bridge的官方链接为:https://github.com/carla-simulator/carla-autoware
  2. Carla-ROS Bridge的官方链接为:https://github.com/carla-simulator/ros-bridge和https://carla.readthedocs.io/en/latest/ros_installation/

1. 安装Carla-Autoware-Bridge

预先安装的软件

  1. Carla 0.9.7(官方链接用的是0.9.6版本)
    第一个疑问解决:官方的ROS-bridge其实是不支持0.9.6及以下的CARLA版本的,我安装之后看了下autoware-carla里面ros-bridge的readme.md文件,发现这里用的ROS-bridge其实是支持CARLA 0.9.4版本及其以上,所以autoware-carla已经包含了ros-bridge, 也就是不需要额外再安装ROS-bridge了。
  2. 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
  1. 下载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出现网络连接问题,可以参考我的这篇博客

  • rosdep update的下一步rosdep install过程中有可能出现缺少一些依赖包,我这里后续又遇到了缺少libpcl-dev的情况,这时用以下指令即可安装成功。(用之前把software中的设置里的选项全勾选上)

sudo aptitude install libpcl-dev #或者是sudo aptitude install 
  • 如果使用的包是从其他电脑传过来的,很可能遇到catkin_make编译失败的问题,参考以下链接,https://stackoverflow.com/questions/35784700/cmake-error-when-building-opencv-cmakelists-not-match?r=SearchResults
    将build文件包删除重新编译即可

CMake generates a cache in the build dir (It’s a simple file named
CMakeCache.txt). This file contains some information like:

The path to the sources /path/to/opencv
The path to the build dir
/path/to/opencv/build
The CMake Generator used (Ninja, Unix Makefiles…)
If you ever re-run CMake and change one of these values, (by re-running cmake with different arguments, setting an other generotor or moving files), CMake will complain with this kind of message.

A good solution is then to delete the CMakeCache, or even the whole build dir to be safe.

运行Carla-Autoware-Bridge

  1. 启动Carla服务器
cd -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到环境变量中(建议加到~/.bashrc中),会出现导入carla库失败ImportError: no module named CARLA的情况。

以下代码用来检查carla环境变量是否配置成功:

python -c 'import carla;print("Success")'

该指令也有可能造成缺少库文件的情况:

sudo apt-get install libpng16-16

输入以上指令之后会出现一个pygame的窗口显示运行结果,等上一段时间车辆会开始缓慢行驶。也可以手动控制车辆,按下B键即可切换。(如果车辆没有自动行驶,说明devel.launch启动中出现错误,建议根据终端显示的报错信息进行调试。)

这里我遇到的坑缺少几个python模块:分别是networkxsimple_pid

出现的报错如下:

  File "/home/guo/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 "/home/guo/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

出现以下情况/.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即可

  1. 启动Rviz
    ROS中的RVIZ能够帮助可视化carla城市中的激光点图。(这里不需要用autoware中的rviz)
rosrun rviz rviz

当然,也可以通过autoware的runtime manager打开rviz显示。

启动之后效果图如下:(Carla-Autoware-Bridge中已经包含各个城市的激光点云数据)
Carla Autoware及Carla ROS安装过程_第1张图片
Carla Autoware及Carla ROS安装过程_第2张图片
动图如下:

2. 源码安装ROS-Bridge

踩坑:第一次安装尝试了apt安装Carla-ROS-Bridge,运行时报错。为节省时间,我直接按照官网要求进行源码安装(开发者),我觉得apt安装和源码安装bridge出现报错的原因是一样的,因为用源码安装,在git clone过程中文件夹ros-bridge中的carla_msgs为空,对应ros-bridge的github网址中高亮的文件:
Carla Autoware及Carla ROS安装过程_第3张图片下载的工程带有submodule,可以用git submodule update --init进行子文件夹下载。(我是直接从github下载的,没有用该指令,不能保证其有效性。)

预先安装的软件

  1. ROS Kinetic
  2. 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

运行过程

  1. 配置相关环境变量(最好只对当前终端使用)
source ~/carla-ros-bridge/catkin_ws/devel/setup.bash
  1. 启动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**

你可能感兴趣的:(ubuntu与ros,ubuntu)