#robotics #sonar #blue-robotics #rov

bluerobotics-ping

此crate是使用Rust在Blue Robotics的Ping设备系列上嵌入应用程序的入口点

8个不稳定版本 (3个破坏性更新)

0.3.0 2024年7月30日
0.2.4 2024年7月29日
0.2.2 2024年5月27日
0.1.0 2024年5月16日
0.0.0 2024年4月24日

#2 in #sonar

Download history 90/week @ 2024-04-22 144/week @ 2024-05-13 225/week @ 2024-05-20 174/week @ 2024-05-27 10/week @ 2024-06-03 7/week @ 2024-06-10 16/week @ 2024-07-01 137/week @ 2024-07-15 10/week @ 2024-07-22 307/week @ 2024-07-29 37/week @ 2024-08-05

每月下载量 491次

MIT 协议

71KB
1.5K SLoC

🦀 Ping库 🔊

声纳,或 Sound Navigation And Ranging devices,通过发射声波并测量其反射来检测周围障碍物和物体。

声纳和其他声学设备对于海洋机器人(ROVs、AUVs、船只等)至关重要,因为它们可以在视场受限时提供障碍物检测和距离估计。具备这些功能的机器人能够实现精确导航、目标识别,并在水下环境中进行更高效地探索。

开源的 Ping协议 允许精确控制类似Blue Robotics的声纳设备,便于在自定义应用程序中进行集成。

此库提供对 ping 系列设备所有功能的访问,并享有Rust开发生态系统的所有优势!

以下是一个最小示例

use bluerobotics_ping::{
    device::{Ping1D, PingDevice},
    error::PingError,
};
use tokio_serial::{SerialPort, SerialPortBuilderExt};

#[tokio::main]
async fn main() -> Result<(), PingError> {
    let port = tokio_serial::new("/dev/ttyUSB0", 115200).open_native_async()?;
    port.clear(tokio_serial::ClearBuffer::All)?;
    let ping1d = Ping1D::new(port);

    println!("{:#?}", ping1d.device_information().await?);
    println!("{:#?}", ping1d.general_info().await?);
    println!("{:#?}", ping1d.distance().await?);
    Ok(())
}

今天尝试 ping

📖 文档

🐳 如何使用此crate

要利用 Ping1DPing360 类型设备的性能,请实例化此库提供的相应对象。

Ping 具备与实现 异步 I/O 特性 的任何类型层协同工作的能力。当前示例专注于串行和 UDP,这些是来自 Blue Robotics 的官方支持连接方法。

这两种设备类型都有其自己的方法集,如 Ping 协议 规范所定义的。

查看完整的方法集

🐬 运行示例使用

cargo run --example ping_1d -- --serial-port /dev/ttyUSB0
结果

终端输出

Parsing user provided values...
Creating your Ping 1D device
Testing set/get device id: 9
Testing set/get device id: 8
Testing set/get device id: 7
Testing set/get device id: 6
Testing set/get device id: 5
Testing set/get device id: 4
Testing set/get device id: 3
Testing set/get device id: 2
Testing set/get device id: 1
Set gain to auto: true
Test set & get with a new speed of sound: 343.0 m/s
Test set & get with default speed of sound: 1500.0 m/s
Protocol version is: 1.0.0
Device id is: 1
Gain setting is: 6
Processor temperature is: 42.63 °C
Voltage at 5V lane is: 5.006 V
The distance to target is: 4538 mm
Waiting for 30 profiles...
Received 30 profiles
Turning-off the continuous messages stream from Ping1D

技巧

对于通过 UDP 的外部使用,建议使用 bridges 将您的串行设备共享到网络上。详细信息请见 此处

设置主机和客户端

在主机 📡(ping 设备连接的地方)

bridges --port /dev/ttyUSB0:3000000 -u 0.0.0.0:8080 --no-udp-disconnection --abr

在客户端 💻

cargo run --example ping_1d -- --udp-address 192.168.0.191 --udp-port 8080

享受使用 ping-rs 的探索之旅! 🌊

依赖项

~7–17MB
~220K SLoC