2 个版本
0.1.1 | 2022年5月1日 |
---|---|
0.1.0 | 2022年4月25日 |
在 机器人 类别中排名 140
1MB
278 行
LD06
这个crate是针对由Innomaker等品牌销售的微型LD06 LiDAR的Rust驱动程序。驱动程序是跨平台的,但不是为嵌入式使用而设计的。
use std::thread::sleep;
use std::time::Duration;
use ld06::ld06_driver::LD06;
fn main() {
println!("Connecting to a port automatically...");
let mut ld = LD06::new_auto_port().unwrap();
ld.listen(); //Port is released in Drop
println!("Connected!");
loop {
if let Some(scan) = ld.next_scan() {
println!("{:?}", scan);
} else {
sleep(Duration::from_millis(15)); //To avoid burning the CPU
}
}
}
信息
该驱动程序会启动一个后台线程,该线程将监听来自LiDAR的数据。一旦启动,线程将从LiDAR读取数据到缓冲区,主线程可以使用结构体查询该缓冲区。此缓冲区不会循环,因此如果缓冲区已满,则会丢弃数据包。
驱动程序旨在具有最小的内存占用,并且仅包含对端口读取的缓冲区的动态分配(即使在那时,这个缓冲区在正常情况下也不应该增长)。
如果您希望使用替代的LiDAR数据源,可以使用 LD06::from_reader()
来提供自己的源。驱动程序实现不假设使用串行端口,然而提供的任何读取器都必须保持与RS232相同的属性(即小端)。这对于从 cat
文件中进行测试很有用。
依赖项
~2.6–3.5MB
~61K SLoC