Skip to content

Inverse Kinematics Engine for the Franka Emika Panda for Cartesian Pose Control.

License

Notifications You must be signed in to change notification settings

HIRO-group/HIRO_Panda_TRAC_IK

Repository files navigation

Franka Panda TracIK Solver

A Cartesian pose controller in the form of a ROS package, developed at the HIRO Lab at CU Boulder.

Details

This package uses Trac_IK, an IK solver with a solve rate of 99.88% for the Panda. From there, the user can specify the trajectory method in which the robot moves from one pose to another.

There's an accompanying Jupyter Notebook (here) for Catmull-Rom Splines, which is the best (smoothest) trajectory method for the Panda in this repo. A short document about these Splines can be found here.

Note: This package has been soley tested for the real robot, and doesn't work in simulation. However, a possible future extension of this work would be for simulation!

Installation, Building, and Usage

Requires

  • trac_ik: The inverse kinematics package compatible with Franka Panda (and a variety of other robot arms)
  • libfranka and franka_ros: These libraries are needed to get started on the real Panda. For detailed instructions how to install, check out this link here for installation.

Steps

# create a new catkin workspace...

mkdir -p catkin_ws/src
cd catkin_ws/src
git clone https://bitbucket.org/traclabs/trac_ik.git
git clone https://github.com/HIRO-group/HIRO_Panda_TRAC_IK

cd ..

catkin build

source devel/setup.bash

User Information

In order to run through the IK:

source devel/setup.bash

roslaunch hiro_panda_ik hiro_panda_ik_controller.launch robot_ip:=<robot-url> trajectory_method:=<1,2,3 or 4>
  • The trajectory method is the method which is used to move the arm after the inverse kinematics are calculated. The options are:

    • 1: Constant velocity to each point (default option when trajectory_method is not provided)
    • 2: Increase velocity at a constant rate, then maintain max rate, then decrease at constant rate once near end of trajectory ('trapezoid' method)
    • 3: Catmull-Rom splines where velocity is calculated as a function of position (smoothest and best method)
  • To publish to the topic:

rostopic pub -1 /hiro_panda/goto_pose geometry_msgs/Pose "{position:{ x: 0.4, y: 0.4, z: 0.5}, orientation:{ x: 0.0, y: 0.0, z: 0.0, w: 1.0}}"
  • The above example will not changed the orientation of the arm; it will move it to the desired 3-d coordinates. Make sure that the orientation (quaternion) normalizes to 1.

About

Inverse Kinematics Engine for the Franka Emika Panda for Cartesian Pose Control.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published