Contains some useful tools for creating and testing your own arm kinematics package.
You can test various kinematics solvers: newton-raphson, KDL, IKFast
Rviz and a fake joint state publisher allows you to easily position your robot in various configurations and validate the solution.

Based on code from arm_kinematics and the PR2 arm tutorials.

Tested with ROS Fuerte.



Go to your ROS working directory. eg.

cd ~/ros_workspace

Checkout the arm_kinematics_tools stack from the KAIST repository:

$ svn checkout

The IKFast API demo requires the lapack library.
To install it:

sudo aptitude install liblapack-dev

Build the binary executables:

$ rosmake arm_kinematics_tools

Add the stack to your ROS_PACKAGE_PATH. e.g.

$ export ROS_PACKAGE_PATH=~/ros_workspace/arm_kinematics_tools:$ROS_PACKAGE_PATH

So this won't be lost when you reboot, edit ROS_PACKAGE_PATH in your .bashrc file too.

$ pico ~/.bashrc


Example kinematic solvers

Launches fake joint state publisher GUI, Rviz and kinematics service using Newton-Raphson methods: with or without joint limits, and searching with multiple seeds.
Based on the arm_kinematics package.

You need to modify the launch files to point to your own <robot_name>_description package.

To launch a kinematics service, run either:

$ roslaunch arm_kinematics_tools arm_kinematics_nr.launch
$ roslaunch arm_kinematics_tools arm_kinematics_nr_jl.launch
$ roslaunch arm_kinematics_tools arm_kinematics_nr_jl_search.launch

Example kinematics plugin as a service

Launches fake joint state publisher GUI and Rviz, to generate a pose or joint angles.
Loads the KDL or IKFast plugins as a kinematics service, outside of the planning scene environment, which can be tested using the methods below.

You need to create your own arm_navigation stack and optionally an IKFast plugin (read the section below).
Edit the fake_jointstate_pub_kinematics_solver.launch file in this package, to suit your own robot.

To launch it from within this package:

$ roslaunch arm_kinematics_tools fake_jointstate_pub_kinematics_solver.launch

Examples of get_fk, get_ik

Demonstrates how to call an FK or IK kinematics service. Can be used with the above services based on N-R, or with the KDL or IKFast plugins.

Reads joint angles from /joint_states topic, calls get_fk service and continuously prints translation-quaternion pose of end link.
To launch:

$ roslaunch arm_kinematics_tools get_fk.launch

Gets end link pose using TF, calls the get_ik service and continuously prints joint angles.
To launch:

$ roslaunch arm_kinematics_tools get_ik.launch

IKFast kinematics plugin generator

This has been updated to support output generated from IK Fast 54/56/61.
You can automatically generate a kinematics solution for your manipulator and immediately start using it with the arm_navigation planning warehouse.

To generate your own plugin:

$ rosrun arm_kinematics_tools

For detailed information, see ROS Tutorial: create a kinematics solution using IKFast

IKFast API demo

Simple command-line demo, allows you to validate the output from IKFast before you integrate it with your own software.
Calculates FK from joint angles.
Calculates IK from either translation-rotation matrix or translation-quaternion pose.
Performance tests - generates random joint angles, finds FK then times the IK.

To see available options, run:

$ rosrun arm_kinematics_tools compute

Report a Bug

Use the kaist-ros-pkg issue tracker to report bugs or request features.

Wiki: arm_kinematics_tools (last edited 2013-01-09 17:10:41 by DavidButterworth)