Hololens(1 代) 入门以及研究模式的避雷指南

2023-10-14 08:30

本文主要是介绍Hololens(1 代) 入门以及研究模式的避雷指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

HoloLens是微软公司开发的一种混合现实的头戴显示器,可以通过这个做一些混合现实的工作。最近想使用Hololens做一些东西,所以入了Hololens的坑,在这里记录一下自己研究使用hololens的参考资料和自己遇到的坑,其中不会涉及非常细节的部分,但是会讲述在配置环境或者开发中可能遇到的问题。如果你是想在Unity开发环境中使用Hololens的传感器数据,可以直接参考本文的第二部分。

文章目录

  • 一、入门
    • 1. 配置环境
    • 2. 使用Unity开发
      • 官方教程:Unity入门
      • MR Basics 101教程
  • 二、使用研究模式
    • 1. 设置
    • 2. 下载API以及运行示例程序
    • 3. 在Unity中使用API

一、入门

1. 配置环境

首先,去微软官方看一下

混合开发简介: https://docs.microsoft.com/zh-cn/windows/mixed-reality/development?tabs=unity

然后按照教程以下安装开发工具

安装开发hololens所需要的工具: https://docs.microsoft.com/zh-cn/windows/mixed-reality/install-the-tools?tabs=unity

其中MRTK对于第一代Hololens而言不是必须的,但是对于开发应用而言是一个非常便捷的工具,目前而言我没有使用MRTK,可能之后会用到。

2. 使用Unity开发

官方教程:Unity入门

安装完所有工具之后,首先要测试所有环境是否搭建成功,可以通过

官方教程:Unity入门: https://docs.microsoft.com/zh-cn/windows/mixed-reality/holograms-100

建立一个Unity项目然后按照教程搭建一个场景,最终导出一个Visual Studio 解决方案,到这里都是没有问题的。其中可能存在的问题在于如何将vs项目部署到hololens上,这里我是使用usb部署到hololens上的,第一次配对的时候需要输入pin码,在hololens的设置中找到开发者选项,下滑有一个Paired device。

另外值得说的是,对于使用usb将hololens连接上电脑之后,在电脑浏览器网页输入http://127.0.0.1:10080 就能够进入设备门户的首页了,第一次连接时会让你创建一个用户名和密码,随便创建一个就行。

hololens设备门户

在这里你能够看到hololens设备中的各种信息。具体可以参照这里

MR Basics 101教程

接下来就是走一遍MR Basics 101教程,这个教程会简单的介绍一些开发用到的交互控制,还是比较好的,但是这个教程里面还是有一些坑,下面记录了我遇到的部分坑:

**第一章中:**导入项目时,提示:HoloLens SpatialMapping not available

error CS0246: The type or namespace name 'SpatialMappingRenderer' could not be found (are you missing a using directive or an assembly reference?)

这是unity新版本打开旧版代码的bug,只需要打开 Edit->Project Settings->player,在右侧下滑到最后找到XR Settings,取消复选框Virtual Reality Supported ,然后再选中,这些就会重新加载一些之前没有引入的类,报错便会消失了。

**第六章中:**当在场景中加入预制体Spatial Mapping的时候,点击运行会提示

NullReferenceException: Object reference not set to an instance of an object
SpatialMapping.Start () (at Assets/Holograms/Support/Spatial Mapping/SpatialMapping.cs:81)

这是因为一些组件遗失了,只需要在预制体Spatial Mapping中添加两个组件: Spatial Mapping Collider 和 Spatial Mapping Renderer即可。

虽然这个时候点击运行会产生报错:

HoloLensWorldManager failed to return a world coordinate system!
UnityEngine.XR.WSA.SpatialMappingBase:Start()

这可能是因为没有设备,所以无法获得世界坐标系,忽略这个报错,直接build然后部署在hololens上就能够看到线框表示的空间映射了。

二、使用研究模式

总体而言第一部分坑还是比较少的,最大的坑在于Hololens的研究模式,首先说一下为什么使用hololens的研究模式,因为hololens的普通开发模式中无法得到传感器(深度、红外)获得的数据,因为特别为想使用传感器数据的人员提供了研究模式。但是,这个模式的坑还是非常多的,而且因为现在hololens2已经出来了,所以hololens1中的研究模式已经不怎么维护了。

1. 设置

设置过程直接参考官网的设置教程即可

2. 下载API以及运行示例程序

HoloLensForCV代码下载,在看代码之前建议先阅读一下Tutorials文件夹下的文档,里面有一些关于hololens的介绍,还是挺不错的,此外还可以看介绍这个文档的视屏,在YouTube中可以搜到。

从这里开始,坑就开始多起来了!首先研究模式其实只是微软提供的一些API,而且并没有说明文档。不过代码非常的规范,可读性还行…

下载项目工程打开后应该是下面的样子
项目列表

经过测试如果使用vs2019打开的话,会出现各种问题,可能是因为win10 sdk的版本问题,所以我最终又安装了一个vs2017,纯暴力解决问题。

vs2017打开之后,点击运行,hhh还是运行不成功,但是报错就不太一样了,可能会显示

“警告被视为错误。不会生成’object’文件“

这个问题比较好解决:

  • 打开C ++项目的属性,然后一般转到C / C ++
  • 将“将警告视为错误”更改为“否”
  • 所有C ++项目都做以上操作(可以批量操作,不用一个一个的点)

设置好项目运行的设置:一般来说部署在hololens上的设置肯定都是 release/ x86 / device, 在电脑本机上运行的项目的设置是release/ x86 / local Machine

这样就能够成功运行项目了,Samples和Tools目录中的项目时可以直接运行或者部署在hololens上的,第一次部署建议直接部署SensorStreamerViewer项目,然后再hololens上就能够看到各种传感器的数据了。Shared目录中的部分就是微软提供的API了,我们需要用的主要是在HololensForCV工程下。

3. 在Unity中使用API

运行这些工程成功之后,感觉春天要来了,然而,现实总是如此残酷!!!仅仅是运行成功这些项目是没有用的,别忘了,我们的目的是想hololens的开发中使用传感器数据,hololens主要的开发环境还是Unity,那么如何在Unity中使用这些API就非常重要了,在我阅读完github上HololensForCV的所有issues之后,我发现有个老哥已经解决了这个问题,真是人间仙子啊。

这个是他的示例程序,README.md中已经很清楚的介绍了如何配置和运行这个项目,这里就不赘述了,直接点开看就行。

HololensForCV-Unity项目: https://github.com/doughtmw/HoloLensForCV-Unity

这个项目提供了一个优秀的示例,但是我具体使用的时候还是存在一些问题:

  1. 获取深度异常:这个是因为当时并没有好好看HololensForCV的API,吃了个小亏。在API中深度传感器将深度信息保存为两个字节即gray16的类型,而我读取的时候仅仅读取了高8位的深度信息,造成画面全黑的情况。
  2. 程序经常崩溃:这是因为截止至2020/9/25日时,其HololensForCV-Unity的项目中SensorStreams.cs脚本存在一些问题。于是乎,我就在该项目下提问,没想到这个有一个老哥哥非常热心,回复的很认真。最终最他的指导下解决了这个问题。

这里是我向他提问的问题描述以及解决方案。

至此,终于能够进行下一步的工作了!比如,通过传感器如何获得彩色点云信息,这样就可以把hololens当成一个扫描仪了,可以参考这个issue,当然具体实践起来中间还会遇到一些困难。

目前我仍然在继续探索hololens的研究模式,希望我遇到的坑能够帮助到你。

这篇关于Hololens(1 代) 入门以及研究模式的避雷指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/209323

相关文章

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum