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.
- Author: David Butterworth
 - License: BSD
 Repository: kaist-ros-pkg
Source: http://kaist-ros-pkg.googlecode.com/svn/trunk/arm_kinematics_tools/
 
Documentation
- See the installation instructions below.
 - This wiki page.
 - Throughout the various files in the package.
 ROS Tutorial: create a kinematics solution using IKFast
http://wiki/Industrial/Tutorials/Create_a_Fast_IK_SolutionFor questions, please use http://answers.ros.org
 
Installation
Go to your ROS working directory. eg.
cd ~/ros_workspace
Checkout the arm_kinematics_tools stack from the KAIST repository:
$ svn checkout http://kaist-ros-pkg.googlecode.com/svn/trunk/arm_kinematics_tools
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
 
Usage
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 create_ikfast_plugin.py
For detailed information, see ROS Tutorial: create a kinematics solution using IKFast 
 http://wiki/Industrial/Tutorials/Create_a_Fast_IK_Solution 
 
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.