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
- See the installation instructions below.
- This wiki page.
- Throughout the various files in the package.
ROS Tutorial: create a kinematics solution using IKFast
For questions, please use http://answers.ros.org
Go to your ROS working directory. eg.
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
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.
$ roslaunch arm_kinematics_tools get_fk.launch
Gets end link pose using TF, calls the get_ik service and continuously prints joint angles.
$ 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
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.