velodyne_lidar/
lib.rs

1//! Packet data parsing and conversion for Velodyne LiDARs.
2//!
3//! # Example
4//!
5//! ```rust
6//! # fn main() -> eyre::Result<()> {
7//! use velodyne_lidar::{types::measurements::Measurement, Config};
8//!
9//! let config = Config::new_vlp_32c_strongest();
10//! let frame_iter =
11//!     velodyne_lidar::iter::frame_xyz_iter_from_file(config, "tests/velodyne_vlp32.pcap")?;
12//!
13//! for frame in frame_iter {
14//!     let frame = frame?;
15//!
16//!     for firing in frame.firing_iter() {
17//!         for point in firing.point_iter() {
18//!             let point = point.as_single().unwrap();
19//!             let Measurement {
20//!                 distance,
21//!                 intensity,
22//!                 xyz: [x, y, z],
23//!             } = point.measurement;
24//!             print!("dist: {distance}\t");
25//!             print!("int: {distance}\t");
26//!             println!("xyz: {x} {y} {z}");
27//!         }
28//!     }
29//! }
30//! # Ok(())
31//! # }
32//! ```
33
34pub mod batcher;
35pub mod config;
36pub mod consts;
37mod convert;
38pub mod iter;
39pub mod packet;
40#[cfg(feature = "parallel")]
41pub mod par_iter;
42pub mod traits;
43pub mod types;
44mod utils;
45
46pub use config::*;
47pub use packet::{DataPacket, Packet, PositionPacket, ProductID, ReturnMode};
48
49pub mod prelude {
50    pub use crate::traits::{AzimuthRange, FiringLike, PointField};
51}