#frame #contextual #context

frames

简单的上下文框架

2 个不稳定版本

0.1.0 2022年7月1日
0.0.0 2022年6月23日

#1100 in 数学

MIT 许可证

5KB
115

Frames

许可证 · 文档

Crates.io docs.rs Codecov


你想将你的机器人从点A移动到点B。这就是你真正想要做的所有事情。问题是,你如何对你的环境中存在的多个框架进行建模?

比如说你有以下内容

Example figure

简而言之 —— 框架解决 (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