Date post: | 22-Dec-2015 |
Category: |
Documents |
View: | 225 times |
Download: | 2 times |
The OpenRDK framework:The OpenRDK framework:a not-so-short tutoriala not-so-short tutorial
Part 1: basic topicsPart 1: basic topics
Daniele Calisi, Andrea Censi
The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 2009 2
OpenRDK summaryOpenRDK 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 conceptsOpenRDK 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
Repository, properties and URLsRepository, 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/speedrdk://agent1/hwInterface/odometryPoserdk://agent1/hwInterface/robotSerialPortrdk://agent1/hwInterface/currentSpeed…
rdk://agent2/localizer/laserScanrdk://agent2/localizer/estimatedPoserdk://agent2/mapper/maprdk://agent2/navigator/maxSpeedrdk://agent2/navigator/speed…
The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 2009 5
Configuration and object persistenceConfiguration 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 exampleAn example
hwInterface
agent1
localizer
agent2
mapper navigator
repositoryrepository
speed
laserScanodometry
laserScanodometry
estimatedPose
robotPoselaserScan
map
robotPosemap
targetPose
speed
The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 2009 7
Property linksProperty 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/laserScanrdk://agent2/localizer/estimatedPose
rdk://agent2/mapper/robotPoserdk://agent2/mapper/laserScanrdk://agent2/mapper/map
rdk://agent2/navigator/maprdk://agent2/navigator/robotPoserdk://agent2/navigator/targetPoserdk://agent2/navigator/speed
rdk://agent1/hwInterface/laserScanrdk://agent1/hwInterface/odometry
The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 2009 8
Property sharingProperty 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/laserScanrdk://agent1/hwInterface/odometry
rdk://agent2/localizer/odometry rdk://agent2/localizer/laserScanrdk://agent2/localizer/estimatedPose
rdk://agent1/hwInterface/laserScanrdk://agent1/hwInterface/odometry
Property sharing
Property sharing
ON_CHANGE/PERIODICTCP/UDP
…
The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 2009 9
The example revisedThe example revised
hwInterface
agent1
localizer
agent2
mapper navigator
repositoryrepository
speed laserScanodometry
robotPoselaserScan
robotPosemap
targetPoselaserScanodometry
estimatedPose map speed
The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 2009 10
The example revisedThe example revised
hwInterface
agent1
localizer
agent2
mapper
navigator
robotPose
targetPose
estimatedPose
map
robotPose
odometry
laserScan
speed
The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 2009 11
Tools: RConsoleTools: 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 engineeringCase 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 moduleCase 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
RESULTLOG
The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 2009 14
usarsimClient/speed (in)usarsimClient/laserScan (out, queue)usarsimClient/odometry (out, queue)
Case study: the mapper moduleCase 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)
The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 2009 15
Case study: the navigator moduleCase 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)
The OpenRDK framework - tutorial part 1 - OpenRDK Workshop - March 2009 16
QuestionsQuestions
Questions?We are on SourceForge:
http://openrdk.sourceforge.net
Credits:Prof. Daniele Nardi
Developers: Daniele Calisi, Andrea CensiEarly 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