OpenRDK: a modular framework for robotic software development D. Calisi, A. Censi, L. Iocchi, D. Nardi.

Slides:



Advertisements
Similar presentations
Slides Prepared from the CI-Tutor Courses at NCSA By S. Masoud Sadjadi School of Computing and Information Sciences Florida.
Advertisements

Task Scheduling and Distribution System Saeed Mahameed, Hani Ayoub Electrical Engineering Department, Technion – Israel Institute of Technology
Software development in robotics: frameworks, tools and the OpenRDK D. Calisi.
Rheeve: A Plug-n-Play Peer- to-Peer Computing Platform Wang-kee Poon and Jiannong Cao Department of Computing, The Hong Kong Polytechnic University ICDCSW.
The Player universal driver and the Stage and Gazebo simulators Daniele Calisi.
Security and Digital Recording System Students: Gadi Marcu, Tomer Alon Number:D1123 Supervisor: Erez Zilber Semester:Spring 2004 Mid Semester Presentation.
Software Frameworks for Acquisition and Control European PhD – 2009 Horácio Fernandes.
1 Network Packet Generator Characterization presentation Supervisor: Mony Orbach Presenting: Eugeney Ryzhyk, Igor Brevdo.
The OpenRDK framework: a not-so-short tutorial Part 1: basic topics Daniele Calisi, Andrea Censi.
The OpenRDK framework: a not-so-short tutorial Part 2: advanced topics Daniele Calisi, Andrea Censi.
WSN Simulation Template for OMNeT++
Systems Architecture, Fourth Edition1 Internet and Distributed Application Services Chapter 13.
WebDynpro for ABAP Short introduction.
Guide To UNIX Using Linux Third Edition
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Fundamentals of Python: From First Programs Through Data Structures
Chapter 26 Client Server Interaction Communication across a computer network requires a pair of application programs to cooperate. One application on one.
Hands-On Microsoft Windows Server 2008 Chapter 8 Managing Windows Server 2008 Network Services.
EstiNet Network Simulator & Emulator 2014/06/ 尉遲仲涵.
OMNET++. Outline Introduction Overview The NED Language Simple Modules.
SEC(R) 2008 Intel® Concurrent Collections for C++ - a model for parallel programming Nikolay Kurtov Software and Services.
6/1/2001 Supplementing Aleph Reports Using The Crystal Reports Web Component Server Presented by Bob Gerrity Head.
Research on cloud computing application in the peer-to-peer based video-on-demand systems Speaker : 吳靖緯 MA0G rd International Workshop.
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 4 Web technologies: HTTP, CGI, PHP,Java applets)
Database System Concepts and Architecture Lecture # 3 22 June 2012 National University of Computer and Emerging Sciences.
C Copyright © 2009, Oracle. All rights reserved. Appendix C: Service-Oriented Architectures.
Understanding the CORBA Model. What is CORBA?  The Common Object Request Broker Architecture (CORBA) allows distributed applications to interoperate.
DEVSView: A DEVS Visualization Tool Wilson Venhola.
Designing For Testability. Incorporate design features that facilitate testing Include features to: –Support test automation at all levels (unit, integration,
Robotic software development and interoperability using the OpenRDK framework Daniele Calisi, Andrea Censi.
An Introduction to Software Architecture
5 Chapter Five Web Servers. 5 Chapter Objectives Learn about the Microsoft Personal Web Server Software Learn how to improve Web site performance Learn.
Robert Fourer, Jun Ma, Kipp Martin Copyright 2006 An Enterprise Computational System Built on the Optimization Services (OS) Framework and Standards Jun.
Objectives Configure routing in Windows Server 2008 Configure Routing and Remote Access Services in Windows Server 2008 Network Address Translation 1.
SUSE Linux Enterprise Desktop Administration Chapter 12 Administer Printing.
Andrew S. Budarevsky Adaptive Application Data Management Overview.
What’s new in Kentico CMS 5.0 Michal Neuwirth Product Manager Kentico Software.
Property of Jack Wilson, Cerritos College1 CIS Computer Programming Logic Programming Concepts Overview prepared by Jack Wilson Cerritos College.
Client Call Back Client Call Back is useful for multiple clients to keep up to date about changes on the server Example: One auction server and several.
Framework for MDO Studies Amitay Isaacs Center for Aerospace System Design and Engineering IIT Bombay.
1 CMPT 275 High Level Design Phase Modularization.
Reconfigurable Communication Link Between FASTER and RTSim Interface Matthew McCollum Mark Krause Derek Keibler.
Laboratory of Model Driven Engineering for Embedded Systems An Execution Framework for MARTE-based Models UML&AADL’2008 workshop Belfast, Northern Ireland.
Abstract A Structured Approach for Modular Design: A Plug and Play Middleware for Sensory Modules, Actuation Platforms, Task Descriptions and Implementations.
The Client-Server Model And the Socket API. Client-Server (1) The datagram service does not require cooperation between the peer applications but such.
CASE (Computer-Aided Software Engineering) Tools Software that is used to support software process activities. Provides software process support by:- –
CSI 3125, Preliminaries, page 1 SERVLET. CSI 3125, Preliminaries, page 2 SERVLET A servlet is a server-side software program, written in Java code, that.
Linux Operations and Administration
Status & development of the software for CALICE-DAQ Tao Wu On behalf of UK Collaboration.
Reconfigurable Communication Interface Between FASTER and RTSim Dec0907.
SPI NIGHTLIES Alex Hodgkins. SPI nightlies  Build and test various software projects each night  Provide a nightlies summary page that displays all.
UNIT-6. Basics of Networking TCP/IP Sockets Simple Client Server program Multiple clients Sending file from Server to Client Parallel search server.
34 Copyright © 2007, Oracle. All rights reserved. Module 34: Siebel Business Services Siebel 8.0 Essentials.
General requirements for BES III offline & EF selection software Weidong Li.
System Design for Home Automaton. Design Goals Performance Criteria – Server prioritizes client requests to provide quick response time to critical requests.
Lesson 1 1 LESSON 1 l Background information l Introduction to Java Introduction and a Taste of Java.
CINT & Reflex – The Future CINT’s Future Layout Reflex API Work In Progress: Use Reflex to store dictionary data Smaller memory footprint First step to.
FlowLevel Client, server & elements monitoring and controlling system Message Include End Dial Start.
THE EYESWEB PLATFORM - GDE The EyesWeb XMI multimodal platform GDE 5 March 2015.
Active-HDL Server Farm Course 11. All materials updated on: September 30, 2004 Outline 1.Introduction 2.Advantages 3.Requirements 4.Installation 5.Architecture.
Chapter 4: server services. The Complete Guide to Linux System Administration2 Objectives Configure network interfaces using command- line and graphical.
Wednesday NI Vision Sessions
Access Grid Workshop – APAC ‘05 Node Services Development Thomas D. Uram Argonne National Laboratory.
Chapter 2 Operating System Overview Dave Bremer Otago Polytechnic, N.Z. ©2008, Prentice Hall Operating Systems: Internals and Design Principles, 6/E William.
SOFTWARE TESTING TRAINING TOOLS SUPPORT FOR SOFTWARE TESTING Chapter 6 immaculateres 1.
Chapter 3: Process Concept
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 2 Database System Concepts and Architecture.
Mixed Reality Server under Robot Operating System
System Concept Simulation for Concurrent Engineering
An Introduction to Software Architecture
Presentation transcript:

OpenRDK: a modular framework for robotic software development D. Calisi, A. Censi, L. Iocchi, D. Nardi

OpenRDK: a modular framework for robotic software development (IROS'08) 2 Software frameworks for robotics Software frameworks are useful  Promote standard design techniques  Aim at code reusability (components)  Provide ready-to-use design choices Software frameworks for robotics  OROCOS (EURON project)  CLARAty (NASA)  OpenRTM-aist (Japanese project)  Orca, Player/Stage, MARIE, MOAST, ROS, etc.

OpenRDK: a modular framework for robotic software development (IROS'08) 3 Process Software frameworks for robotics Concurrency model  Call-backs  Processes  Threads Information sharing model  Data ports  Blackboard Module // a callback is called by a scheduler void callback() { // do your work quickly // and return the control // to the scheduler } Process Blackboard

OpenRDK: a modular framework for robotic software development (IROS'08) 4 OpenRDK main features and concepts RAgent (Process) Module 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) Implemented in C++ for UNIX-like systems

OpenRDK: a modular framework for robotic software development (IROS'08) 5 An example hwInterface agent1 localizer agent2 mappernavigator repository speed laserScan odometry laserScan odometry estimatedPose robotPose laserScan map robotPose map targetPose speed

OpenRDK: a modular framework for robotic software development (IROS'08) 6 Queues as object dispatchers Producer/consumer problem; FIFO Addressed like other properties (URL) Features  multiple consumers (concurrently)‏  no object duplication  automatic garbage collection  filters  passive Can be used for  localization (e.g., laser)  logging Module Queue Module Queue

OpenRDK: a modular framework for robotic software development (IROS'08) 7 Configuration and object persistence Specify the initial configuration of each agent: the configuration file  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)

OpenRDK: a modular framework for robotic software development (IROS'08) 8 Property links Connect modules Suggested policy  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

OpenRDK: a modular framework for robotic software development (IROS'08) 9 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 …

OpenRDK: a modular framework for robotic software development (IROS'08) 10 Tools and other utilities Modules for logging and replaying Profiling (work in progress) Modules to connect to simulators  Stage and Gazebo (through Player)  USARSim  Webots (work in progress)

OpenRDK: a modular framework for robotic software development (IROS'08) 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

OpenRDK: a modular framework for robotic software development (IROS'08) 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)

OpenRDK: a modular framework for robotic software development (IROS'08) 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) 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

OpenRDK: a modular framework for robotic software development (IROS'08) 14 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)

OpenRDK: a modular framework for robotic software development (IROS'08) 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) 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)

OpenRDK: a modular framework for robotic software development (IROS'08) 16 OpenRDK current applications Rescue wheeled robots (real robots, USARSim)‏ RoboCare project (assistive robots for the elders) Quadrotor, tarantula (real robots, USARSim)‏ RoboCup Standard Platform League (“Nao league”) HRI experiments (robot side)

OpenRDK: a modular framework for robotic software development (IROS'08) 17 Summary OpenRDK features  Modularity and concurrent engineering  Full multi-thread support  Blackboard-style communication (properties can be shared among different processes)  Tools (Logging/replaying, RConsole, etc.)  Open source (GPL license) Extend the property sharing mechanism  More network QoS (e.g., from DDS: latency budget) On-line fault detection system Configuration file editing and analysis tools  Detect possible deadlocks  Verify constraints on schedule Design a better logo! On-going and future work

OpenRDK: a modular framework for robotic software development (IROS'08) 18 Questions Questions? We are on SourceForge

OpenRDK: a modular framework for robotic software development (IROS'08) 19 Code: module template //... session->createInt(“intName”, “description”, 2); session->createDouble(“myDouble”, “description”, RDouble::RAD_SEC, 0.3); session->createDouble(“result”, “description”, RDouble::RAD_SEC); //... Declare properties: Initialization: //... mySocket.connectTo(“ ”, 9999); session->listenToTimer(0.5); // or you can session->listen(“intName”); //... Execution: while (session->wait(), !exiting) { int i = session->getInt(“intName”); double d = session->getDouble(“myDouble”); // do some computation session->setDouble(“result”, d * i); }

OpenRDK: a modular framework for robotic software development (IROS'08) 20 Code: queue usage RDK2::ROdometry* odom = new RDK2::ROdometry(/*... */); session->queuePush("odometry", odom); session->subscribeQueue("odometry"); // "odometry" is linked to "rdk://agent1/hwInterface/odometry“ // in the configuration file while (session->wait(), !exiting) { vector v = session->queueFreezeAs (ODOMETRY_URL); for (size_t i = 0; i < v.size(); i++) { const ROdometry* odom = v[i];... // process odometry data in the queue } PRODUCER: CONSUMER:

OpenRDK: a modular framework for robotic software development (IROS'08) 21 Code: complex object usage Execution: while (session->wait(), !exiting) { session->lock(“myImage”); RImage* img = session->getObjectAs (“myImage”); unsigned char** pixels = img->getPixels(); // do something with the image session->unlock(“myImage”); session->valueChanged(“myImage”); }

OpenRDK: a modular framework for robotic software development (IROS'08) 22 Connection to RT systems RT-Process

OpenRDK: a modular framework for robotic software development (IROS'08) 23 A real-world configuration example

OpenRDK: a modular framework for robotic software development (IROS'08) 24 Contextual controller experiments

OpenRDK: a modular framework for robotic software development (IROS'08) 25 Repository, properties and URLs URL  Globally unique Published property roles  Input/Output  Parameters  Debug information, etc. 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 …

OpenRDK: a modular framework for robotic software development (IROS'08) 26 Property links Connect modules Suggested policy  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