gear Build Status crates.io

Collision Avoidance Path Planning for robotics in Rust-lang

Video

Documents

Code example

minimum code example

```rust extern crate gear; extern crate nalgebra as na;

fn main() { // Create path planner with loading urdf file and set end link name let planner = gear::JointPathPlannerBuilder::tryfromurdffile("sample.urdf", "lwrist2") .expect("failed to create planner from urdf file") .collisioncheckmargin(0.01) .finalize(); // Create inverse kinematics solver let solver = gear::JacobianIKSolverBuilder::::new() .nummaxtry(1000) .allowabletargetdistance(0.01) .move_epsilon(0.0001) .finalize(); let solver = gear::RandomInitializeIKSolver::new(solver, 100); // Create path planner with IK solver let mut planner = gear::JointPathPlannerWithIK::new(planner, solver);

// Create obstacles
let obstacles =
    gear::create_compound_from_urdf("obstacles.urdf").expect("obstacle file not found");

// Set IK target transformation
let mut ik_target_pose = na::Isometry3::from_parts(
    na::Translation3::new(0.40, 0.20, 0.3),
    na::UnitQuaternion::from_euler_angles(0.0, -0.1, 0.0),
);
// Plan the path, path is the vector of joint angles for root to "l_wrist2"
let plan1 = planner.plan_with_ik(&ik_target_pose, &obstacles).unwrap();
println!("plan1 = {:?}", plan1);
ik_target_pose.translation.vector[2] += 0.50;
// plan the path from previous result
let plan2 = planner.plan_with_ik(&ik_target_pose, &obstacles).unwrap();
println!("plan2 = {:?}", plan2);

} ```

Run example with GUI

How to run

bash cargo run --release --example reach

GUI control

Use your robot

The example can handle any urdf files (sample.urdf is used as default). It requires the name of the target end link name.

bash cargo run --release --example reach YOUR_URDF_FILE_PATH END_LINK_NAME

For example,

PR2

bash cargo run --release --example reach $(rospack find pr2_description)/robots/pr2.urdf.xacro l_gripper_palm_link

Video

Universal Robot: UR10

bash cargo run --release --example reach $(rospack find ur_description)/urdf/ur10_robot.urdf.xacro ee_link

Sawyer movie

Sawyer

bash cargo run --release --example reach $(rospack find sawyer_description)/urdf/sawyer.urdf right_hand

UR5 movie