【RoadRunner】自动驾驶模拟3D场景构建 | 软件简介与视角控制
💯 欢迎光临清流君的博客小天地,这里是我分享技术与心得的温馨角落 💯
🔥 个人主页:【清流君】🔥 📚 系列专栏: 运动控制 | 决策规划 | 机器人数值优化 📚 🌟始终保持好奇心,探索未知可能性🌟
文章目录
- 引言
- 一、RoadRunner 功能概述
- 1.1 创建自定义3D场景
- 1.2 交通信号与流量控制
- 1.3 数据导入与导出
- 1.4 素材库与场景构建
- 二、视角控制基本操作
- 2.1 旋转视角
- 2.2 放大和缩小视角
- 2.3 平移视角
- (1) 水平移动视角
- (2) 垂直移动视角
- 三、视角框定
- 3.1 将视角框在选定的对象上
- 3.2 将视角置于光标上
- 四、更改视图投影
- 五、设置视角视图方向
- 六、总结
- 参考资料
引言
在自动驾驶的世界里,模拟测试是确保车辆在各种复杂环境中安全行驶的关键。今天,我要给大家介绍一款超级强大的工具——RoadRunner
,这是一个创新的交互式编辑器,专为自动驾驶系统的模拟和测试而设计。本篇博客主要介绍 RoadRunner
软件的视角控制。
一、RoadRunner 功能概述
1.1 创建自定义3D场景
RoadRunner
能够在一个完全自定义的 3 D 3D 3D 道路场景中,模拟自动驾驶车辆可能遇到的各种情况。RoadRunner
能够轻松地创建特定区域的路标和标记,无论是添加标志、信号灯、护栏,还是模拟道路损坏,甚至是添加树叶、建筑物等 3 D 3D 3D 模型。
1.2 交通信号与流量控制
RoadRunner
提供了丰富的工具,能够细致地设置和配置交叉路口的交通信号计时、相位和车辆路径。这意味着可以在模拟环境中精确地控制交通流,从而更真实地测试自动驾驶系统的性能。
此外,RoadRunner
还支持激光雷达点云、航拍图像和 GIS
数据的高清可视化,让模拟场景更加逼真。还可以使用 ASAM OpenDRIVE
导入和导出道路网络,确保场景与行业标准保持一致。
1.3 数据导入与导出
使用RoadRunner
构建的 3 D 3D 3D 场景可以导出为多种格式,包括 FBX
、 glTF
、 OpenFlight
、 OpenSceneGraph
、 OBJ
和 USD
,这使得它们可用于各种自动驾驶模拟器和游戏引擎,如 CARLA
、 VIRES VTD
、 NVIDIA DRIVE Sim
、 SVL
、 Baidu Apollo
、 Unity
和 Unreal
Engine
。
1.4 素材库与场景构建
RoadRunner
的素材库提供了大量逼真且视觉一致的 3 D 3D 3D 模型,可快速填充场景。而RoadRunner Scene Builder
更是能从高清地图自动生成 3 D 3D 3D 道路模型,极大地提高了效率。
RoadRunner
使能够编辑跨越数公里或英里的 3 D 3D 3D 环境的大规模和小规模细节。交互式摄像机控制使能够快速有效地在这个巨大的 3 D 3D 3D 空间中导航。本篇博客以一个例子展示 RoadRunner
场景编辑环境中视角控制的基础知识,后续完成地图构建后可导入 Carla
内做自动驾驶模拟仿真。
二、视角控制基本操作
打开一个基本场景来移动视角。从菜单栏中选择 File ,选择 Open Scene ,打开 FourWaySignal.rrscene
,它是 RoadRunner
项目的 Scenes
文件夹中包含的默认场景之一。场景在屏幕中央自上而下展开,倾斜 45 45 45 度角。
2.1 旋转视角
RoadRunner
中的视角控制基于极轴观察模型,其中视角以固定距离围绕兴趣点旋转。默认情况下,当打开新场景时,兴趣点位于原点上方 1.5 1.5 1.5 米,以近似站在场景中心的人的头部位置。该场景的兴趣点位于交叉路口的中心。
可以随时从任何工具中按住 Alt 键或 Windows 键并移动指针,围绕兴趣点旋转视角。
按住
Win
键拖动指针,每次会弹出windows
菜单,不好用,因此推荐使用Alt
键。
按住 Alt 键,点击场景中的任意位置,拖动指针。观察视角旋转相对于兴趣点的变化。
2.2 放大和缩小视角
要放大视角,按住 Alt 和右键,向上或向右拖动指针。相反,要缩小视角,按住 Alt 和右键,向下或向左拖动指针。或者,可以使用鼠标滚轮来放大或缩小。
按住 Alt 和右键,向下拖动指针以缩小。
按住 Alt 和右键,向上拖动指针并一直放大到兴趣点,直到视角停止移动。
按住 Alt 和左键可旋转视角。类似于人站在固定位置环顾四周。
2.3 平移视角
(1) 水平移动视角
要沿地面( x y xy xy )平面水平移动视角,首先按住 Alt 键并按住鼠标左键和右键,拖动指针。或者,可以通过按住中键并拖动指针来移动视角。
(2) 垂直移动视角
对于简单的环境,可以将视角兴趣点的高度设置为默认值。但是,对于更复杂的环境,可能需要向上或向下移动兴趣点。例如,如果正在设计带有桥梁的场景,则可能需要向下移动兴趣点,以便可以在桥下操纵视角。
- 要向上移动视角,按住
Alt + Shift +鼠标左键+鼠标右键
,向下拖动指针。 - 要向下移动视角,按住这些键的同时,向上拖动指针。
或者,可以按住 Alt 、 Shift 和鼠标中键
,上下拖动指针以获得相同的效果。
三、视角框定
3.1 将视角框在选定的对象上
在任何工具中,都可以将视角居中或框定在当前选定的对象上。要将视角置于选定物体的中心,按 F 键。或者,从 View 菜单中,选择 Frame Selected 。
- 缩小场景。按住 Alt 和右键,将指针向下拖动。
-
点击 Road Plan Tool 按钮
以使道路可选。
-
选择较长的道路并按 F 键。视角以较长的道路为中心。
- 选择另一条道路并按下 F 。视角会放大到较短道路的中心。
-
点击 Prop Point Tool 按钮
以使交通灯道具可选。
-
选择一个点道具并按下 F 。视角将放大所选道具。
按住 Alt 点击并拖动来旋转视角时,视角会围绕道具旋转。
-
如果未选择任何视图或对象,按 F 键或从 View 菜单中选择 Frame Selected ,将框住场景中的所有数据,并保留视角角度位置。
-
如果场景是空的,按 F 键或选择 Frame Selected ,将带回到场景编辑画布中的原点。
3.2 将视角置于光标上
可以将视角居中或框定到光标当前所在的位置。要将视角置于光标中心,执行以下步骤:
- 缩小场景。将光标悬停在道路的一端。
- 按 V 。视角拉近到道路的尽头。
四、更改视图投影
RoadRunner
视角可以使用 透视 或 正交 投影。
-
透视投影:默认的观看投影,它会导致远处的物体看起来比近处的物体小。
-
正交投影:与
CAD
工具中的投影类似。它对于通常从自上而下的角度进行精确定位很有用。在正交模式下,对象在靠近或远离时不会改变外观尺寸。
视角控件在两种投影模式下的工作方式相同。
移动视角,使整个交叉路口都在视野中。,按 O 切换到正字法模式。在此模式下,交通信号灯的大小均相同。要在正交模式下放大到特定位置,将光标悬停在该位置上并滚动。这将带到达所需的位置。
按 P 切换回透视模式,远处的交通灯会显得更小。
正交模式(按 O O O) | 透视模式(按 P P P) |
---|---|
![]() | ![]() |
五、设置视角视图方向
可以将摄像机的视图方向设置为正北、南、东、西或自上而下。要更改视图方向,在 View 菜单上选择 Direction ,选择所需的视图方向。或者,可以使用数字键盘快捷键。
使用数字键盘上的这些键更改场景的视图方向。此表显示了当摄像机位于场景及其相应数字键盘快捷键的交叉路口时的示例视图方向。在自上而下的视图中,视角也会旋转到指向北方,相对位置关系如下表所示。
北( 8 键) | ||
西 ( 4 键) | 自上而下( 5 键) | 东 ( 6 键) |
南( 2 键) |
六、总结
在使用 RoadRunner
进行场景编辑时,视角控制是一个重要的功能,能够帮助用户高效地导航和操控复杂的 3 D 3D 3D 环境。通过上述方法,用户可以轻松地旋转、放大、缩小以及移动视角,从而准确定位和调整场景元素。掌握如何将视角框定在选定对象上以及根据光标位置调整视角,有助于提升工作效率。此外,用户可以根据需要切换透视和正交投影,以实现不同的视觉效果和精确度。
通过快捷键和鼠标操作的结合,用户能够灵活地设置视图方向,确保以最佳的角度进行场景设计。这些技巧不仅使得编辑过程更加流畅,还增强了用户对场景整体布局的理解。掌握这些视角控制的基本技能,将大大提高在 RoadRunner
中进行高效设计的能力,使其在交通仿真和规划领域的应用更加得心应手。
参考资料
RoadRunner 官方帮助文档
后记:
🌟 感谢您耐心阅读这篇关于 RoadRunner 软件简介与视角控制 的技术博客。 📚
🎯 如果您觉得这篇博客对您有所帮助,请不要吝啬您的点赞和评论 📢
🌟您的支持是我继续创作的动力。同时,别忘了收藏本篇博客,以便日后随时查阅。🚀
🚗 让我们一起期待更多的技术分享,共同探索移动机器人的无限可能!💡
🎭感谢您的支持与关注,让我们一起在知识的海洋中砥砺前行 🚀
相关文章:

