尾形研究室はNTT研究所が開発・運用しているロボットやIoTデバイスの連携制御クラウド環境「R-env:連舞™」を用いた開発を行なっています.

このページでは「R-env:連舞™」 (以下, R-env)に関する情報を掲載しています.

0. デモ動画

R-env + RT-middleware (OpenRTM-aist)

R-env + ROS (version 1)

R-env + ROS2

1. 概要

NTT研究所が開発したロボット開発環境 R-envでは,ロボットの動作を状態マシンで記述し,それらの遷移条件としてロボットやIoTデバイスの状態監視を行うことで,対話シナリオを記述することができる汎用的なソフトウェアでした.
これまではR-envに対応したロボットやIoTデバイスが限られていましたが,ロボット用ミドルウェアに対応させることによって,多くのロボットやロボット制御用ソフトウェアとの連携を行うシステムを柔軟に開発することができることを目的として,このプロジェクトは始まりました.

R-envはクラウド上で動作するサーバーにブラウザでアクセスすることでHTML+Javascriptで記述されたブラウザアプリ上のシナリオエディタを操作し,
ロボットとの通信はルータ等を超えてクラウド上のサーバーとの通信をおこなう前提で,ウェブソケットプロトコル上の独自プロトコルで非同期に通信を行っています.
ウェブソケットは一般的なプロトコルですが,独自プロトコルでの開発をサポートするSDKがありませんでしたので,本プロジェクトではR-envとの通信に対応した Pythonライブラリを開発することからはじめました.

このR-env通信Pythonライブラリを用いて,ロボット用ミドルウェアとの通信を行うことで,連携ブリッジソフトウェアを開発しました.本プロジェクトではロボット用ミドルウェアとして「RT-middleware (OpenRTM-aist)」と「ROS」および「ROS2」との連携をサポートすることとしました.

2017年度はR-envとOpenRTM-aistとの連携ソフトウェアを開発しました.OpenRTM-aistではセンサやアクチュエータの制御ソフトウェアや自己位置推定などのロボットのソフトウェアの機能要素はRTコンポーネントとしてモジュール化され,モジュールをつなぎ合わせることでシステムを構成します.
ダイナミックなシステム構成や,コンポーネントの状態管理などを行うことも可能なため,R-envとのブリッジソフトウェアでは,コンポーネントとの直接通信(ただしデータ型は限定される)に加え,コンポーネントの状態遷移 (Activate, Deactivate, Reset) や,ポート間の接続・切断にも対応しました.

2018年度はROS1との連携機能に着手しました.ROSもまたロボットの機能要素をNodeという単位でモジュール化することでシステム開発をサポートするミドルウェアです.R-envとのブリッジでは,通信のデータ型を定めたmsgファイル,srvファイル,actionファイルをパースして生成したPythonコードを使うことで,任意のデータ型とR-envとの通信をサポートすることができました.また,ActionではFeedbackをモニタすることでR-env上の状態遷移を制御もサポートし柔軟にROSとの連携が可能となりました.

2019年度はROS2との連携機能の実装を行いました.2018年度に実装したROS1のコードの再利用が困難で,大部分をスクラッチから開発しましたが,ROS1との連携ブリッジと同等機能を実装することができました.

2. ソフトウェア

PythonでのR-envデバイスSDKの利用方法
Pythonで簡単にR-envの拡張デバイスを開発できるSDKを開発しました.これの利用方法について解説します.

3. R-envとROSとの連携ツールの利用方法

4. R-envとOpenRTM-aistとの連携ツールの利用方法