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 carlaclient = 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 carlaclient = 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 = 1ego_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.mzph.cn/news/708363.shtml

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

相关文章

2W字-35页PDF谈谈自己对QT某些知识点的理解

2W字-35页PDF谈谈自己对QT某些知识点的理解 前言与总结总体知识点的概况一些笔记的概况笔记阅读清单 前言与总结 最近,也在对自己以前做的项目做一个知识点的梳理,发现可能自己以前更多的是用某个控件,以及看官方手册,但是没有更…

springboot + shiro + jwt权限验证

JWT (Json Web Token)是一种开放标准(RFC 7519),用于在不同系统之间传递安全声明(例如身份验证信息)的一种紧凑且自包含的方式。是轻量级的、跨平台的、自包含的(含有足够的信息&…

深入探究【观察者模式】:简单音乐会售票系统案例分析

文章目录 1.观察者模式概述基本概念:工作原理: 2.案例-音乐会抢票2.1.具体实现2.1.1.被观察者接口2.1.2.被观察者实现类2.1.3.定义观察者接口2.1.3.定义观察者实现类2.1.4.测试观察者 3.总结3.1.优点和局限性3.2.思考 1.观察者模式概述 观察者模式是一种…

如何远程访问内网数据库?

远程访问内网数据库是在安全可靠的前提下,能够实现从外部网络访问内网数据库的一种技术。在现代信息化的背景下,随着企业发展和分布式办公的普及,远程访问内网数据库成为了一项必需的技术。通过远程访问内网数据库,企业可以在不同…

2.3~2.7碎片

P是位置,v是速度

弹窗内容由后端返回,如何让点击按钮的事件交由前端控制?

一、场景 背景:因为系统里经常有新活动或者公告需要通知所有用户,希望前端维护的这个弹窗里的内容可以由后端接口返回。这样就不需要每次上新活动的时候,前端项目都发版了。因此,前端维护了这个弹窗和它的关闭事件,至…

qt5.15 升级 qt 6.5 部分问题 解决修复

报错 QT5_USE_MODULES 升级 QT6_ADD_RESOURCES qt_add_resources Compiles binary resources into source code. CMake Commands in Qt6 Core | Qt Core 6.6.2

用Flutter开发App:助力您的移动业务腾飞

一、Flutter简介 Flutter是Google推出的用于构建多平台应用程序的开源UI框架。它使用Dart语言编写,可以编译为原生机器代码,从而提供卓越的性能和流畅的用户体验。 二、Flutter的优势 一套代码,多平台部署:Flutter可以使用一套代…

《互联网的世界》第二讲-最短路径优先

昨天讲 dns 时讲过,“你问一个当地人最近的厕所在哪,路人给你一个地址…”,可是只有地址还不够,如何到达那里呢?这是本节的内容。 自然的方式是,一边走一边问,根据路人的指示继续一边走一边问…

Redis(理论版)

Redis 1.Redis是什么 Redis其实就是一个数据库,它是一个文档型数据库(非关系型数据库),而mysql是一个关系型数据库。它是一个开源的、基于内存的高性能键值存储数据库,支持多种数据结构,广泛用于缓存、消息队列、应用…

德人合科技 | 天锐绿盾终端安全管理系统

德人合科技提到的“天锐绿盾终端安全管理系统”是一款专业的信息安全防泄密软件。这款软件基于核心驱动层,为企业提供信息化防泄密一体化方案。 www.drhchina.com 其主要特点包括: 数据防泄密管理:天锐绿盾终端安全管理系统能够确保数据在创…

ant 布局组件 组件等高设置

背景: 想实现一个和content等高的侧边栏,并增加侧边栏导航。 ant组件概述 Layout:布局容器,其下可嵌套 Header Sider Content Footer 或 Layout 本身,可以放在任何父容器中。Header:顶部布局&#xff0c…

CUMT---图像处理与视觉感知---期末复习重点

文章目录 一、概述 本篇文章会随课程的进行持续更新中! 一、概述 1. 图像的概念及分类。  图像是用各种观测系统以不同形式和手段观测客观世界而获得的、可以直接或间接作用于人的视觉系统而产生的视知觉实体。  图像分为模拟图像和数字图像:(1) 模拟图…

51单片机(6)-----直流电机的介绍与使用(通过独立按键控制电机的运行)

前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。 目录 一. 直流电机模块介绍 1.直流电机介绍 2.电机参数 二. 程序设计…

C语言创建json数据

在C语言中创建JSON数据可以使用第三方库,比如 cJSON。cJSON是一个轻量级的JSON解析器和生成器,可以用于创建、解析和操作JSON数据。 以下是使用cJSON库创建JSON数据的步骤: 首先,你需要下载并包含cJSON库的头文件。你可以在cJSO…

Python set 集合中的内置方法介绍及其示例

python set 的所有内置方法 本文详细介绍了Python中set集合的内置方法及其示例。Set(集合)是Python中一种无序且不重复的数据结构,用于存储唯一的元素。它提供了一系列内置方法,用于操作集合,如添加、删除、交集、并集…

JAVA泛型浅析

Java范型generics,是JDK1.5引入的新特性,是一种编译时类型安全检测机制,可以在编译时检测到非法的类型。范型的本质是将类型参数化,将类型指定成一个参数。java中的集合就有使用,并且对外提供的三方库和SDK中使用也极为…

返回数据(返回视图所需要的数据)

在上篇文章中,小编带领大家了解到:返回静态数据-CSDN博客,但是,仅仅返回一个静态页面,对于静态页面的数据没正常返回! 所以,本篇文章便讲述如何返回数据?? 还是先不管前…

从win11切换到ubuntu20的第1天

我不想做双系统,反正win11也没有意思,打游戏直接去网吧,所以电脑直接重装了ubuntu20,为什么不是ubuntu22?因为版本太新,很多东西不支持。为什么不装ubuntu18?因为我电脑装完了之后不支持外界显示…

敏捷开发最佳实践:质量维度实践案例之软硬一体持续交付

在过去的Top敏捷实践案例中,我们可以看到企业或团队在敏捷质量管理上的创新,包括场景化测试、迭代T1自动化覆盖、一套自动用例到处运行、用例持续运行可视化等,而这也进一步促进了价值流动。本文将继续给大家带来全新的质量维度实践案例&…