[carla入门教程]-5 使用ROS与carla通信

article/2025/9/30 6:10:41

本专栏教程将记录从安装carla到调用carla的pythonAPI进行车辆操控并采集数据的全流程,带领大家从安装carla开始,到最终能够熟练使用carla仿真环境进行传感器数据采集和车辆控制.

第五节 使用ros与carla通信

本小节的主要内容是介绍carla中的如何使用ros进行通信.

  • 章节内容介绍:

第1,2小节介绍了ROS和carla_ros_bridge的安装.
第3小节介绍了如何设置carla_ros_bridge运行参数,并打开一个可以手动驾驶的ros节点.还介绍了能够提供给ros接口的传感器信息.
第4小节介绍了如何通过ros发送控制指令让车动起来.并且介绍了如何使用rviz查看车辆的部分传感器信息.

文章目录

  • 第五节 使用ros与carla通信
    • 1.安装ROS
    • 2.安装carla_ros_bridge
      • 2.1 创建虚拟环境
      • 2.2 通过apt安装carla-ros-bridge
      • 2.3 配置环境变量并运行
    • 3.运行carla_ros_bridge
      • 3.1 roslaunch参数设置
      • 3.2 运行一个手动驾驶ros节点
      • 3.3 carla_ros_bridge能够提供的传感器信息
    • 4.通过ros与carla交互
      • 4.1 通过发布ros消息让车动起来
      • 4.2 通过rviz查看传感器数据
    • 5 挑战性的任务
    • 参考链接
    • 异常处理
      • 问题1.打开手动驾驶脚本后画面很黑

1.安装ROS

安装ros可以使用鱼香ROS的网站上的一键安装进行安装.carla_ros_bridge支持ROS1和ROS2,本文使用ROS1.

小鱼的一键安装系列-

  • carla_ros_bridge的ROS版本支持:
    ROS Melodic — For Ubuntu 18.04 (Bionic)
    ROS Noetic — For Ubuntu 20.04 (Focal)
  • carla版本支持:
    CARLA 0.9.7 or later

本教程使用carla0.9.12,ROS Melodic

2.安装carla_ros_bridge

安装方式有两种:第一种apt安装,第二种是源码安装.

源码安装可能会遇到很多依赖库的问题,而apt安装比较方便,并且适用于ubuntu1804系统,所以这里推荐选择apt安装.

2.1 创建虚拟环境

ros-bridge 需要安装到 python2.7 的环境中。

conda create -n py27 python=2.7

激活虚拟环境:

conda activate py27

换源,并安装依赖:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install opencv-python==4.2.0.32 
pip install networkx
pip install rospkg
pip install rospy
pip install simple_pid
pip install transforms3d
pip install networkx
pip install enum
pip install pygame

2.2 通过apt安装carla-ros-bridge

添加镜像源:

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

apt安装

sudo apt-get install carla-ros-bridge

这里看到安装的版本其实是0.9.10版本,但是不影响我们后面的使用.
在这里插入图片描述

2.3 配置环境变量并运行

首先运行carla服务器:

    ./CarlaUE4.sh

然后我们需要切换到py27的虚拟环境

conda activate py27

指定carla的目录,并验证一下是否正确:

export CARLA_ROOT=/home/lbw/Carla/recompressed/carla-0.9.12
export PYTHONPATH=$PYTHONPATH:$CARLA_ROOT/PythonAPI/carla/dist/carla-0.9.12-py2.7-linux-x86_64.egg:$CARLA_ROOT/PythonAPI/carla
python -c 'import carla;print("Success")' 

如果打印了success说明pythonAPI路径配置成功.

在终端中source一下环境变量:

source /opt/carla-ros-bridge/melodic/setup.bash 

运行一下:

 roslaunch carla_ros_bridge carla_ros_bridge.launch

在这里插入图片描述

使用rostopic list可以查看到carla发布的消息:
在这里插入图片描述

  • 为了日后启动方便,我们直接添加到.bashrc里面
gedit ~/.bashrc

