1 / 16

The OpenRDK framework: a not-so-short tutorial Part 1: basic topics

The OpenRDK framework: a not-so-short tutorial Part 1: basic topics. Daniele Calisi , Andrea Censi. OpenRDK summary. Goals Ease of development fast prototyping concurrent engineering Ease of debugging (graphical) inspection tools common module structure Modularity code reuse

Télécharger la présentation

The OpenRDK framework: a not-so-short tutorial Part 1: basic topics

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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 ) The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 2009

  3. 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)‏ The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 2009

  4. 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 Repository, properties and URLs 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 … The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 2009

  5. 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 The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 2009

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

  7. Property links rdk://agent1/hwInterface/laserScan rdk://agent1/hwInterface/odometry • 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 The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 2009

  8. Property sharing rdk://agent1/hwInterface/laserScan rdk://agent1/hwInterface/odometry • 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. Property sharing ON_CHANGE/PERIODIC TCP/UDP … Property sharing rdk://agent1/hwInterface/laserScan rdk://agent1/hwInterface/odometry rdk://agent2/localizer/odometry rdk://agent2/localizer/laserScan rdk://agent2/localizer/estimatedPose The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 2009

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

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

  11. 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 The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 2009

  12. 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) The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 2009

  13. 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) hwInterface/speed (in) hwInterface/laserScan (out, queue) hwInterface/odometry (out, queue) logReader/fileName (param) logReader/odometry (out, queue) logReader/laserScan (out, queue) LOG localizer/odometry (in, queue) localizer/laserScan (in, queue) localizer/estimatedPose (out, queue) RESULT LOG logWriter/odometry (in, queue) logWriter/laserScan (in, queue) logWriter/fileName (param) The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 2009

  14. Case study: the mapper module • Using odometry instead of estimated pose • Using simulator (e.g., Stage, USARSim, etc.) usarsimClient/speed (in) usarsimClient/laserScan (out, queue) usarsimClient/odometry (out, queue) 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) The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 2009

  15. 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) usarsimClient/speed (in) usarsimClient/laserScan (out, queue) usarsimClient/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) The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 2009

  16. 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 The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 2009

More Related