Carla自动驾驶仿真八:两种查找CARLA地图坐标点的方法

文章目录

  • 前言
  • 一、通过Spectator获取坐标
  • 二、通过道路ID获取坐标
  • 总结


前言

CARLA没有直接的方法给使用者查找地图坐标点来生成车辆,这里推荐两种实用的方法在特定的地方生成车辆。


一、通过Spectator获取坐标

1、Spectator(观察者),我们通过键盘的W A S D按键以及鼠标的左键可以移动Carla Client的画面,实际移动的是Spectator的位置。

2、假设我们将Spectator通过W A S D按键以及鼠标移动到当前的位置,按键调整的是(x,y,z)位置,鼠标调整的是(pitch,yaw,roll)

在这里插入图片描述
3、执行下述代码,通过API获取当前Spectator位置,再将车辆生成到当前位置。

import carla

client = carla.Client('localhost', 2000)
carla_world = client.get_world()

#获取CARLA世界中的spectator
spectator = carla_world.get_spectator()
transform = spectator.get_transform()
print(transform)
#打印:Transform(Location(x=115.515007, y=-16.447723, z=1.146989), Rotation(pitch=10.587230, yaw=-3.618074, roll=0.000049))

#生成车辆
blueprint = carla_world.get_blueprint_library().filter('vehicle.*')[0]
ego = carla_world.spawn_actor(blueprint, transform)

在这里插入图片描述


二、通过道路ID获取坐标

1、假设你有roadrunner,打开carla的xodr地图,选中任意车道,你会发现右侧有road id = 17和lane id = -5,有了这两个参数就好办了。xodr地图路径在 D:\CARLA_0.9.14\WindowsNoEditor\CarlaUE4\Content\Carla\Maps\OpenDrive)

在这里插入图片描述
2、通过代码直接生成到目的道路和车道。

import carla

client = carla.Client('localhost', 2000)
carla_world = client.get_world()

target_road_id = 17
target_lane_id = -5

#获取carla地图
map = carla_world.get_map()
# 每隔2m生成1个waypoint
waypoints = map.generate_waypoints(2.0)
# 遍历路点
ego = None
for waypoint in waypoints:
    if waypoint.road_id == target_road_id:
        lane_id = waypoint.lane_id
        # 检查是否已经找到了特定车道ID的路点
        if lane_id == target_lane_id:
            location = waypoint.transform.location
            #稍微设置一下z坐标,如果z为0的话,车会掉下去。
            location.z = 1
            ego_spawn_point = carla.Transform(location, waypoint.transform.rotation)
            print(ego_spawn_point)
            #生成车辆
            blueprint = carla_world.get_blueprint_library().filter('vehicle.*')[0]
            ego = carla_world.spawn_actor(blueprint, ego_spawn_point)
            break
            
#这里补充观察者代码

3、上面的代码已经生成了车辆到指定的road id 和 lane id的位置,我们现在可以设置一个spectator看看车辆有没有在目的地,这部分代码和上面的代码一起执行

# 顺便搞个观察者安装到车辆,看看车到了目标点没有
camera_bp = carla_world.get_blueprint_library().find('sensor.camera.rgb')
# 设置生成Camera的附加类型为Rigid
Atment_SpringArmGhost = carla.libcarla.AttachmentType.Rigid
# 设置Camera的安装坐标系
Camera_transform = carla.Transform(carla.Location(x=-5, y=0, z=2),
                                   carla.Rotation(pitch=-10, yaw=0, roll=0))
# 生成Camera
camera = carla_world.spawn_actor(camera_bp, Camera_transform, attach_to=ego,
                                 attachment_type=Atment_SpringArmGhost)
#设置spectator坐标
carla_world.get_spectator().set_transform(camera.get_transform())

在这里插入图片描述

在这里插入图片描述


总结

roadrunner网上比较多资源,也比较容易安装,可以绘制日常仿真使用的地图,有时间的可以安装学习一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/416682.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

实战Kafka的部署

目录 一、环境准备 二、安装配置jdk8 (1)Kafka、Zookeeper(简称:ZK)运行依赖jdk8 三、安装配置ZK (1)安装 (2)配置 四、配置Kafka (1)配置…

SpringBoot整合rabbitmq-扇形交换机队列(三)

说明:本文章主要是Fanout 扇形交换机的使用,它路由键的概念,绑定了页无用,这个交换机在接收到消息后,会直接转发到绑定到它上面的所有队列。 大白话:广播模式,交换机会把消息发给绑定它的所有队…

day06_菜单管理(查询菜单,添加菜单,添加子菜单,修改菜单,删除菜单,角色分配菜单,查询菜单,保存菜单,动态菜单)

文章目录 1 菜单管理1.1 表结构介绍1.2 查询菜单1.2.1 需求说明1.2.2 页面制作1.2.3 后端接口SysMenuSysMenuControllerSysMenuServiceMenuHelperSysMenuMapperSysMenuMapper.xml 1.2.4 前端对接sysMenu.jssysMenu.vue 1.3 添加菜单1.3.1 需求说明1.3.3 页面制作1.3.3 后端接口…

类加载的过程以及双亲委派模型

类加载,指的是java进程运行的时候,需要把.class文件从硬盘,读取到内存,并进行一系列的校验解析的过程。(.class文件 > 类对象,硬盘 > 内存) 类加载的过程,类加载的过程其实是在…

