Collaboration diagram for testRaveBot:

Creates an instance of RaveBot wrapped in a YARP controlboard. This means that it may be used through a YARP remote_controlboard or directly through low-level YARP controlboard RPC commands.

Legal

Copyright: 2012 (C) Universidad Carlos III de Madrid

Author: Juan G. Victores

Contrib: Paul Fitzpatrick (YARP sample code, email responses); Rosen Diankov (OpenRAVE sample code, email responses)

CopyPolicy: Released under the terms of the LGPLv2.1 or later, see license/LGPL.TXT

Installation

The module is compiled when ENABLE_testRaveBot is activated (default: OFF). For further installation steps refer to your own system installation guidelines.

Running (assuming correct installation)

First we must run a YARP name server if it is not running in our current namespace:

[on terminal 1] yarp server

And then launch the actual module:

[on terminal 2] testRaveBot

Interfacing with the testRaveBot module

The testRaveBot module acts as the server part of a network wrapper of the RaveBot class. The implementation maps certain YARP rpc's to RaveBot function calls. Therefore, we can interface with the class from the command-line by typing:

[on terminal 3] yarp rpc /ravebot/rpc:i

We can send an absolute position joint space movement such as:

[on terminal 3] set poss (45.0 -80.455885 110.552447 59.903438 0.0)

And should get some kind of feedback, such as:

Response: [ok]

The RaveBot class also attaches a WorldRpcResponder that provides certain interaction with the environment. We can interface with the class from the command-line by typing:

[on terminal 4] yarp rpc /ravebot/world

It is possible to create static (not affected by gravity) boxes. Example of a .1m^3 static box situated at 1 meter X, 2 meters Y, 1.5 meter Z:

[on terminal 4] world mk sbox .1 .1 .1 1 2 1.5

Grab the first created static box (no fingers needed, just pure magic!):

[on terminal 4] world grab sbox 1 1

Release the first created static box (no fingers needed, just pure magic!):

[on terminal 4] world grab sbox 1 0

It is possible to create static (not affected by gravity) spheres. Example of a static shpere of .05 meter radius, situated at 2 meters X, 1.5 meter Y, 1 meter Z:

[on terminal 4] world mk ssph .05 2 1.5 1

Grab the first created static sphere (no fingers needed, just pure magic!):

[on terminal 4] world grab ssph 1 1

Release the first created static sphere (no fingers needed, just pure magic!):

[on terminal 4] world grab ssph 1 0

It is possible to create static (not affected by gravity) cylinders. Example of a static cylinder of .05 meter radius and 1 meter height, situated at 1.2 meters X, 1.3 meter Y, 1.4 meter Z:

[on terminal 4] world mk scyl .05 1 1.2 1.3 1.4

Grab the first created static cylinder (no fingers needed, just pure magic!):

[on terminal 4] world grab scyl 1 1

Release the first created static cylinder (no fingers needed, just pure magic!):

[on terminal 4] world grab scyl 1 0

Delete all of the created objects with the following command:

[on terminal 4] world del all

New! You can even grab pre-existent objects of the environment. For example, in the ASIBOT kitchen environment:

[on terminal 4] world grab obj redCan 1

Release the pre-existent objects of the environment changing the last parameter:

[on terminal 4] world grab obj redCan 0

The RaveBot class additionally streams the data of every camera and depth sensor it finds. Let's say you invoked testRaveBot or cartesianServer with –env asibot_kitchen_cameras.env.xml. We can view the ip camera image stream with the standard yarp viewer (make sure CREATE_GUIS was enabled when compiling YARP to have yarpview):

[on terminal 5] yarpview /yarpview/img:i &
[on terminal 5] yarp connect /ravebot/ip_camera/img:o /yarpview/img:i 

Modify

This file can be edited at $ASIBOT_DIR/main/src/modules/testRaveBot/main.cpp