Architecture:RPD Server

From The BABEL Development Site
Previous: Event Codes Next: Visual RPD Editor


RPD_Server

This special module MUST BE ALWAYS present, since it is used by all the modules at start-up to determine their configuration based on the XML database.

Al services should be executed in less than 100ms, except the getLogicalDevicePose service which may require invoking several other services to acquire the current configuration of mobile parts of the robot. Notice that the returned information for any logical device implicitly includes the parameters for opening the associated HAD layer driver module. This information is extracted from the physical devices table in the database and automatically put together to all responses of the server to make easy the opening of drivers by layer 2 modules.


NOTE: The most important service here for now is getSettingsForModule, which is a replacement for individual .ini files in modules.


TO DO: Remote binary file storage...



BABEL service group BABEL services to implement

RPD_Server

<cpp>

getParam(

in string name, out string value ) </cpp>

A generic way to retrieve a parameter from the table "global_params".

<cpp>

getSettingsForModule(

in string myModuleName, in string myAlias, out string settings ) </cpp>

Returns a multi-line text in the form “key=value” with settings for a specific calling module name (and optionally an alias name, left blank if not used). This text is the content of the field "config" for the table “<robot_name>:<moduleName>:Alias".




Definition of RPD_SERVER data types in BDL

(Not used yet)

<cpp> struct TLogicalDevice { unsigned long id; // The numerical ID of each device string type; // The logical device type boolean isChainingPoint; // Whether the device can be the base // for other devices. unsigned long idOfBase; // The id of the base device COMMMON::THomogeneousMatrix pose3D; // The 3D pose of this device relative // to the base one. string implementation; // The name of the HAD layer module.

COMMMON::SeqOfParamValuePairs params; // The params for the HAD module. };

typedef sequence<TLogicalDevice> SeqOfLogicalDevices;

</cpp>