Ideas from ARC about the CORBA FL interface Interface ideas learned from K9 and K10 (Lorenzo) CORBA usage and wrapping ideas learned from MIRO (Hans)

Slides:



Advertisements
Similar presentations
Three types of remote process invocation
Advertisements

Universal Printer Description Format UPDF. UPDF Version 1.0 Agenda UPDF Overview –History –Design Last Call –Review changes –Approval or requirements.
Executional Architecture
COM vs. CORBA.
RPC Robert Grimm New York University Remote Procedure Calls.
Remote Procedure CallCS-4513, D-Term Remote Procedure Call CS-4513 Distributed Computing Systems (Slides include materials from Operating System.
CORBA - Common Object Request Broker Architecture.
Seminarium on Component-based Software Engineering Jan Willem Klinkenberg CORBA.
ASP.Net, web services--- asynchronous and synchronous and AJAX By Thakur Rashmi Singh.
Persistent State Service 1 Performance, Scalability and Management  Topic  Refining the object model  Threading models  Distributed callbacks  Iterators.
MIT iCampus iLabs Software Architecture Workshop June , 2006.
CORBA Case Study By Jeffrey Oliver March March 17, 2003CORBA Case Study by J. T. Oliver2 History The CORBA (Common Object Request Broker Architecture)
OCT 1 Master of Information System Management Organizational Communications and Distributed Object Technologies Lecture 5: Distributed Objects.
Chapter 7: Client/Server Computing Business Data Communications, 5e.
Performance Management 1 Performance, Scalability and Management  Topic  Refining the object model  Threading models  Distributed callbacks  Iterators.
II. Middleware for Distributed Systems
TENA Test and Training Enabling Architecture. TENA TENA is used in range environments, often in the L portion of LVC Slightly different emphasis; small.
Remote Procedure Calls. 2 Client/Server Paradigm Common model for structuring distributed computations A server is a program (or collection of programs)
Client/Server Software Architectures Yonglei Tao.
Introduction to the Enterprise Library. Sounds familiar? Writing a component to encapsulate data access Building a component that allows you to log errors.
Copyright © 2003 ProsoftTraining. All rights reserved. Distributed Object Computing Using Java and CORBA.
Introduction to Ice Copyright © ZeroC, Inc. Ice Programming with Java 1. Introduction to Ice.
Wireless CORBA Richard Verhoeven. Content Quick Introduction to CORBA Wireless & Mobile Wireless CORBA Test Case Conclusions.
COM vs. CORBA Computer Science at Azusa Pacific University September 19, 2015 Azusa Pacific University, Azusa, CA 91702, Tel: (800) Department.
An Introduction to Software Architecture
6st ACS Workshop UTFSM ACS Course Component, Container, Lifecycle Management 6st ACS Workshop UTFSM, Valparaiso, Chile H. Sommer, G. Chiozzi.
Components in GNOME 林咸禮. Outline Components in GNOME Why object model ? The uses of CORBA Implementation notes ORBit Programming.
CS 390- Unix Programming Environment CS 390 Unix Programming Environment Topics to be covered: Distributed Computing Fundamentals.
CSE 425: Object-Oriented Programming I Object-Oriented Programming A design method as well as a programming paradigm –For example, CRC cards, noun-verb.
New features for CORBA 3.0 by Steve Vinoski Presented by Ajay Tandon.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 13 Introduction to Classes.
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
ACS Error System APIs: C++ Bogdan Jeram European Southern Observatory July 2005ESO.
Copyright 2004 Scott/Jones Publishing Alternate Version of STARTING OUT WITH C++ 4 th Edition Chapter 7 Structured Data and Classes.
Chapter 17: Client/Server Computing Business Data Communications, 4e.
Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All rights reserved Chapter 43 Remote Method Invocation.
CSE 451: Operating Systems Winter 2015 Module 22 Remote Procedure Call (RPC) Mark Zbikowski Allen Center 476 © 2013 Gribble, Lazowska,
Update on CORBA Support for Babel RMI Nanbor Wang and Roopa Pundaleeka Tech-X Corporation Boulder, CO Funded by DOE OASCR SBIR.
Networking Implementations (part 1) CPS210 Spring 2006.
Server-Side C++ Mapping Copyright © ZeroC, Inc. Ice Programming with C++ 6. Server-Side C++ Mapping.
July Doxygen A Code Documentation System Doxygen generates documentation directly from the structure and comments in the code –Browsable HTML documentation.
Remote Method Invocation with Java-RMI
January 25, 2016 First experiences with CORBA Niko Neufeld.
.NET Mobile Application Development XML Web Services.
CIS NET Applications1 Chapter 7 – Asynchronous Calls.
CEN6502, Spring Understanding the ORB: Client Side Structure of ORB (fig 4.1) Client requests may be passed to ORB via either SII or DII SII decide.
Data Sharing Service Kiran Devaram Samatha Gangapuram Harish Maringanti Prashant Shanti Kumar Pradeep Tallogu.
Liang, Introduction to Java Programming, Fifth Edition, (c) 2005 Pearson Education, Inc. All rights reserved Chapter 29 Remote Method.
CORBA Antonio Vasquez, John Shelton, Nidia, Ruben.
#01 Client/Server Computing
CSE 451: Operating Systems Winter 2006 Module 20 Remote Procedure Call (RPC) Ed Lazowska Allen Center
Interpreter Style Examples
Lecture 4: RPC Remote Procedure Call Coulouris et al: Chapter 5
CSE 451: Operating Systems Autumn 2003 Lecture 16 RPC
CSE 451: Operating Systems Winter 2007 Module 20 Remote Procedure Call (RPC) Ed Lazowska Allen Center
Chapter 40 Remote Method Invocation
Lecture 4: RPC Remote Procedure Call CDK: Chapter 5
An Introduction to Software Architecture
CSE 451: Operating Systems Winter 2004 Module 19 Remote Procedure Call (RPC) Ed Lazowska Allen Center
CSE 451: Operating Systems Spring 2012 Module 22 Remote Procedure Call (RPC) Ed Lazowska Allen Center
CSE 451: Operating Systems Autumn 2009 Module 21 Remote Procedure Call (RPC) Ed Lazowska Allen Center
Chapter 46 Remote Method Invocation
Remote Procedure Call Hank Levy 1.
Chapter 46 Remote Method Invocation
Remote Procedure Call Hank Levy 1.
CSE 451: Operating Systems Autumn 2010 Module 21 Remote Procedure Call (RPC) Ed Lazowska Allen Center
CSE 451: Operating Systems Winter 2003 Lecture 16 RPC
Remote Procedure Call Hank Levy 1.
CSE 451: Operating Systems Messaging and Remote Procedure Call (RPC)
#01 Client/Server Computing
Presentation transcript:

Ideas from ARC about the CORBA FL interface Interface ideas learned from K9 and K10 (Lorenzo) CORBA usage and wrapping ideas learned from MIRO (Hans)

Generic Robot Interfaces (GRI) Object-Oriented to be modular and applied to various scenarios Comes with detailed documentation for unambiguous usage by multiple users End-User focused (“PanTilt” rather than “CtrlMotor”, etc.) Do not provide extra functions not supported by represented objects (like “track object” in the camera interface) Close to CLARAty modules and capabilities Supports functionalities of K9client, I_K10, RoverCommander and scalable

GRI usage in IRG  Currently refining the interface, will submit soon proposition to JPL  Experiment on K10 and replace current ICE network link  Replace K9client with CORBA & GRI (CLARAty DL/FL compatible)  Use GRI inside the Rover Controller itself for better component approach T

High Level Subsystems

Access to Devices

Data structures for Telemetry (Using Notification Service)

Supporting Types

Lessons from CORBA in other projects (MIRO) CORBA offers more than IPC. Valuable CORBA features: –Naming Service –Notification Service –Asynchronous Method Invocation

Naming Service Getting a reference (IOR) to a remote object. Ad hoc: store in file, exchange via scp. Object tree: Top level object provides accessors for child interfaces / objects. Naming Service: provides a map of names to object references –Makes “top-level” interface unnecessary. –Structuring of name space possible (subdirectories).

disc client scp object 1 object 2 object 3 ? disc client scp object 1 object 2 object 3 Name Service Name 1, Name 2, Name 3, … disc client scp object 1 object 2 object 3 1.Ad hoc 2.Object Tree 3.Naming Service Object Reference Acquisition

Rather than using a hierarchy of interfaces (with brittle IDL), extensively advertising objects through the Naming Service keeps interfaces independent. But it does require documenting object names outside of IDL.

Notification Service Subscription management (header): –domain_name: robot name –type_name: event name Instance based event filtering (filterable_data): –Constraint language. Payload (remainder_of_body): –Telemetry –Perception results …

Asynchronous Message Invocation(AMI) Problem: Many physical operations take time. Clients (i.e. DL) mostly require non-blocking semantics. But not always. AMI Solution: Allowing to call a blocking operation as a non- blocking one. No changes on the server side required. Client can use both access methods.

Blocking Method Call (Direct CORBA)

Non-Blocking Method Call (Using AMI)

Client/Server Helper Classes Provide default configuration of the ORB Generic helper methods –Name Service operations –… Ease common operations –Object reference acquisition –Servant handling –AMI operations

Client Side Wrappers Hiding CORBA Development overhead: –Coding overhead –Debugging overhead Usage overhead: –Runtime overhead –Another possible place to look for errors Keeping CORBA optional Cumbersome for non- trivial interfaces: –Data structures –Exceptions Difficult for many features: –Naming Service -> map –Notification Service -> reimplement a big spec? –AMI -> ???

Simple Client Example // simple IDL interface interface Foo { long bar(in long p); }; // simple c++ client void main (int argc, char * argv[]) { IRG::Client client(argc, argv); // client helper class // IOR resolution helper method (naming service) Foo_var foo = client.resolveName ("FooInstance1"); int rc = foo->bar(2); // method invocation }

Simple Server Example // servant implementation struct FooImpl : public virtual POA_Foo { virtual int bar (int p) { return 2 * p; } }; // server implementation void main (int argc, char * argv[]) { IRG::Server server(argc, argv); // helper class FooImpl * foo_servant = new FooImpl(); // servant instance // servant activation server.activate_named_object("FooInstance1", foo_servant); server.run(); // server loop }

AMI Client Example void main (int argc, char * argv[]) { IRG::Server server(argc, argv); // helper class server.detach() // background thread for callback Foo_var foo = server.resolveName ("FooInstance1"); // AMI helper class IRG::Ami_Helper helper; // asynchoronous invocation // passing the callback as first parameter foo->sendc_bar(helper.handler()->_this(), 2);... // do something else while (!helper.finished()); // busy wait till finished helper.wait(); // or wait till finished int rc = helper.result(); // retrieve return value }

Summary Keep interfaces compact, user-focused, well- mapped to FL capabilities. Use Naming Service for interface independence. Use Notification Service for transport of telemetry (including structs). Use CORBA internally in FL. Use AMI for non-blocking DL/FL calls. Use wrappers sparingly.