OpenRTM-aist

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
OpenRTM-aist
DeveloperNational Institute of Advanced Industrial Science and Technology
Stable release
1.2.1 / November 25, 2019; 6 years ago (2019-11-25)
Repository
  • {{URL|example.com|optional display text}}Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
Written inC++, Java, Python
Engine
    Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
    PlatformWindows, Linux, macOS, VxWorks, TOPPERS(ITRON), QNX
    TypeLibrary
    LicenseLGPL
    Websitewww.openrtm.org

    OpenRTM-aist is a software platform developed on the basis of the RT middleware standard.[1] OpenRTM-aist is developed by National Institute of Advanced Industrial Science and Technology which also contributes to definition of the RT-middleware standard.

    Abstract

    [edit | edit source]

    In RT middleware, all robotic technological elements, such as actuators and sensors, 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.[2]

    RT-middleware is originally a platform independent model (PIM). Implementations of this model include CORBA, Enterprise JavaBean (EJB), and .NET Framework. 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

    [edit | edit source]

    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 National Institute of Advanced Industrial Science and Technology and their co-workers (in a strict sense, OpenRTM-aist itself is a library and does not include these tools).

    RT-component

    [edit | edit source]

    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

    [edit | edit source]

    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

    [edit | edit source]

    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)[3]

    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

    [edit | edit source]

    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

    [edit | edit source]

    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;[4]
    • the extra trigger execution context is an important characteristic of OpenRTM-aist. It provides the synchronization capability with dynamics simulators like OpenHRP-3.

    Configuration

    [edit | edit source]

    Configuration is a function which dynamically changes the parameters of the RTCs during run-time. Configuration can be numeric and string.

    Supported operating systems

    [edit | edit source]

    OpenRTM-aist runs on Windows, Linux and macOS.[5] Furthermore, VxWorks is supported experimentally.[6]

    Supported programming languages

    [edit | edit source]

    Since OpenRTM-aist is based on the CORBA technology, it supports several programming languages, including: C++, Java, Python, and Erlang (unofficial).

    Tools

    [edit | edit source]

    RTC Builder

    [edit | edit source]
    File:RTC Builder.jpg
    RTC Builder

    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

    [edit | edit source]
    File:RT System Editor.jpg
    RT System Editor

    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

    [edit | edit source]

    rtshell is a command-line tool which provides following services:[7]

    • 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

    [edit | edit source]

    RTC debugger is a debugging tool for RTCs. RTC debugger is an Eclipse plug-in.[8]

    License

    [edit | edit source]

    OpenRTM-aist is licensed under the GNU Lesser General Public License (LGPL).

    See also

    [edit | edit source]

    Lua error in mw.title.lua at line 392: bad argument #2 to 'title.new' (unrecognized namespace name 'Portal').

    References

    [edit | edit source]
    1. ^ OpenRTM-aist official website, http://www.openrtm.org
    2. ^ Robotics Technology Component Specification version 1.0, Object Management Group (OMG)
    3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    4. ^ National Institute of Advanced Industrial Science and Technology, press release, Development of HRP-4, a Research and Development Platform for Working Humanoid Robots, http://www.aist.go.jp/aist_e/latest_research/2010/20101108/20101108.html
    5. ^ OpenRTM-aist official website --supported platforms, http://www.openrtm.org/openrtm/en/content/supported-platforms-0
    6. ^ Akihiro Ikezoe, Hiroyuki Nakamoto, Masayuki Nagase, "OpenRT Platform / RT-middleware for VxWorks", ROBOMEC2010 [in Japanese]
    7. ^ OpenRTM-aist Official Site: [rtshell http://www.openrtm.org/openrtm/en/content/rtshell-download]
    8. ^ Sec Co., LTD., [RTC debugger http://www.sec.co.jp/robot/download_tool.html]
    [edit | edit source]