About OpenRTM-aist
and
Outline of RT-Component Programming
National Institute of Advanced Industrial Science and
Technology (AIST), Japan
Industrial CPS Research Center
Software Platform Research Team, Team Leader
Noriaki Ando, Ph.D.
1
May 13, 2021
Ubiquitous Robotics
Outline
• Basic concept and overview of RT-
Middleware
• Comparison with ROS
• Activities of RT-Middleware
community
• RTC development overview
• Conclusion
2
What is RT-Middleware?
3
• RT = Robot Technology cf. IT
– not only standalone robots, but also robotic elements
(sensors, actuators, etc….)
• RT-Middleware (RTM)
– middleware and platform for RT-element integration
• RT-Component (RTC)
– basic software unit in RT-Middleware
RT-Middleware
+ + + + +
What is RT?
RT-Middleware developed by AIST
OpenRTM-aist
About Robot Middleware
• Platform software that provides common
functions to streamline robot system construction
– Sometimes called "robot OS"
– Commonization and standardization of interface and
protocols
– Examples
• Providing modular or componentized frameworks
• Supports communication among modules
• Provides parameter setting, deployment, startup, and
module composition functions
• Realize inter-OS and inter-language cooperation /
interoperability by abstraction
• Development became active from around 2000
– Various middleware is being developed and released all
over the world
5
6
Conventional systems
Controller
Controller
software
Compatible interfaces are connectable
Robot Arm
Control software
Robot Arm1
Robot Controller Program
Target Robot
7
Each robot has each control interfaces.
If no compatibility, cannot connect each other.
Robot Arm2
Robot Arm2
Controller
software
Humanoidʼs Arm
Control software
Robot Arm
Control software
Conventional systems
Controller
Robot Controller Program
Target Robot
Target Robot
8
compatible
arm interfaces
RTM provides a common I/F for
connecting separately made
software modules
Improved software reusability
Easy to build RT system
Controller
software
Arm A
Control software
Arm B
Control software
By using RT-Middleware
Robot Arm2
Robot Arm1
Controller
Robot Controller Program
Target Robot
Target Robot
Trend of Robot Software Development
Component Oriented Development
Conventional Style
Camera
Mic Actuator Speech
Stereo vision Interaction
Speech
Recognition
Image
Recognition
Middleware
Stereo vision
Interaction
Speech Recog.
Image
recognition
Camera
Mic Actuator
Speech
ü Integrated design of various functions
ü High run-time efficiency, but inflexible
ü Development becomes difficult as the
system becomes more complex
ü Division/integration of large-scale complex
functions
ü Improvement of development and
maintenance efficiency (reuse of functions,
etc.)
ü Increased system flexibility
9
The benefits of modularization
• Reusability
– A component can be reused in various systems.
• Diversification
– Various type of same functional modules can be tried
in systems.
• Flexibility
– System structure can be changed easily.
• Reliability
– Easy to test a module and well tested modules are
reliable.
• Durability
– Well divided and independent module error does not
affect too much to whole systems.
11
The benefits of RT-Component model
• 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
Inactive Active
Error
Life cycle management, core logic execution
Common state machine
Sensor RTC
Composite execution
Real-time execution
Controller RTC
Actuator RTC
Encoder
component
Actuator
Component
Controller
Component
1
TI s
TDs
Kp
+
-
Referencepos
pos
torque
• Data centric communication
• Continuous data transfer
• Dynamic connection/disconnection
Data-centric communication
• User defined interface
• Access to detailed functionality of RTC
– Getting/setting parameters
– Changing modes
– etc…
Image
data
3D depth
data
Stereo vision
interface
・set_mode()
・set_coordination()
・do_calib()
・etc…
Service port
Stereo Vision
Component
Data port
Service oriented interaction
Name
Value
Set name
Name
Value
Set name
• Function for internal parameter
• Multiple parameter sets
• They can be changed from remote in run-time
Activity, Execution context Data Port
Service Port Configuration
Ex. Servo control
Ex. Stereo vision RTC can have several
configuration sets.
Runtime reconfiguration
and dynamic switching
are supported
Main features of RT-Component
Advantages of RTM based development
13
ℓ1
ℓ2
θ2
( x , y )
θ1
Reusable RTCs
Develop from
scratch
Self development
using existing
libraries
3D camera
Point Cloud
Grasping
strategy Planning
Inverse
kinematics
Arm control Gripper control
By using RTM,
existing module can
be reused
Reduce development
from scratch
Bin-picking robot example
* This diagram is simplified version
RTM based Distributed Systems
RTC
RTC
RTM
Windows
RTC
RTC
RTM
uITRON
RTC
RTC
RTM
Linux
RTC
RTC
RTM
VxWorks
RTC
RTC
RTM
QNX
RTC
RTC
RTM
RT Linux
RTC
Application Input device Sensor
Robot A Robot B
Robot C
Network
RTM can manage
distributed RTCs
implemented by
various languages
or executed on
various OSs
on the network
Connections
Between RTCs
Can be established
dynamically
15
The aim of RT-Middleware
Problem Solving by Modularization
• 仕様の明確化
• 最新技術を容易に利用可能
• 誰でもロボットが作れる
Realize
low-cost robots
Satisfy
various needs
Cost Technical Issue Needs
! ! ! !
The state of
the art
Mobile base Manipulator Sensors・・・
Various users
System developers
Easy to customize
RT-Component
Utilize
the state of the art
Robot System Integration Innovation
Reusable modules
Spec.
Practical/commercialization examples
Robot operation simulator: NEDO
S-ONE︓SCHAFT
DAQ-Middleware: KEK/J-PARC
KEK: High Energy Accelerator Research Organization
J-PARC: Japan Proton Accelerator Research Complex
HIRO, NEXTAGE open: Kawada Robotics
HRP series: KAWADA and AIST
TOYOTA L&F︓Air-T
VSTONEʼs education robots OROCHI(RT corp.)
16
THK: SIGNAS system
RTM as a International Standard
Implementation Vendor Features Compatibility
OpenRTM-aist AIST Reference implementation by AIST ---
HRTM Honda R&D ASIMO is now moving to HRTM ◎
OpenRTM.NET SEC .NET(C#,VB,C++/CLI, F#, etc..) ◎
RTM on Android SEC RTM implementation for Android ◎
RTC-Lite AIST Tiny implementation on PIC and
dsPIC
〇
Mini/MicorRTC SEC RTM/RTC for CAN and Zigbee 〇
RTMSafety SEC/AIST Functional safety standard capable
RTM implementation
〇
RTC CANOpen SIT, CiA RTM for CANOpen standard 〇
PALRO Fujisoft Yet another C++ PSM implementation ×
OPRoS ETRI Implementation of Korean national
project
×
GostaiRTC GOSTAI,
THALES
C++ PSM implementation on a robot
language
×
Standardized by OMG process
→ It can not be modified by just one company
→ Various compatible implementation
→ It promoted competition and interoperability
OMG Standard
Users can chose and continue to use
on of the RTM implementations
Ten or more RT-Middleware implementation exist
History
• September, 2005
Request for Proposal issued (starting standardization)
• September, 2006
Specification approved by OMG
• April, 2008
OMG RTC ver.1.0 released
• September, 2012
Updated to ver. 1.1
• September, 2015
FSM4RTC (FSM based RTC standard) adopted
RT-Middleware community
18
Project web pages
• Users can upload
their own RTCs on
the openrtm.org
• Users can search
and download other
users RTCs
19
Project type Number
RT-Components 405
RT-Middleware 14
Tools 19
Documents 4
Hardware related
RTCs
28
RT-Middleware Summer Camp
• 1 week camp every summer
• This year: August 24-28
– The first online camp
• Number of participants: 11
• Venue: AIST Tsukuba
center (Tsukuba city, Ibaraki pref.)
– Onlie (Zoom)
• Lectures, practical work and
presentation by five teams.
• Staying in the AIST’s
accommodation and coding
endlessly every night :-P.
20
RT-Middleware Contest
• Held as an organized session in SICE
SI conference
– Various prizes
– Entry deadline: Sep. 23rd
– Software registration:Oct.
– Paper submission due: Oct. 26th
– Online examination:from end of Nov.
– Presentation and award ceremony: Dec.
• Record of year 2019
– Number of applications :11
– SICE RT-Middleware award x1
– Product supporting award x2
– Company supporting award x9
– Personal supporting award x10
• See more details: openrtm.org
– Menu: community -> events
21
Recommendation
• Letʼs stop reinventing the wheel!!
– Code that has been executed thousands of times by
different people works better than your code from
scratch!!
– Let's write the code you really need to write and borrow
the other non-essential part for you.
– A program released by someone is a program that has
worked once!!
– Other persons code is hard to read, but you shouldn't
throw it away for that reason!!
• Commit to open source projects!!
– Don't hesitate to ask questions on ML and forums!!
– No matter how rudimentary a question is, it is valuable
information for others.
– Letʼs complain to the project!! (good feedback grow the
project)
– Debug and send patches if you can!!
22
Conclusion
• Basic concept and overview of RT-
Middleware
• Comparison with ROS
• Activities of RT-Middleware
community
• RTC development overview
23
RTC development overview
Framework and core-logic
ステレオビジョン
ルゴリズム
ア
コアロジック
右目画像
左目画像
デプスマップ
RT ンポーネント
レームワーク
コ
フ
RT ンポーネント
準インターフェース
コ
標
ステレオビジョン
RT ンポーネント
コ
RT ンポーネント
準インターフェース
コ
標
右目画像
左目画像
デプスマップ
+ =
中身は空
RTC framework + Core logic = RT-Component
RT-Component
framework
Core-logic
Stereo vision
algorithm
RTC standard
interfaces
RTC standard
interfaces
Stereo vision
RT-Component
empty
Left image Right image Left image Right image
Depth map
Depth map
Code generation by model
26
RTC’s specification
MyComp
temp.sensor device
temp. sensor RTC
STATIC
PERIODIC
mode:TimedBool
temp: TimedDouble
name:
category:
description:
comp_type:
act_type:
InPorts:
OutPorts:
RTCBuilder (Template code generator)
C++
backend
Java
backend
Python
backend
RTC source
for C++
RTC source
for Java
RTC source
for Python
class MyComp
: public DataflowComponent {
public:
virutal onExecute(ec_id);
:
private:
TimedBool m_mode;
TimedDouble m_temp;
};
import RTC.DataFlowComponent;
public class MyCompImpl
extends DataFlowComponent
{
public ConsoleInImpl(mgr)
{
}
:
};
#/usr/bin/env python
import RTC
class MyComp(
DataFlowComponent):
def __init__(self, manager):
:
def onExecute(self, ec_id):
:
Same (model)
component will be
generated by same
specification, even if
implementation
languages is different
Core-logic is
embedded to
the template
code
Implement the
procedure in a
specific function
of the
generated class
RTC development flow
27
RTBUilder CMake Visual C++
Input spec of RTC Generating VC project
or Makefile
Implement logic
and compile
RTBUilder CMake
make
+
gcc (g++)
Windows
Linux
Almost all steps are the same, except compiler
CMake
• Open source software for compiler-
independent build automation
• Can generate build files for different
development environments on
different operating systems
• Generate Makefile on Linux
• Generate VC (Visual C++) project file
on Windows
• Most of the recent open source
software is built with CMake.
28
State machine and lifecycle of RTC
ActiveDo/RTC::onExecute() callback
function is here
You don’t need to aware here
Be aware state here and
its callback functions.
30
30
Activity (Callback functions)
Callback functions Meanings
onInitialize Initialization
onActivated Called once when RTC is activated
onExecute Called periodically when RTC is in the active state
onDeactivated Called once when RTC is deactivated
onAborting Called once when entering ERROR state
onReset Called once when resetting
onError Called periodically when RTC is in the error state
onFinalize Called once when finalizing RTC
onStateUpdate Called after onExecute everytime
onRateChanged Called when ExecutionContext’s rate is changed
onStartup Called once when ExecutionContext starting
onShutdown Called once when ExecutionContext stopping
InPort
• InPort
– Input port for data flow type
communication
• Methods of InPort class
– isNew(): check if new data
arriving
– read(): retrieve data from
InPort buffer to the variable
bound to the InPort
– >> : same as above リングバッファ
バインドされた変数
read()
! " # $ % & ! $ ' '
最新値
InPort
Robot
Component
Sensor Data
Example
Basically paired with OutPort
Data ports (InPort/OutPort)
must have the same type
OutPort
リングバッファ
バインドされた変数
! " # $ % ()
& ' % " ( $ & " ) )
* + $ Port
最新値
Sensor
Component
Sensor Data
例
Basically paired with InPort
Data ports (InPort/OutPort)
must have the same type
• OutPort
– Output port for data flow type
communication
• Methods of OutPort class
– write(): push data from
OutPort’s variable into
OutPort’s buffer to be
published to the remote
InPort
– << : same as above
Recommendation
• Letʼs stop reinventing the wheel!!
– Code that has been executed thousands of times by
different people works better than your code from
scratch!!
– Let's write the code you really need to write and borrow
the other non-essential part for you.
– A program released by someone is a program that has
worked once!!
– Other persons code is hard to read, but you shouldn't
throw it away for that reason!!
• Commit to open source projects!!
– Don't hesitate to ask questions on ML and forums!!
– No matter how rudimentary a question is, it is valuable
information for others.
– Letʼs complain to the project!! (good feedback grow the
project)
– Debug and send patches if you can!!
33
Conclusion
• Basic concept and overview of RT-
Middleware
• Comparison with ROS
• Activities of RT-Middleware
community
• RTC development overview
34

More Related Content

PPTX
Yocto Project introduction
PDF
200519 TMU Ubiquitous Robot
PDF
LAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSD
PDF
LAS16-200: SCMI - System Management and Control Interface
PDF
Las16 309 - lua jit arm64 port - status
PDF
LAS16-209: Finished and Upcoming Projects in LMG
PDF
LAS16-305: Smart City Big Data Visualization on 96Boards
PDF
BKK16-302: Android Optimizing Compiler: New Member Assimilation Guide
Yocto Project introduction
200519 TMU Ubiquitous Robot
LAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSD
LAS16-200: SCMI - System Management and Control Interface
Las16 309 - lua jit arm64 port - status
LAS16-209: Finished and Upcoming Projects in LMG
LAS16-305: Smart City Big Data Visualization on 96Boards
BKK16-302: Android Optimizing Compiler: New Member Assimilation Guide

What's hot (20)

PDF
LAS16-TR06: Remoteproc & rpmsg development
PDF
Stefano Cordibella - An introduction to Yocto Project
PDF
LAS16-400: Mini Conference 3 AOSP (Session 1)
PPTX
LAS16-106: GNU Toolchain Development Lifecycle
PDF
Build your own embedded linux distributions by yocto project
PDF
LAS16-301: OpenStack on Aarch64, running in production, upstream improvements...
PDF
BKK16-213 Where's the Hardware?
PDF
BUD17-104: Scripting Languages in IoT: Challenges and Approaches
PDF
LAS16-207: Bus scaling QoS
PDF
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP Integration
PDF
Dragon board 410c workshop - slideshow
PDF
LAS16-201: ART JIT in Android N
PDF
LAS16-500: The Rise and Fall of Assembler and the VGIC from Hell
PDF
HKG15-300: Art's Quick Compiler: An unofficial overview
PDF
LAS16-400K2: TianoCore – Open Source UEFI Community Update
PDF
BKK16-309A Open Platform support in UEFI
PDF
BKK16-505 Kernel and Bootloader Consolidation and Upstreaming
PDF
LAS16-108: JerryScript and other scripting languages for IoT
PDF
Linux on RISC-V
PDF
Tommaso Cucinotta - Low-latency and power-efficient audio applications on Linux
LAS16-TR06: Remoteproc & rpmsg development
Stefano Cordibella - An introduction to Yocto Project
LAS16-400: Mini Conference 3 AOSP (Session 1)
LAS16-106: GNU Toolchain Development Lifecycle
Build your own embedded linux distributions by yocto project
LAS16-301: OpenStack on Aarch64, running in production, upstream improvements...
BKK16-213 Where's the Hardware?
BUD17-104: Scripting Languages in IoT: Challenges and Approaches
LAS16-207: Bus scaling QoS
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP Integration
Dragon board 410c workshop - slideshow
LAS16-201: ART JIT in Android N
LAS16-500: The Rise and Fall of Assembler and the VGIC from Hell
HKG15-300: Art's Quick Compiler: An unofficial overview
LAS16-400K2: TianoCore – Open Source UEFI Community Update
BKK16-309A Open Platform support in UEFI
BKK16-505 Kernel and Bootloader Consolidation and Upstreaming
LAS16-108: JerryScript and other scripting languages for IoT
Linux on RISC-V
Tommaso Cucinotta - Low-latency and power-efficient audio applications on Linux
Ad

Similar to 都立大「ユビキタスロボティクス特論」5月12日 (20)

PDF
200923 01en
PDF
Using SysML in a RTC-based Robotics Application : a case study with a demo
PPT
Introduction to Robotic Technology Components (RTC), Robotics DTF
PDF
Fuzzing RTC @ Kamailio World 2019
PPT
Introduction to Robotic Technology Components (RTC), MARS PTF
PPT
Real time system
PDF
Right FACE! -- Welcoming FACE to RTI for their June 2013 Meeting (PDF)
PDF
Concepts of Real time Systems (RTS)
PDF
Fuzzing Janus @ IPTComm 2019
PDF
Leveraging Open Standards to Build Highly Extensible Autonomous Systems
 
PDF
Design and Development of Real Time Mission Software for wire guided underwat...
PDF
A Model-based Framework for Continuous Development and Runtime Validation of...
PPTX
Understanding the Internet of Things Protocols
PPT
introduction_to_rtsc.ppt
PDF
1.1-Topic 1-Introduction.pdf | Real-time Software Engineering (RTSE)
PPTX
Fiware: Connecting to robots
PPTX
Large-Scale System Integration with DDS for SCADA, C2, and Finance
PPTX
What is RTOS Step by Step Guide?
PPT
Ddc4 rtc roboticsinfoday_final
PDF
Modeling and simulation of power consumption and execution times for real-tim...
200923 01en
Using SysML in a RTC-based Robotics Application : a case study with a demo
Introduction to Robotic Technology Components (RTC), Robotics DTF
Fuzzing RTC @ Kamailio World 2019
Introduction to Robotic Technology Components (RTC), MARS PTF
Real time system
Right FACE! -- Welcoming FACE to RTI for their June 2013 Meeting (PDF)
Concepts of Real time Systems (RTS)
Fuzzing Janus @ IPTComm 2019
Leveraging Open Standards to Build Highly Extensible Autonomous Systems
 
Design and Development of Real Time Mission Software for wire guided underwat...
A Model-based Framework for Continuous Development and Runtime Validation of...
Understanding the Internet of Things Protocols
introduction_to_rtsc.ppt
1.1-Topic 1-Introduction.pdf | Real-time Software Engineering (RTSE)
Fiware: Connecting to robots
Large-Scale System Integration with DDS for SCADA, C2, and Finance
What is RTOS Step by Step Guide?
Ddc4 rtc roboticsinfoday_final
Modeling and simulation of power consumption and execution times for real-tim...
Ad

More from NoriakiAndo (12)

PDF
2024年度 東京工業大学「ロボット技術」 ロボットミドルウェア (2024年4月11日)
PDF
230420_東工大授業「ロボット技術」資料.pdf
PDF
東京工業大学「ロボット技術」ロボットミドルウェア
PPTX
ユビキタスロボティクス特論 6/30
PDF
Service Robot Design Matrix (SRDM) を用いたサービスロボットシステムの開発
PDF
東京工業大学「ロボット技術・ロボットミドルウェア」
PDF
NEDO特別講座 ロボット共通プラットフォーム講習会 (1)
PPTX
Si2020 ando
PDF
200527 ur
PDF
200513 ur
PDF
200520 ユビキタスロボティクス特論
PDF
190418 titech robotics
2024年度 東京工業大学「ロボット技術」 ロボットミドルウェア (2024年4月11日)
230420_東工大授業「ロボット技術」資料.pdf
東京工業大学「ロボット技術」ロボットミドルウェア
ユビキタスロボティクス特論 6/30
Service Robot Design Matrix (SRDM) を用いたサービスロボットシステムの開発
東京工業大学「ロボット技術・ロボットミドルウェア」
NEDO特別講座 ロボット共通プラットフォーム講習会 (1)
Si2020 ando
200527 ur
200513 ur
200520 ユビキタスロボティクス特論
190418 titech robotics

Recently uploaded (20)

PPTX
Climate Change and Its Global Impact.pptx
PPTX
UNIT_2-__LIPIDS[1].pptx.................
PDF
1.3 FINAL REVISED K-10 PE and Health CG 2023 Grades 4-10 (1).pdf
PPTX
ELIAS-SEZIURE AND EPilepsy semmioan session.pptx
PDF
Journal of Dental Science - UDMY (2022).pdf
PDF
Race Reva University – Shaping Future Leaders in Artificial Intelligence
PDF
Everyday Spelling and Grammar by Kathi Wyldeck
PPTX
Core Concepts of Personalized Learning and Virtual Learning Environments
PDF
CRP102_SAGALASSOS_Final_Projects_2025.pdf
DOCX
Cambridge-Practice-Tests-for-IELTS-12.docx
PPTX
Education and Perspectives of Education.pptx
PDF
International_Financial_Reporting_Standa.pdf
PDF
English Textual Question & Ans (12th Class).pdf
PDF
The TKT Course. Modules 1, 2, 3.for self study
PDF
Journal of Dental Science - UDMY (2021).pdf
PDF
HVAC Specification 2024 according to central public works department
PDF
Fun with Grammar (Communicative Activities for the Azar Grammar Series)
PDF
CISA (Certified Information Systems Auditor) Domain-Wise Summary.pdf
PDF
Climate and Adaptation MCQs class 7 from chatgpt
PDF
1.Salivary gland disease.pdf 3.Bleeding and Clotting Disorders.pdf important
Climate Change and Its Global Impact.pptx
UNIT_2-__LIPIDS[1].pptx.................
1.3 FINAL REVISED K-10 PE and Health CG 2023 Grades 4-10 (1).pdf
ELIAS-SEZIURE AND EPilepsy semmioan session.pptx
Journal of Dental Science - UDMY (2022).pdf
Race Reva University – Shaping Future Leaders in Artificial Intelligence
Everyday Spelling and Grammar by Kathi Wyldeck
Core Concepts of Personalized Learning and Virtual Learning Environments
CRP102_SAGALASSOS_Final_Projects_2025.pdf
Cambridge-Practice-Tests-for-IELTS-12.docx
Education and Perspectives of Education.pptx
International_Financial_Reporting_Standa.pdf
English Textual Question & Ans (12th Class).pdf
The TKT Course. Modules 1, 2, 3.for self study
Journal of Dental Science - UDMY (2021).pdf
HVAC Specification 2024 according to central public works department
Fun with Grammar (Communicative Activities for the Azar Grammar Series)
CISA (Certified Information Systems Auditor) Domain-Wise Summary.pdf
Climate and Adaptation MCQs class 7 from chatgpt
1.Salivary gland disease.pdf 3.Bleeding and Clotting Disorders.pdf important

都立大「ユビキタスロボティクス特論」5月12日

  • 1. About OpenRTM-aist and Outline of RT-Component Programming National Institute of Advanced Industrial Science and Technology (AIST), Japan Industrial CPS Research Center Software Platform Research Team, Team Leader Noriaki Ando, Ph.D. 1 May 13, 2021 Ubiquitous Robotics
  • 2. Outline • Basic concept and overview of RT- Middleware • Comparison with ROS • Activities of RT-Middleware community • RTC development overview • Conclusion 2
  • 4. • RT = Robot Technology cf. IT – not only standalone robots, but also robotic elements (sensors, actuators, etc….) • RT-Middleware (RTM) – middleware and platform for RT-element integration • RT-Component (RTC) – basic software unit in RT-Middleware RT-Middleware + + + + + What is RT? RT-Middleware developed by AIST OpenRTM-aist
  • 5. About Robot Middleware • Platform software that provides common functions to streamline robot system construction – Sometimes called "robot OS" – Commonization and standardization of interface and protocols – Examples • Providing modular or componentized frameworks • Supports communication among modules • Provides parameter setting, deployment, startup, and module composition functions • Realize inter-OS and inter-language cooperation / interoperability by abstraction • Development became active from around 2000 – Various middleware is being developed and released all over the world 5
  • 6. 6 Conventional systems Controller Controller software Compatible interfaces are connectable Robot Arm Control software Robot Arm1 Robot Controller Program Target Robot
  • 7. 7 Each robot has each control interfaces. If no compatibility, cannot connect each other. Robot Arm2 Robot Arm2 Controller software Humanoidʼs Arm Control software Robot Arm Control software Conventional systems Controller Robot Controller Program Target Robot Target Robot
  • 8. 8 compatible arm interfaces RTM provides a common I/F for connecting separately made software modules Improved software reusability Easy to build RT system Controller software Arm A Control software Arm B Control software By using RT-Middleware Robot Arm2 Robot Arm1 Controller Robot Controller Program Target Robot Target Robot
  • 9. Trend of Robot Software Development Component Oriented Development Conventional Style Camera Mic Actuator Speech Stereo vision Interaction Speech Recognition Image Recognition Middleware Stereo vision Interaction Speech Recog. Image recognition Camera Mic Actuator Speech ü Integrated design of various functions ü High run-time efficiency, but inflexible ü Development becomes difficult as the system becomes more complex ü Division/integration of large-scale complex functions ü Improvement of development and maintenance efficiency (reuse of functions, etc.) ü Increased system flexibility 9
  • 10. The benefits of modularization • Reusability – A component can be reused in various systems. • Diversification – Various type of same functional modules can be tried in systems. • Flexibility – System structure can be changed easily. • Reliability – Easy to test a module and well tested modules are reliable. • Durability – Well divided and independent module error does not affect too much to whole systems.
  • 11. 11 The benefits of RT-Component model • 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
  • 12. Inactive Active Error Life cycle management, core logic execution Common state machine Sensor RTC Composite execution Real-time execution Controller RTC Actuator RTC Encoder component Actuator Component Controller Component 1 TI s TDs Kp + - Referencepos pos torque • Data centric communication • Continuous data transfer • Dynamic connection/disconnection Data-centric communication • User defined interface • Access to detailed functionality of RTC – Getting/setting parameters – Changing modes – etc… Image data 3D depth data Stereo vision interface ・set_mode() ・set_coordination() ・do_calib() ・etc… Service port Stereo Vision Component Data port Service oriented interaction Name Value Set name Name Value Set name • Function for internal parameter • Multiple parameter sets • They can be changed from remote in run-time Activity, Execution context Data Port Service Port Configuration Ex. Servo control Ex. Stereo vision RTC can have several configuration sets. Runtime reconfiguration and dynamic switching are supported Main features of RT-Component
  • 13. Advantages of RTM based development 13 ℓ1 ℓ2 θ2 ( x , y ) θ1 Reusable RTCs Develop from scratch Self development using existing libraries 3D camera Point Cloud Grasping strategy Planning Inverse kinematics Arm control Gripper control By using RTM, existing module can be reused Reduce development from scratch Bin-picking robot example * This diagram is simplified version
  • 14. RTM based Distributed Systems RTC RTC RTM Windows RTC RTC RTM uITRON RTC RTC RTM Linux RTC RTC RTM VxWorks RTC RTC RTM QNX RTC RTC RTM RT Linux RTC Application Input device Sensor Robot A Robot B Robot C Network RTM can manage distributed RTCs implemented by various languages or executed on various OSs on the network Connections Between RTCs Can be established dynamically
  • 15. 15 The aim of RT-Middleware Problem Solving by Modularization • 仕様の明確化 • 最新技術を容易に利用可能 • 誰でもロボットが作れる Realize low-cost robots Satisfy various needs Cost Technical Issue Needs ! ! ! ! The state of the art Mobile base Manipulator Sensors・・・ Various users System developers Easy to customize RT-Component Utilize the state of the art Robot System Integration Innovation Reusable modules Spec.
  • 16. Practical/commercialization examples Robot operation simulator: NEDO S-ONE︓SCHAFT DAQ-Middleware: KEK/J-PARC KEK: High Energy Accelerator Research Organization J-PARC: Japan Proton Accelerator Research Complex HIRO, NEXTAGE open: Kawada Robotics HRP series: KAWADA and AIST TOYOTA L&F︓Air-T VSTONEʼs education robots OROCHI(RT corp.) 16 THK: SIGNAS system
  • 17. RTM as a International Standard Implementation Vendor Features Compatibility OpenRTM-aist AIST Reference implementation by AIST --- HRTM Honda R&D ASIMO is now moving to HRTM ◎ OpenRTM.NET SEC .NET(C#,VB,C++/CLI, F#, etc..) ◎ RTM on Android SEC RTM implementation for Android ◎ RTC-Lite AIST Tiny implementation on PIC and dsPIC 〇 Mini/MicorRTC SEC RTM/RTC for CAN and Zigbee 〇 RTMSafety SEC/AIST Functional safety standard capable RTM implementation 〇 RTC CANOpen SIT, CiA RTM for CANOpen standard 〇 PALRO Fujisoft Yet another C++ PSM implementation × OPRoS ETRI Implementation of Korean national project × GostaiRTC GOSTAI, THALES C++ PSM implementation on a robot language × Standardized by OMG process → It can not be modified by just one company → Various compatible implementation → It promoted competition and interoperability OMG Standard Users can chose and continue to use on of the RTM implementations Ten or more RT-Middleware implementation exist History • September, 2005 Request for Proposal issued (starting standardization) • September, 2006 Specification approved by OMG • April, 2008 OMG RTC ver.1.0 released • September, 2012 Updated to ver. 1.1 • September, 2015 FSM4RTC (FSM based RTC standard) adopted
  • 19. Project web pages • Users can upload their own RTCs on the openrtm.org • Users can search and download other users RTCs 19 Project type Number RT-Components 405 RT-Middleware 14 Tools 19 Documents 4 Hardware related RTCs 28
  • 20. RT-Middleware Summer Camp • 1 week camp every summer • This year: August 24-28 – The first online camp • Number of participants: 11 • Venue: AIST Tsukuba center (Tsukuba city, Ibaraki pref.) – Onlie (Zoom) • Lectures, practical work and presentation by five teams. • Staying in the AIST’s accommodation and coding endlessly every night :-P. 20
  • 21. RT-Middleware Contest • Held as an organized session in SICE SI conference – Various prizes – Entry deadline: Sep. 23rd – Software registration:Oct. – Paper submission due: Oct. 26th – Online examination:from end of Nov. – Presentation and award ceremony: Dec. • Record of year 2019 – Number of applications :11 – SICE RT-Middleware award x1 – Product supporting award x2 – Company supporting award x9 – Personal supporting award x10 • See more details: openrtm.org – Menu: community -> events 21
  • 22. Recommendation • Letʼs stop reinventing the wheel!! – Code that has been executed thousands of times by different people works better than your code from scratch!! – Let's write the code you really need to write and borrow the other non-essential part for you. – A program released by someone is a program that has worked once!! – Other persons code is hard to read, but you shouldn't throw it away for that reason!! • Commit to open source projects!! – Don't hesitate to ask questions on ML and forums!! – No matter how rudimentary a question is, it is valuable information for others. – Letʼs complain to the project!! (good feedback grow the project) – Debug and send patches if you can!! 22
  • 23. Conclusion • Basic concept and overview of RT- Middleware • Comparison with ROS • Activities of RT-Middleware community • RTC development overview 23
  • 25. Framework and core-logic ステレオビジョン ルゴリズム ア コアロジック 右目画像 左目画像 デプスマップ RT ンポーネント レームワーク コ フ RT ンポーネント 準インターフェース コ 標 ステレオビジョン RT ンポーネント コ RT ンポーネント 準インターフェース コ 標 右目画像 左目画像 デプスマップ + = 中身は空 RTC framework + Core logic = RT-Component RT-Component framework Core-logic Stereo vision algorithm RTC standard interfaces RTC standard interfaces Stereo vision RT-Component empty Left image Right image Left image Right image Depth map Depth map
  • 26. Code generation by model 26 RTC’s specification MyComp temp.sensor device temp. sensor RTC STATIC PERIODIC mode:TimedBool temp: TimedDouble name: category: description: comp_type: act_type: InPorts: OutPorts: RTCBuilder (Template code generator) C++ backend Java backend Python backend RTC source for C++ RTC source for Java RTC source for Python class MyComp : public DataflowComponent { public: virutal onExecute(ec_id); : private: TimedBool m_mode; TimedDouble m_temp; }; import RTC.DataFlowComponent; public class MyCompImpl extends DataFlowComponent { public ConsoleInImpl(mgr) { } : }; #/usr/bin/env python import RTC class MyComp( DataFlowComponent): def __init__(self, manager): : def onExecute(self, ec_id): : Same (model) component will be generated by same specification, even if implementation languages is different Core-logic is embedded to the template code Implement the procedure in a specific function of the generated class
  • 27. RTC development flow 27 RTBUilder CMake Visual C++ Input spec of RTC Generating VC project or Makefile Implement logic and compile RTBUilder CMake make + gcc (g++) Windows Linux Almost all steps are the same, except compiler
  • 28. CMake • Open source software for compiler- independent build automation • Can generate build files for different development environments on different operating systems • Generate Makefile on Linux • Generate VC (Visual C++) project file on Windows • Most of the recent open source software is built with CMake. 28
  • 29. State machine and lifecycle of RTC ActiveDo/RTC::onExecute() callback function is here You don’t need to aware here Be aware state here and its callback functions.
  • 30. 30 30 Activity (Callback functions) Callback functions Meanings onInitialize Initialization onActivated Called once when RTC is activated onExecute Called periodically when RTC is in the active state onDeactivated Called once when RTC is deactivated onAborting Called once when entering ERROR state onReset Called once when resetting onError Called periodically when RTC is in the error state onFinalize Called once when finalizing RTC onStateUpdate Called after onExecute everytime onRateChanged Called when ExecutionContext’s rate is changed onStartup Called once when ExecutionContext starting onShutdown Called once when ExecutionContext stopping
  • 31. InPort • InPort – Input port for data flow type communication • Methods of InPort class – isNew(): check if new data arriving – read(): retrieve data from InPort buffer to the variable bound to the InPort – >> : same as above リングバッファ バインドされた変数 read() ! " # $ % & ! $ ' ' 最新値 InPort Robot Component Sensor Data Example Basically paired with OutPort Data ports (InPort/OutPort) must have the same type
  • 32. OutPort リングバッファ バインドされた変数 ! " # $ % () & ' % " ( $ & " ) ) * + $ Port 最新値 Sensor Component Sensor Data 例 Basically paired with InPort Data ports (InPort/OutPort) must have the same type • OutPort – Output port for data flow type communication • Methods of OutPort class – write(): push data from OutPort’s variable into OutPort’s buffer to be published to the remote InPort – << : same as above
  • 33. Recommendation • Letʼs stop reinventing the wheel!! – Code that has been executed thousands of times by different people works better than your code from scratch!! – Let's write the code you really need to write and borrow the other non-essential part for you. – A program released by someone is a program that has worked once!! – Other persons code is hard to read, but you shouldn't throw it away for that reason!! • Commit to open source projects!! – Don't hesitate to ask questions on ML and forums!! – No matter how rudimentary a question is, it is valuable information for others. – Letʼs complain to the project!! (good feedback grow the project) – Debug and send patches if you can!! 33
  • 34. Conclusion • Basic concept and overview of RT- Middleware • Comparison with ROS • Activities of RT-Middleware community • RTC development overview 34