The project provides high-level bindings to librealsense2 library as well as low-level FFI interface. It supports asynchronous API and integration with image and nalgebra types.
This project is hosted on both Github and Gitlab. While we're happy to receive pull / merge requests on either platform, we focus most of our work on Gitlab, so please submit an issue there if you've found something we need to improve, or if you have a question regarding how the software works!
Make sure librealsense 2.39.0 is installed on your system. You may visit RealSense official repository.
Add this crate to your Cargo.toml
.
toml
[dependencies]
realsense-rust = "0.5"
If you're using older librealsense for reasons. You may enable buildtime-bindgen
to re-generate bindings and good luck.
toml
[dependencies]
realsense-rust = { version = "0.5", features = ["buildtime-bindgen"] }
The crate enables with-nalgebra and with-image features by default.
You can start by Pipeline
. This is the minimal example to capture color and depth images.
```rust use anyhow::Result; use realsense_rust::{Config, Format, Pipeline, StreamKind};
fn main() -> anyhow::Result<()> { let pipeline = Pipeline::new()?; let config = Config::new()? .enablestream(StreamKind::Depth, 0, 640, 0, Format::Z16, 30)? .enablestream(StreamKind::Color, 0, 640, 0, Format::Rgb8, 30)?; let mut pipeline = pipeline.start(config)?;
let frames = pipeline.wait(None)?.unwrap();
let color_frame = frames.color_frame()?.unwrap();
let depth_frame = frames.depth_frame()?.unwrap();
Ok(())
} ```
To capture image with your RealSense device,
rust
cargo run --release --example capture_images
More examples can be found in examples directory.
The realsense-sys crate provides C bindings generated from librealsense headers. The reference can be found on RealSense official documentation.
Import realsense-sys to your Cargo.toml
.
toml
[dependencies]
realsense-sys = "0.3"
and you can call low level C functions.
```rust let pipeline = Pipeline::new()?; let (pipelineptr, contextptr) = pipeline.intorawparts();
unsafe { let mut error: *mut realsensesys::rs2error = std::ptr::nullmut(); realsensesys::rs2pipelinestart(pipelineptr, &mut error as *mut _); if !error.isnull() { panic!("fail"); } } ```
The API changes may not be found on docs.rs. To generate document from the most recent commit,
sh
cargo doc --open
Apache 2.0. See LICENSE file.