Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

T265 readme updates #3359

Merged
merged 5 commits into from
Mar 4, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions doc/android.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
>:pushpin: The SDK 2.0 delivers cross-platform open source libraries & tools that allow users to develop on multiple Operating Systems & development environments. Intel has validated SDK2.0 on Windows and Linux platforms. Please check [latest Release](https://github.com/IntelRealSense/librealsense/releases) for the build versions. While Intel has not explicitly validated SDK2.0 on Android platforms, it is expected to work on Android as well. Please refer to the build instructions in the section below. Calibration and firmware update tools that would be used in production and manufacturing processes are not available on Android at this time. Please contact your Intel representative for additional information.

>:pushpin: The T265 tracking module is not yet supported on Android via librealsense. Support is planned to be added in a future release.

# Intel® RealSense™ SDK 2.0 for Android OS

Using the Android wrapper allows you to build both native (C/C++) and Java applications for Android.
Expand Down
72 changes: 72 additions & 0 deletions doc/d435i.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# D435i

The **Intel® RealSense™ D435i** is a depth camera which includes a [Bosch BMI055](https://www.bosch-sensortec.com/bst/products/all_products/bmi055) 6-axis inertial sensor in addition to the depth camera which measures linear accelerations and angular velocities. Each IMU data packet is timestamped using the depth sensor hardware clock to allow temporal synchronization between gyro, accel and depth frames.

## Should I use a T265 in addition to or instead of the D435i?

The [T265](./t265.md) is designed to produce high accuracy, low latency 6 degree of freedom position data without using any additional computational resources. It does not contain a depth camera but can be used in combination with any of the D400 series depth cameras (including the D435i).

## <a name="origin">Sensor origin and coordinate system</a>
The IMU sensor location and orientation relative to the depth sensors are conveniently embedded into the sensor's extrinsic data. In order to align and them with SDK-wide established [orientation convention](https://github.com/IntelRealSense/librealsense/wiki/Projection-in-RealSense-SDK-2.0#point-coordinates) using the depth sensor as coordinate system origin, each IMU sample is multiplied internally by the extrinsic matrix.

The resulting orientation angles and acceleration vectors share the coordinate system with the depth sensor.
![D400 Depth Sensor Orientation angles](./img/LRS_CS_axis_base.png)
1. The positive x-axis points to the right.
2. The positive y-axis points down.
3. The positive z-axis points forward

The coordinate system is also compatible with the [OpenCV pinhole camera model](https://docs.opencv.org/3.4.0/d9/d0c/group__calib3d.html)

## <a name="imu_calibration">IMU calibration</a>
The D435i IMU sensor does not include internal calibration, which may manifest itself with non-zero angular velocities produced at idle mode and the gravity (accel) force measured being not equal to 9.80665.

A [complementary calibration tool](https://github.com/IntelRealSense/librealsense/tree/development/tools/rs-imu-calibration#rs-imu-calibration-tool) has been developed and published as part of the SDK.

Running the calibration routine will calculate IMU intrinsics and store them on device's NVRAM for later use in SDK.

The depth<->IMU sensor extrinsic (rigid body transformation) is precalculated based on mechanical drawings and cannot be modified.

When initialized, the SDK will query the device for the existance of the IMU calibration data, and if present - apply it to the raw IMU samples produced by the device.

## Integration with the SDK
The following `librealsense` tools and demos are IMU ready:
- `rs-capture` - 2D Visualization
- `rs-enumerate-devices` - list the IMU and tracking profiles (FPS rates and formats).
- `rs-data-collect` - Store and serialize IMU in Excel-friendly csv format. The tool uses low-level sensor API to minimize software-imposed latencies. Useful for performance profiling.
- `realsense-viewer` - Provides 2D visualization of IMU data.

The IMU and data streams are fully compatible with SDK's embedded recorder utility.

## API
The IMU is treated by the SDK like any other supported sensor. Therefore the sensor access and invocation API calls are similar to those of the depth/rgb sensors of D400 and SR300:

```cpp
rs2::pipeline pipe;

rs2::config cfg;
cfg.enable_stream(RS2_STREAM_GYRO);
cfg.enable_stream(RS2_STREAM_ACCEL);

pipe.start(cfg);

while (app) // Application still alive?
{
rs2::frameset frameset = pipe.wait_for_frames();

// Find and retrieve IMU data
if (rs2::motion_frame accel_frame = frameset.first_or_default(RS2_STREAM_ACCEL))
{
rs2_vector accel_sample = accel_frame.get_motion_data();
//std::cout << "Accel:" << accel_sample.x << ", " << accel_sample.y << ", " << accel_sample.z << std::endl;
//...
}

if (rs2::motion_frame gyro_frame = frameset.first_or_default(RS2_STREAM_GYRO))
{
rs2_vector gyro_sample = gyro_frame.get_motion_data();
//std::cout << "Gyro:" << gyro_sample.x << ", " << gyro_sample.y << ", " << gyro_sample.z << std::endl;
//...
}
}
```

121 changes: 0 additions & 121 deletions doc/imu_and_tracking_sensors.md

This file was deleted.

2 changes: 2 additions & 0 deletions doc/installation_osx.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

**Note:** macOS support for the full range of functionality offered by the SDK is not yet complete. If you need support for R200 or the ZR300, [legacy librealsense](https://github.com/IntelRealSense/librealsense/tree/legacy) offers a subset of SDK functionality.

**Note:** The T265 tracking module is not yet supported on macOS via librealsense. Support is planned to be added in a future release.

## Building from Source

1. Install XCode 6.0+ via the AppStore
Expand Down
7 changes: 4 additions & 3 deletions doc/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* [Intel RealSense Community](https://communities.intel.com/community/tech/realsense) - Official support, Q&A and other useful content
* [Support Site](http://www.intel.com/content/www/us/en/support/emerging-technologies/intel-realsense-technology.html) - Contains content and web ticket capability for 1:1 interaction
* [Intel RealSense Stereoscopic Depth Cameras](https://arxiv.org/abs/1705.05548) - A technical paper describing the R200, LR200, SR300 and RS400 in detail. Includes theoretical background, performance expectations, post-processing suggestions, etc.
* [Build an Autonomous Mobile Robot with the Intel® RealSense™ Camera, ROS*, and SAWR](https://software.intel.com/en-us/articles/build-an-autonomous-mobile-robot-with-the-intel-realsense-camera-ros-and-sawr)
* [Build an Autonomous Mobile Robot with the Intel® RealSense™ D400 Series Camera, ROS*, and SAWR](https://software.intel.com/en-us/articles/build-an-autonomous-mobile-robot-with-the-intel-realsense-camera-ros-and-sawr)

## librealsense Wiki
* [API How-To](https://github.com/IntelRealSense/librealsense/wiki/API-How-To) - List ot questions and answers related to the camera API
Expand Down Expand Up @@ -31,6 +31,7 @@
* [D400 at realsense.intel.com/](https://realsense.intel.com/stereo) - Camera specifications
* [D400 Advanced Mode](rs400/rs400_advanced_mode.md) - Overview of the Advanced Mode APIs
* [D400 cameras with Raspberry Pi](./RaspberryPi3.md) - Example of low-end system without USB3 interface
* [D400 cameras on **rooted** Android device](./android/Android.md) - Instructions of how to build the RealSense SDK for Android OS.
* [IMU and Tracking-enabled devices](./imu_and_tracking_sensors.md) - Introductionary material for D435i and T265 IMU and position tracking sensors.
* [D400 cameras on **rooted** Android devices](./android.md) - Instructions of how to build the RealSense SDK for Android OS.
* [D435i depth camera with IMU](./d435i.md) - An introduction to the D435i depth camera and it's IMU
* [T265 tracking module](./t265.md) - An introduction to the T265 tracking module
* [Record and Playback](../src/media/readme.md) - SDK Record and Playback functionality using ROS-bag file format
Loading