基于Docker安装
系统环境:ubuntu18.04,nvidia-470,cuda-11.1
1.拉取镜像
docker pull carlasim/carla:latest
2.运行镜像
主要有2种方式:
# 代显示运行
docker run --privileged --gpus all --net=host -e DISPLAY=$DISPLAY carlasim/carla:latest /bin/bash ./CarlaUE4.sh
# 不显示运行
docker run --privileged --gpus all --net=host -v /tmp/.X11-unix:/tmp/.X11-unix:rw carlasim/carla:latest /bin/bash ./CarlaUE4.sh -RenderOffScreen
# 用vulkan显示运行
docker run --privileged --gpus all --net=host -e DISPLAY=$DISPLAY -e SDL_VIDEODRIVER=x11 -v /tmp/.X11-unix:/tmp/.X11-unix:rw carlasim/carla:latest /bin/bash ./CarlaUE4.sh -vulkan
#用opengl显示运行(已经被vulkan替代)
docker run -e DISPLAY=$DISPLAY --net=host --gpus all --runtime=nvidia carlasim/carla:latest /bin/bash CarlaUE4.sh -opengl
docker run --privileged --gpus all --net=host -e DISPLAY=$DISPLAY -e SDL_VIDEODRIVER=x11 -v /tmp/.X11-unix:/tmp/.X11-unix:rw carlasim/carla:latest /bin/bash
如果要和ros进行仿真最好采用第2种方式。
3.进入镜像
新开个终端通过下面方式进入
docker exec -it -u $USER 容器名 /bin/bash
4.设置环境变量
进入docker后需要设置环境变量,为了和ros1进行仿真,这里设置的python2.7的。如果不进行ros仿真可以设置python3,具体是那个版本可以自行到PythonAPI/carla/dist目录查看。
export PYTHONPATH=$PYTHONPATH:xxxxxx/xxx/xxx/xxxx/PythonAPI/carla/dist/carla-0.9.13-py2.7-linux-x86_64.egg
1.在镜像中安装ros
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` 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
sudo apt install ros-melodic-desktop-full
2.ros-bridge的安装
有2中方式:
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 # Update the Debian package index
sudo apt-get install carla-ros-bridge # Install the latest ROS bridge version, or update the current installation
OR
安装指定版本
apt-cache madison carla-ros-bridge # List the available versions of the ROS bridge
sudo apt-get install carla-ros-bridge=0.9.10-1 # In this case, "0.9.10" refers to the ROS bridge version, and "1" to the Debian revision
该方式安装的在仿真的时候虚拟环境是黑天的,通过手动设置天气也没有反映,乌曲码黑的。
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
# source ros的环境
source /opt/ros//setup.bash
# 安装ros依赖
cd catkin_ws
rosdep update
rosdep install --from-paths src --ignore-src -r
# 编译
catkin_make
在docker镜像中运行,2种方式。
./CarlaUE4.sh -vulkan #启动服务端显示运行
./CarlaUE4.sh -RenderOffScreen #启动服务端不显示运行(推荐,减少资源消耗)
roslaunch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle.launch
上图为启动成功后的界面,现在就可以通过键盘WSAD控制车辆在地图中驾驶了。
ros主要是通过rviz可视化工具来查看不同数据的。
rosrun rviz rviz
rostopic list #查看所有输出的topic信息
1.传感器配置
车辆传感器参数的可以根据自己的情况设置参数,具体的修改文件如下:
carla-ros-bridge/carla_spawn_objects/config/objects.json
2.地图修改
通过修改launch文件配置:carla_ros_bridge_with_example_ego_vehicle.launch
name="town" default="Town3"
# Town1/2基本是平路
# Town3存在上坡和下坡道路,还有隧道
# Town4比较平道路
这里做了一个小项目,就是基于仿真环境的lidar进行地面点的分割。
下面是一段效果视频:
Carla+ROS1联合仿真环境下基于Lidar的地面分割