Architecture:RPD Server

From The BABEL Development Site
Revision as of 10:39, 18 May 2009 by Jlblanco (talk | contribs) (RPD_Server)
Previous: Event Codes Next: ACHRIN


RPD_Server

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.



BABEL service group BABEL services to implement

RPD_Server

<cpp>

getRobotName(

out string name ) </cpp>

Returns the name of the currently selected RPD, as appearing in the selected_RPD table

<cpp>

getRobot2DShape(

out COMMMON::SeqOfFloats x, out COMMMON::SeqOfFloats y )

</cpp>

Returns the 2D shape of the robot, as stored in the RPD_shape2D… table of its descriptor.

<cpp>

getAllLogicalDevices(

out BABEL::RPD_Server::SeqOfLogicalDevices devices ) </cpp>

Returns all the information for all the logical devices on the robot. See Appendix III for BDL definitions

<cpp>

findLogicalDevicesByType(

in string type, out BABEL::RPD_Server::SeqOfLogicalDevices devices ) </cpp>

Returns all the information for logical devices on the robot of the specified type (case insensitive comparison). See Appendix III for BDL definitions.

<cpp>

getLogicalDevicePose(

in unsigned long deviceID, out float x, out float y, out float z, out float yaw, out float pitch, out float roll, out boolean static, out boolean devNotFound ) </cpp>

Returns the current 3D pose of the indicated device (if not found, devNotFound will be true). This includes solving the cinematic chain, even for the case of mobile joints. If the device has a static pose, static will be true, and its pose must not be requested anymore.

<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 “ini” for the table “INI_<moduleName>[+<myAlias>]@<robotName>”.




RPD Visual Editor

Definition of RPD_SERVER data types in BDL

<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>