Robot Editor

In addition to the GRASP Simulator, we provide a tool that allows easily to create new or convert existing models of robot hands. Collada in version 1.5 has been chosen as the common content exchange format. The Robot Editor should be based on available and reliable open source software. For this reason the Blender project has been chosen. It is easily extendable and supports a variety of file formats including Collada 1.4 the predecessor of the exchange format, that could be used as a starting point for further development.

Blender

Getting the software

The Robot Editor is designed as plugin for Blender as a set of Python script. It has been developed under version 2.48a and it is hence recommended to use also this version (Download here).

Using Blender

Blender has a very consistent and productive user interface. However, -as it is non-standard- it is strongly recommended to first read the official tutorials for using the Blender UI and about Blender windows and navigation in 3D space.

There is also a wiki dealing with using blender in robotics.

Robot Editor

Download and Installation Instructions

Download and unzip the script20090831.zip in either Blender's script folder or in at an user-defined location. You can change this location by enlarging the user preferences window (dragging the window border) and selecting File Paths, see:

Once you changed the path you should be able to select the Robot Editor from a scripts window with scripts > wizards > Grasp Robot Editor.

Tutorial

In this tutorial, we will demonstrate how to create a Collada 1.5 model of an anthropomorphic robot hand (1) with the Robot Editor. The resulting file is suitable to use with the Grasp GRASP Simulator. As a starting point serves a configuration file for the GraspIT project as well as several OpenInventor files describing the geometric model of the joints and links respectively. The following picture shows an high quality ray-traced image of the finished model and on the right a screenshot of the model running in the GRASP Simulator.

Import Models

The geometrical model we use to design the Collada model comes distributed in several OpenInventor files. The following section describes how to import these files in the editor. However, for this tutorial you can use the Example1.blend where all elements are already arranged.

Open Inventor

Blender does not directly support the import of OpenInventor files. These files have to be used with GraspIT. However, OpenInventor is closely related to the supported VRML 1.0 standard and can be transformed easily into this format. In most cases, it is sufficient to change only the header of the input files. For example, on linux you could use the following script to transform all inventor files within a folder:

#!/bin/bash
for i in *iv; do
j=$(echo $i|sed -e "s/iv/wrl/");
sed -e "s/^#Inventor/#VRML/" $i > $j ;
echo "$i -> $j" ;
done

Import files

In Blender, models can be imported by File > import. Note: Often, models have to be scaled due to the use of different metrics. This can be done by selecting the object with the right mouse button while being in object mode and pressing s followed by the scale factor (e.g. 0.1).

After having imported all models of joints and links, these models have to be arranged correctly. It proved to be helpful to change to Wireframe mode for this purpose.

In order to arranges two links accurately, they should be both displayed exclusively. This can be done by selecting both of them by pressing the right mouse button while holding Shift. Pressing / will hide all objects in the scene but the selection.

A model can then be translated orthogonally to the viewing direction by pressing g. It can be rotated around the viewing axis by pressing r followed by the angle in Degrees or by the movement of the mouse. Top or side view can be selected by Num7, Num3 and Num1.

In the example file, there is already a light and a camera defined so the connected model can be rendered at once (F12) and be exported:

Define the kinematics

Once the geometry has been defined, the kinematics can be defined using the Robot Editor plugin. Move the 3D cursor to the starting position of the kinematics by left clicking at the desired position in both the top and the side view windows. Press then the space bar and select Add > Armature. In Blender, the term Armature refers to kinematics and Bone to links and joints.

Now choose or create a subwindow (right click on the window borders and split) and change make it a Scripts Window (the symbol with the python snake):

You should now be able to select the Robot Editor from the list of installed plugins (Scripts > Wizards > GRASP Robot Editor). It might be necessary to select update menus first.

At first, you have to select the Armature to work on in the Robot Editor window.

The editor offers various possibilities to easily edit the kinematic structure of a robot. At the beginning, we have to define the links and joints. Therefor, we transfer the definition in the GraspIT file (example.cfg). For instance, the thumb has the following definition:

-----------------------------------Thumb-----------------------------------------
#number of joints
2
#number of links
2
r 90 x
t 48.9 29.25 0
d0 0 40.4 0 0 90
d1 0 40.2 0 0 90
Revolute
thumb_r1.iv 0
Revolute
thumb_r2.iv 1

