2 个不稳定版本
0.1.0 | 2022年7月1日 |
---|---|
0.0.0 | 2022年6月23日 |
#1100 in 数学
5KB
115 行
许可证 · 文档
你想将你的机器人从点A移动到点B。这就是你真正想要做的所有事情。问题是,你如何对你的环境中存在的多个框架进行建模?
比如说你有以下内容
简而言之 —— 框架解决 (x, y, θ)
如下
use frames::prelude::*;
use nalgebra::{Isometry2, Vector2};
use std::f32::consts::PI;
fn main() -> Result<(), FrameError> {
let mut frames = Frames::new();
let field = Frame::new("field");
let robot = Frame::new("robot");
frames.add_frame(field, Isometry2::new(Vector2::new(0., 0.), 0.))?;
frames.add_frame(robot, Isometry2::new(Vector2::new(1., 1.), PI))?;
let x = Point::new("x");
frames.add_point_in_context(
x,
Isometry2::new(Vector2::new(7., 5.), PI),
field,
)?;
assert_eq!(
frames.get_point_in_context(x, robot)?,
Isometry2::new(Vector2::new(6., 4.), 0.)
);
Ok(())
}
特点
- 高效 —— 优化,没有废话的计算。
- 可扩展 —— 可在任何维度进行计算。
- 类型安全 —— 错误可以在编译时看到。
依赖项
~3.5MB
~73K SLoC