自动驾驶之Carla_ROS_Bridge
主要功能是生成Carla仿真器中的主要可控车辆,加载配置参数文件config/sensors/json还会触发carla_ego_vehicle.py,主要包括Carla_ego_vehicle 类:• 该类是脚本的核心,用于管理生成ego_vehicle和其对应的传感器。• 初始化生成AD车的位置,设置蓝图等。在自动驾驶仿真中,Carla_ROS_Bridge是一个关键工具,就像其名字一样,它是
在自动驾驶仿真中,Carla_ROS_Bridge是一个关键工具,就像其名字一样,它是一个桥,连接Carla模拟器与第三方自动驾驶程序,如Autoware和Apollo,实现联合仿真。
Carla_ROS_Bridge是Carla官方提供的Carla和ROS通信工具。本质上是一个由多个功能包组成的ROS工作空间,包含了所有基础的功能包以及实现自己算法的功能包。

此包封装了操作Carla服务端的API,使用户不用关心Server层的东西,直接通过其提供的几个ROS Server创建车辆、传感器、路灯等各种Objects,并对其进行管理,同时将各类传感器数据从 Carla 格式转化为 ROS 消息 publish 出去。基础功能包具体功能如下表:
|
序号 |
名称 |
功能 |
|---|---|---|
|
1 |
carla_ackermann_contol |
将 Ackermann |
|
2 |
carla_ackermann_msgs |
carla ackermann control中相关的消息定义 |
|
3 |
carla_ad_agent |
一个简单的自动驾驶算法样例,可控制车辆按照给定路径行驶,避免与其他车辆碰撞并遵守红绿灯 |
|
4 |
carla_ad_demo |
一个使用 ros_bridge 的完整样例 |
|
5 |
carla_common |
主要包含 CARLA 与ROS 直接的坐标转化相关 |
|
6 |
carla_manual_control |
实现对 CARLA 中车辆的手动控制 |
|
7 |
carla_msgs |
ros_bridge 中用到的消息定义 |
|
8 |
carla_ ros_bridge |
Ros_bridge 的核心节点,实现 |
|
9 |
carla_ros_scenario_runner |
接收要运行的场景信息,并运行 ScenarioRunner |
|
10 |
carla_ros_scenario_runner_types |
carla_ros_scenario_runner中相关消息的定义 |
|
11 |
carla_spawn_objects |
根据 objects.json 中的信息生成交通参与者和传感器 |
|
12 |
carla_twist_to _control |
将 Twist控制(x/y/z 三个方向的速度 |
|
13 |
carla_walker_agent |
一个简单的行人控制算法,可控制行人按照给定路径行驶 |
|
14 |
carla_waypoint_publisher |
根据给定的起终点生成途径的路径点 |
|
15 |
carla_waypoint_types |
定义一个路径点消息 |
|
16 |
pcl_recorder |
记录点云并生成点云地图 |
|
17 |
ros_compatibility |
使 ros_bridge 无需修改代码就能够同时兼容性 ROS |
|
18 |
rqt_carla_control |
一个rqt插件,运行控制仿真运行 |
|
19 |
rviz_carla_plugin |
一个 rviz插件,使用 rviz查看和操作仿真 |
那么我们该如何获取Carla_ROS_Bridge呢?
第一步在GitHub的Carla项目中找到ROS_Bridge的链接(GitHub - carla-simulator/ros-bridge:CARLA 模拟器的 ROS 桥),确保与当前Carla版本兼容,通过git clone获取代码。

第二步在ROS工作目录的src文件夹中,通过catkin_make或catkin build进行编译,可能会遇到缺失的库,用apt进行安装。首次编译和运行时,可能还需安装Python环境缺失的库。

启动RosBridge。在启动之前需要source,以便终端使用ROS_Bridge。正常启动后,将看到两个窗口,一个世界窗口展示Carla模拟环境,另一个用于ego车辆控制。默认状态下,车辆等待自动驾驶程序接管,通过键盘操作可以切换驾驶模式和挡位。ROSTopics负责数据的传递。可以通过rqt查看ROS_Bridge的发布和订阅的Topic,这有助于理解数据流。此外,rviz提供了订阅更多Topic进行图形化显示的功能,在前一篇小编已经展示过其可视化内容(自动驾驶之CARLA仿真数据可视化),感兴趣的盆友们可以看一看。
自动驾驶之Carla_ROS_Bridge架构
三个主要功能节点包:
|
序号 |
重要的三个节点包 |
对应的launch |
功能 |
|---|---|---|---|
|
1 |
Carla_ros_bridge |
Carla_ros_bridge.launch |
核心桥 |
|
2 |
Carla_ego_vehicle |
Carla_ego_vehicle.launch |
车辆的生成 |
|
3 |
Carla_manual_control |
Carla_manual_control.launch |
车辆的控制 |
1、Carla_ros_bridge
它是核心部分,其功能除了加载配置参数文件config/settings.yaml还会触发bridge.py,主要包括CarlaRosBridge 类:• 该类是脚本的核心,用于管理CARLA和ROS之间的通信。• 构造函数接收CARLA世界对象和参数字典,初始化各种设置和发布者。• 包含多个方法来处理车辆、传感器、演员(actors)等的创建和更新。• 支持异步和同步模式,通过线程处理CARLA世界的更新。• 处理天气变化和ROS时钟的更新。
2、Carla_ego_vehicle
主要功能是生成Carla仿真器中的主要可控车辆,加载配置参数文件config/sensors/json还会触发carla_ego_vehicle.py,主要包括Carla_ego_vehicle 类:• 该类是脚本的核心,用于管理生成ego_vehicle和其对应的传感器。• 初始化生成AD车的位置,设置蓝图等。• 代码/配置文件修改传感器参数。Carla_ego_vehicle在Carla_ros_bridge中扮演着重要的角色,它提供了控制和感知的能力,使得开发者能够在Carla仿真环境中测试和验证自动驾驶算法。通过使用ROS节点来控制和接收ego vehicle的数据,可以方便地集成和扩展自动驾驶系统的功能。
3、Carla_manual_control
Carla_manual_control其实不是一个单独的包或组件,它指的是Carla仿真器中的一个内置特性,为手动控制模式。手动模式允许用户通过键盘或游戏手柄来手动控制Carla仿真环境中的ego vehicle。对于测试场景和调试非常有用,因为用户可以直观地控制车辆并观察环境中的反应。主要加载功能包Carla_manual_control.py脚本,有World、KeyboardControl、HUD、FadingText、HelpText等五个类:• World,处理渲染工作,监听世界。• KeyboardControl,管理键盘输入的事件。• HUD,处理信息显示。• FadingText,是用来处理和现实HUD中逐渐淡出的文本信息的, 例如速度超限警告,压线警告等• HelpText,展示帮助信息。
声明:本文为学习所用,若有转载文章或图片侵犯了您的合法权益,请作者私信或留言,我们将及时更正、删除,谢谢。
更多推荐



所有评论(0)