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

news2024/10/6 6:43:38

文章目录

  • 前言
  • 一、通过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网上比较多资源,也比较容易安装,可以绘制日常仿真使用的地图,有时间的可以安装学习一下。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文件拖放到窗体事件

网上的实现1 实现结果 具体实现代码:注意需要使能允许拖拽 public partial class Form1 : Form {public Form1(){InitializeComponent();this.AllowDrop true; //允许拖拽}private void Form1_DragEnter(object sender, DragEventArgs e){this.Text DateTime.No…

结合CMD文件,将变量写到ROM和Falsh中

结合CMD文件,将变量写到ROM和Falsh中 RAM是一种易失性存储器,它用于临时存储计算机程序和数据。当计算机关闭或断电时,RAM中的数据将丢失。RAM具有很快的读写速度,但容量有限。 Flash是一种非易失性存储器,它可以长期存储数据而不会丢失。Flash存储器通常用于存储操作系统…

【Linux】云服务器的Redis被黑

📝个人主页:五敷有你 🔥系列专栏:Linux ⛺️稳中求进,晒太阳 攻击发现: 这个异常情况是在腾讯云被入侵后,短信提醒发现的。并没有系统的学习过关于服务器安防相关的知识,遇到…

【ElfBoard】基于 Linux 的智能家居小项目

大家好,我是 Hello阿尔法,这段时间参与了保定飞凌嵌入式技术有限公司举办的 ElfBoard 共创社招募活动,并有幸成为了一名共创官,官方寄来了一块 ELF 1 开发板,开箱看这里 ELF 1 开箱初体验。 作为共创官,我…

❤ git操作Github、git操作github

❤ git操作Github 1、设置用户名和邮件地址 git config --global user.name "nexuslin" git config --global user.email "2455067339qq.com"2、生成本地密钥 ssh-keygen -t rsa -C 2455067339qq.com3、接下来就一直回车,然后再去 C:\Users…

VR危险环境模拟介绍|VR虚拟现实设备

VR危险环境模拟是指利用虚拟现实技术来模拟和展现各种危险环境,以便训练人员应对紧急情况、提高安全意识和应急反应能力。这种模拟可以涉及到工业、医疗、紧急救援等多个领域,旨在帮助人们在真实环境中面对危险时能够做出正确的应对和决策。 VR危险环境…

进销存是什么意思?如何开发一款进销存管理系统?

这篇给大家详细介绍一下,进销存到底是什么,进销存管理系统有什么用?企业如何开发一款进销存管理系统? 以下内容示例工具均来自于JDY——https://www.jiandaoyun.com 一、进销存是什么? 1、基本概念 进销存&#xff0…

Redis 协议与异步方式

redis pipeline 模式 redis pipeline 是一个客户端提供的机制,与 redis 无关。pipeline 不具备事务性。目的:节约网络传输时间。通过一次发送多条请求命令,从而减少网络传输时间。 时间窗口限流 系统限定某个用户的某个行为在指定的时间范围…

华为HCIP Datacom H12-821 卷2

1.单选题 下面关于 OSPF 中的 ABR,描述措误的是 A、ABR 不能够产生三类、四类、五类 LSA B、将连接的非骨干区域内的一类、二类 LSA 转换成三类 LSA,发布到骨干区域中 C、ABR 格骨干区城内的一类、二类 LSA.三类 LSA 转换成三类 LSA, 发布到连接的非骨干区域中 …

【系统分析师】-软件工程

1、信息系统的生命周期 1、四阶段划分 立项阶段:企业全局、形成概念、需求分析。包含【系统分析师】-系统规划-CSDN博客开发阶段:总体规划--系统分析--设计--实施--验收运维阶段:通过验收、移交之后消亡阶段:更新改造、功能扩展…

【Excel PDF 系列】iText 库直接实现表格 PDF

你知道的越多,你不知道的越多 点赞再看,养成习惯 如果您有疑问或者见解,欢迎指教: 企鹅:869192208 文章目录 前言生成表格 PDF 效果引入 pom 配置代码实现定义 CreateExcelToPdfModel 对象主方法 前言 最近遇到生成 E…

web学习笔记(二十一)

目录 1.构造函数创建对象 1.1规则 1.2 new关键字调用构造函数时,函数内部做了什么事情? 1.3总结 2.混合模式创建对象 3.JavaScript 继承---借助构造函数 4.原型链 4.1原型链实现方法继承 5.完美的组合继承 6.call方法的使用 1.构造函数创建对象…

1、docker入门

文章目录 1、tocker简介2、tocker的安装&环境配置2、配置阿里云镜像3、基本命令1、镜像命令2、docker基本命令3、镜像基本命令4、Docker 容器常用命令 1、tocker简介 新一代的虚拟化技术 2、tocker的安装&环境配置 uname -r1、首先查看liunx的内核 yum update -y2、更…

Nginx----高性能的WEB服务端(四)

一、http 协议反向代理 1、反向代理:缓存功能 ​ proxy_cache zone_name | off; 默认off #指明调用的缓存,或关闭缓存机制;Context:http, server, location #zone_name 表示缓存的名称.需要由proxy_cache_path事先定义proxy_cache_key string; #缓存中…

刚刚:阿里云服务器降价了!2024云服务器优惠价格表曝光!

2024阿里云服务器优惠活动政策整理,轻量2核2G3M服务器61元一年、2核4G4M带宽165元1年,云服务器4核16G10M带宽26元1个月、149元半年,阿里云ECS云服务器2核2G3M新老用户均可99元一年续费不涨价,企业用户2核4G5M带宽199元一年&#x…

如何开展有效的绩效面谈

绩效面谈作为绩效管理的核心环节,其重要性不容忽视。它不仅是评价员工过去一段时间工作表现的环节,更是为下一阶段绩效管理设定目标和方向的环节。然而,许多企业在实施绩效面谈时,往往仅停留在形式上,没有真正地发挥其…

16. QML中的一些粒子特效

1.说明 在使用unity开发游戏时,都会涉及到一些特效的开发。实际上在QML中也提供了一些可以做特效的控件,称之为粒子系统。本篇博客主要记录一些使用粒子做特效的方式。 特效–火焰效果: 2. 案例汇总 2.1 案例1 效果展示: 粒子…

仿牛客网项目---用户注册登录功能的实现

从今天开始我们来写一个新项目,这个项目是一个完整的校园论坛的项目。主要功能模块:用户登录注册,帖子发布和热帖排行,点赞关注,发送私信,消息通知,社区搜索等。这篇文章我们先试着写一下用户的…

风速预测(七)VMD-CNN-BiLSTM预测模型

目录 往期精彩内容: 前言 1 风速 VMD 分解与可视化 1.1 导入数据 1.2 VMD分解 2 数据集制作与预处理 3 基于Pytorch的VMD CNN-BiLSTM 预测模型 3.1 定义VMD CNN-BiLSTM预测模型 3.2 设置参数,训练模型 4 模型评估与可视化 4.1 结果可视化 4.2…

蓝桥杯-常用STL(三)

常用STL 🎈1.映射🎈2.map的基础使用🔭2.1引入库🔭2.2构造一个映射🔭2.3插入一对映射🔭2.4判断关键字是否存在🔭2.5遍历映射🔭2.6清空 🎈1.映射 🔎映射是指两个…