[carla入门教程]-6 小项目:基于carla-ros-bridge构建一个小型比赛赛道

2023-11-16

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

第六节 基于carla-ros-bridge构建一个小型比赛赛道

本节的主要内容是介绍一个小项目,项目内容为使用carla构建一个赛道以供参赛者使用.要求使用一个脚本就可以很方便的构建出这个赛道,赛道包括一个固定的起点和终点,中间具有几个固定的障碍物,参赛的车辆都是同一款车型,仿真环境中的天气光照等都保持一致.

1.比赛仿真环境要素

1.1 地图

地图的修改只需要在运行launch文件时增加 town:="town07"的参数即可.

  • 如果想要永久修改默认参数,参考以下方法:
    在下面的carla_ros_bridge.launch文件中找到10行, 把’town’的default值改为Town07.
sudo gedit /opt/carla-ros-bridge/melodic/share/carla_ros_bridge/launch/carla_ros_bridge.launch

然后保存即可.

1.2 车辆

1.2.1 定制化修改- 通过在启动命令时引入参数:

我们在官方的 carla_example_ego_vehicle.launch 后面附上生成点spawn_point,车辆滤波器vehicle_filter,就可以轻松实现定制车辆的功能了.

roslaunch carla_ego_vehicle carla_example_ego_vehicle.launch spawn_point:="68.219688,-37.028912,0.5,2.649131,4.661454,104.526855" role_name:="ego_vehicle" vehicle_filter:="vehicle.audi.a2"

当然,我们也可以一步到位,直接在carla_ros_bridge_with_example_ego_vehicle.launch中附带参数:

roslaunch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle.launch spawn_point:="68.219688,-37.028912,0.5,2.649131,4.661454,104.526855" role_name:="ego_vehicle" vehicle_filter:="vehicle.audi.a2" town:="town07"

为了方便展示,用文字描述一下上述代码:
roslaunch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle.launch spawn_point:=“68.219688,-37.028912,0.5,2.649131,4.661454,104.526855”
town:=“town07”
ego_vehicle_role_name:=“ego_vehicle”
vehicle_filter:=“vehicle.audi.a2”

运行上述脚本进行车辆遥控的内容可以参考[carla入门教程]-5 使用ROS与carla通信的3.2节.

在这里插入图片描述

然后我们再配合使用rviz就可以查看传感器数据:

rosrun rviz rviz -d carla_tutorial/rviz_carla_sensor.rviz 

在这里插入图片描述
这里有一个小bug,车辆出生后没有拉手刹,然后会溜车.需要手动按B然后按空格拉手刹.

如果想要修改默认参数,参考1.2.2和1.2.3.

1.2.2 官方生成脚本分析

自带的车辆生成demo的launch文件如下

sudo gedit  /opt/carla-ros-bridge/melodic/share/carla_ego_vehicle/launch/carla_example_ego_vehicle.launch

这个文件实际上是调用另一个launch文件:

/opt/carla-ros-bridge/melodic/share/carla_ego_vehicle/launch/carla_ego_vehicle.launch

carla_ego_vehicle.launch实现对车辆的生成,传递的参数包括:

  <arg name='host' default='localhost'/>
  <arg name='port' default='2000'/>
  <arg name='timeout' default='10'/>
  <arg name="vehicle_filter" default="vehicle.*" />
  <arg name="sensor_definition_file" default="$(find carla_ego_vehicle)/config/sensors.json"/>
  <arg name="role_name" default="ego_vehicle"/>
  <!-- use comma separated format "x,y,z,roll,pitch,yaw" -->
  <arg name="spawn_point" default=""/>
  <arg name="spawn_ego_vehicle" default="True" />
1.2.3 定制化修改- 通过配置文件
  • 车的类型

通过修改carla_ego_vehicle.launch中的vehicle_filter,我们将车辆类型改为vehicle.audi.a2,也就是奥迪A2.

  • 出生点

我们首先利用修改后的脚本生成一台车,此时由于默认是不指定出生点的,所以程序会从地图里面随机选取一个出生点,这个出生点不是我们想要的,但是没关系,我们可以手动把车辆遥控到指定的出生点.

调用官方提供的脚本呼出车辆控制界面,然后遥控到出生点:

roslaunch carla_manual_control carla_manual_control.launch 

在这里插入图片描述
位于Town07的这个位置:
在这里插入图片描述
从控制界面中读取位置信息:
在这里插入图片描述
转换成(x,y,z,pitch,roll,yaw)的格式填入spawn_point参数即可,如下:

<arg name="spawn_point" default='70.3,4.8,2.0,0.0,0.0,69.0'/>

特别需要注意的是:
spawn_point中的参数分别是(x,y,z,roll,pich,-raw).请注意这里的偏航角度raw前面有一个负号.

spawn_point中三个旋转角与carla.Rotation 的顺序并不相同,carla.Rotation的顺序为:(pitch,yaw,roll)

1.3 障碍物

1.3.1 障碍物的创建方法

在路线上添加多个不会移动的车辆作为静态障碍物.这里为了便于快速创建车辆,写了一个python脚本.carla_tutorial/generate_car.py.

