Download presentation
Presentation is loading. Please wait.
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.