Change to Armature mode (select Armatures) in the left menu bar. You will get a tree view of the kinematic structure. Right now there is only a single bone that was created automatically together with the Armature object. The robot editor stores additional information such as DH-parameters and dynamics properties along with each armature. Hence, the bone that was not created by the editor does not carry this information and should not be used. You can delete this bone by clicking on the button right to it. By clicking on a bones name you can hide its child nodes and you can scroll up and down using the buttons at the top.

Let us create a new Button for the thumb. Click on the Add New button that is most left (at the top level of the armature) and choose "thumb1" as the new name. Once the bone is created the editor changes automatically into bone mode with the newly created bone selected.

Within the bones mode you will be able to select which axis is an active degree of freedom and specify the boundaries as well as an joint offset (Note: at the moment you are limited to the z-axis). In the Robot Editor, one has to specify the transformation from the parent (the armature itself in this case). This allows the definition of forked kinematics. It is possible to use Denavit-Hartenberg (DH) notation or specify a translation and three subsequent rotations around the parent's coordinate axis (Note: XYZ not XY'Z' '). The next link thumb2 uses the DH parameters d=4.04, a=alpha=theta=0. Once you are finished, click on update. Note: you must be either in Object mode or Pose mode -not in Edit mode- in order for this to work.

The remaining fingers succeed a common joint palm. After all joints have been specified and the armature has been arranged with the geometric models the screen should look like this:

You can change the way the kinematics is displayed in the Buttons window (see above). The bones always point in the direction of their y-axis. The next image shows the finished tree after having connected all meshes to the bones (see the next section):

Connecting Geometric Models

In this section, we will see how to connect the geometrical models to the armature. In example2.blend , the connection already has been prepared. The option Rest Position should always be selected while you are connecting. In order to see its name displayed in the lower left corner, choose and select a model (right click in object mode). Select the corresponding bone in bone mode in the Robot Editor or by clicking on its Edit button in the tree view. At the bottom there is a drop down list populated with all meshes of the known models. By selecting one entry, you can connect this mesh to the currently selected bone as well as disconnect it again later. It is possible to connect several meshes to one single bone.

Another option is to select the mesh in mesh mode (Meshes in the left menu). There you can select the mesh and connect it to a bone by selecting a single one from the drop-down list. In this menu you can also connect meshes to the armature itself (the basis of the robot hand in this case).

As soon as you are finished connecting meshes and bones, you can move the model. If you are in pose mode and Rest Position is disabled, you can select a bone (right click) and rotate it (r) around its joint axis. The configuration in the picture at the beginning of this tutorial has been created this way.

Export to Collada 1.5

The data format chosen for the exchange of 3D content between the Robot Editor and the Simulator is COLLADA in version 1.5. However, Blender offers only support for Collada 1.4 via a plugin from Illusoft. The Robot Editor offers Collada 1.5 export for its own dynamic and kinematic data. The the original plugin from Illusoft therefor has been extended.

To export to Collada select File from the side menu and enter the name of the target file. The default file name is the name of the blender file with the suffix .dae. Collada does not offer the functionality to store all information the Editor offers, e.g. the DH parameters. This is why you should always save your work as a native Blender file (.blend). In addition to that, the import of Collada 1.5 is not supported either at the moment.

You can download the final Collada file of the presented example here example.dae

Known issues

Please report all problems you encounter to: ulbrich_at_ira.uka.de. Thank you!

References

[1] I. Gaiser, S. Schulz, A. Kargov, H. Klosek, A. Bierbaum, C. Pylatiuk, R. Oberleand T. Werner, T. Asfour, G. Bretthauer, and R. Dillmann. A new anthropomorphic robotic hand. In Proc. IEEE/RAS International Conference on Humanoid Robots (HUMANOIDS), pages 418-422, 2008. [ bib ]

@INPROCEEDINGS{Gaiser08_hand,
  title = {A new anthropomorphic robotic hand},
  author = {I. Gaiser and S. Schulz and A. Kargov and H. Klosek and A. Bierbaum and C. Pylatiuk and R. Oberleand T. Werner and T. Asfour and G. Bretthauer and R. Dillmann},
  booktitle = {Proc. {IEEE/RAS} International Conference on Humanoid Robots (HUMANOIDS)},
  pages = {418-422},
  year = {2008}
}

Grasp Wiki: Robot Editor (last edited 2009-09-15 17:43:32 by Ulbrich)