the openrdk framework: a not-so-short tutorial part 1: basic topics daniele calisi, andrea censi

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

Post on 22-Dec-2015

227 views

Category:

Documents


2 download

TRANSCRIPT

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