在脚本中写入(需要在# >>> conda initialize >>>之前):

source /opt/carla-ros-bridge/melodic/setup.bash 
export CARLA_ROOT=/home/lbw/Carla/recompressed/carla-0.9.12
export PYTHONPATH=$PYTHONPATH:$CARLA_ROOT/PythonAPI/carla/dist/carla-0.9.12-py2.7-linux-x86_64.egg:$CARLA_ROOT/PythonAPI/carla

3.运行carla_ros_bridge

运行carla_ros_bridge前,我们都需要切换到py27的虚拟环境中,否则会引起报错.

3.1 roslaunch参数设置

roslaunch carla_ros_bridge carla_ros_bridge.launch 后面是可以加参数的,例如可以通过host and port改服务器地址,可以通过town修改地图.

后缀运行参数的格式是:=,例如:passive:=True.

在运行多个客户端时,carla_ros_bridge这个客户端会自动获得更新的优先权,会优先对世界进行tick,也就是更新.除非我们设置passive:=True.

carla_ros_bridge默认工作在synchronous_mode下,等待所有传感器消息都传回来才会进行下一次更新,确保更新频率的一致.

carla_ros_bridge默认是订阅所有传感器的,即register_all_sensors:=True

默认配置存储路径:
/opt/carla-ros-bridge/melodic/share/carla_ros_bridge/config

其他参数的具体说明如下:

  • use_sim_time: This should be set to True to ensure that ROS is using simulation time rather than system time. This parameter will synchronize the ROS /clock topic with CARLA simulation time.
  • host and port: Network settings to connect to CARLA using a Python client.
  • timeout: Time to wait for a successful connection to the server.
  • passive: Passive mode is for use in scynchronous mode. When enabled, the ROS bridge will take a backseat and another client must tick the world. ROS bridge will wait for all expected data from all sensors to be received.
  • synchronous_mode:
    If false: Data is published on every world.on_tick() and every sensor.listen() callback.
    If true (default): ROS bridge waits for all the sensor messages expected before the next tick. This might slow down the overall simulation but ensures reproducible results.
  • synchronous_mode_wait_for_vehicle_control_command: In synchronous mode, pauses the tick until a vehicle control is completed.
  • fixed_delta_seconds: Simulation time (delta seconds) between simulation steps. It must be lower than 0.1. Take a look at the documentation to learn more about this.
  • ego_vehicle: Role names to identify ego vehicles. Relevant topics will be created so these vehicles will be able to be controlled from ROS.
  • town: Either use an available CARLA town (eg. ‘town01’) or an OpenDRIVE file (ending in .xodr).
  • register_all_sensors:
    If false: Only sensors spawned by the bridge are registered.
    If true (default): All the sensors present in the simulation are registered.

3.2 运行一个手动驾驶ros节点

首先需要运行carla服务器:

./CarlaUE4.sh

之后使用roslaunch打开官方提供carla_ros_bridge_with_example_ego_vehicle脚本,设置地图为town01:

roslaunch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle.launch town:='town01'

这个脚本实际上是三个模块组成:

  • carla_ros_bridge.launch
  • carla_example_ego_vehicle.launch
  • carla_manual_control.launch

打开后,我们可以看到下面的界面:
在这里插入图片描述
如果你的画面显示比较暗,可以参考文章最后的异常处理的问题1的解决方法.

H后弹出操控界面.可以看到,需要先按B启动手动控制,否则车是动不了的. 其他的操控方式和
在这里插入图片描述

3.3 carla_ros_bridge能够提供的传感器信息

我们打开传感器的配置文件:

sudo gedit /opt/carla-ros-bridge/melodic/share/carla_ego_vehicle/config/sensors.json

可以看到,里面涉及到的传感器有:

  • 前视RGB相机
  • 第三人称视角RGB相机
  • 32线激光雷达lidar
  • 毫米波雷达radar
  • 全球卫星导航系统gnss
  • 加速度计imu
  • 障碍物传感器(carla)
  • 车道线入侵传感器(carla)

除此之外,carla还提供很多其他的传感器,详细内容可参考官方文档:Sensors and data

在第4小节将详细介绍如何使用rviz查看传感器信息.

4.通过ros与carla交互

第四节讲解一下如何通过通过ros来订阅传感器的消息,并且发布ros消息对车辆油门刹车转向等进行控制.

4.1 通过发布ros消息让车动起来

在终端中使用下述命令可以实现车辆的直线运动.

    rostopic pub /carla/ego_vehicle/vehicle_control_cmd carla_msgs/CarlaEgoVehicleControl "{throttle: 1.0, steer: 1.0}" -r 10

更加简单的操作是使用rqt来可视化的发送ros消息,在终端中输入

rqt

选择Plugins->Topics->Message Publisher 打开消息发布界面
在这里插入图片描述
在Topic中选择/carla/ego_vehicle/vehicle_control_cmd,在Type中选择carla_msgs/CarlaEgoVehicleControl
然后点击加号:
在这里插入图片描述
展开下面的消息,改变expression的数值.将油门throttle改为1,然后勾选左边的对号
在这里插入图片描述
然后你就会发现车自己动起来了.

4.2 通过rviz查看传感器数据

为了方便的查看传感器信息,我们使用rviz来可视化.这里提供了一个已经配置好的rviz配置:
gitte代码库
找到rviz_carla_sensor.rviz,然后使用下面的命令打开rviz:

rosrun  rviz  rviz  -d  rviz_carla_sensor.rviz

可以看到如下界面:
在这里插入图片描述

5 挑战性的任务

通过订阅车辆的全局位置信息,实现从start到goal的完整行驶.

定位:通过订阅车辆的全局位置信息
感知:车道线检测(使用开源算法)
规划:全局路径规划+局部路径规划(使用开源算法)

定位和感知信息直接通过carla_ros_bridge获取,规划指令通过carla_ros_bridge发布.

可以查看[carla入门教程]-6 来获取比赛场景的创建.

参考链接

ROS bridge installation for ROS 1
ROS Bridge 笔记(01)— 简介、apt 安装、源码编译安装、安装依赖、运行显示

异常处理

问题1.打开手动驾驶脚本后画面很黑

如果打开后的画面很黑,说明相机曝光参数存在问题.
在这里插入图片描述
解决方法是需要调整一下相机曝光参数.具体做法为:

sudo gedit /opt/carla-ros-bridge/melodic/share/carla_ego_vehicle/config/sensors.json

修改相机参数:

"iso":200 

改成:

"iso":3000

需要修改的有两处,"id": "front","id": "view",两个相机的参数都需要修改.

如果还不够亮,可以进一步调大iso.
在这里插入图片描述


http://chatgpt.dhexx.cn/article/rHHTyP4M.shtml

相关文章

CARLA安装记录(二)

安装好显卡驱动后,接下来的步骤是安装Unreal Engine。我的操作系统是Ubuntu 18.04 系统要求 Ubuntu 18.04。CARLA兼容Ubuntu 16.04及之前版本,但虚幻引擎正常工作需要合适的编译器。至少130GB磁盘空间。CARLA会占用大约31GB的空间,而虚幻引…

Carla安装记录

Carla安装记录 最近打算在做一些自动驾驶相关的东西,所以安装了一下Carla。在这里记录一些自己的安装过程中遇到的一些问题和解决的方法。 Carla release版本下载 想要安装Carla,可以选择release版本或者源码安装。在这里我主要介绍release版本的安装…

Carla中实现车辆轨迹获得

Carla中实现车辆循迹及车道保持(使用MPC和强化学习) 需要用到的 python apicarla.mapmethods一个简单的方法实现路径规划 carla.Waypointmethods carla.DebugHelpercarla.World 强化学习部分方法自动驾驶综述实验结果 模仿学习(Imitation Lea…

Carla学习(五) Carla常用传感器

Depth camera,输出carla.Image,深度相机使用三通道RGB值存储距离信息,然后将其转换为距离灰度图: normalized (R G * 256 B * 256 * 256) / (256 * 256 * 256 - 1) in_meters 1000 * normalized传感器数据包含: frame&#…

Carla传感器

1.介绍 Carla中传感器类别多种多样,不同传感器数据之间也存在差异。但是传感器的使用方法之间存在一致性。本文介绍Carla中传感器使用的通用方法。有关传感器的描述可以在carla.Sensor类中查看 2. 传感器的通用方法 在介绍传感器的通用方法之前,需要明…

Carla安装

近期在实习,入坑了Carla环境,分享一下安装经验 Quick start package installation - CARLA Simulator 文档里得安装说明还是比较全得,安装包比较大,我安装得是windons版本,遇到得坑不多,还是比较顺利得。 …

Carla学习(八)利用carla制作自己的kitti数据集

利用carla制作kitti 3D目标检测数据集基本上就是获得图片、雷达、2D和3D box。 这里主要需要解决的问题就是carla世界的坐标系和kitti数据集的坐标系不太一样,kitti坐标系如下所示: 具体的坐标转换我参考了Fredrik00 https://github.com/Ozzyz/carla-d…

carla环境安装、运行以及版本切换(Windows)

本栏目将介绍carla,包括安装、pythonAPI运行、carla的技术点介绍、自行开发脚本玩转carla,以及自定义的控制carla中的车辆,通过carla生成感知数据集等方法。 1. Carla(windows)环境安装、运行 支持操作系统&#xff…

CARLA 笔记(02)— Ubuntu 安装 CARLA(服务端、客户端、安装 miniconda、创建虚拟环境、更换 pip 源、生成交通流、人工控制车辆按键)

https://carla.readthedocs.io/en/0.9.13/start_quickstart/ 1. 预置条件 Ubuntu 18.04CARLA 0.9.138 GB 以上显卡现存20 GB 以上硬盘空间Python 2 或者 Python 3pip 检查 pip 版本 # For Python 3pip3 -V# For Python 2pip -V升级 pip 版本 # For Python 3pip3 install --u…

Carla自动驾驶仿真二:Carla多视图切换代码详解

文章目录 前言一、Carla多视图切换效果二、Camera安装坐标系1、Carla.Location2、Carla.Rotation 三、接口及代码详解1、接口介绍2、生成上帝视图代码3、生成Camera视图代码 四、完整代码 前言 1、Carla提供了大量的Python API接口,用户可以通过查找文档实现各类功…

[carla入门教程]-2 pythonAPI的使用

本专栏教程将记录我从安装carla到调用carla的pythonAPI进行车辆操控的全流程,带领大家从安装carla开始,到最终能够熟练使用carla仿真环境进行传感器数据采集和车辆控制. 文章目录 第二节 pythonAPI的使用1. 安装Anoconda环境并创建虚拟环境2.使用Vscode 打开工程目录3.学习使用…

CARLA传感器详细文档介绍+python实例(持续更新ing)

CARLA中有两种类型的传感器:每帧都工作的传感器(相机,点云等)和只有特定环境下才接收数据的传感器(触发检测)。都属于carla.Sensor类,从carla.BlueprintLibrary类中实例化。 第一类&#xff1a…

carla学习笔记(十)

实验室同学需要做仿真数据的采集实验,为记录以下整个采集过程。方便未来进行类似数据采集时减少写代码的时间。 采集数据要求: 控制一辆车,从a点到b点。然后在路侧架设一个lidar,采集车辆通过激光lidar区域时的数据。 一、首先…

Carla学习笔记(1):Ubantu20.04安装Carla 0.9.13

前言 最近准备深入研究下Carla与Apollo联合仿真,故安装了Ubantu20.04,做好前期准备。由于第一次安装Carla,不可避免的需要踩一些坑,所以写篇指南记录下,坑都在结尾。不建议按照csdn的教程去安装,直接用官方文档安装。 安装Carla有前提条件,…

carla入门

carla 一、安装 官网地址 1.1 windows下安装 下载zip文件安装 在CARLA官方文档中点击下图部分,文档链接https://carla.readthedocs.io/en/latest/start_quickstart/ 到git下直接下载windows版本, 下面可以选择版本, 这里我用最新版 在解…

Carla 地图

1. 介绍 Carla在0.9.11中扩展了地图功能,增加了许多有意思的扩展功能。 包括在地图上控制指定建筑物的渲染,加载不同的图层等。 We have extended the maps API to provide the ability to toggle on and off every environment object individually. W…

Carla内容简介

最近学长安排了新的任务,开始学习Carla仿真软件。这个软件之前在自己电脑安装一次,各种坑,坑到我怀疑人生,大概装了两三天才装上,之后因为毕设就没动过了,时隔小一年又重新开始学。。。(后续有时…

Carla学习2:carla安装与使用

文章目录 0. 建议1. carla学习相关链接1.1 官方资料1.1 学习教程 2. Carla安装2.1 服务器端2.1.1 下载预编译版本(也可以使用下载源码并编译) 2.1.2 启动服务器端及服务器端显示导航2.3 客户端2.3.1 创建python环境2.3.2 安装carla 的pythonAPI所需要的依…

【仿真】Carla介绍与使用 [1] (附代码手把手讲解)

0. 参考与前言 主要介绍无人驾驶的仿真环境CARLA,开源社区维护,以下为相关参考链接: Carla官方文档 建议后续找的时候 先按好版本号,有些功能/api 是新版本里有的,Carla官方github Youtube PythonWindow 0.9.5 主要是…

自动驾驶仿真平台Carla从入门到放弃

一、Carla的基本概念 人工智能、5G和V2X技术的不断发展使得自动驾驶成为可能。近几年,自动驾驶发展迅速,在科技新闻上经常可以看到自动驾驶的身影,而从事自动驾驶相关软、硬件研究的高效研究所和公司也越来越多,既有传统的汽车巨头…