3个版本
0.1.2 | 2024年7月9日 |
---|---|
0.1.1 | 2024年7月9日 |
0.1.0 | 2024年7月1日 |
#60 在 机器人学
130KB
3.5K SLoC
Ik Geo
这是IK-Geo论文中发现的解析逆运动学算法的Rust实现。此实现已从RPI Robotics的原始Rust实现改编而来。
使用方法
要使用此包,您需要通过名称选择一个实现的模型,或者将运动学指定为指数积并选择适当的问题分解。
// Only need to import the one you are using
use ik_geo::robot::{
spherical, spherical_two_parallel, spherical_two_intersecting, three_parallel_two_intersecting, three_parallel, two_parallel,
two_intersecting, gen_six_dof
}
use ik_geo::robot::{
ur5, irb6640, three_parallel_bot, two_parallel_bot, spherical_bot
}
fn main() {
let robot = ur5();
let R: Matrix3<f64> = ...
let t: Vector3<f64> = ...
// Solutions is a list of IK solutions
// and whether they are least squares approximations.
// Depending on the specific decomposition, a least squares solution might not be available.
let solns = robot.ik(R, t);
for (q, is_ls) in solns {
if !is_ls {
// This is an exact solution
} else {
// This one is close, but not exact
}
}
}
性能
虽然此实现可以用于各种机械臂,但当解决方案可以完全解析找到时,性能会更好。以下表格显示了每种运动学类型使用的哪种方法
解决方案类型 | 机器人运动学家族 | 示例 |
---|---|---|
闭式 | 球形关节 | Franka Production 3,固定 $q_5$ |
和两个相交的轴 | KUKA LBR iiwa 7 R800,固定 $q_3$ | |
和两个平行的轴 | ABB IRB 6640 | |
三个平行的轴 | N/A | |
和两个相交的轴 | Universal Robots UR5 | |
和两个平行的轴 | N/A | |
1D搜索 | 两个相交的轴 | Kassow Robots KR810,固定 $q_7$ |
和两个相交的轴 | FANUC CRX-10iA/L | |
和两个平行的轴 | Kawasaki KJ125 | |
两个平行的轴 | N/A | |
和两个平行的轴 | N/A | |
两个相交的轴 $k, k+2$ | ABB YuMi,固定 $q_3$ | |
和两个相交的轴 | RRC K-1207i,固定 $q_6$ | |
和两个平行的轴 | N/A | |
2D搜索 | 通用6R | Kassow Robots KR810,固定 $q_6$ |
测试
正确性测试
$ cargo test --release
用于诊断信息
$ cargo test --release -- --nocapture
依赖项
~5MB
~97K SLoC