Presentation is loading. Please wait.

Presentation is loading. Please wait.

The OpenRDK framework: a not-so-short tutorial Part 1: basic topics Daniele Calisi, Andrea Censi.

Similar presentations


Presentation on theme: "The OpenRDK framework: a not-so-short tutorial Part 1: basic topics Daniele Calisi, Andrea Censi."— Presentation transcript:

1 The OpenRDK framework: a not-so-short tutorial Part 1: basic topics Daniele Calisi, Andrea Censi

2 The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 20092 OpenRDK summary Goals  Ease of development fast prototyping concurrent engineering  Ease of debugging (graphical) inspection tools common module structure  Modularity code reuse loosely coupling  Lightweightness and efficiency General information  Written in C++, supports C++ modules  Works on Linux, MacOsX, Windows (Cygwin)  It is Open Source ( http://openrdk.sf.net )

3 The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 20093 OpenRDK main features and concepts RAgent (Process) Module (Thread) Module (Thread) Module (Thread) Module (Thread) Repository (Blackboard)‏ Properties: rdk://agent2/localizer/odometry (pose) rdk://agent2/localizer/laserScan (scan) rdk://agent2/localizer/estimatedPose (pose) rdk://agent2/navigator/maxSpeed (double) rdk://agent2/mapper/map (map) rdk://agent2/navigator/userInfo (string) … Repository (Blackboard)

4 The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 20094 Repository, properties and URLs URL are globally unique Published property roles  Input/Output  Parameters  Debug information, etc. “Subdirectories” Types  Integers, strings, floating- point numbers, etc.  Images, maps  User defined types rdk://agent1/hwInterface/speed rdk://agent1/hwInterface/odometryPose rdk://agent1/hwInterface/robotSerialPort rdk://agent1/hwInterface/currentSpeed … rdk://agent2/localizer/laserScan rdk://agent2/localizer/estimatedPose rdk://agent2/mapper/map rdk://agent2/navigator/maxSpeed rdk://agent2/navigator/speed …

5 The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 20095 Configuration and object persistence Specify the initial configuration of each agent: the configuration file  XML format  Contains the list of modules to be instantiated  Contains property (initial) values  Contains connections among modules Can be used to  Load initial module parameters  Save and load module states  Load static inputs (e.g., pre-built maps) Currently it is created in two steps  Add/remove modules using a console (i.e. non graphical) tool  Set property values editing the file by hand

6 The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 20096 An example hwInterface agent1 localizer agent2 mappernavigator repository speed laserScan odometry laserScan odometry estimatedPose robotPose laserScan map robotPose map targetPose speed

7 The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 20097 Property links Connect modules Suggested policy  A module creates its own properties during the initialization  A module reads from and writes to its own properties Property links  Connect inputs and outputs of different modules  Are stored in the configuration file  Similar to UNIX symbolic links  Can refer to remote repositories rdk://agent2/localizer/odometry rdk://agent2/localizer/laserScan rdk://agent2/localizer/estimatedPose rdk://agent2/mapper/robotPose rdk://agent2/mapper/laserScan rdk://agent2/mapper/map rdk://agent2/navigator/map rdk://agent2/navigator/robotPose rdk://agent2/navigator/targetPose rdk://agent2/navigator/speed rdk://agent1/hwInterface/laserScan rdk://agent1/hwInterface/odometry

8 The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 20098 Property sharing A module, through links, can access remote properties Repository actions:  Requests properties  Publishes them locally Options:  When to send updates  Network protocol Data reconstruction layer  E.g. maps, images, etc. rdk://agent1/hwInterface/laserScan rdk://agent1/hwInterface/odometry rdk://agent2/localizer/odometry rdk://agent2/localizer/laserScan rdk://agent2/localizer/estimatedPose rdk://agent1/hwInterface/laserScan rdk://agent1/hwInterface/odometry Property sharing ON_CHANGE/PERIODIC TCP/UDP …

9 The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 20099 The example revised hwInterface agent1 localizer agent2 mappernavigator repository speed laserScan odometry robotPose laserScan robotPose map targetPose laserScan odometry estimatedPosemap speed

10 The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 200910 The example revised hwInterface agent1 localizer agent2 mapper navigator robotPose targetPose estimatedPose map robotPose odometry laserScan speed

11 The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 200911 Tools: RConsole RConsole implementation  Is itself an RAgent  Uses property sharing Can be used for  Remote inspection  Debugging  Parameter tuning  Preliminary GUI building for specific applications

12 The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 200912 Case study: concurrent engineering Example: developing the localizer, mapper and navigator modules Three students are assigned one module each Hardware and simulator interface modules are already available First step: interface design (inputs/outputs) hwInterface/speed (in) hwInterface/laserScan (out, queue) hwInterface/odometry (out, queue) localizer/odometry (in, queue) localizer/laserScan (in, queue) localizer/estimatedPose (out, queue) mapper/robotPose (in, queue) mapper/laserScan (in, queue) mapper/map (out) navigator/robotPose (in) navigator/targetPose (in) navigator/map (in) navigator/speed (out)

13 The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 200913 Case study: the localizer module Using logging/replaying during development  Save a log of a single run and then replay it  Use well-known logs databases (e.g., RAWSEEDS) localizer/odometry (in, queue) localizer/laserScan (in, queue) localizer/estimatedPose (out, queue) hwInterface/speed (in) hwInterface/laserScan (out, queue) hwInterface/odometry (out, queue) logWriter/odometry (in, queue) logWriter/laserScan (in, queue) logWriter/fileName (param) logReader/fileName (param) logReader/odometry (out, queue) logReader/laserScan (out, queue) LOG RESULT LOG

14 The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 200914 usarsimClient/speed (in) usarsimClient/laserScan (out, queue) usarsimClient/odometry (out, queue) Case study: the mapper module Using odometry instead of estimated pose Using simulator (e.g., Stage, USARSim, etc.) hwInterface/speed (in) hwInterface/laserScan (out, queue) hwInterface/odometry (out, queue) localizer/odometry (in, queue) localizer/laserScan (in, queue) localizer/estimatedPose (out, queue) mapper/robotPose (in, queue) mapper/laserScan (in, queue) mapper/map (out)

15 The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 200915 Case study: the navigator module As before  Use odometry, simulator clients Pre-built map from configuration file RConsole for target poses input hwInterface/speed (in) hwInterface/laserScan (out, queue) hwInterface/odometry (out, queue) localizer/odometry (in, queue) localizer/laserScan (in, queue) localizer/estimatedPose (out, queue) mapper/robotPose (in, queue) mapper/laserScan (in, queue) mapper/map (out) navigator/robotPose (in) navigator/targetPose (in) navigator/map (in) navigator/speed (out) MAP (configuration file) usarsimClient/speed (in) usarsimClient/laserScan (out, queue) usarsimClient/odometry (out, queue)

16 The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 200916 Questions Questions? We are on SourceForge: http://openrdk.sourceforge.net Credits : Prof. Daniele Nardi Developers: Daniele Calisi, Andrea Censi Early contributors: A. Farinelli, G. Grisetti, L. Iocchi Current contributors: F. Giannone, L. Iocchi, M. Leonetti, L. Marchetti, D. Nardi, P. de la Puente, G. Randelli, M. Sbarigia, A. Valero, R. Vicario Calisi is the one to blame


Download ppt "The OpenRDK framework: a not-so-short tutorial Part 1: basic topics Daniele Calisi, Andrea Censi."

Similar presentations


Ads by Google