Technical aspects of OpenRTM-aist Geoffrey Biggs Intelligent Systems Research Institute National Institute of Advanced Industrial Science and Technology Japan Concept overview • Robot Technology Component model • Separation of concerns: – Functional specification (RTCs) – Execution (ECs) – Communication (ports) – Configuration • Extensible through SDO interface Concept overview • Wide range of advanced features – Dynamic wiring – Real-time support – Component composition – Component managers – Language and communication middleware independence RT-Components • Functional block • Ports provide communication points • ECs provide execution time S D O In te rfa c e s R T C In te rfa c e s R T C E x In te rfa c e s R T C o m p o n e n t S e rv ic e RTC S C onsum er RTCom ponent S e rv ic e Service ports S e rv ic e C onsum er P ro xy p ro v id e C onsum er P ro xy A c tiv ity p ro v id e use S ta t e Mof a c hRT i n e component Architecture In P o rt 0 O u tP o rt0 B u ff e r B u ff e r In P o rt n put Data ports get B u ff e r O utP o rt n B u ff e r r e p ly In P o rt g e t, s u b s c r ib e put r e p ly push O utP o rt RT-Components • Known life-cycle state – Can be activated and deactivated Arm component Device Initialization Init Servo off Inactive Active Error Servo on Emergency Stop RT-Components • Components implemented as classes • Callback functions for each FSM step Execution contexts • A container for RTCs to execute in • Provide contained RTCs with execution time according to the EC type Execution contexts • Several types provided by OpenRTM – Easy to implement new ECs to meet your own needs • Periodic (including real-time) • Externally-triggered (including logical clock support) Data ports • One-way data flow between components • Points-to-points or topic-based • Transfer data using CORBA • Serialisation provided by CDR • Data types specified in IDL Component B Component A Activity Activity data data processing buffer Data Port buffer processing Service ports • Remote procedure call ports • Ports provide and consumer interfaces • Interfaces specified in IDL • Implemented in CORBA Service Consumer Service Provider Component A Component B Activity Service Proxy Operation invocation Service Port Service Implementation Entity Actual processing isperformed here Configuration • RTCs provide configuration parameters • Parameters can be set at launch (from a file) or run-time (through tools) • Multiple configuration sets can be used to change all parameters at once Configuration PID Controller Kp limiter - Ki s + Kds PID Controller Comp. modeA name value Kp Ki 0.6 modeB name value modeC name value Kd Inmax Inmin 0.01 0.4 5.0 -5.0 Kp Ki Kd Inmax Inmin 0.8 0.0 0.01 10.0 -10.0 Kp Ki Kd 0.3 0.1 0.31 1.0 Inmax Inmin -1.0 PID gains and limiter parameters can be switched according to controlled plants or modes. Parameters can be switched any time. Advanced features • OpenRTM provides a wide range of advanced features – Not just a nice way to organise callbacks Real-time support • Real-time execution context provides realtime guarantees to RTC execution – ARTLinux – Rt-preempt • DDS support provides real-time communication guarantees Notification system • Extensive callback-based notifications system • RTCs notified on relevant events – New data at a port, configuration change, lifecycle state change, … • External entities can also be notified – Register callbacks using an SDO interface – Used by tools to monitor the system without polling Dynamic wiring • Connections can be changed at run-time – GUI tool – Console tool • Good for Rapid Application Development Composite components • Compose components to form black-box systems – Inside a composite component is a complete RT-System • GUI tool supports compositions Component managers • Components and execution contexts organised into managers – Multiple execution contexts in a single process • Managers provide additional services – Logging – Component look-up Model-based systems • RTC component model • RTS system model • Build components and systems with graphical tools • Deploy using console or graphical tools RTC meta-data • parameter Meta-data – RTC’s specification • Introspection – – – – – – • Name, type Port (number, kind) Interface information Properties Parameter Execution context For dynamic reconfiguration of systems A B C name value port0 port4 D port1 port5 E port2 port6 Periodic実行 port3 port7 ExecutionContext Name MyManipulator0 Type Periodic execution type port0 Provide: A, Required: B port1 Provide: C Port2 DataPort: InPort, velocity, float x6 Port3 DataPort: InPort, position, float x6 Port4 Provide: D Port5 Required: E Port6 DataPort: OutPort, status int x1 Port7 DataPort: OutPort, velocity, float x6 ExecutionContext Period: 10ms Parameter gain0(float x6), flag(int x1), dev_file(string) Language independence • Native implementations in multiple languages (use logos) C/C++ • No wrappers, maximum efficiency Middleware independence • CORBA isn’t the only way to send data – CORBA for RTC interfaces and CORBA for data ports are completely separate • Data Distribution Service (DDS) • ICE • ROSTCP • Plain old TCP Summary • OpenRTM-aist provides – Functional components – Execution specification – Communications – Configuration • A wide range of advanced features are available