【RoadRunner】自动驾驶模拟3D场景构建 | 软件简介与视角控制
💯 欢迎光临清流君的博客小天地,这里是我分享技术与心得的温馨角落 💯 🔥 个人主页:【清流君】🔥 📚 系列专栏: 运动控制 | 决策规划 | 机器人数值优化 📚 🌟始终保持好奇心&…...

15分钟学Go 第4天:Go的基本语法
第4天:基本语法 在这一部分,将讨论Go语言的基本语法,了解其程序结构和基础语句。这将为我们后续的学习打下坚实的基础。 1. Go语言程序结构 Go语言程序的结构相对简单,主要包括: 包声明导入语句函数语句 1.1 包声…...

【Qt】Qt的介绍——Qt的概念、使用Qt Creator新建项目、运行Qt项目、纯代码方式、可视化操作、认识对象模型(对象树)
文章目录 Qt1. Qt的概念2. 使用Qt Creator新建项目3. 运行Qt项目3.1 纯代码方式实现3.2 可视化操作实现 4. 认识对象模型(对象树) Qt 1. Qt的概念 Qt 是一个跨平台的 C 图形用户界面应用程序开发框架。它是软件开发者提供的用于界面开发的程序框架&#…...

论文笔记:PTR: Prompt Tuning with Rules for Text Classification
Abstract 手动设计大量语言提示麻烦且易出错,而自动生成的提示,在非小样本场景下验证其有效性昂贵且耗时。因此,提示调优以处理多类别分类任务仍然具有挑战。为此,本文提出使用规则进行多类别文本分类提示调优(PTR&…...
服务器和中转机协同工作以提高网络安全
服务器和中转机(代理服务器)可以通过多种方式协同工作来提高网络安全。 常见的协同工作策略: 1. 使用代理服务器作为安全网关 访问控制:代理服务器可以作为网络的入口点,实施访问控制策略,如基于IP地址、…...

Java利用itextpdf实现pdf文件生成
前言 最近公司让写一个数据页面生成pdf的功能,找了一些市面代码感觉都太麻烦,就自己综合性整合了一个便捷的工具类,开发只需简单组装数据直接调用即可快速生成pdf文件。望大家一起学习!!! 代码获取方式&am…...

2010年国赛高教杯数学建模C题输油管的布置解题全过程文档及程序
2010年国赛高教杯数学建模 C题 输油管的布置 某油田计划在铁路线一侧建造两家炼油厂,同时在铁路线上增建一个车站,用来运送成品油。由于这种模式具有一定的普遍性,油田设计院希望建立管线建设费用最省的一般数学模型与方法。 1. 针对两炼…...

datawhale大模型bot应用开发--task3:工作流
目录 一、介绍:Coze工作流 1.1工作流应用场景 1.2什么是工作流 1.3思考环节 二、各个工作流详情 2.1情感分类工作流 2.2 随机数工作流 2.3 必应搜索工作流 2.4 天气查询工作流 三、集合上面五个工作流的总工作流 一、介绍:Coze工作流 1.1工作…...

期货配资系统风控逻辑开发/完整源代码
期货配资系统风控逻辑的开发是确保系统安全、稳定、高效运行的关键环节。以下是对期货配资系统风控逻辑开发的详细分析: 一、风险识别与评估 风险来源分析: 市场风险:期货市场价格波动带来的风险。信用风险:投资者或配资方违约的…...

汽车免拆诊断案例 | 2023款零跑C01纯电车后备厢盖无法电动打开和关闭
故障现象 一辆2023款零跑C01纯电车,累计行驶里程约为2万km,车主进厂反映,后备厢盖无法电动打开和关闭。 故障诊断 接车后试车,操作后备厢盖外侧、驾驶人侧及遥控钥匙上的后备厢盖开启按钮,可以听到后备厢盖解锁的…...
分布式存储架构 与分布式一致性协议
分布式存储架构可以分为无中心节点架构和有中心节点架构。它们的设计在系统中的角色分配、数据管理、协调方式等方面有所不同。 1. 无中心节点架构(Decentralized/Peer-to-Peer Architecture) 在无中心节点的分布式存储架构中,所有节点都是…...

Unity Apple Vision Pro 保姆级开发教程 - Simulator 模拟器使用
教程视频 Apple VisionPro Simulator 模拟器使用教程 VsionOS Simulator 简介 visionOS Simulator 是一个用于开发和测试 visionOS 应用程序的工具。它模拟 Apple Vision Pro 的运行环境,帮助开发者在没有硬件设备的情况下创建、调试和优化他们的应用程序。VisionO…...
Vue 之 插件与组件的区别
在 Vue.js 中,插件(Plugin)和组件(Component)都是用来扩展 Vue 功能的重要工具,但它们的应用场景和使用方式有所不同。本文将通过对比的方式,帮助开发者更好地理解两者的区别,并通过…...

了解 ChatGPT 中的公平性问题
了解 ChatGPT 中的公平性问题 最近,OpenAI 又发布了一篇新的博客。他们谈论了一个有趣又重要的话题——用户的身份如何影响 ChatGPT 的回答。 这项研究揭示了一个鲜明的事实,那就是 AI 可能会无意间对人类产生刻板印象。很可能这些刻板印象源自 AI 训练过程中使用的数据,而这…...
【PHP】安装swoole时报错:No package ‘libbrotlienc‘ found
一、环境 Debian 11(bullseye) PHP 8.2.14 Swoole 5.1.4 二、过程 今天在安装Swoole 5.1.4的时候报错,错误信息如下: configure: error: Package requirements (libbrotlienc) were not met:No package libbrotlienc foundConsider adjusting the PK…...

postgresql执行计划解读案例
简介 SQL优化中读懂执行计划尤其重要,以下举例说明在执行计划中常见的参数其所代表的含义。 创建测试数据 -- 创建测试表 drop table if exists customers ; drop table if exists orders ; drop table if exists order_items ; drop table if exists products ;…...

Matlab实现粒子群优化算法优化随机森林算法模型 (PSO-RF)(附源码)
目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1内容介绍 粒子群优化算法(PSO)是一种启发式搜索方法,灵感来源于鸟类群体觅食的行为。在PSO中,每个解都是搜索空间中的一个“粒子”,这些粒子以一定的速度飞行&am…...
使用 EasyExcel 相邻数据相同时行和列的合并,包括动态表头、数据
前言 在处理 Excel 文件时,经常会遇到需要对表格中的某些单元格进行合并的情况,例如合并相同的行或列。Apache POI 是一个强大的工具,但它使用起来相对复杂。相比之下,EasyExcel 是一个基于 Apache POI 的轻量级 Excel 处理库&am…...
985研一学习日记 - 2024.10.16
一个人内耗,说明他活在过去;一个人焦虑,说明他活在未来。只有当一个人平静时,他才活在现在。 日常 1、起床6:00√ 2、健身1个多小时 今天练了二头和背部,明天练胸和三头 3、LeetCode刷了3题 旋转图像:…...
安装mysql 5.5.62
1>先检查是否存在其他版本mysql rpm -qa|grep -i mariadb 存在则卸载 yum -y remove maria* 2>下载mysql 5.5.62 wget https://cdn.mysql.com/archives/mysql-5.5/mysql-5.5.62-linux-glibc2.12-x86_64.tar.gz 3>确认系统是否安装libaio库 yum -y install libai…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...

html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...

C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...