#physics #physics-simulation #rocket-league #rlbot #dubin

dubins_paths

Rust代码用于计算Dubin路径

28个稳定版本

新版本 2.4.0 2024年8月20日
2.3.1 2024年6月9日
2.3.0 2024年3月23日
2.1.1 2023年12月25日
0.2.5 2021年10月22日

#8仿真

Download history 3/week @ 2024-05-24 6/week @ 2024-05-31 193/week @ 2024-06-07 51/week @ 2024-06-14 68/week @ 2024-06-21 50/week @ 2024-06-28 245/week @ 2024-07-05 706/week @ 2024-07-12 703/week @ 2024-07-19 921/week @ 2024-07-26 795/week @ 2024-08-02 1071/week @ 2024-08-09 1246/week @ 2024-08-16

4,185 每月下载量

MIT 协议

34KB
406

Dubin路径

unsafe forbidden

Rust代码用于计算Dubin路径

感谢 Andrew Walker 提供的 原始C代码

我已经将代码移植到Rust,并记录了我所能理解的一切。原始仓库中的文档很少。

快速示例

use core::f32::consts::PI;
use dubins_paths::{DubinsPath, PosRot, Result as DubinsResult};

// PosRot represents the car's (Pos)ition and (Rot)ation
// Where x and y are the coordinates on a 2d plane
// and theta is the orientation of the car's front in radians

// The starting position and rotation
// PosRot::from_f32 can also be used for const contexts
const q0: PosRot = PosRot::from_f32(0., 0., PI / 4.);

// The target end position and rotation
// PosRot implements From<[f32; 3]>
let q1 = [100., -100., PI * (3. / 4.)].into();

// The car's turning radius (must be > 0)
// This can be calculated by taking a cars angular velocity and dividing it by the car's forward velocity
// `turn radius = ang_vel / forward_vel`
let rho: f32 = 11.6;

// Calculate the shortest possible path between these two points with the given turning radius
let shortest_path_possible: DubinsResult<DubinsPath> = DubinsPath::shortest_from(q0, q1, rho);

// Assert that the path was found!
assert!(shortest_path_possible.is_ok());

DubinsPath有许多方法供您探索,例如length、extract_subpath、sample和sample_many。

功能

  • glam - 使用一个兼容 glam 的API

更多文档

需要更多详细文档?请访问 docs.rs 页面!

依赖项

~0–0.8MB
~26K SLoC