#kinematics #robot #inverse-kinematics

ik-geo

使用IK-Geo算法求解逆运动学问题的几何解

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