The Astra SDK¶
欢迎阅读 Astra SDK的使用教程! Astra SDK提供了详尽的教程来帮您通过我们简单但有力的API去了解Astra相机的所有功能。
此教程对于有以下需求的开发者来说会有很大的帮助:
- 快速使用 Astra SDK 进行开发
- 深层理解SDK中的一些上层概念
- 查找SDK提供的特定函数或功能的细节信息
“Astra SDK” 从下面的简单介绍开始,分为以下几个章节:
当您完成以下简单介绍后,可以跳转至 Getting Started 章节来学习我们提供的例程。
介绍¶
此SDK的设计目标是提供世界上最好的3D相机开发体验。为实现此目标,奥比中光开发团队汲取了百家之长以及前人的经验教训来帮助开发者进行创新,去除无用的复杂和容易影响适配的结构,令开发者享受使用 Astra SDK 的开发过程。
低仪式感设计¶
此SDK的设计者本身也是有着多年经验的3D相机开发者,他们非常清楚3D相机应用开发中最常用的功能有哪些。 Astra SDK通过前后一致和易懂的API而不是一些样板代码来获取相机数据,这些API将stream分成了上层类型和底层类型。具体请参考以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | astra::initialize();
astra::StreamSet streamSet; //By default, a StreamSet will address the Astra
astra::StreamReader reader = streamSet.create_reader();
// Low-Level Streams
reader.stream<astra::DepthStream>().start();
reader.stream<astra::ColorStream>().start();
//High-Level Streams
reader.stream<astra::HandStream>().start();
reader.stream<astra::PointStream>().start();
astra::Frame frame = reader.get_latest_frame();
//Low-Level Streams
const auto depthFrame = frame.get<astra::DepthFrame>();
const auto colorFrame = frame.get<astra::ColorFrame>();
//High-Level Streams
const auto handFrame = frame.get<astra::HandFrame>();
const auto pointFrame = frame.get<astra::PointFrame>();
astra::terminate();
|
首先,我们在第一行创建了 StreamSet
对象。不需要额外的参数调整,它会默认找到Astra相机。在之后的几行代码中,您都可以看到,不管stream的类型是什么,用来交互的API都是同一个。
如果您是拥有多年经验的3d相机开发者,担心此SDK是不是只是为一些简单的应用设计的,完全不必担心, Astra SDK还可以处理一些平时并不常见的情况,通常只需将不同的参数传递给对象构造函数即可。 简单来说,无论您的程序有多复杂, Astra SDK 都能胜任。
全平台支持¶
Astra SDK通过C语言API来实现核心功能,同时也提供了C++11 API。以此为基础,我们的SDK可以实现对不同语言和平台的支持:
目前已支持¶
- Languages: C, C++11, Java, C#
- 平台: Windows, OSX, Linux, Android
- 框架: Unity3D
移动端¶
近几年,移动设备的发展十分迅速,处理性能越来越强大。但是相对于桌面平台来说,还是具有一定的局限性。正因如此,我们开发 Astra SDK的过程中,时刻以低CPU和内存占用为主要目标,从而最大限度地提升SDK在移动设备上的能效和用户体验
可扩展性¶
也许 Astra SDK中最强大的功能就是插件(plugins)了。它为高级开发者提供了扩展SDK功能的方法,同时又保证了这些扩展功能跟现有功能的一致性。实际上,所有SDK‘内置’的streams类型,均是通过插件(plugins)来实现的。
插件(Plugins)不仅仅局限于可以加入不同的streams类型。想象下您想利用访问单一摄像头那样的API来访问多个联网的摄像头的情况。‘Plugins’提供了无限的可能性。随着SDK的成熟,后续一定会有更多的第三方插件对此提供支持。