2个版本
0.1.1 | 2021年12月11日 |
---|---|
0.1.0 | 2021年9月19日 |
#732 in 数学
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