[carla入门教程]-3 在carla中遥控汽车并采集传感器数据中介绍了如何使用pythonAPI生成车辆,这里主要需要解决的是如何确定障碍物的生成位姿.

这里我们也是采取手动标记的方法,通过carla_manual_control.launch 控制小车到我们需要的点,采集小车的位置.为了准确获得小车位置,我们写了一个小脚本carla_tutorial/get_location.py打印输出小车当前的位姿.然后把障碍物的位姿统计到carla_tutorial/障碍物坐标.txt文档中.

注意!!
在设置spawn_point时,一定要设置好z坐标,因为carla中的地图贴图存在地下结构,所以如果z设置的比我们预期的值小,会出现车生成在地底下的情况.为了避免这种情况,我们设置z坐标时可以比原定数值大0.5m.

在这里插入图片描述

1.3.2 障碍物的分布介绍

创建的障碍物一共有5处,其中有2处放置在路口处,是为了隔断道路.另外3处放置在道路上,是为了考验避障能力.

第一处:隔断路口
在这里插入图片描述

第二处:隔断路口
在这里插入图片描述
第三处:考验避障
在这里插入图片描述

第四处:考验避障
在这里插入图片描述
第五处:考验避障
在这里插入图片描述

1.4 起点和终点

起点都用Town07地图的全局坐标表示.
起点坐标:(68.810539, -34.828873, 1.834847)
终点坐标:(-197.405151, y=-169.926147, z=-0.007765)

2.传感器接口

本小节主要介绍汽车上传感器的参数,对应的 ros消息名称.

所有传感器的参数,例如相机内参,雷达内参都位于以下文件中:

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

如果觉得某个参数不合适,可以自行调整.

2.1 RGB相机:

一共有两个,一个是前视相机,一个是第三人称相机.

  • 第三人称相机
    Ros_topic:/carla/ego_vehicle/camera/rgb/view/image_color
    Type: sensor_msgs/Image

  • 前视相机,
    Ros_topic:/carla/ego_vehicle/camera/rgb/front/image_color
    Type: sensor_msgs/Image

2.2 激光雷达

  • 单线激光雷达
    Ros_topic:/carla/ego_vehicle/lidar/lidar1/point_cloud
    Type: sensor_msgs/PointCloud2

激光雷达可以改成多线的,如果需要请自行修改雷达配置文件中的channels.

2.3 GNSS

  • 全球定位导航
    Ros_topic:/carla/ego_vehiclgnss/gnss1/fix
    Type: sensor_msgs/NavSatFix

2.4 IMU

  • 加速度计
    Ros_topic:/carla/ego_vehicle/imu/imu1
    Type: sensor_msgs/Imu

2.5 里程计

  • localpose坐标
    Ros_topic:/carla/ego_vehicle/odometry
    Type: nav_msgs/Odometry

2.6 车道线交叉检测器

  • carla中的虚拟传感器,当车辆穿越车道线时,会发出车道线类型的消息.
    Ros_topic:/carla/ego_vehicle/lane_invasion
    Type: carla_msgs/CarlaLaneInvasionEvent

2.7 碰撞检测器

  • carla中的虚拟传感器,碰撞检测器.当发生碰撞时,会发出信号,显示出碰撞的目标.
    Ros_topic:/carla/ego_vehicle/collision
    Type: carla_msgs/CarlaCollisionEvent

3. 控制接口

  • 控制油门,刹车,档位.
    Ros_topic:/carla/ego_vehicle/vehicle_control_cmd
    Type: carla_msgs/CarlaEgoVehicleControl
    在这里插入图片描述

4. 比赛成绩评判

  • 比赛限时
    20min.
  • 打分标准
    是否完赛,通过时间,碰撞次数,车道线跟踪精度等等.

5.比赛执行代码(参赛队员使用)

(1)打开carla服务器

./CarlaUE4.sh

在这里插入图片描述

(2)加载官方demo
按照设定参数加载carla_ros_bridge_with_example_ego_vehicle.launch

roslaunch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle.launch spawn_point:="68.219688,-37.028912,0.5,2.649131,4.661454,104.526855" role_name:="ego_vehicle" vehicle_filter:="vehicle.audi.a2" town:="town07"

在这里插入图片描述
(3)加载rviz

cd carla_tutorial
rosrun rviz rviz -d rviz_carla_sensor.rviz 

在这里插入图片描述

(4)加载汽车障碍物

conda activate py27 # 切换到python2.7环境
python generate_car.py

在这里插入图片描述
(5)开始比赛
自行编写脚本,订阅传感器的ros消息,控制车运动,让车能够到达终点.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[carla入门教程]-6 小项目:基于carla-ros-bridge构建一个小型比赛赛道 的相关文章

