Robotic Component Specification (RTC) Noriaki Ando, Geoffrey Biggs, Tetsuo Kotoku National Institute of Advanced Industrial Science and Technology (AIST)
What is RT? • RT = Robot Technology
cf. IT
– not only standalone robots, but also robotic elements (sensors, actuators, etc….) RT-Middleware developed by AIST
+
+
+
+
OpenRTM-aist
+
RT-Middleware
• RT-Middleware – middleware and platform for RT-element integration
• RT-Component – basic software unit in RT-Middleware
Outline • RTC Specification – Overview – Implementations
• OpenRTM-aist • RTMSafety – Specification VnV
• Summary
3
Robotics DTF • Founded in 2004 as a SIG • Promoted to DTF in 2005 • Current active member – AIST, ATR, ETRI, Honda R&D, JARA, Univ. (SIT, UEC, Tsukuba)
• Web: http://robotics.omg.org
• Specifications – Robotic Technology Component Specification (RTC), with MARS PTF – Robot Localization Specification (RLS) – Robot Interaction Specification (RoIS)
• In progress – Dynamic Deployment and Configuration for RTC (DDC4RTC), FTF – Finite State Machine for RTC (FSM4RTC), reviewing RFP 4
OMG RTC Specification •
Atlanta meeting (2005.9) –
•
Burlingame meeting (2005.12) –
•
–
–
•
RTC Spec. was submitted to AB (approved). FTF organized
Jacksonville meeting (2007.9) –
•
RTC Spec. was submitted to AB (rejected).
Anaheim meeting (2006.9) –
•
Proposals were merged and resubmitted
Boston meeting (2006.6) –
•
Response : PIM and PSM for RTComponent submitted Submitter:AIST、RTI
Sent Louis meeting (2006.4) –
•
Robotics DTF started
Tampa meeting (2006.2) –
•
RFP (Request For Proposal) : Robot Technology Components (RTCs) issued
FTF report was approved
Officially available formal-08-04-04 (2008.4) Version 1.1 formal/12-09-01 (2012.9) 5
Features of RTC • Provides rich component lifecycle to enforce state coherency among components • Defines data structures for describing components and other elements • Supports fundamental design patterns – Collaboration of fine-grained components tightly coupled in time (e.g. Simulink) – Stimulus response with finite state machines – Dynamic composition of components collaborating synchronously or asynchronously 6
RTC Specification formal/12-09-01 pd RTC Packages «profile» RTC
SDOPackage
Execution Semantics
Introspection
(from External Models)
Lightw eight RTC
(from Robotic Technology Components)
•
Specification consists of 3 packages:
– Lightweight RTC – Execution Semantics – Introspection 7
PIM Overview: Lightweight RTC pd RTC Packages «profile» RTC
SDOPackage
Execution Semantics
Introspection
(from External Models)
Lightw eight RTC
(from Robotic Technology Components)
component
port
• Lightweight RTC – Stereotypes and constraints for components, ports, and connectors – Component lifecycle – Baseline support for component execution: EC – No reflection or introspection for dynamic system construction – Mainly used for static component
state machine
8
PIM Overview: Execution pd RTC Packages «profile» RTC
SDOPackage
Execution Semantics
Introspection
•
Execution Semantics –
(from External Models)
Lightw eight RTC
(from Robotic Technology Components)
Data flow
FSM
Provides behavioral design patterns commonly used in robotic and control systems 1. Periodic synchronous execution (“data flow”) 2. Stimulus response/eventdriven execution (FSMs) 3. Multi-modal behavior
request response
Multi Mode
9
PIM Overview: Introspection pd RTC Packages «profile» RTC
SDOPackage
Execution Semantics
Introspection
(from External Models)
Lightw eight RTC
(from Robotic Technology Components)
RTC
SDO
component
•
Introspection – Query and modify component properties and connections at runtime – Based on SuperDistributed Objects (SDO) – Mainly used for dynamic component system integration
port state machine 10
PSM (Platform-Specific Models) • CORBA IDL – CORBA 2.x compliant IDL is provided.
• Lightweight CORBA Component Model – Distributed CORBA-based components.
• Local components – Low-overhead communication in a single process. – C++ mapping is provided. Other PSM can be defined and implemented if you want 11
OMG RTC families Name
Vendor
Feature
OpenRTM-aist
AIST
C++, Python, Java
OpenRTM.NET
SEC
.NET(C#,VB,C++/CLI, F#, etc..
RTM for VxWorks
SEC
OpenRTM-aist port to VxWorks
RTM for TOPPERS
AIST
OpenRTM-aist port to uITRON embedded OS
RTM for T-Kernel
NEC software
OpenRTM-aist port to T-Kernel embedded OS
miniRTC, microRTC
SEC
RTC for embedded system with CAN
RTC CANOpen
SIT, CIA
Based on CANOpen standard and RTC standard
PALRO
Fujisoft
C++ PSM impl. for small humanoid robot
OPRoS
ETRI
Korean national project
GostaiRTC
GOSTAI,THALES Based on C++ PSM running on URBI
H-RTM (Tentative name)
Honda R&D
Compatible with OpenRTM, with FSM type RTC
Implementation diversity by same specification • guarantees continuity of products • makes easy to bridge between implementations 12
OMG Standards and OpenRTM-aist PIM
RTC Specification
PSM
RTC CORBA PSM
Standard
Extended specification
RTC CCM PSM
OpenRTM-aist Ext. interface
SDO Specification
RTC Local PSM
PSM in other platforms
Additional specification and extended interfaces required to actual implementations
OpenRTM-aist Basic types
Impl
Other RTM
OpenRTM-aist Impl. By AIST
Impl. By other vendor
OpenRTM-aist’s design policy
Component developer never touch IDL (except service port)
Applications DAQ-Middleware: KEK/J-PARC KEK: High Energy Accelerator Research Organization J-PARC: Japan Proton Accelerator Research Complex
HRP-4: Kawada/AIST
TAIZOU: General Robotics Inc.
HIRO: Kawada/GRX
HRP-4C: Kawada/AIST 14
OpenRTM-aist’s RTC Architecture Interfaces to obtain metadata, state, configuration etc. SDO Interfaces
RTC Interfaces
Service ports
Service ports
RT-Component
Require, consume Consumer
use Provider
Activity Created
Consumer
Inactive
Receive Data ports
Buffer
Active
read
write
Buffer InPort
Provider
State machine
Consumer
InPort
Provide Provider
Error Execution
Execution context
OutPort
Buffer OutPort
Buffer
Transmit Data ports
Activity, Execution context Common state machine
Inactive
Active
Data Port • • •
Composite execution Real-time execution
Sensor RTC
1 TI s
+
Kp
TDs
Actuator RTC
Life cycle management, core logic execution
pos
Controller Component
Actuator Component
Data-centric communication
Service Port
Configuration
User defined interface Access to detailed functionality of RTC – Getting/setting parameters Ex. Stereo vision – Changing modes – etc… Service port Stereo vision interface
・set_mode() ・set_coordination() ・do_calib() ・etc…
torque -
Encoder component
• •
Ex. Servo control
pos Reference
Controller RTC
Error
Data centric communication Continuous data transfer Dynamic connection/disconnection
3D depth data Image data
ステレオビジョン コンポーネント
Service oriented interaction
Data port
• • •
Function for internal parameter Multiple parameter sets They can be changed from remote in run-time RTC can have several configuration sets. Runtime reconfiguration and dynamic switching are supported Name
Set name
Value Name
Set name
Value
Data Port • Data-centric communication port – Type • Defined by user in IDL
– Output:OutPort – Input:InPort
Activity
• CORBA,TCP socket, other protocol, etc…
CORBA I/F
Notify
put(data) inport.put(data) operation
buffer
Original Protocol
(a) “new” type subscription
asynchronous
Raw TCP Socket
(a) Push (publisher/subscriber) communication model
• Connection management Activity – Interface type
Publisher
Publisher
Timer buffer
put(data)
outport.get() operation
Connected by original protocol
(b) “periodic” type subscription
– Data flow type • push/pull
Activity
Data transfer through “Original Protocol”
– Subscription type
(b) Pull communication model put(data)
• Flush, New, Periodic synchronous
(c) “flush” type subscription
17
Execution of RTC logic ・Execution context (EC) = entity of logic execution ≒ thread ・RTC⇔EC: Dynamic binding RT-Middleware Default context
Real-time ExecutionContext
Normal ExecutionContext
Dynamic module loading
RT-Component
Attaching EC to RTC
RT-Component
Attaching EC to RTC
Execution scheme can be changed by attaching appropriate EC 18
Ex. External triggered EC • External triggered EC
Execution timing of all the components in dynamics simulator should be controlled by simulator’s scheduler
– Extended interface – Calling tick() operation from Simulation time outside – Logic is progressed by one tick tick!
• Execution timing is controlled from outside • This feature is convenient for – Simulator – Debugger
External rriggered EC
tick! Extended interface Same binary component can be used in simulator and actual hardware 19
RTMSafety • IEC61508 (Functional safety standard) capable RTM • Developed by SEC and AIST • Based on lightweight RTC specification • Implemented in C, runs on QNX safety kernel 20
OpenRTM and RTMSafety RTC
RTC
RTC
RTC
OpenRTM
CORBA
OS
LwRTC
LwRTC
LwRTC
Self check
RTMSafety
Protocol Library
LwRTC
Monitoring
Safety Function Library Safety Function
Safety OS
Communication with non-safety RTC
(a) Conventional RT-Middleware
(b) d-RTM
Utilize safety functions provided safety OS LwRTCs on RTMSafety implicitly/explicitly use these safety functions
Learning from experience • Execution context gives diversity of execution of component and system structure. • Port service and combination of data-port/serviceport extend the range of application. • RTC based system shows good conformity to SysML’s IBD. – Block = RTC, flow-port = data port
• Specification should be defined from point of view such as functional safety and cording standards – RTC has some bugs as specification – RTC specs expandability helps applying to various platform and field. 22