Home Messages Index
[Date Prev][Date Next][Thread Prev][Thread Next]
Author IndexDate IndexThread Index

Re: [News] Outdoor Mobile Robot Powered by Linux

  • Subject: Re: [News] Outdoor Mobile Robot Powered by Linux
  • From: Bob Hauck <postmaster@xxxxxxxxxxxxxxxxxxxxx>
  • Date: Tue, 20 Jun 2006 22:19:22 -0400
  • Newsgroups: comp.os.linux.advocacy
  • Organization: Hauck Family
  • References: <15771122.SIJZWKDbBb@schestowitz.com>
  • Reply-to: bobh at the domain haucks dot org
  • User-agent: slrn/0.9.8.1pl1 (Debian)
  • Xref: news.mcc.ac.uk comp.os.linux.advocacy:1121624
On Tue, 20 Jun 2006 17:52:07 +0100, Roy Schestowitz
<newsgroups@xxxxxxxxxxxxxxx> wrote:

> ,----[ Specs (snippets) ]
>| - On board industrial and reduced Linux PC (em555) + RTai + SynDEX
>| (real-time SDK) and very soon the robuBOX
>| 
>| - control software :
>| Serial command interpreter OR C++ Linux librairies to control the
>| robot from any linux+rtai application (host PC) OR using SynDEX
>| real-time low-level dev. toolkit (REQUIRES TRAINING SESSION)
> `----

I just finished up a short project in a related area that I thought was
kind of fun.  

We had a six degree of freedom hexapod table (aka "stewart machine"),
but no control software.  The task was to write some control software
that would enable users to generate repeatable motion for testing
antenna gimbals.  Of course there was a realtime requirement since the
D/A card did not have any buffers or hardware timing capability.

I used Linux kernel 2.6.14 with the Xenomai real-time patches as the OS.
Userland is Debian Stable.  The software is packaged in three parts: a
kernel driver for the D/A card, a real-time daemon written in C, and a
Python GUI.  All three are combined in a Debian package that can be
installed by dpkg.  We're getting about 20 uS of timing jitter, worst
case, in the final D/A outputs.  The PC is some random Dell Dimension
that IT came up with.

On boot, the driver for the D/A card is loaded and the daemon started.
There are three interacting threads in the daemon.  

The "comms" thread runs soft realtime and communicates to a Python GUI
via a pair of FIFO's.  The GUI enables the user to configure a signal
generator on each of the degrees of freedom
(pitch/roll/yaw/surge/sway/heave), or to load a control file.

The "slow" thread runs hard realtime at 100 Hz.  It calculates the next
setting for the length of each hexapod leg based on a set of six
function generators, one for each degree of freedom.  The function
generators are configured by the "comms" thread.  Each iteration of the
slow loop generates one data pont for each of six independent waveforms.
It then calculates a set of equations to solve the hexapod kinemeatics.

The "fast" thread runs at 1KHz.  It smooths the data points generated by
the slow loop, scales them, and writes them to a D/A card that controls
the positon of each motor (six of them).

The user starts the GUI after he logs in.  It connects to the FIFO's
opened by the daemon and exchanges control messages with it.  In this
way the user can configure the operation of the table.

This was all done entirely with free software.  No bits were harmed in
producing it.


-- 
 -| Bob Hauck
 -| A proud member of the unhinged moonbat horde.
 -| http://www.haucks.org/

[Date Prev][Date Next][Thread Prev][Thread Next]
Author IndexDate IndexThread Index