Astra SDK v2.1.1
Copyright (c) 2015-2020 Orbbec
https://www.orbbec3d.com
For help and support, visit us at https://3dclub.orbbec3d.com.
Features
========
* Depth stream
* Point stream - an image where each pixel is the real-world 3D point, i.e. depth to world
* Color stream - Astra, Astra Pro, and Persee
* Infrared stream - can start when color is stopped
* Body stream - features include:
** Full-body skeleton tracking - Tracks 5 people max, though performance may vary
** Body mask
** Floor mask and floor plane
** Hand pose recognition: Grip (fist) and other (open hand)
** Note: when the Body stream is started, the depth stream automatically goes into
registered depth mode so that depth & color line up
* Masked Color stream - Background removal on the color frame using the body mask
* Colorized Body stream - Body mask visualized with different colors for each body
* Hand stream - separate from body tracking and uses less CPU: wave your hand to track a single hand point
Supported systems
=================
* Windows 7, 8 and 10, 32-bit and 64-bit
* Ubuntu 14.04, 64-bit
* Ubuntu 16.04, 64-bit, arm and aarch64
* Ubuntu 18.04, 64-bit, arm and aarch64
* Android 4.4.2 and 5.1 (armeabi-v7a and arm64-v8a in different packages)
* Orbbec Persee
* raspbian for Raspberry Pi 4b
Supported languages & frameworks
================================
* C
* C++
* .NET/C#
* Java
* Unity 5 - sample provided for Unity 5.3.6
Supported Orbbec Camera Models
==============================
* Astra
* Astra nh
* Astra pro
* Astra pro nh
* Astra mini
* Astra s
* Astra pro plus
* Astra Deeyea(Astra Embedded S)
* Astra DaBai
* Astra Stereo S
* Gemini(Astra Stereo S (U3))
* Projector(Astra SL1200L(S_C/S_CF))
Possibly working systems - these may work but are untested/unsupported at this time
========================
* Android 6.0, Android 7.0, Android 8.1
* Unity3D 2017, Unity3D 2018, Unity 4.7
Orbbec Body Tracking trial time expiration
===============
If you want to use this stream, you need get license code from Orbbec. Without the
valid license code, your app can only get body data for 30 minutes from started.
If you have a license, See API notes below for orbbec_body_tracking_set_license().
For support on the trial expiration or to extend your trial, please contact
info@orbbec3d.com.
What's New
==========
v2.1.1 2020/04/10
* add apis to start/stop record depth stream.
* add OrbbecBodyTracking.config to control distance of skeleton and segmentation.
* fix blocking when app exits using sdk for vs2013.
v2.1.0 2020/03/07
* support arm64-v8a on Android.
* fix bugs of class CoordinateMapper in java and c#.
* add AndroidCamera.setCamera method to choose the uvc camera.
* support astra nh glst(pid 0x601) and bus cl(pid 0x610).
v2.0.19 2019/12/26
* add device controlling apis.
* support Gemini(Astra Stereo S U3).
* support arm/aarch64 linux.
* samples can be built with VS2017 and VS2019.
v2.0.18 2019/11/07
* hotfix for Astra Pro NH.
v2.0.17 2019/07/31
* Add support for the Orbbec Projector(Astra SL1200L(S_C/S_CF)) camera model.
v2.0.16 2019/05/15
* Add support for the Orbbec Astra Stereo S camera model.
* Support setting body orientation, which means the orientation of people's heads in depth image.
The value can be top, left or right.
C: astra_body_orientation_t bodyOrientation;
astra_bodystream_get_body_orientation(bodyStream, &bodyOrientation);
astra_bodystream_set_body_orientation(bodyStream, bodyOrientation);
C++: BodyOrientation orientation = bodyStream.get_body_orientation();
bodyStream.set_body_orientation(orientation);
C#: BodyOrientation orientation = bodyStream.GetBodyOrientation();
bodyStream.SetBodyOrientation(orientation);
Java: BodyOrientation orientation = bodyStream.getBodyOrientation();
bodyStream.setBodyOrientation(orientation);
* Add APIs to rotate frames. The parameter is the angle of clockwise direction rotation, can be 90 and 270.
Notice, this api can't work with NV21 format colorFrame.
C: astra_depthframe_t depthFrame;
//also support rotating color frame and masked color frame.
astra_imageframe_rotate(depthFrame, 90);
astra_bodyframe_t bodyFrame;
astra_bodyframe_rotate(bodyFrame, 90);
C++, C# and Java are likely:
depthFrame.Rotate(90);
bodyFrame.Rotate(90);
* Add RotatedBodyViewer-SFML to show how to use above APIs. Press O keyboard shortcut can change
BodyOrientation.
* Add license checking via internet.
v2.0.15 2019/03/15
* Add support for the Orbbec Astra Deeyea(Astra Embedded S) camera model and Orbbec Astra DaBai camera model.
* Add device opened notification callbacks on Android for Unity. You can implement this
interface and use it when calling "openAllDevices" on "AstraUnityPlayerActivity",
For more information, see AstraUnityContext.cs in Unity Sample.
C#:
public class AstraDeviceManagerListener : AndroidJavaProxy
{
public AstraDeviceManagerListener() :
base("com.orbbec.astra.android.AstraDeviceManagerListener") {}
//When open completed will call this. In this function, before you create streams,
//you should check the number of available devices by calling "getAvailableDevicesSize"
//on "AstraUnityPlayerActivity". If number is zero, Don't create streams.
void onOpenAllDevicesCompleted(AndroidJavaObject availableDevices) {}
//Can't work currently.
void onOpenDeviceCompleted(AndroidJavaObject device, AndroidJavaObject opened) {}
//There is no Orbbec device to open.
void onNoDevice() {}
//Requesting usb permission is denied by user.
void onPermissionDenied(AndroidJavaObject device){}
}
* Support getting NV21 format image from ColorStream on Android when using Astra Pro and
Astra Pro Plus.
Java: ColorStream stream = ColorStream.getNV21ColorStream(streamReader);
ColorFrame colorFrame = ColorFrame.getNV21ColorFrame(readerFrame);
C#: using Astra.Core;
ColorStream stream = streamReader.GetStream<ColorStream>(StreamSubType.COLOR_NV21_SUBTYPE);
ColorFrame colorFrame = frame.GetFrame<ColorFrame>(StreamSubType.COLOR_NV21_SUBTYPE);
* Add D (for Deeyea(Astra Embedded S) and DaBai) keyboard shortcut to SimpleDepthViewer-SFML, SimpleBodyViewer-SFML
and MaskedColorViewer-SFML to work with Deeyea(Astra Embedded S) and DaBai.
* Add N keyboard shortcut to MaskedColorViewer-SFML to mirror color stream.
* Support skeleton recognition for five people.
v2.0.14 2018/12/10
* Add device opened notification callbacks on Android
* Improve body joint alignment with depth image (fix issue related to field-of-view)
v2.0.13 2018/11/22
* Add Skeleton Optimization level APIs. The optimization level gives the developer
control over the balance between memory usage and accuracy for skeleton tracking.
There are 9 optimization levels, with 1 being the minimum memory but worst tracking
accuracy, and 9 requiring the most memory but best tracking accuracy. Level 9 is
the default. Level 2 is the minimum recommended level. Optimization enums have suggested
values: Min Memory = 2, Balanced = 5, Best Accuracy = 9.
C: astra_skeleton_optimization_t optimization;
astra_bodystream_get_skeleton_optimization(bodyStream, &optimization);
astra_bodystream_set_skeleton_optimization(bodyStream, optimization);
C++: SkeletonOptimization optimization = bodyStream.get_skeleton_optimization();
bodyStream.set_skeleton_optimization(optimization);
C#: SkeletonProfile optimization = bodyStream.GetSkeletonProfile();
bodyStream.SetSkeletonProfile(optimization);
Java: SkeletonOptimization optimization = bodyStream.getSkeletonOptimization();
bodyStream.setSkeletonOptimization(optimization);
* Unity sample has been updated with UI controls for Skeleton Optimization
* SkeletonProfile.UpperBody is now available. This profile includes all joints
above MidSpine. Unity sample