#science #algorithm

no-std mapping-algorithms

一组用于SLAM的纯Rust算法集合

1个不稳定版本

0.0.1 2024年7月10日

#73#数学

Download history 103/week @ 2024-07-10 3/week @ 2024-07-17 5/week @ 2024-07-24 3/week @ 2024-07-31

114 每月下载量
映射套件中使用

MIT许可证

110KB
2K SLoC

Build Pipeline codecov GitHub Issues MIT

GitHub Stars GitHub Watchers GitHub Forks

Discord Channel

mapping-rs

Rust的SLAM生态系统

⚠️ 不稳定的API ⚠️

警告:这个crate处于早期开发阶段,预计会有API的破坏性更改。

用法

将此添加到您的Cargo.toml

[dependencies]
mapping-algorithms = { git = "https://github.com/EmilyMatt/mapping-rs.git" }
mapping-suites = { git = "https://github.com/EmilyMatt/mapping-rs.git" }

特性

no_std支持

虽然默认启用了std特性,但这些crate在设计时考虑了no_std支持,
只要配置了内存分配器(这些crate 确实 使用了alloc crate)。

这可以很容易地实现

[dependencies.mapping-algorithms]
default-features = false

[dependencies.mapping-suites]
default-features = false

跟踪

这些crate通过跟踪 crate提供性能分析和仪表化洞察。

要使用它,只需在您的Cargo.toml中启用tracing特性,并使用您选择的订阅者。请注意,不同的函数有不同的跟踪级别。

由于每个函数都进行了仪表化,请务必记住启用跟踪的开销。

预生成

这些crate严重依赖于泛型,在debug中会遭受严重的性能损失
(我们努力在release中非常快)。

为此,存在一个pregenerated特性,它提供了对大多数用例和类型的公共预生成函数的访问。
这适用于大多数用户,并允许绕过泛型的开销。

用法

在您的Cargo.toml中

# Enables the pregenerated feature (This is enabled by default)
[dependencies.mapping-algorithms]
features = ["pregenerated"]

# Compiles these crates with max optimizations
[profile.dev.package.mapping-algorithms]
opt-level = 3

[profile.dev.package.mapping-suites]
opt-level = 3

代码示例

// Instead of doing this:
let res = icp::icp::<f32, 2 > (...); // Uses generics, uses your project's optimization level

// Do this(Runs much faster):
let res = icp::single_precision::icp_2d(...); // Is a regular function, uses the crate's optimization level

pregenerated宏默认启用。

贡献

如果您想贡献,我们欢迎您的贡献。请务必查看我们的CONTRIBUTING.md

依赖项

~4.5MB
~87K SLoC