Diego – the humanoid biped

Software

Robot user interface application

by on Apr.16, 2012, under Software

I created this test application for demonstrating the capabilities of the new robot class model. The video gives a quick overview of the system (the volume might be a bit low):

You can download this application at the following links:

The first option contains only the source and header files of the project.

The second option is a VS2005 project with all the needed dependencies. It also contains the complied and linked executable robot_class.exe in the release folder. This zip file should be unpacked to C:\ for the Festival library to work properly (it creates its own sub-folders). It was tested under Windows Vista.

You might need the VC2005 redistributable package for this application to work properly on your computer – x86 or x64.
Leave a Comment more...

Generalized robot class model – transition to C++

by on Apr.14, 2012, under Software

After a long time developing my robot’s software in C, I decided to make a transition to C++. I realized that a class system would allow me to keep a better structure of the code. This is why I developed a new object system, which looks like this in UML (click on it for a larger view):

generalized robot model

generalized robot model

In the demo/test application, the robot class is controlled directly by the user interface class.  The robot class aggregates member objects for controlling different functionalities: the speech system, vision system, kinematics model. The vision class consists of two or more camera classes, which in turn contain classes for blob manipulation. The vision class is also responsible for triangulation to calculate distances of objects in the robot’s field of view. The kinematics class describes the kinematic model of the robot using arrays of joint structures and segments. It also contains a member function for calculating direct kinematics.

Leave a Comment more...

Moving on to open-source libraries

by on Apr.14, 2012, under Software

I am a strong believer in open-source software. To live up to this belief, I replaced Microsoft SpeechAPI with PocketSphinx speech recognition and Festival speech synthesis libraries. This brings me up to 4 different libraries for this project:

Leave a Comment more...

DiegUI – Diego’s Sequencer Software

by on Aug.08, 2009, under Software

It is hard to plan Diego’s motion by the trial and error method, which includes trying to program different angles for each motor which would result in a desired robot motion, e.g. a step. When one set of angles does not work, it is changed until the motion seems satisfactory. That is how I got Diego to perform his first step.

In order to facilitate motion planning I decided to make a graphical user interface (GUI ergo DiegUI) which would allow to plan the robot’s motion in a visual manner. It has the following layout.

guide

The right part of the window contains different views of the robot. For now, only the robot’s legs are shown, which are most important for planning a step. Each segment is represented by a black rectangle, while the joints are marked with red circles.

guide_right

The robot’s segments and joints are described using kinematic chains. This is the standard way of describing robotic systems. The left side of the GUI contains the joint control sliders and edit boxes. This is the so called forward kinematics section of the application.

guide_left

Here, by changing the slider position, the robot’s joints can be rotated one-by-one. This is called direct or forward kinematics, because the robot’s spatial configuration is uniquely defined by giving all the angular positions of the joints and knowing the lengths of the segments. If you are interested how DK is implemented, read up on homogeneous transformations before I write an appropriate article on the topic.

In the lower left part of the window there is the inverse kinematics (IK) button. IK is the process when the end point of a kinematic chain is placed at a desired location while the angular positions of the robot are calculated in order to reach this final goal position. The solution to IK is in most cases not unique. There are many configurations of the robot that result in a certain position of the end point of the last segment. This is why constraints have to be added. In the general case it is not possible to come up with an analytic solution for the IK problem, therefore numeric solutions need to be applied.

Finally, the top part of the window contains the timeline of the robot’s motion. In a similar way as in for example Flash, it is possible to define so called keyframes in the motion sequence. The positions between keyframes are ‘tweened’, i.e. interpolated.

guide_top

As the next goal, this GUI needs to be able to connect to Diego wirelessly and download the current motion sequence to the robot. This would enormously improve the motion design process, which would allow me to create more sophisticated steps.

Leave a Comment more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Archives

All entries, chronologically...