AU Robot Servers: Difference between revisions

From Rsewiki
Line 49: Line 49:
==Modules==
==Modules==


===Descriptions===
====Descriptions====


Not all plug-in modules has a description on these pages (yet).
Not all plug-in modules has a description on these pages (yet).
Line 61: Line 61:
* smr - MRC interface (ausmr.so.0) - [[MRC interface]] holds some routines to control and interface with the MRC, and a smrctl resource to translate manoeuvres to SMRCL.
* smr - MRC interface (ausmr.so.0) - [[MRC interface]] holds some routines to control and interface with the MRC, and a smrctl resource to translate manoeuvres to SMRCL.


===Coordinate systems===
====Coordinate systems====


The three [[Coordinate systems]] are available as static: odometry (odoPose), UTM (utmPose) and Map (mapPose)
The three [[Coordinate systems]] are available as static: odometry (odoPose), UTM (utmPose) and Map (mapPose)


===How to make a plugin===
====How to make a plugin====


[[plug-in structure]]
[[plug-in structure]]

Revision as of 08:21, 27 September 2010

Download

The tar ball (packed) versions are here: http://server.elektro.dtu.dk/ftp/jca/mobotware/

and a few comments for the releases in Release notes

Latest version:

On Jensen: (in /usr/local/smr/bin) is 2.1053 (as of 13 Aug 2010).

On SVN: is version 2.1053 (as of 13 Aug 2010).

Base Documentation

Programming API documentation

AU Robot servers (AURC)

AURS class documentation http://www.iau.dtu.dk/~jca/rac/html/index.html

Open CV

OpenCV (1.0) general documentation http://server.elektro.dtu.dk/www/jca/opencv/

OpenCV (1.0) CXCORE documentation http://server.elektro.dtu.dk/www/jca/opencv/ref/opencvref_cxcore.htm

OpenCV (1.0) CV documentation http://server.elektro.dtu.dk/www/jca/opencv/ref/opencvref_cv.htm

Camera server

The camera server ucamserver is pre-configured for camera related functionality.

Laser scanner server

The laser scanner server ulmsserver is pre-configured for functions using laser scanner data.

Client for monitoring (auclient)

A data monitoring client auclient is a server pre-configured to display graphics on an x-console. It can be started on computers with X installed, i.e. not on the robots. The auclient uses openCV (highgui) to display the data.

Other servers

An empty server userver is intended for functionality not related to camera and laser scanners

A server stub auservertest is a port server that just shows messages from connected clients - with a timestamp. This can be used to replace the MRC to verify the messages intended for the MRC.

Server module tester uservermoduletester is a special server, where most of the available plug-ins are compiled staticly into the server, and thus available in the >> module help list for direct creation. This server is intended for debug only.

Modules

Descriptions

Not all plug-in modules has a description on these pages (yet).

Coordinate systems

The three Coordinate systems are available as static: odometry (odoPose), UTM (utmPose) and Map (mapPose)

How to make a plugin

plug-in structure

Variables (global variables and functions across plugins)

Installation notes

Installation without FIREWIRE

If you do hat have (and should not use) firewire, then the AURS can be compiled by changing two of the Makefiles:

library ucam4 (in subdirectory ucam4):

In the Makefile change the DEFINES line from

DEFINES = -D USE_IEEE1394 or -D USE_GUPPY

to

DEFINES = -D USE_NO_IEEE1394 -D USE_NO_GUPPY

And the cameraserver (in directory ucamserver)

In the Makefile change the DEFINE line from

DEFINES = -D USE_IEEE1394 or -D USE_GUPPY

to

DEFINES = -D USE_NO_IEEE1394 -D USE_NO_GUPPY

and the LDDFLAGS line from

LDFLAGS = -g0 -lcxcore -lcv \
        -L../lib -lurob4o -lugen4o -lumap4o -lucam4o \
        -lpng -ldl -rdynamic -lcurses -lreadline -lraw1394 -ldc1394_control

or

LDFLAGS = -g0 -lcxcore -lcv \
        -L../lib -lurob4o -lugen4o -lumap4o -lucam4o \
        -lpng -ldl -rdynamic -lcurses -lreadline -lraw1394 -ldc1394

to

LDFLAGS = -g0 -lcxcore -lcv \
         -L../lib -lurob4o -lugen4o -lumap4o -lucam4o \
         -lpng -ldl -rdynamic -lcurses -lreadline

Bugs

NEW! BUG reporting page here: Change requests (if you do not have write access, then send me a mail mailto:jca@elektro.dtu.dk)


Old stuff

Servers

Server structure issues (global variables and methods)

Camera server ucamserver

Laser scanner server ulmsserver

Empty server userver

Data monitoring client auclient

Static Plug-ins

Static plug-ins is part of the server code, and can be loaded without any additional files, see:

>> module help

To get the available list of static plug-ins (and a short description)

The three Coordinate systems are available as static: odometry (odoPose), UTM (utmPose) and Map (mapPose)

File plug-ins

This is a list of the current available plug-ins in release 2.176:

The intension is that there should be a wiki page for each with further description.

  • auavoid.so.0 - visual graph obstacle avoidance (not stable)
  • auballfinder.so.0 - sample blob finder in a camera image
  • aucamcog.so.0 - a sample center of gravity plug-in for part of a camera image
  • aucamfocus.so.0 - a focus (contrast) calculation on a camera image.
  • aucron.so.0 - a module to execute bash commands at regular intervals - e.g. to move logged images at low priority
  • audrivepos.so.0 - drive control to a specific pose (uses auavoid)
  • auefline.so.0 - sample line finder plugin extended to find and maintain wall lines. Is based on the libauextractfeatures library.
  • augps.so.0 - a gps plugin, that maintains an UTM pose from a serial/USB GPS connection
  • aulmsnear.so.0 - a small function to return the closest point in a laserscan as a <laser l0=0.0 .../> type message
  • (aumission.so.0 - is now renamed to aurule Mission monitor sequencer)
  • aurule.so.0 - A rule based mission sequencer - Rule based mission sequencer
  • auroaddrive.so.0 - a drive controller thet follows a road edge (uses auavoid, ausmr and ulmspassable)
  • auseq.so.0 - deprecated mission sequencer - use aurule.so.0.
  • ausmr.so.0 - smr interface
  • ausvs.so.0 - a not quite finished Videre Design stereo camera plug-in
  • uexres.so.0 - sample resource share plug-in - works with uexuse
  • uexuse.so.0 - sample resource share plug-in - works with uexres
  • ulmspassable.so.0 - extracts road lines from a laserscan (tilted laser)
  • ulmsv360.so.0 - virtual 360 deg laser scanner device. This is also available as static plug-in for the ulmsserver.
  • mapbase.so.0 - a base plugin for mapped lines and connected graph of routes
  • aumapobst.so.0 - converts near map lines to obstacle polygons Mapped obstacles

Plug-in structure and description

plug-in structure

Variables (global variables and functions across plugins)

Coordinate systems

Scan features (@todo make page)

odometry, map or UTM (gps) pose and pose history pose

Guidemark (@todo make page)

Road detect (@todo make page)

Sequencer Sequencer

SMR interface (@todo make page)

Camera server interface (@todo make page)

Laser scanner interface (@todo make page)

Obstacle avoidance (@todo make page)

Road driver (@todo make page)