2个版本

0.1.1 2021年12月11日
0.1.0 2021年9月19日

#732 in 数学

MIT许可证

48KB
729

trajgen

trajgen是一个为Rust编写的最小轨迹生成库 - 给定一组3D点、期望的时间和最小轨迹类型,该库将计算适当的顺序多项式以确保通过这些点的路径(以及平滑的导数)。

特性

  • 为速度、加速度、加加速度和冲击生成最小轨迹
  • 给定时间计算期望的位置、速度、加速度以及更进一步的导数

使用 trajgen

只需将以下内容添加到您的 Cargo.toml 文件中

[dependencies]
trajgen = "*"

现在您就可以生成和使用轨迹了

use trajgen::{TrajectoryGenerator, TrajectoryType, Point};

fn main() {
    let mut traj_gen = TrajectoryGenerator::new(TrajectoryType::Snap);

    // add waypoints for the trajectory
    let waypoints: Vec<Point> = vec![Point {x: 1., y: 2., z: 3., t: 0.},
                                     Point {x: 2., y: 3., z: 4., t: 1.},
                                     Point {x: 3., y: 4., z: 5., t: 2.}];
    // solve for given waypoints
    traj_gen.generate(&waypoints);

    // use the individual values in real-time, perhaps to control a robot
    let t = 0.24;
    let pos = traj_gen.get_position(t).unwrap();
    print!("Current desired position for time {} is {}", t, pos);

    let vel = traj_gen.get_velocity(t).unwrap();
    print!("Current desired velocity for time {} is {}", t, vel);

    let acc = traj_gen.get_acceleration(t).unwrap();
    print!("Current desired acceleration for time {} is {}", t, acc);

    // or get values for a range of times, perhaps to plot
    let path = traj_gen.get_positions(0.25, 0.75, 0.1);
}

推导

有关本库实现的冲击轨迹的推导,请参阅以下 Jupyter笔记本

依赖

~3MB
~58K SLoC