随机推荐

  • 修改maven的默认镜像为阿里镜像

    在maven的配置文件中 默认的镜像仓库地址为 http repo maven apache org maven2 该地址下载jar包速度慢一些 这里可以修改为阿里的镜像仓库地址 http maven aliyun com nexus co
  • Node.js 版本管理工具 n 使用指南

    Node js 版本更新很快 目前 node v20 x 已经发布 我们在使用时避免不了会需要切换不同的 Node js 的版本来使用不同版本的特性 所以就出现了像 windows 上的 nvm MacOS 上的 n 工具 本文就介绍一下如
  • super class java_Java中的getGenericSuperclass的基本用法

    通过getGenericSuperclass方法可以获取当前对象的直接超类的Type 使用该方法可以获取到泛型T的具体类型 package cn tzz lang clazz public class User private Intege
  • IDEA查询项目中未被使用的代码

    IDEA查询项目中未被使用的代码 IDEA内置的很多功能非常强大 通过analyze分析功能 可以实现根据自己需求来检索未使用的内容 步骤如下 在弹出的输入框中 输入undeclared 然后选择下拉框中箭头指向内容 双击 下图中的选择方式
  • XML中的转义

    在XML中 有一些符号作为XML 的标记符号 一些特定情况下 属性值必须带有这些特殊符号 下面主要是讲解一些常用的特殊符号的处理 例一 双引号的使用 双引号作为XML 属性值的开始结束符号 因此无法在值中直接使用 处理方式可以分为两种 a
  • 时间序列分析全集-python3

    文章目录 1 导言 1 1 基本定义 1 2 预测评估指标 2 移动 平滑 评估 2 1 滑动窗口估计 2 1 1 moving average 2 1 2 weighted average 2 2 指数平滑 2 2 1 exponenti
  • U盘安装CentOS7

    官网找到CentOS7的ISO镜像 CentOS 7 x86 64 DVD 2207 02 iso 大小4 42G 准备一个8G的U盘 格式化 然后通过UltraISO工具将ISO镜像写入到U盘 接着开机启动U盘 华硕是按esc键 选择in
  • pip install 快速下载和安装包的方法

    一个 快速下载和安装包的方法 转载自他人 见下面链接 输入指令 pip default timeout 100 install 库名称 i http pypi douban com simple trusted host pypi doub
  • 在geany中使用中文注释

    geany中使用中文注释如果不加以特别说明会报错误 像这样 只需在首行指定编码格式 就可以愉快使用中文注释了 coding utf 8 coding utf 8 magicians alice david altman for magici
  • 通俗易懂的RNN

    目录 一 什么是RNN 二 为什么要发明RNN 三 RNN的基础知识 1 循环核介绍 2 循环核按时间步展开 3 记忆体 4 循环计算层 5 TF描述循环计算层 二 RNN的补充知识 1 RNN梯度消失的原因 一 什么是RNN RNN Re
  • 字符大全

    icon a m1 爱心符号 心形符号 扑克符号 1 m2 笑脸符号 2 gt c m3 商标符号 版权符号大全 3
  • Android TextView加载带有多张图片的HTML,并且解决图片造成的OOM

    版权声明 本文为博主原创文章 未经博主允许不得转载 转载请注明本文出自 renxhui 的博客 http blog csdn net qq 34760508 article details 70146189 请尊重他人的辛勤劳动成果 谢谢
  • 区块链能否开启人工智能金融2.0时代?

    随着人们对区块链技术地不断探索挖掘 区块链在金融领域的应用也是越来越多 其对传统金融机构的影响也越来越深 人们越来越期望能够利用区块链开启人工智能金融2 0时代 这将对银行业的再造与重构产生颠覆性的结果 随着全球区块链技术峰会的频繁举办 这
  • 获取任意月份天数

    获取月份天数 import java text ParseException import java text SimpleDateFormat import java util Calendar public class demo2 pu
  • 下载安装VMware,centos7,创建虚拟机一条龙

    1 vmware下载安装 1 阿里云盘下载 VMware workstation full 16 exe https www aliyundrive com s zxRkiiJnzmN 提取码 91mh 2 安装 双击exe 修改安装位置到
  • Stable diffusion模型种类说明

    1 基础模型 pruned是完整版模型 emaonly是剪枝版模型 如果想要训练自己的模型 需要下载完整的大模型 1 SD系列 sd v1 4 sd v1 5 sd v2之类的 都是stable diffusion自带的大模型 效果会比较差
  • 刷脸支付服务商红利市场不容错过

    相比当下流行的扫码支付 刷脸支付更便捷 资金流动更安全 且还有马云 马化腾多次亲自站台宣传 想不火都难 目前 与刷脸相关的网络热度词包括刷脸支付 手机扫码 消费者 人工智能 花钱等等 通过这些关联词也说明了一个问题 刷脸支付在落地方面取得了
  • MYSQL给选中结果添加赋予行号row number

    SELECT r r 1 rank a from SELECT from mytable WHERE 1 a SELECT r 0 b
  • IDEA通过git回滚到某个提交节点或某个版本

    1 项目右键后 点击 Git Show History 这里会显示有历史提交的版本记录 这里我们假设要回滚到 提交 版本中 2 选中 提交 右键Copy Revision Number 3 回到项目 右键 Git Repository Re
  • [carla入门教程]-6 小项目:基于carla-ros-bridge构建一个小型比赛赛道

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