Real-time robot control: state of affairs...

Herman Bruyninckx <[email protected]>
Newsgroups gmane.science.robotics.orocos.user
Message-ID <Pine.LNX.4.44.0307282119020.3090-100000@srv04.mech.kuleuven.ac.be>
The EU-sponsored part of the project has had its final review today.
For that occasion, we worked lots of overtime to get a couple of
demonstrations together. I give a short overview of what works and
what still has to be done before the next major release. This state of
affairs overview is just that: a sketch of where we are now. It should
not be considered as the official announcement of our next major
release :-)

("We" in the previous and following paragraphs means four full time
 contributors: Peter, Takis, Johan and Klaas. Helped by half a dozen
 of temporary student programmers. They should get the credit, not me.
 I feel more comfortable taking the blames :-)

The demos showed two applications:

- 6DOF serial robot arm, with a inner joint control loop at 1kHz, and
  an outer Cartesian control loop at 100Hz.
  Simple control and motion interpolation. We can take inputs from
  some simple motion commmands, but also from `joystick'-like interfaces
  (we have a SpaceMouse).
  We use RTAI/LXRT for both control loops. The components in both
  loops can report their data to a non real-time process; reporting
  seems to give what we expected from it, with (if desired) XML files
  to change properties, and to receive reports (e.g, all joint
  positions reported at 1kHz).

  (PS I have to confess that I would lie if I said "no robots were
      harmed in the process of producing this application" :-)

- XY table: two orthogonal axes, that carry a laser distance sensor.
  The motion specification and control is a lot easier in this
  application, because the kinematics are trivial and the system only
  has 2 DOFs. The DOFs are linear in this system, but it should take
  very little efforts in adapting this application for a 2DOF rotational
  robot; we will have two such systems in the coming months, so expect
  these applications to become available in the near future..
  We (will) use this XY table setup to test our pattern recognition
  algorithms (which is part of the sensor processing work package of the
  project:
   <http://people.mech.kuleuven.ac.be/~kgadeyne/bfl.html>)
  This application runs under GNU/Linux, so not in hard real time.
  Exactly the same Kernel is used as for the hard real-time
  application above, with no line of code changed, but compiled with
  the --with-gnulinux flag.

Both applications use the same feedback control Kernel (which extends
the (RT)OS with feedback control programming primitives), but both
have different implementations of the Kernels generic interface.
(I.e., the application builder has to fill in the Kernel's _templated_
interface.)

The feedback control Kernel is performing very well; the motion control
applications need some more ironing out, but we are not at all unhappy
about the progress we are making: the long investments in building a
flexible and strong Kernel infrastructure begin to pay off.

Klaas joined our team only one week ago, starting the XY table
application; it's up and running now, even though he spent most of his
time on some non-software interface problems! This has proven to us
that a good programmer can indeed make a new application without
having to change anything at the "Framework Builders'" level, i.e,
concentrating on the particularities of the application, and not on
those of the (RT)OS.
It has also proven that the decoupling between Framework on the one
hand (i.e., the application-independent feedback control Kernel), and
Application on the other hand, has been done quite well.

We consider the 6DOF manipulator and the XY table as two primary
examples of how to build an orocos (real-time) control application, so
we are spending a lot of efforts to provide very extensive
documentation, and to explain what needs to be done to build new
applications. We will need a couple of weeks more to finish this job.
New users should start with studying these applications, and 
modify them for their own purposes; the goal is then to have a
growing library of Orocos application kernels, that the community can
reuse and extend.
At a finer granularity than the "Applications", also new "Components"
are expected to grow in the community. More in particular, I am
thinking of motion planning and interpolation components, servo
components, drivers, etc.

Before you rush to download the latest CVS code, be aware that
the whole control API has not yet stabilized, and also lots of code
has to be put in more appropriate directories in the CVS repository.
(Hence, the software ground will still be moving under your feet...)
This task will take a couple of weeks, unfortunately. But in the end,
we think this effort is absolutely necessary in order to make using
(and adding to) the Orocos control framework doable for new
application builders.

Another colleague of ours, Rene, has just started to make an Orocos
application for a mobile manipulator, i.e., a 6DOF arm on a mobile
platform. This application will also be very relevant for the
robotics research community, but it is in a less advanced state than
the two applications I described above, so don't hold your breath
until it's ready for prime time...

Herman
-- 
  K.U.Leuven, Mechanical Engineering, Robotics Research Group
<http://people.mech.kuleuven.ac.be/~bruyninc> Tel: +32 16 322480
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.