OpenRTM-aist is a
software platform
A computing platform or digital platform is an environment in which a piece of software is executed. It may be the hardware or the operating system (OS), even a web browser and associated application programming interfaces, or other underlying s ...
developed on the basis of the
RT middleware
RT-middleware (Robotics Technology Middleware) is a common computing platform technical standard for robots based on distributed Object (computer science), object technology. RT-middleware supports the construction of various networked robotic syst ...
standard. OpenRTM-aist is developed by
which also contributes to definition of the RT-middleware standard.
Abstract
In
RT middleware
RT-middleware (Robotics Technology Middleware) is a common computing platform technical standard for robots based on distributed Object (computer science), object technology. RT-middleware supports the construction of various networked robotic syst ...
, all robotic technological elements, such as
actuator
An actuator is a component of a machine that is responsible for moving and controlling a mechanism or system, for example by opening a valve. In simple terms, it is a "mover".
An actuator requires a control device (controlled by control signal) a ...
s and
sensor
A sensor is a device that produces an output signal for the purpose of sensing a physical phenomenon.
In the broadest definition, a sensor is a device, module, machine, or subsystem that detects events or changes in its environment and sends ...
s, are regarded as
RT-components (RTC). Each RTC provides ports to communicate with other RTCs, and developers can implement their own robotics technology (RT) systems as RTCs. The RT-middleware can thus be considered as a distributed control architecture.
RT-middleware is originally a
platform independent model
A platform-independent model (PIM) in software engineering is a model of a software system or business system that is independent of the specific technological platform used to implement it.
The term platform-independent model is most frequently ...
(PIM). Implementations of this model include
CORBA
The Common Object Request Broker Architecture (CORBA) is a standard defined by the Object Management Group (OMG) designed to facilitate the communication of systems that are deployed on diverse platforms. CORBA enables collaboration between sys ...
,
Enterprise JavaBean
Jakarta Enterprise Beans (EJB; formerly Enterprise JavaBeans) is one of several Java APIs for modular construction of enterprise software. EJB is a server-side software component that encapsulates business logic of an application. An EJB web co ...
(EJB), and
.NET Framework
The .NET Framework (pronounced as "''dot net"'') is a proprietary software framework developed by Microsoft that runs primarily on Microsoft Windows. It was the predominant implementation of the Common Language Infrastructure (CLI) until bein ...
. OpenRTM-aist is based on the CORBA technology and implements the extended RTC specification. Experiences with OpenRTM-aist will be fed back to the RT-middleware standardization process.
Characteristics
OpenRTM-aist implements some extended RTC features, and it also includes a Manager component to help manipulating RTCs. RTCs in OpenRTM-aist can be implemented using many programming languages, and RTCs programmed in different languages can communicate with each other. A lot of tools to ease RTC manipulations are also released by the
and their co-workers (in a strict sense, OpenRTM-aist itself is a library and does not include these tools).
RT-component
The RT-component is a functional unit which conforms to the RT-component specification defined by
OMG. In OpenRTM-aist, RTCs have data ports, service ports, and execution context which controls the RTC's state.
State Machine
In standards of
RT-component, RTC must have 4 states such as CREATED, INACTIVE, ACTIVE, and ERROR. When the state changes, corresponding event-handlers are called by the execution context which manages the RTCs' state machine.
For example, "on_activated" callback function is called when the RTC is activated (from INACTIVE to ACTIVE state). In on_activated callback, initialization codes are implemented.
On the other hand, "on_deactivated" callback function is called when the RTC is deactivated (from ACTIVE to INACTIVE state). In this callback, finalization codes are implemented.
"on_execute" is periodically called when the RTC is in ACTIVE state. Here, controlling or some device management (ex., polling) functions are called.
These callbacks are called by the "execution context" object. If the special execution context is attached to the RTCs, calling method or policy is modified (see execution context section).
Data port
A data port is an endpoint to communicate with other RTCs. The data ports have their types. Ports with the same type can be connected to each other.
In OpenRTM-aist, primitive data types (like "TimedLong", "TimedDouble", and so on) are implemented. Moreover, from OpenRTM-aist version 1.0, extra data types which are expected to be used commonly in robotic systems were released as ExtendedDataType (like "TimedVelocity2D", "TimedPose2D", and so on)
Developers can define their own data types by describing
IDL file. Tools can parse the IDL file and automatically generate the skeleton and stub file of the original data types.
Service port
The service port allows communicating much more flexibly than the data ports. Developers should define service port interfaces by making their
IDL files.
Execution contexts
Execution contexts handle the state-machine operations of RT-components. In OpenRTM-aist, several kinds of execution contexts are provided. For example:
* the ''periodic'' execution context, one of the most commonly used, provides periodic calls of the "on_execute" event-handler (sensor acquisition or actuator control are usually implemented there);
* the ''real-time'' execution context, which uses Linux's pre-emptive kernel function, supports real-time operation of the RTC;
* the ''extra trigger'' execution context is an important characteristic of OpenRTM-aist. It provides the synchronization capability with dynamics simulators like
OpenHRP-3.
Configuration
Configuration is a function which dynamically changes the parameters of the RTCs during run-time.
Configuration can be numeric and string.
Supported operating systems
OpenRTM-aist runs on
Windows
Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for serv ...
,
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which ...
and
macOS
macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers. Within the market of desktop and lapt ...
. Furthermore,
VxWorks
VxWorks is a real-time operating system (or RTOS) developed as proprietary software by Wind River Systems, a wholly-owned subsidiary of Aptiv. First released in 1987, VxWorks is designed for use in embedded systems requiring real-time, determin ...
is supported experimentally.
Supported programming languages
Since OpenRTM-aist is based on the
CORBA
The Common Object Request Broker Architecture (CORBA) is a standard defined by the Object Management Group (OMG) designed to facilitate the communication of systems that are deployed on diverse platforms. CORBA enables collaboration between sys ...
technology, it supports several programming languages, including:
C++
C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
,
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's List ...
,
Python
Python may refer to:
Snakes
* Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia
** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia
* Python (mythology), a mythical serpent
Computing
* Python (pro ...
, and
Erlang (unofficial).
Tools
RTC Builder
![RTC Builder](https://upload.wikimedia.org/wikipedia/commons/c/c0/RTC_Builder.jpg)
RTC Builder is a tool for skeleton-code generation. It is launched in the eclipse developmental environment. OpenRTM-aist also supports RTC-template which is a command-line type skeleton-code generation tool.
RT System Editor
![RT System Editor](https://upload.wikimedia.org/wikipedia/commons/8/8c/RT_System_Editor.jpg)
RT System Editor is a tool for handling RTCs. RT system editor provides following services:
*Referring RTCs' states
*Connecting RTCs' ports
*Configuring RTCs
*Activate/deactivate/reset RTCs
*Save/restore the RT-system
rtshell
rtshell is a command-line tool which provides following services:
*Referring RTCs' states
*Connecting RTCs' ports
*Configuring RTCs
*Activate/deactivate/reset RTCs
*Restore the RT-system
*Log output of DataPorts
*Replay the log of the DataPorts
RTC debugger
RTC debugger is a debugging tool for RTCs. RTC debugger is an Eclipse plug-in.
[Sec Co., LTD., TC debugger http://www.sec.co.jp/robot/download_tool.html/ref>
]
License
OpenRTM-aist is licensed under the GNU Lesser General Public License
The GNU Lesser General Public License (LGPL) is a free-software license published by the Free Software Foundation (FSF). The license allows developers and companies to use and integrate a software component released under the LGPL into their own ...
(LGPL).
See also
*Robot
A robot is a machine—especially one programmable by a computer—capable of carrying out a complex series of actions automatically. A robot can be guided by an external control device, or the control may be embedded within. Robots may be c ...
*Open-source robotics
Open-source robotics (OSR) is where the physical artifacts of the subject are offered by the open design movement. This branch of robotics makes use of open-source hardware and free and open-source software providing blueprints, schematics, and s ...
*Middleware
Middleware is a type of computer software that provides services to software applications beyond those available from the operating system. It can be described as "software glue".
Middleware makes it easier for software developers to implement co ...
*New Energy and Industrial Technology Development Organization
The , or NEDO, is Japan's largest public management organization promoting research and development as well as deployment of industrial, energy and environmental technologies. In 2003, NEDO was reorganized as an Independent Administrative Institu ...
*
*Object Management Group
The Object Management Group (OMG) is a computer industry standardization, standards consortium. OMG Task Forces develop enterprise integration standards for a range of technologies.
Business activities
The goal of the OMG was a common portabl ...
*Japan Robot Association
The (JARA) is a trade association made up of companies in Japan that develop and manufacture robot technology. It was formed in 1971 as the Industrial Robot Conversazione and was the world's first robot association. The association was reorganize ...
References
External links
*{{Official website
RT middleware project (in Japanese)
Robotics suites