- Description
-
Details
Short description
This software includes a ROS inverse kinematics stack adapted for the KUKA youBot. It provides a closed form IK, which only calculates the end configuration of the joints based on the actual position of the arm. The idea is based on the inverse kinematics of the Yasukawa Motoman L-3 from Craigs book. The input data is a 6D-Pose consisting of the x-y-z coordinates and the roll-pitch-yaw orientation of the gripper. Here you find step-by-step instructions on how to get this ROS stack running on the youBot.
NOTE: There is no path planing provided yet. You only get the end configuration of the joints.
NOTE: This software was developed by Sven Schneider in a student project at Bonn-Rhine-Sieg University of Applied Sciences. It has not been integrated yet into the official youBot ROS repository, thus be aware that it is subject to change and any programs using it may require to be adapted accordingly.
Installation
This install guide assumes that ROS Wrapper for KUKA youBot API is already installed. If not follow this link for the installation instructions. The master branch is for electric and contains the latest extensions. The stacks consists of the following packages:
- youbot_arm_kinematics: contains the inverse kinematics plugin
- youbot_arm_navigation: starts the arm kinematic and the arm planner
- youbot_joint_trajectory_action: converter from ROS to BRICS interface
- youbot_manipulation_examples: contains some example applications
You can find the sources on github. Check out your version as follows:
$ git clone https://github.com/svenschneider/youbot-manipulation.git
After downloading the stack into one of your ROS known directories you have to execute rosmake.
$ rosmake youbot_arm_navigation
Usage in simulation
The arm navigation stack can be either used in simulation or on a real platform. First it is shown how to use in simulation. In the first terminal window start the youBot packages and the arm navigation by using following launch file:
$ roslaunch youbot_manipulation_examples bringup-sim.launch
Monitoring with rviz
rviz is a visualization tool that can be used for different purposes. In our case we use rviz to see, if the inverse kinematics finds a solution for our input data. From the terminal window start rviz:
$ rosrun rviz rviz
Go to the menu "Plugins" and activate the plugin "Motion Planning" (if not done automatically). Now you can add a new display by clicking on the add button on the bottom left. Select "Planning" from the display type "Motion Planning". Than setup the configuration for the planning display as follows:
- Visual Enabled -> Yes
- Collision Enabled -> No
- Robot Description -> /robot_description
- Topic -> /ik_solution_display
Now you should see the transparent components of the youBot, which are concentrated at the point of origin. For testing the inverse kinematics within the visualization there is an example script with predefined coordinates. Run following script:
$ rosrun youbot_manipulation_examples move_arm_cart_test.py
Note: Do NOT use this script with the real robot!
Usage for real robot
In case of arm navigation with a real KUKA youBot you need to use youbot_oodl. Start the driver, the publisher and the arm navigation by using following launch file:
$ roslaunch youbot_manipulation_examples bringup.launch
Note: You must be aware that using this launch file could have an effect to the functionality of other software components of yours, because this launch file remaps some of the default topic names for the OODL driver.
Default settings
In the default setting the coordinate origin is located in the center of Axis 1 (arm_link_0). The tool center point is 130 mm far away from joint 4; see also picture above.
Demo Application for the real arm
There is a demo application for moving an arm with the inverse kinematics stack. You can find the applications in the github repository mentioned above.
Execute one of the following commands to start an example:
# calculate an IK solution and move the arm
$ rosrun youbot_manipulation_examples simple_ik_solver.py# calculates an IK solution without moving the arm
$ rosrun youbot_manipulation_examples constraint_aware_ik_solver_test.pySupport
On the following links you can find more information about the IK in ROS
- http://www.ros.org/wiki/arm_navigation/Tutorials
- http://www.ros.org/doc/api/kinematics_msgs/html/srv/GetPositionIK.html
- http://www.ros.org/doc/api/kinematics_msgs/html/srv/GetConstraintAwarePositionIK.html
- mail to users@youbot-community.org (or click here to subscribe)