探索Sora:AI视频模型的创新与未来展望

✍️作者简介:小北编程(专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向) 🐳博客主页: 开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN 🔔如果文章对您些帮助请👉关…

Python进阶学习:Pandas--查看DataFrame中每一列的数据类型

Python进阶学习:Pandas–查看DataFrame中每一列的数据类型 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希…

数据库子父结构表,树状结构数据进行递归查询

表结构: 三个字段如图所示,目标是获取每条数据的根id(父id为0的数据根id就是自己的id,否则一直根据父id去查找一直找到父id为0的数据,此数据的id就是根id) 业务中实际的解决办法: 新加一个字段进行存储&…

Python + Google AI 自动修复 Sonar Bug 实践

前言 在工作中总会遇到种种不期而至的需求,比如前段时间突然要修复所有 Sonar Bug,涉及各种琐碎的代码风格问题,包括但不限于语法不规范、废弃注释等问题。这些项目都已经持续开发几年了,Sonar 上的问题层出不穷,各种…

如何在Linux使用Docker部署Nexus容器并实现公网访问本地仓库【内网穿透】

文章目录 1. Docker安装Nexus2. 本地访问Nexus3. Linux安装Cpolar4. 配置Nexus界面公网地址5. 远程访问 Nexus界面6. 固定Nexus公网地址7. 固定地址访问Nexus Nexus是一个仓库管理工具,用于管理和组织软件构建过程中的依赖项和构件。它与Maven密切相关,可…

【airtest】自动化入门教程(一)AirtestIDE

目录 一、下载与安装 1、下载 2、安装 3、打开软件 二、web自动化配置 1、配置chrome浏览器 2、窗口勾选selenium window 三、新建项目(web) 1、新建一个Airtest项目 2、初始化代码 3、打开一个网页 四、恢复默认布局 五、新建项目&#xf…

流程图怎么画?只需这几步就可以搞定!

你在工作中有没有遇到过下面这些问题: 思维混乱,想快速厘清一个项目的逻辑; 想让客户轻松接受自己的设计构思/产品理念等; 产品流程总是百密一疏,经常遗漏了某种用户需求; 想让小伙伴们快速理解一件事&…

软件项目验收测试报告-软件项目验收流程

对甲方而言,项目验收是正式接受项目成果,将项目从建设转为运营。对于乙方来说,则意味着项目的结束,项目资源的释放。 项目验收是项目收尾的重要环节,依据招投标文件、合同对测评相关要求内容、项目章程和项目过程中的…

LATEX中将表格序号和标题放置在两列/一列【已解决】

目录 LATEX中将表格序号和标题放置在两列 LATEX中将表格序号和标题放置在一列 LATEX中将表格序号和标题放置在两列 每个期刊对于表格的要求不一样,发现期刊要求表格的序号列和标题列是两行且标题大写,如下图所示 而我的表格是这样 解决方法: …

使用Haproxy搭建Web群集

1、Haproxy概述。 Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如LVS和Nginx。相比较而言,LVS性能最好,但是搭建相对复杂;Nginx的upstream模块支持群集功能,但是对群集节点健康检查功…

AI未来10年展望

人工智能(AI)在过去十年中迅速发展,其未来有望取得更加引人注目的发展。 在本文中,我们将探讨人工智能的未来 10 年以及我们对未来十年的期望。 我们将解决一些关键问题,以全面概述人工智能的未来。 1、10年后AI会发展…

前端配置开发环境,新电脑配置前端开发环境,Vue开发环境配置的详细过程(前端开发环境配置,电脑重置后配置前端开发环境)

简介:有时候,我们需要在新电脑 或者 电脑重置后,配置前端开发环境,具体都需要安装什么软件和插件,这里来记录一下(文章适合新手和小白,大佬可以带过)。 ✨前端开发环境,需…

前端架构: 脚手架之包管理工具的案例对比及workspaces特性的使用与发布过程

npm的workspaces 特性 1 )使用或不使用包管理工具的对比 vue-cli 这个脚手架使用 Lerna 管理,它的项目显得非常清晰在 vue-cli 中包含很多 package 点开进去,每一个包都有package.json它里面有很多项目,再没有 Lerna 之前去维护和…

重生奇迹MU攻略教学

1:前提是人物等级到80级,没有80级不能使用。 2:杀怪范围,大家不用改,就8吧,但是有时候也会跑很远。 3:技能近战使用,我作为战士,点了和不点没区别。 4:然后…

【国产MCU】-CH32V307-定时器同步模式

定时器同步模式 文章目录 定时器同步模式1、定时器同步模式介绍2、驱动API介绍3、定时器同步模式实例1、定时器同步模式介绍 CH32V307的定时器能够输出时钟脉冲(TRGO),也能接收其他定时器的输入(ITRx)。不同的定时器的ITRx的来源(别的定时器的TRGO)是不一样的。 通用定…

Midjourney是个什么软件?midjourney订阅教程

数字时代,AI的应用正在不断推动各个领域的发展。其中,AI在艺术和设计领域的运用引起了广泛的关注。作为一款爆火的AI绘画软件,Midjourney通过其独特的原理和便捷的使用方法,为创作者提供了一个创作逼真绘画作品的全新平台 1、AI绘…