ARKit : 苹果推出的AR开发平台
ARCore : Google 推出的增强现实 SDK
ARFoundation : ARFoundation是ARKit XR插件和ARCore XR插件 的集合
vuforia : 高通推出的针对移动设备扩增实境应用的软件开发工具包
EasyAR : 国内 上海视辰信息 增强现实(AR)互动营销技术和解决方案
2017年,Apple公司与Google公司相继推出了各自的AR开发SDK工具包ARKit和ARCore,分别对应iOS平台与Android平台AR开发。ARKit和ARCore推出后,极大的促进了AR在移动端的普及发展,将AR从实验室带入到普通消费场景中。由于当前的移动手机操作系统主要由iOS与Android两大系统统治,ARKit和ARCore分别服务于各自己的系统平台,这意味着软件产商要开发一套移动AR应用就必须使用ARKit开发一个iOS版本、使用ARCore开发一个Android版本,这无疑增加了开发时间与成本。
ARCore提供了Android、Android NDK、Unity、Unreal开发包,ARKit官方只提供了Xcode开发包,这也提高了利用其他工具进行开发的开发者学习成本。在这种情况下,Unity构建了一个AR开发平台,这就是ARFoundation,这个平台架构于ARKit和ARCore之上,其目的就是利用Unity的跨平台能力构建一种与平台无关的AR开发环境,换句话说,ARFoundation对ARKit与ARCore进行了再次封装,并按照用户的发布平台自动选择合适的底层SDK版本。
因此,ARFoundation是ARKit XR插件(com.unity.xr.arkit)和ARCore XR插件(com.unity.xr.arcore)的集合,虽然最终都使用ARKit SDK和ARCore SDK,但因为Unity再次封装的缘故,与专业平台(如ARKit插件和ARCore SDK for Unity)相比,C#调用的API略有不同。
ARFoundation的目标并不局限于ARKit与ARCore,它的目标是建成一个统一、开放的AR开发平台,因此,ARFoundation极有可能在下步发展中纳入其他AR SDK,进一步丰富AR开发环境。在进一步的发展中,ARFoundation不仅支持移动端AR设备,还会支持穿戴式AR设备开发。
从上面的描述我们也可以看出,ARFoundation它并不提供AR的底层开发API,这些与平台相关的API均由第三方如ARKit与ARCore提供,因此ARFoundation对某特定第三方功能的实现要比原生的晚(ARFoundation将某第三方SDK的特定功能集成需要时间)。
ARFoundation提供了一个独立于平台的脚本API和MonoBehaviour,因此,开发者可以通过ARFoundation使用ARCore和ARKit共有的核心功能构建同时适用于iOS和Android两个平台的AR应用程序。换句话说,这可以让开发者只需开发一次应用,就可以部署到两个平台的设备上,不必做任何改动。
如前所述,ARFoundation实现实现某底层SDK的功能会比原生的晚,因此,如果我们要开发ARFoundation尚不支持的功能,可以单独使用对应的原生SDK。目前,如果我们只面向ARCore进行开发并希望获取完整的功能集,Google为Unity开发提供了ARCore SDK for Unity;如果只面向ARKit进行开发并希望获取完整的功能集,Unity提供了适用于Unity开发的ARKit插件(Apple并未提供Unity的ARKit SDK开发插件,在ARFoundation发展起来以后,Unity肯定不会再继续维护ARKit插件)。
ARFoundation与ARCore、ARKit的关系如下图所示:
2018年10月Unity发布AR Foundation 1.0版本,支持平面追踪、特征点云检测、参考点/锚点、设备追踪、光照估计、射线碰撞。
2019年5月,AR Foundation 2.1 支持图像追踪、物体追踪、面部追踪、环境探针。
2019年6月,AR Foundation 3.0 支持 ARKit 3.0,新增动作捕捉、人物遮挡、多人协作等功能。
2019年9月[MOU1] ,AR Foundation 支持 Magic Leap 以及 HoloLens 1 和 2 。
2019年11月,SenseAR正式集成进了Unity中国增强版2018.4.11C版本中。
设备跟踪:跟踪设备在物理空间中的位置和方向。
平面检测:检测水平和垂直表面。
点云:世界坐标空间中的点的集合。
锚点:设备跟踪的任意位置和方向。
光线估算:估算物理空间中的平均色温和亮度。
环境探针:一种用于生成表示物理环境特定区域的立方体贴图的方法。视频链接: https://live.csdn.net/v/embed/163218
人脸跟踪:检测和跟踪人脸。
2D图像跟踪:检测和跟踪2D图像。
3D对象跟踪:检测3D对象。
网格划分:生成与物理空间相对应的三角形网格划分。
身体追踪:在物理空间中识别出的人类的2D和3D表示。
多人协作:在共享的AR体验中跟踪其他设备的位置和方向。
人体分割和遮挡:将距离现实世界中的对象的距离应用于渲染的3D内容,从而实现物理对象与虚拟对象的逼真的融合。https://www.bilibili.com/video/av455309216/
射线广播:查询物理环境中检测到的平面和特征点。
直通视频:优化了将移动摄像机图像渲染到触摸屏上作为AR内容的背景。
会话管理:启用或禁用AR功能时自动对平台级配置进行操作。
遮挡:在真实场景中的位置实现虚拟物体遮挡 视频资源: https://v.qq.com/x/page/g3104nljtqb.html
2017年9月 ARKit 1.0:支持环境光照估测、用户设置锚点、追踪状态更改、AR会话中断和恢复的事件通知等。
2018年3月 ARKit 1.5: 新增垂直平面识别、图像识别、图像分辨率提升50%等。
2018年9月 ARKit 2.0:新增多个玩家联机、图像跟踪、3D对象识别、usdz格式文件和测距仪APP等。
2019年9月 ARKit 3.0:新增人体轮廓抠图、人体四肢识别、原型化和制作AR内容的Reality Composer工具软件等。
2020年3月 ARKit 3.5:新增场景几何体、即时增强现实、定位跟踪配置等。
2020年9月 ARKit 4.0:新增深度API、定位锚、增加面部跟踪支持的设备。
**ARKit 4.0:**运行iOS 14,配置了A12芯片的设备
**ARKit 3.5:**运行iPadOS 13.4,配置了激光雷达扫描仪的第四代iPad Pro
**ARKit 3.0:**运行iOS 13,人体抠图和人体识别需要A12芯片
**ARKit 2.0:**运行iOS 12,芯片要求A9以上
**ARKit 1.5:**运行iOS 11.3,芯片要求A9以上
**ARKit 1.0:**运行 iOS 11,芯片要求A9以上
芯片数据:https://www.apple.com.cn/ipad/compare/
5.3 ARKit支持iPad
ARKit 1和ARKit 2需要设备是A9、A10、A11芯片,ARKit 3的人体抠图和人体识别需要A12芯片。
1、12.9英寸iPad Pro
第三代 A12X
第二代 A10X
第一代 A9X
2、11英寸iPad Pro
A12X
3、9.7英寸iPad Pro
只销售了3个月,Apple官网未显示该款产品。
4、iPad Air
第三代 10.5英寸 A12
第二代 9.7英寸 A8X 不支持ARKit
第一代 9.7英寸 A7 不支持ARKit
5、9.7英寸 iPad
第六代 A10
第五代 A9
6、7.9英寸 iPad mini
第五代 A12
第四代 A8 不支持ARKit
第三代 A7 不支持ARKit
第二代 A7 不支持ARKit
ARWorldTrackingConfiguration
世界跟踪配置(6DOF),只能使用后置摄像头,需要iOS 11以上。图像识别和垂直平面识别,需要iOS 11.3以上。
ARFaceTrackingConfiguration
人脸跟踪配置,只能使用前置的TrueDepth摄像头,需要iOS 11以上。
AROrientationTrackingConfiguration
方向跟踪配置(3DOF),只能使用后置摄像头,需要iOS 11以上。
ARImageTrackingConfiguration
图像跟踪配置,只能使用后置摄像头,需要iOS 12以上。
ARImageTrackingConfiguration与ARWorldTrackingConfiguration的区别如下:
1、ARImageTrackingConfiguration当图像快速移动时,也能跟踪上,而ARWorldTrackingConfiguration当图像缓慢的移动,才能跟踪上。
2、ARWorldTrackingConfiguration依赖IMU(惯性测量单元),当周围环境发生运动时,无法正常工作。比如用户在交通工具上,AR显示的虚拟物体会飘走。
3、当使用ARImageTrackingConfiguration时,无法使用ARWorldTrackingConfiguration,也就无法使用ARWorldTrackingConfiguration的水平面识别。
ARObjectScanningConfiguration
对象扫描配置,只能使用后置摄像头,需要iOS 12以上。
ARBodyTrackingConfiguration
人体跟踪配置,只能使用后置摄像头,需要iOS 13以上和A12芯片。
配置要求: https://developer.apple.com/documentation/arkit/arconfiguration
ARCore 要求:
运行在搭载 Google Play 应用商店的设备上
Android 7.0 或更高版本 (如下所示,个别型号需要更高的版本)
若你的应用为AR可选应用, 请修改 minSdkVersion 声明: ‘minSdkVersion≥
14` (API Level 14, Ice Cream Sandwich, version 4.0.1 - 4.0.2)
若你的应用为AR必备应用, 请修改 minSdkVersion 声明: minSdkVersion
≥ 24
(API Level 24, Nougat, version 7.0)
在中国,设备不搭载 Google 应用商店。 您可以从以下应用商店中选择其一来安装 ARCore:
Xiaomi app store (小米应用商店)
Huawei Apps Gallery (华为应用商店)
OPPO APP Market (OPPO 软件商店)
Samsung Galaxy Apps (三星应用市场)
V-Appstore (vivo应用商店)
在中国区域,ARCore 支持以下设备:
谷歌官方查看支持ARCore设备地址:https://developers.google.cn/ar/devices
配置相关 : https://zhuanlan.zhihu.com/p/330235815
返回状态:
namespace UnityEngine.XR.ARFoundation
{
/// <summary>
/// Represents the current state of the AR system.
/// </summary>
public enum ARSessionState
{
/// <summary>
/// The AR system has not been initialized. Availability is unknown.
/// <see cref="ARSession.CheckAvailability"/>.
/// </summary> AR系统尚未初始化,可用性未知。
None,
/// <summary>
/// AR is not supported on the current device.
/// </summary> 当前设备不支持AR。
Unsupported,
/// <summary>
/// The system is checking for the availability of AR.
/// <see cref="ARSession.CheckAvailability"/>.
/// </summary> 系统正在检查当前设备上AR的可用性。
CheckingAvailability,
/// <summary>
/// AR is supported, but requires an additional install.
/// <see cref="ARSession.Install"/>.
/// </summary> 当前设备支持AR,但是AR支持需要安装其他软件。
NeedsInstall,
/// <summary>
/// AR software is being installed. <see cref="ARSession.Install"/>.
/// </summary> 正在安装AR软件。
Installing,
/// <summary>
/// AR is supported and ready.
/// </summary> AR已支持并准备就绪。
Ready,
/// <summary>
/// An AR session is initializing (i.e., starting up). This usually means AR is working
/// but has not yet gathered enough information about the environment.
/// </summary> AR会话正在初始化(即正在启动)。这通常意味着AR正在运行,但尚未收集到足够的有关环境的信,
SessionInitializing,
/// <summary>
/// An AR session is running and is tracking (i.e., the device is able to determine its
/// position and orientation in the world).
/// </summary> AR会话正在运行并且正在跟踪(也就是说,设备能够确定其在世界上的位置和方向)。
SessionTracking
}
}
三方插件: https://zhuanlan.zhihu.com/p/335236675
目前世界上主流的AR SDK提供厂商,国外的主要是Vuforia、Metaio,国内的主要是EasyAR。其中Metaio在2015年5月已被Apple重金收购,之后就没有再对外公开过SDK,经过两年的封闭开发,Apple已经打造出了强大的ARKit,能够基于庞大的iOS和iPad设备生产出各种惊艳的AR产品。Vuforia也在2015年11月被PTC公司重金收购,但是后续一直在更新并提供SDK,因此在ARKit普及之前,Vuforia一直是开发者最青睐的AR SDK,众多的功能以及高质量的识别技术,良好的跨平台性和兼容性,兼容目前主流的PC,Android,IOS平台.使得Vuforia早已深入人心,是学习AR应用开发的必备技能。
这个引擎是一个静态链接库,作为客户端封装进最终的App中,用来进行最主要的识别功能,支持iOS、Android和UWP,并且根据不同的平台开放出了不同的SDK,可以根据需要从Android Studio、Xcode、Visual Studio以及Unity中任选一种作为开发工具。本系列是以Unity为开发工具,因为Unity本来就是个游戏引擎,对3D模型的导入以及控制非常方便,非常适合开发AR程序;
Vuforia提供了一系列的工具,用来创建对象、管理对象数据库以及管理程序licenses。Target Manager是一个网页程序,开发者在里面创建和管理对象数据库,并且可以生成一系列的识别图像,用在AR设备以及云端上。Licenses Manager用来创建和管理程序licenses,因为每一个AR程序都有一个唯一的licenses。Vuforia Object Scanner是Vuforia近段时间新出的工具,用来进行十分黑科技的功能–实物扫描,但是很遗憾目前只支持某些Android设备。
当你的AR程序需要识别数量很庞大的图片对象,或者你的对象数据库需要经常更新,可以选择Vuforia的云识别服务。Vuforia Web Services可以让你很轻松的管理数量庞大的对象数据库,并且可以建立自动的工作流。
4.1 Image Targets(图像目标)
4.2 Cylinder Targets(圆柱体目标)
识别形状类似于圆柱形的图片,可以将这些图片贴到一些圆柱形物体上比如瓶子、杯子等等,进行识别。
4.3 Multi Targets(多目标)
多对象识别,可以同时识别多张Image Targets,并且可以把它们和几何立体物体结合起来,比如一个纸盒子,或者任意形状的平面。
4.4 Model Targets(模型目标)
通俗点说就是3D物体的识别,也就是形状的识别。这个技术相对于传统的印刷媒体、产品包装的Image Targets识别来说,它能够更详细直观地展示产品的功能和设计。展示的内容可以准确地被附加到物体上,例如汽车、家电以及工业设备和机械设备。这个技术有望取代传统的用户手册和技术服务指导。
4.5 VuMark
这是Vuforia自己研发的一种新型条形码,并且被称为下一代条形码,你能够自己随意设计这种条形码的样式,并且在其中融入相关的数据信息。
4.6 Cloud Rec(云识别)
当你的AR程序需要识别数量很庞大的图片对象,或者你的对象数据库需要经常更新,可以选择Vuforia的云识别服务。Vuforia Web Services可以让你很轻松的管理数量庞大的对象数据库,并且可以建立自动的工作流。
4.7 Ground Plane
随着ARKit和ARCore的发布,这个功能大家应该比较能够理解,下一个版本的Vuforia也将具有类似功能。使用Vuforia,你也可以将增强显示的内容放置到一些平面上,例如地板、桌面以及地面等,不管是在室内还是室外均可。
4.8 User Defined Targets(用户自定义目标)
用户从画面选择元素作为自定义目标,进行扫描与追踪
4.9 Virtual Buttons(虚拟按钮)
虚拟按钮是图像上的目标,用户可以在现实世界中触摸,以触发交互动作。
Vuforia提供了三种类型的Database,分别是Device、VuMark和Cloud。这三种类型都各有自己的优势,在开发产品时需要根据需求来选择不同的Database:
包含了安装在设备本地的图片以及3D模型对象的数据库,可以开发Image Target(图片识别)、Multi Targets(多对象识别)、Cylinder Targets(圆柱图像识别)以及Object Target(3D模型识别)。当你的产品需要最快速的图像识别,而且图片对象小于1000张,并且数据库中的对象不会经常更新,那么Device Database就是最好的选择。如果需要开发识别真实3D物体识别的产品,那就只能选择Device类型的。
包含了存储于网络云服务器上的对象的数据库,需要通过网络进行获取。Cloud类型的数据库可以包含数量百万级别的对象,因此当识别对象超过1000个,而且对象需要经常进行更新时,Cloud Database是最好的选择。需要注意的是,Cloud Database只支持单一的图像识别,并不支持Multi target和Cylinder Target。因为是通过网络识别,因此采用Cloud进行识别的话需要根据网络情况花费一定时间。
这是Vuforia自家研发的条形码,被誉为下一代条形码。和目前市面上通用的条形码不一样的是,VuMark的外观可以完全自主定制,只要符合VuMark的相关规范就行,而且VuMark中还能包含诸如字符串之类的数据信息,非常适合于企业级产品的开发。
配置相关: https://www.cnblogs.com/mrmocha/p/9737448.html
教程相关: https://www.jianshu.com/p/a3640e8837b5
EasyAR Sense Unity Plugin是一个建立在EasyAR Sense C# API之上的非常薄的封装,用于在Unity中暴露EasyAR Sense的功能。建议阅读 [EasyAR Sense 文档](https://help.easyar.cn/EasyAR Sense/v4_4/) 来理解EasyAR Sense是如何工作的。
插件的发布包内包含了EasyAR Sense的库文件,因此在使用插件的时候不需要再使用独立的EasyAR Sense。
插件中的EasyAR Sense库文件总是与同版本的EasyAR Sense的文件相同。如果你在尝试让插件运行在不同版本的EasyAR Sense上,必须保证csapi与库文件版本一致。
https://help.easyar.cn/EasyAR%20Sense%20Unity%20Plugin/v4_4/GettingStarted/PluginIntroduction.html
EasyAR Sense Unity Plugin需要使用 Unity 2019.4 或更高版本。
Unity > 2019.4 的兼容性
通常来说, EasyAR Sense不依赖很多变化的Unity API,所以如果Unity发布了新版本,EasyAR Sense Unity Plugin一般都可以正常使用。
Unity 2020.2 或更高版本 删除了iOS设备的OpenGLES支持,在这些版本中,视频录制功能将无法在iOS设备上使用。
Unity < 2019.4 的兼容性
· 为了提供更好的插件包体验以及支持最新的Unity XR工作流,我们在持续迁移我们的资产文件和脚本到 Unity 2019.4。这会逐渐打破对老版本Unity的兼容性。如果你由于某些原因仍就在使用老版本的Unity,可以尝试从 tgz
包中解压文件,放在工程的 Assets
目录,然后解决使用过程中出现的错误。对于这种用法我们不会提供官方支持,但有一些建议可以参考:
Unity 2019.3: 看上去插件可以在这个版本的Unity上正常工作,因为Unity 2019.3 和 2019.4的差异有限。这个兼容性并不是在设计中的,新的版本可能无法正常工作。
Unity 2019.2: 看上去插件可以在这个版本的Unity上正常工作,你可能需要手动修改package manifest,以添加tarball到工程中。这个兼容性并不是在设计中的,新的版本可能无法正常工作。在Windows上,由于Unity对路径长度限制的不当处理,插件的样例可能无法正常导入,你可以通过文件系统直接复制样例文件到 Assets
文件夹中。
Unity 2019.1: 这个版本的Unity Package Manager UI看起来并不能很好的支持tgz文件。你可以尝试embed插件包,如果这样也不能使用,打破包的封装,将文件直接解压到 Assets
文件夹中。
Unity 2018.4: 这个版本的Unity Package Manager UI不支持sample。并且由于插件使用 Unity 2019.4打包,一些重要文件的 meta文件无法正常工作。你需要打破package封装,将文件直接解压到 Assets
文件夹中。在重新构建meta文件后,可能可以让大部分功能正常工作,但这并未经过测试。
Unity 2017 或 Unity 5: 在这些版本中不存在Unity Package Manager。并且一些兼容这些版本的代码路径已经被删除。你可能需要花更大的力气才能使插件在这些版本中正常使用。
Unity使用的mono脚本后台不支持Android arm64-v8a。如果需要使用应开启IL2CPP。
EasyAR Sense 从3.0版本开始终止了对iOS armv7的支持。在库文件中存在空的代码层以确保 XCode 工程始终可以构建,但如果编译时只选择了armv7运行后功能将无法使用。
EasyAR Sense Unity Plugin兼容 .NET Standard 2.0 API。
从EasyAR Sense 3.0开始,EasyAR Sense Unity Plugin 直接使用Unity的渲染管线,所有Unity中可以使用的图形API都可以天然被支持。
特例:由于EasyAR Sense的内部实现,录屏功能将只能在某些特定条件下工作,即在Android上Graphics API是OpenGLES2或OpenGLES3的情况以及在iOS上Graphics API是OpenGLES2的情况。
EasyAR Sense Unity Plugin 支持 Universal Render Pipeline (URP) 7.0.0 或更新版本。
EasyAR Sense Unity Plugin 不支持 High Definition Render Pipeline (HDRP)。
EasyAR Sense Unity Plugin 支持 AR Foundation 4.0.8 或更新版本。
EasyAR Sense Unity Plugin 支持官方的 Huawei AR Engine Unity SDK
2.11.0,其发布文件是 arenginesdk-tool-2.11.0.2.zip
。
华为目前不再维护 AR Engine 的 Unity SDK,因此我们并不确定是否更新版本的 AR Engine 可以使用。同时,由于 Huawei AR Engine Unity SDK
使用了一些废弃的 Unity API,它不能在 Unity 2020.1 或更新版本上使用。
EasyAR Sense Unity Plugin 不支持没有官方Unity SDK的华为 AR Engine。
https://help.easyar.cn/EasyAR%20Sense%20Unity%20Plugin/v4_4/Guides/Guides.html
https://help.easyar.cn/EasyAR%20Sense%20Unity%20Plugin/v4_4/ApiReference/ApiReference.html
稀疏空间地图
稠密空间地图
运动跟踪
表面跟踪
3D物体跟踪
平面图像跟踪
录屏
支持功能 | ARFoundation | ARCore | ARKit | vuforia | EasyAR |
---|---|---|---|---|---|
依赖项 | ARCore/ARKit | Android 7 | ip6以上 | 无 | 部分依赖系统 |
费用 | 免费 | 免费 | 免费 | 收费/免费带水印 | 收费/免费带水印 |
垂直平面检测 | √ | √ | √ | ? | ? |
水平平面检测 | √ | √ | √ | √ | ? |
特征点检测 | √ | - | √ | √ | √ |
光照估计 | √ | - | √ + Color Temperature | - | - |
射线测试(Hit Testing,对特征点与平面的射线碰撞测试) | √ | √ | √ | √ | √ |
图像跟踪 | √ | √ | √ | √ | √ |
3D物体检测与跟踪 | √ | - | √ | √ | √ |
环境光探头(Environment Probes) | √ | - | √ | - | - |
世界地图(World maps) | √ | - | √ | - | √ |
人脸跟踪(识别、姿态、网格和形状混合) | √ | √ | √(iPhoneX 及更高型号A12仿生芯片) | - | - |
云锚点(Cloud Anchors) | √ | √ | - | - | √ |
远程调试(Editor Remoting) | 开发中 | √-Instant Preview | √ -ARKit Remote | ? | ? |
模拟器(Editor Simulation) | √ | - | - | √ | √ |
LWRP支持(支持使用ShaderGraph) | √ | 开发中 | 开发中 | √ | √ |
摄像机图像API | √ | √ | - | √ | √ |
人体动作捕捉(Motion capture) | √ | - | √(iPhoneX 及更高型号) | - | - |
人形遮挡(People occlusion) | √ | - | √(iPhoneX 及更高型号) | - | √ |
多人脸检测 | √ | - | √(iPhoneX 及更高型号) | - | - |
多人协作(Collaborative session) | √ | - | √(iPhoneX 及更高型号) | - | - |
多图像识别 | √ | √ | √(iPhoneX 及更高型号) | √ | √ |
VuMark(Vuforia自己研发的一种新型条形码) | - | - | - | √ | - |
虚拟按钮 | - | - | - | √ | - |
空间地图 | - | - | - | - | √ |
教程地址: https://learn.u3d.cn/tutorial/how-to-use-face-capture#
https://zyb-shizi-app-1253445850.cos.ap-beijing.myqcloud.com/pinyin/md_res/ar/QQ20211231-161740-HD.mp4
AR的一些基本知识: https://zhuanlan.zhihu.com/p/29217512
参考链接:
ARKit : 苹果推出的AR开发平台
ARCore : Google 推出的增强现实 SDK
ARFoundation : ARFoundation是ARKit XR插件和ARCore XR插件 的集合
vuforia : 高通推出的针对移动设备扩增实境应用的软件开发工具包
EasyAR : 国内 上海视辰信息 增强现实(AR)互动营销技术和解决方案
2017年,Apple公司与Google公司相继推出了各自的AR开发SDK工具包ARKit和ARCore,分别对应iOS平台与Android平台AR开发。ARKit和ARCore推出后,极大的促进了AR在移动端的普及发展,将AR从实验室带入到普通消费场景中。由于当前的移动手机操作系统主要由iOS与Android两大系统统治,ARKit和ARCore分别服务于各自己的系统平台,这意味着软件产商要开发一套移动AR应用就必须使用ARKit开发一个iOS版本、使用ARCore开发一个Android版本,这无疑增加了开发时间与成本。
ARCore提供了Android、Android NDK、Unity、Unreal开发包,ARKit官方只提供了Xcode开发包,这也提高了利用其他工具进行开发的开发者学习成本。在这种情况下,Unity构建了一个AR开发平台,这就是ARFoundation,这个平台架构于ARKit和ARCore之上,其目的就是利用Unity的跨平台能力构建一种与平台无关的AR开发环境,换句话说,ARFoundation对ARKit与ARCore进行了再次封装,并按照用户的发布平台自动选择合适的底层SDK版本。
因此,ARFoundation是ARKit XR插件(com.unity.xr.arkit)和ARCore XR插件(com.unity.xr.arcore)的集合,虽然最终都使用ARKit SDK和ARCore SDK,但因为Unity再次封装的缘故,与专业平台(如ARKit插件和ARCore SDK for Unity)相比,C#调用的API略有不同。
ARFoundation的目标并不局限于ARKit与ARCore,它的目标是建成一个统一、开放的AR开发平台,因此,ARFoundation极有可能在下步发展中纳入其他AR SDK,进一步丰富AR开发环境。在进一步的发展中,ARFoundation不仅支持移动端AR设备,还会支持穿戴式AR设备开发。
从上面的描述我们也可以看出,ARFoundation它并不提供AR的底层开发API,这些与平台相关的API均由第三方如ARKit与ARCore提供,因此ARFoundation对某特定第三方功能的实现要比原生的晚(ARFoundation将某第三方SDK的特定功能集成需要时间)。
ARFoundation提供了一个独立于平台的脚本API和MonoBehaviour,因此,开发者可以通过ARFoundation使用ARCore和ARKit共有的核心功能构建同时适用于iOS和Android两个平台的AR应用程序。换句话说,这可以让开发者只需开发一次应用,就可以部署到两个平台的设备上,不必做任何改动。
如前所述,ARFoundation实现实现某底层SDK的功能会比原生的晚,因此,如果我们要开发ARFoundation尚不支持的功能,可以单独使用对应的原生SDK。目前,如果我们只面向ARCore进行开发并希望获取完整的功能集,Google为Unity开发提供了ARCore SDK for Unity;如果只面向ARKit进行开发并希望获取完整的功能集,Unity提供了适用于Unity开发的ARKit插件(Apple并未提供Unity的ARKit SDK开发插件,在ARFoundation发展起来以后,Unity肯定不会再继续维护ARKit插件)。
ARFoundation与ARCore、ARKit的关系如下图所示:
2018年10月Unity发布AR Foundation 1.0版本,支持平面追踪、特征点云检测、参考点/锚点、设备追踪、光照估计、射线碰撞。
2019年5月,AR Foundation 2.1 支持图像追踪、物体追踪、面部追踪、环境探针。
2019年6月,AR Foundation 3.0 支持 ARKit 3.0,新增动作捕捉、人物遮挡、多人协作等功能。
2019年9月[MOU1] ,AR Foundation 支持 Magic Leap 以及 HoloLens 1 和 2 。
2019年11月,SenseAR正式集成进了Unity中国增强版2018.4.11C版本中。
设备跟踪:跟踪设备在物理空间中的位置和方向。
平面检测:检测水平和垂直表面。
点云:世界坐标空间中的点的集合。
锚点:设备跟踪的任意位置和方向。
光线估算:估算物理空间中的平均色温和亮度。
环境探针:一种用于生成表示物理环境特定区域的立方体贴图的方法。视频链接: https://live.csdn.net/v/embed/163218
人脸跟踪:检测和跟踪人脸。
2D图像跟踪:检测和跟踪2D图像。
3D对象跟踪:检测3D对象。
网格划分:生成与物理空间相对应的三角形网格划分。
身体追踪:在物理空间中识别出的人类的2D和3D表示。
多人协作:在共享的AR体验中跟踪其他设备的位置和方向。
人体分割和遮挡:将距离现实世界中的对象的距离应用于渲染的3D内容,从而实现物理对象与虚拟对象的逼真的融合。https://www.bilibili.com/video/av455309216/
射线广播:查询物理环境中检测到的平面和特征点。
直通视频:优化了将移动摄像机图像渲染到触摸屏上作为AR内容的背景。
会话管理:启用或禁用AR功能时自动对平台级配置进行操作。
遮挡:在真实场景中的位置实现虚拟物体遮挡 视频资源: https://v.qq.com/x/page/g3104nljtqb.html
2017年9月 ARKit 1.0:支持环境光照估测、用户设置锚点、追踪状态更改、AR会话中断和恢复的事件通知等。
2018年3月 ARKit 1.5: 新增垂直平面识别、图像识别、图像分辨率提升50%等。
2018年9月 ARKit 2.0:新增多个玩家联机、图像跟踪、3D对象识别、usdz格式文件和测距仪APP等。
2019年9月 ARKit 3.0:新增人体轮廓抠图、人体四肢识别、原型化和制作AR内容的Reality Composer工具软件等。
2020年3月 ARKit 3.5:新增场景几何体、即时增强现实、定位跟踪配置等。
2020年9月 ARKit 4.0:新增深度API、定位锚、增加面部跟踪支持的设备。
**ARKit 4.0:**运行iOS 14,配置了A12芯片的设备
**ARKit 3.5:**运行iPadOS 13.4,配置了激光雷达扫描仪的第四代iPad Pro
**ARKit 3.0:**运行iOS 13,人体抠图和人体识别需要A12芯片
**ARKit 2.0:**运行iOS 12,芯片要求A9以上
**ARKit 1.5:**运行iOS 11.3,芯片要求A9以上
**ARKit 1.0:**运行 iOS 11,芯片要求A9以上
芯片数据:https://www.apple.com.cn/ipad/compare/
5.3 ARKit支持iPad
ARKit 1和ARKit 2需要设备是A9、A10、A11芯片,ARKit 3的人体抠图和人体识别需要A12芯片。
1、12.9英寸iPad Pro
第三代 A12X
第二代 A10X
第一代 A9X
2、11英寸iPad Pro
A12X
3、9.7英寸iPad Pro
只销售了3个月,Apple官网未显示该款产品。
4、iPad Air
第三代 10.5英寸 A12
第二代 9.7英寸 A8X 不支持ARKit
第一代 9.7英寸 A7 不支持ARKit
5、9.7英寸 iPad
第六代 A10
第五代 A9
6、7.9英寸 iPad mini
第五代 A12
第四代 A8 不支持ARKit
第三代 A7 不支持ARKit
第二代 A7 不支持ARKit
ARWorldTrackingConfiguration
世界跟踪配置(6DOF),只能使用后置摄像头,需要iOS 11以上。图像识别和垂直平面识别,需要iOS 11.3以上。
ARFaceTrackingConfiguration
人脸跟踪配置,只能使用前置的TrueDepth摄像头,需要iOS 11以上。
AROrientationTrackingConfiguration
方向跟踪配置(3DOF),只能使用后置摄像头,需要iOS 11以上。
ARImageTrackingConfiguration
图像跟踪配置,只能使用后置摄像头,需要iOS 12以上。
ARImageTrackingConfiguration与ARWorldTrackingConfiguration的区别如下:
1、ARImageTrackingConfiguration当图像快速移动时,也能跟踪上,而ARWorldTrackingConfiguration当图像缓慢的移动,才能跟踪上。
2、ARWorldTrackingConfiguration依赖IMU(惯性测量单元),当周围环境发生运动时,无法正常工作。比如用户在交通工具上,AR显示的虚拟物体会飘走。
3、当使用ARImageTrackingConfiguration时,无法使用ARWorldTrackingConfiguration,也就无法使用ARWorldTrackingConfiguration的水平面识别。
ARObjectScanningConfiguration
对象扫描配置,只能使用后置摄像头,需要iOS 12以上。
ARBodyTrackingConfiguration
人体跟踪配置,只能使用后置摄像头,需要iOS 13以上和A12芯片。
配置要求: https://developer.apple.com/documentation/arkit/arconfiguration
ARCore 要求:
运行在搭载 Google Play 应用商店的设备上
Android 7.0 或更高版本 (如下所示,个别型号需要更高的版本)
若你的应用为AR可选应用, 请修改 minSdkVersion 声明: ‘minSdkVersion≥
14` (API Level 14, Ice Cream Sandwich, version 4.0.1 - 4.0.2)
若你的应用为AR必备应用, 请修改 minSdkVersion 声明: minSdkVersion
≥ 24
(API Level 24, Nougat, version 7.0)
在中国,设备不搭载 Google 应用商店。 您可以从以下应用商店中选择其一来安装 ARCore:
Xiaomi app store (小米应用商店)
Huawei Apps Gallery (华为应用商店)
OPPO APP Market (OPPO 软件商店)
Samsung Galaxy Apps (三星应用市场)
V-Appstore (vivo应用商店)
在中国区域,ARCore 支持以下设备:
谷歌官方查看支持ARCore设备地址:https://developers.google.cn/ar/devices
配置相关 : https://zhuanlan.zhihu.com/p/330235815
返回状态:
namespace UnityEngine.XR.ARFoundation
{
/// <summary>
/// Represents the current state of the AR system.
/// </summary>
public enum ARSessionState
{
/// <summary>
/// The AR system has not been initialized. Availability is unknown.
/// <see cref="ARSession.CheckAvailability"/>.
/// </summary> AR系统尚未初始化,可用性未知。
None,
/// <summary>
/// AR is not supported on the current device.
/// </summary> 当前设备不支持AR。
Unsupported,
/// <summary>
/// The system is checking for the availability of AR.
/// <see cref="ARSession.CheckAvailability"/>.
/// </summary> 系统正在检查当前设备上AR的可用性。
CheckingAvailability,
/// <summary>
/// AR is supported, but requires an additional install.
/// <see cref="ARSession.Install"/>.
/// </summary> 当前设备支持AR,但是AR支持需要安装其他软件。
NeedsInstall,
/// <summary>
/// AR software is being installed. <see cref="ARSession.Install"/>.
/// </summary> 正在安装AR软件。
Installing,
/// <summary>
/// AR is supported and ready.
/// </summary> AR已支持并准备就绪。
Ready,
/// <summary>
/// An AR session is initializing (i.e., starting up). This usually means AR is working
/// but has not yet gathered enough information about the environment.
/// </summary> AR会话正在初始化(即正在启动)。这通常意味着AR正在运行,但尚未收集到足够的有关环境的信,
SessionInitializing,
/// <summary>
/// An AR session is running and is tracking (i.e., the device is able to determine its
/// position and orientation in the world).
/// </summary> AR会话正在运行并且正在跟踪(也就是说,设备能够确定其在世界上的位置和方向)。
SessionTracking
}
}
三方插件: https://zhuanlan.zhihu.com/p/335236675
目前世界上主流的AR SDK提供厂商,国外的主要是Vuforia、Metaio,国内的主要是EasyAR。其中Metaio在2015年5月已被Apple重金收购,之后就没有再对外公开过SDK,经过两年的封闭开发,Apple已经打造出了强大的ARKit,能够基于庞大的iOS和iPad设备生产出各种惊艳的AR产品。Vuforia也在2015年11月被PTC公司重金收购,但是后续一直在更新并提供SDK,因此在ARKit普及之前,Vuforia一直是开发者最青睐的AR SDK,众多的功能以及高质量的识别技术,良好的跨平台性和兼容性,兼容目前主流的PC,Android,IOS平台.使得Vuforia早已深入人心,是学习AR应用开发的必备技能。
这个引擎是一个静态链接库,作为客户端封装进最终的App中,用来进行最主要的识别功能,支持iOS、Android和UWP,并且根据不同的平台开放出了不同的SDK,可以根据需要从Android Studio、Xcode、Visual Studio以及Unity中任选一种作为开发工具。本系列是以Unity为开发工具,因为Unity本来就是个游戏引擎,对3D模型的导入以及控制非常方便,非常适合开发AR程序;
Vuforia提供了一系列的工具,用来创建对象、管理对象数据库以及管理程序licenses。Target Manager是一个网页程序,开发者在里面创建和管理对象数据库,并且可以生成一系列的识别图像,用在AR设备以及云端上。Licenses Manager用来创建和管理程序licenses,因为每一个AR程序都有一个唯一的licenses。Vuforia Object Scanner是Vuforia近段时间新出的工具,用来进行十分黑科技的功能–实物扫描,但是很遗憾目前只支持某些Android设备。
当你的AR程序需要识别数量很庞大的图片对象,或者你的对象数据库需要经常更新,可以选择Vuforia的云识别服务。Vuforia Web Services可以让你很轻松的管理数量庞大的对象数据库,并且可以建立自动的工作流。
4.1 Image Targets(图像目标)
4.2 Cylinder Targets(圆柱体目标)
识别形状类似于圆柱形的图片,可以将这些图片贴到一些圆柱形物体上比如瓶子、杯子等等,进行识别。
4.3 Multi Targets(多目标)
多对象识别,可以同时识别多张Image Targets,并且可以把它们和几何立体物体结合起来,比如一个纸盒子,或者任意形状的平面。
4.4 Model Targets(模型目标)
通俗点说就是3D物体的识别,也就是形状的识别。这个技术相对于传统的印刷媒体、产品包装的Image Targets识别来说,它能够更详细直观地展示产品的功能和设计。展示的内容可以准确地被附加到物体上,例如汽车、家电以及工业设备和机械设备。这个技术有望取代传统的用户手册和技术服务指导。
4.5 VuMark
这是Vuforia自己研发的一种新型条形码,并且被称为下一代条形码,你能够自己随意设计这种条形码的样式,并且在其中融入相关的数据信息。
4.6 Cloud Rec(云识别)
当你的AR程序需要识别数量很庞大的图片对象,或者你的对象数据库需要经常更新,可以选择Vuforia的云识别服务。Vuforia Web Services可以让你很轻松的管理数量庞大的对象数据库,并且可以建立自动的工作流。
4.7 Ground Plane
随着ARKit和ARCore的发布,这个功能大家应该比较能够理解,下一个版本的Vuforia也将具有类似功能。使用Vuforia,你也可以将增强显示的内容放置到一些平面上,例如地板、桌面以及地面等,不管是在室内还是室外均可。
4.8 User Defined Targets(用户自定义目标)
用户从画面选择元素作为自定义目标,进行扫描与追踪
4.9 Virtual Buttons(虚拟按钮)
虚拟按钮是图像上的目标,用户可以在现实世界中触摸,以触发交互动作。
Vuforia提供了三种类型的Database,分别是Device、VuMark和Cloud。这三种类型都各有自己的优势,在开发产品时需要根据需求来选择不同的Database:
包含了安装在设备本地的图片以及3D模型对象的数据库,可以开发Image Target(图片识别)、Multi Targets(多对象识别)、Cylinder Targets(圆柱图像识别)以及Object Target(3D模型识别)。当你的产品需要最快速的图像识别,而且图片对象小于1000张,并且数据库中的对象不会经常更新,那么Device Database就是最好的选择。如果需要开发识别真实3D物体识别的产品,那就只能选择Device类型的。
包含了存储于网络云服务器上的对象的数据库,需要通过网络进行获取。Cloud类型的数据库可以包含数量百万级别的对象,因此当识别对象超过1000个,而且对象需要经常进行更新时,Cloud Database是最好的选择。需要注意的是,Cloud Database只支持单一的图像识别,并不支持Multi target和Cylinder Target。因为是通过网络识别,因此采用Cloud进行识别的话需要根据网络情况花费一定时间。
这是Vuforia自家研发的条形码,被誉为下一代条形码。和目前市面上通用的条形码不一样的是,VuMark的外观可以完全自主定制,只要符合VuMark的相关规范就行,而且VuMark中还能包含诸如字符串之类的数据信息,非常适合于企业级产品的开发。
配置相关: https://www.cnblogs.com/mrmocha/p/9737448.html
教程相关: https://www.jianshu.com/p/a3640e8837b5
EasyAR Sense Unity Plugin是一个建立在EasyAR Sense C# API之上的非常薄的封装,用于在Unity中暴露EasyAR Sense的功能。建议阅读 [EasyAR Sense 文档](https://help.easyar.cn/EasyAR Sense/v4_4/) 来理解EasyAR Sense是如何工作的。
插件的发布包内包含了EasyAR Sense的库文件,因此在使用插件的时候不需要再使用独立的EasyAR Sense。
插件中的EasyAR Sense库文件总是与同版本的EasyAR Sense的文件相同。如果你在尝试让插件运行在不同版本的EasyAR Sense上,必须保证csapi与库文件版本一致。
https://help.easyar.cn/EasyAR%20Sense%20Unity%20Plugin/v4_4/GettingStarted/PluginIntroduction.html
EasyAR Sense Unity Plugin需要使用 Unity 2019.4 或更高版本。
Unity > 2019.4 的兼容性
通常来说, EasyAR Sense不依赖很多变化的Unity API,所以如果Unity发布了新版本,EasyAR Sense Unity Plugin一般都可以正常使用。
Unity 2020.2 或更高版本 删除了iOS设备的OpenGLES支持,在这些版本中,视频录制功能将无法在iOS设备上使用。
Unity < 2019.4 的兼容性
· 为了提供更好的插件包体验以及支持最新的Unity XR工作流,我们在持续迁移我们的资产文件和脚本到 Unity 2019.4。这会逐渐打破对老版本Unity的兼容性。如果你由于某些原因仍就在使用老版本的Unity,可以尝试从 tgz
包中解压文件,放在工程的 Assets
目录,然后解决使用过程中出现的错误。对于这种用法我们不会提供官方支持,但有一些建议可以参考:
Unity 2019.3: 看上去插件可以在这个版本的Unity上正常工作,因为Unity 2019.3 和 2019.4的差异有限。这个兼容性并不是在设计中的,新的版本可能无法正常工作。
Unity 2019.2: 看上去插件可以在这个版本的Unity上正常工作,你可能需要手动修改package manifest,以添加tarball到工程中。这个兼容性并不是在设计中的,新的版本可能无法正常工作。在Windows上,由于Unity对路径长度限制的不当处理,插件的样例可能无法正常导入,你可以通过文件系统直接复制样例文件到 Assets
文件夹中。
Unity 2019.1: 这个版本的Unity Package Manager UI看起来并不能很好的支持tgz文件。你可以尝试embed插件包,如果这样也不能使用,打破包的封装,将文件直接解压到 Assets
文件夹中。
Unity 2018.4: 这个版本的Unity Package Manager UI不支持sample。并且由于插件使用 Unity 2019.4打包,一些重要文件的 meta文件无法正常工作。你需要打破package封装,将文件直接解压到 Assets
文件夹中。在重新构建meta文件后,可能可以让大部分功能正常工作,但这并未经过测试。
Unity 2017 或 Unity 5: 在这些版本中不存在Unity Package Manager。并且一些兼容这些版本的代码路径已经被删除。你可能需要花更大的力气才能使插件在这些版本中正常使用。
Unity使用的mono脚本后台不支持Android arm64-v8a。如果需要使用应开启IL2CPP。
EasyAR Sense 从3.0版本开始终止了对iOS armv7的支持。在库文件中存在空的代码层以确保 XCode 工程始终可以构建,但如果编译时只选择了armv7运行后功能将无法使用。
EasyAR Sense Unity Plugin兼容 .NET Standard 2.0 API。
从EasyAR Sense 3.0开始,EasyAR Sense Unity Plugin 直接使用Unity的渲染管线,所有Unity中可以使用的图形API都可以天然被支持。
特例:由于EasyAR Sense的内部实现,录屏功能将只能在某些特定条件下工作,即在Android上Graphics API是OpenGLES2或OpenGLES3的情况以及在iOS上Graphics API是OpenGLES2的情况。
EasyAR Sense Unity Plugin 支持 Universal Render Pipeline (URP) 7.0.0 或更新版本。
EasyAR Sense Unity Plugin 不支持 High Definition Render Pipeline (HDRP)。
EasyAR Sense Unity Plugin 支持 AR Foundation 4.0.8 或更新版本。
EasyAR Sense Unity Plugin 支持官方的 Huawei AR Engine Unity SDK
2.11.0,其发布文件是 arenginesdk-tool-2.11.0.2.zip
。
华为目前不再维护 AR Engine 的 Unity SDK,因此我们并不确定是否更新版本的 AR Engine 可以使用。同时,由于 Huawei AR Engine Unity SDK
使用了一些废弃的 Unity API,它不能在 Unity 2020.1 或更新版本上使用。
EasyAR Sense Unity Plugin 不支持没有官方Unity SDK的华为 AR Engine。
https://help.easyar.cn/EasyAR%20Sense%20Unity%20Plugin/v4_4/Guides/Guides.html
https://help.easyar.cn/EasyAR%20Sense%20Unity%20Plugin/v4_4/ApiReference/ApiReference.html
稀疏空间地图
稠密空间地图
运动跟踪
表面跟踪
3D物体跟踪
平面图像跟踪
录屏
支持功能 | ARFoundation | ARCore | ARKit | vuforia | EasyAR |
---|---|---|---|---|---|
依赖项 | ARCore/ARKit | Android 7 | ip6以上 | 无 | 部分依赖系统 |
费用 | 免费 | 免费 | 免费 | 收费/免费带水印 | 收费/免费带水印 |
垂直平面检测 | √ | √ | √ | ? | ? |
水平平面检测 | √ | √ | √ | √ | ? |
特征点检测 | √ | - | √ | √ | √ |
光照估计 | √ | - | √ + Color Temperature | - | - |
射线测试(Hit Testing,对特征点与平面的射线碰撞测试) | √ | √ | √ | √ | √ |
图像跟踪 | √ | √ | √ | √ | √ |
3D物体检测与跟踪 | √ | - | √ | √ | √ |
环境光探头(Environment Probes) | √ | - | √ | - | - |
世界地图(World maps) | √ | - | √ | - | √ |
人脸跟踪(识别、姿态、网格和形状混合) | √ | √ | √(iPhoneX 及更高型号A12仿生芯片) | - | - |
云锚点(Cloud Anchors) | √ | √ | - | - | √ |
远程调试(Editor Remoting) | 开发中 | √-Instant Preview | √ -ARKit Remote | ? | ? |
模拟器(Editor Simulation) | √ | - | - | √ | √ |
LWRP支持(支持使用ShaderGraph) | √ | 开发中 | 开发中 | √ | √ |
摄像机图像API | √ | √ | - | √ | √ |
人体动作捕捉(Motion capture) | √ | - | √(iPhoneX 及更高型号) | - | - |
人形遮挡(People occlusion) | √ | - | √(iPhoneX 及更高型号) | - | √ |
多人脸检测 | √ | - | √(iPhoneX 及更高型号) | - | - |
多人协作(Collaborative session) | √ | - | √(iPhoneX 及更高型号) | - | - |
多图像识别 | √ | √ | √(iPhoneX 及更高型号) | √ | √ |
VuMark(Vuforia自己研发的一种新型条形码) | - | - | - | √ | - |
虚拟按钮 | - | - | - | √ | - |
空间地图 | - | - | - | - | √ |
教程地址: https://learn.u3d.cn/tutorial/how-to-use-face-capture#
https://zyb-shizi-app-1253445850.cos.ap-beijing.myqcloud.com/pinyin/md_res/ar/QQ20211231-161740-HD.mp4
AR的一些基本知识: https://zhuanlan.zhihu.com/p/29217512
参考链接:
文章浏览阅读331次。第一部分:准备工作1 安装虚拟机2 安装centos73 安装JDK以上三步是准备工作,至此已经完成一台已安装JDK的主机第二部分:准备3台虚拟机以下所有工作最好都在root权限下操作1 克隆上面已经有一台虚拟机了,现在对master进行克隆,克隆出另外2台子机;1.1 进行克隆21.2 下一步1.3 下一步1.4 下一步1.5 根据子机需要,命名和安装路径1.6 ..._创建一个hadoop项目
文章浏览阅读1.7k次。心脏滴血漏洞HeartBleed CVE-2014-0160 是由heartbeat功能引入的,本文从深入码层面的分析该漏洞产生的原因_heartbleed代码分析
文章浏览阅读1.4k次。前言ofd是国家文档标准,其对标的文档格式是pdf。ofd文档是容器格式文件,ofd其实就是压缩包。将ofd文件后缀改为.zip,解压后可看到文件包含的内容。ofd文件分析工具下载:点我下载。ofd文件解压后,可以看到如下内容: 对于xml文件,可以用文本工具查看。但是对于印章文件(Seal.esl)、签名文件(SignedValue.dat)就无法查看其内容了。本人开发一款ofd内容查看器,..._signedvalue.dat
文章浏览阅读1.8w次,点赞29次,收藏313次。整体系统设计本设计主要是对ADC和DAC的使用,主要实现功能流程为:首先通过串口向FPGA发送控制信号,控制DAC芯片tlv5618进行DA装换,转换的数据存在ROM中,转换开始时读取ROM中数据进行读取转换。其次用按键控制adc128s052进行模数转换100次,模数转换数据存储到FIFO中,再从FIFO中读取数据通过串口输出显示在pc上。其整体系统框图如下:图1:FPGA数据采集系统框图从图中可以看出,该系统主要包括9个模块:串口接收模块、按键消抖模块、按键控制模块、ROM模块、D.._基于fpga的信息采集
文章浏览阅读2.5w次。1.背景错误信息:-- [http-nio-9904-exec-5] o.s.c.n.z.filters.post.SendErrorFilter : Error during filteringcom.netflix.zuul.exception.ZuulException: Forwarding error at org.springframework.cloud..._com.netflix.zuul.exception.zuulexception
文章浏览阅读358次。1.介绍图的相关概念 图是由顶点的有穷非空集和一个描述顶点之间关系-边(或者弧)的集合组成。通常,图中的数据元素被称为顶点,顶点间的关系用边表示,图通常用字母G表示,图的顶点通常用字母V表示,所以图可以定义为: G=(V,E)其中,V(G)是图中顶点的有穷非空集合,E(G)是V(G)中顶点的边的有穷集合1.1 无向图:图中任意两个顶点构成的边是没有方向的1.2 有向图:图中..._给定一个邻接矩阵未必能够造出一个图
文章浏览阅读321次。(十二)、WDS服务器安装通过前面的测试我们会发现,每次安装的时候需要加域光盘映像,这是一个比较麻烦的事情,试想一个上万个的公司,你天天带着一个光盘与光驱去给别人装系统,这将是一个多么痛苦的事情啊,有什么方法可以解决这个问题了?答案是肯定的,下面我们就来简单说一下。WDS服务器,它是Windows自带的一个免费的基于系统本身角色的一个功能,它主要提供一种简单、安全的通过网络快速、远程将Window..._doc server2012上通过wds+mdt无人值守部署win11系统.doc
文章浏览阅读219次。python–xlrd/xlwt/xlutilsxlrd只能读取,不能改,支持 xlsx和xls 格式xlwt只能改,不能读xlwt只能保存为.xls格式xlutils能将xlrd.Book转为xlwt.Workbook,从而得以在现有xls的基础上修改数据,并创建一个新的xls,实现修改xlrd打开文件import xlrdexcel=xlrd.open_workbook('E:/test.xlsx') 返回值为xlrd.book.Book对象,不能修改获取sheett_xlutils模块可以读xlsx吗
文章浏览阅读8.2w次,点赞267次,收藏656次。运行Selenium出现'WebDriver' object has no attribute 'find_element_by_id'或AttributeError: 'WebDriver' object has no attribute 'find_element_by_xpath'等定位元素代码错误,是因为selenium更新到了新的版本,以前的一些语法经过改动。..............._unresolved attribute reference 'find_element_by_id' for class 'webdriver
文章浏览阅读198次。一:模态窗口//父页面JSwindow.showModalDialog(ifrmehref, window, 'dialogWidth:550px;dialogHeight:150px;help:no;resizable:no;status:no');//子页面获取父页面DOM对象//window.showModalDialog的DOM对象var v=parentWin..._jquery获取父window下的dom对象
文章浏览阅读1.7w次,点赞15次,收藏129次。算法(algorithm)是解决一系列问题的清晰指令,也就是,能对一定规范的输入,在有限的时间内获得所要求的输出。 简单来说,算法就是解决一个问题的具体方法和步骤。算法是程序的灵 魂。二、算法的特征1.可行性 算法中执行的任何计算步骤都可以分解为基本可执行的操作步,即每个计算步都可以在有限时间里完成(也称之为有效性) 算法的每一步都要有确切的意义,不能有二义性。例如“增加x的值”,并没有说增加多少,计算机就无法执行明确的运算。 _算法
文章浏览阅读1.5k次,点赞18次,收藏26次。网络安全的标准和规范是网络安全领域的重要组成部分。它们为网络安全提供了技术依据,规定了网络安全的技术要求和操作方式,帮助我们构建安全的网络环境。下面,我们将详细介绍一些主要的网络安全标准和规范,以及它们在实际操作中的应用。_网络安全标准规范