Fast DDS(以前のバージョンではFast RTPS)はeProsima社が開発しているOMG DDS 2.0、RTPS 2.2仕様の通信ミドルウェアです。
以下ではOpenRTM-aistのFast RTPSプラグインのインストール手順、使用方法を説明します。
※ROS2通信機能がインストール済みの場合、Fast DDS通信機能も利用可能になっているため以下の手順は不要です。
C++版のみの対応です。
以下のサイトからインストーラーをダウンロードしてインストールしてください。
CMake実行時にFASTRTPS_ENABLEのオプションをONにします。
cmake -DORB_ROOT=C:/workspace/omniORB-4.2.3-win64-vc16 -G "Visual Studio 16 2019" -DFASTRTPS_ENABLE=ON ..
その他の手順は通常と同じです。
適当な場所にインストールしてください。
インストールするディレクトリはCMAKE_INSTALL_PREFIXのオプションで設定します。
cmake .. -DCMAKE_INSTALL_PREFIX=C:/workspace/OpenRTM-aist/build/install cmake --build . --config Release --target install
{インストールしたパス}\2.0.0\Components\C++\Examples\vc16のサンプルコンポーネントを実行します。
以下の内容のrtc.confを作成してください。
manager.modules.load_path: {インストールしたパス}\\2.0.0\\ext\\transport manager.modules.preload: FastRTPSTransport.dll manager.components.preconnect: ConsoleOut0.in?interface_type=fast-rtps, ConsoleIn0.out?interface_type=fast-rtps manager.components.preactivation: ConsoleOut0, ConsoleIn0
まずFastRTPSTransport.dllのロードが必要になります。 この設定はmanager.modules.preloadのオプションで設定できます。
次にコネクタ生成時にインターフェース型をfast-rtpsに設定する必要があります。 コネクタの生成はmanager.components.preconnectオプションにより設定します。 この例ではConsoleOut0コンポーネントのinのポート、ConsoleIn0コンポーネントのoutのポートにそれぞれコネクタを生成しています。
ConsoleInComp.exe、ConsoleOutComp.exeを実行すると通信ができるようになります。
asio、TinyXML-2をインストールします。
sudo apt install libasio-dev libtinyxml2-dev
Fast-CDRをビルド、インストールします。
export $OPENRTM_INSTALL_DIR=~/fastdds_install export FASTCDR_VERSION=1.0.23 wget https://github.com/eProsima/Fast-CDR/archive/refs/tags/v${FASTCDR_VERSION}.tar.gz tar xf v${FASTCDR_VERSION}.tar.gz cd Fast-CDR-${FASTCDR_VERSION}/ mkdir build cd build/ cmake .. -DCMAKE_INSTALL_PREFIX=${OPENRTM_INSTALL_DIR} cmake --build . --config Release -- -j$(nproc) cmake --build . --config Release --target install
foonathan/memoryをビルド、インストールします。
export FOONATHAN_MEMORY_VERSION=1.2.1 wget https://github.com/eProsima/foonathan_memory_vendor/archive/refs/tags/v${FOONATHAN_MEMORY_VERSION}.tar.gz tar xf v${FOONATHAN_MEMORY_VERSION}.tar.gz cd foonathan_memory_vendor-${FOONATHAN_MEMORY_VERSION}/ mkdir build cd build cmake .. -DCMAKE_INSTALL_PREFIX=${OPENRTM_INSTALL_DIR} cmake --build . --config Release -- -j$(nproc) cmake --build . --config Release --target install
Fast DDSのビルドにはCMake 3.11以上のバージョンが必要です。 Ubuntu 18.04環境ではaptでインストールされるCMakeのバージョンが3.10のため、新しいバージョンのCMakeをダウンロードしてPATHを設定してください。
wget https://github.com/Kitware/CMake/releases/download/v3.22.3/cmake-3.22.3-linux-x86_64.tar.gz tar xf cmake-3.22.3-linux-x86_64.tar.gz export PATH=~/cmake-3.22.3-linux-x86_64/bin:$PATH
以下のコマンドでFast DDSをビルド、インストールしてください。
export FASTDDS_VERSION=2.5.1 wget https://github.com/eProsima/Fast-DDS/archive/refs/tags/v${FASTDDS_VERSION}.tar.gz tar xf v${FASTDDS_VERSION}.tar.gz cd Fast-DDS-${FASTDDS_VERSION}/ mkdir build cd build cmake .. -Dfastcdr_DIR=${OPENRTM_INSTALL_DIR}/lib/cmake -Dfoonathan_memory_DIR=${OPENRTM_INSTALL_DIR}/lib/foonathan_memory -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=${OPENRTM_INSTALL_DIR} cmake --build . --config Release -- -j$(nproc) cmake --build . --config Release --target install
cmake .. -DFASTRTPS_ENABLE=ON -Dfastrtps_DIR=${OPENRTM_INSTALL_DIR}/share/fastrtps/cmake
cmake .. -DCMAKE_INSTALL_PREFIX=${OPENRTM_INSTALL_DIR} cmake --build . --config Release --target install
{インストールしたパス}/share/openrtm-2.0/components/c++/examplesのサンプルコンポーネントを実行します。
manager.modules.load_path: {インストールしたパス}/lib/openrtm-2.0/transport manager.modules.preload: FastRTPSTransport.so manager.components.preconnect: ConsoleOut0.in?interface_type=fast-rtps, ConsoleIn0.out?interface_type=fast-rtps manager.components.preactivation: ConsoleOut0, ConsoleIn0
まずFastRTPSTransport.soのロードが必要になります。 この設定はmanager.modules.preloadのオプションで設定できます。
ConsoleInComp、ConsoleOutCompを実行すると通信ができるようになります。
rtc.confでOpenRTM-aistのマネージャ起動時に以下のオプションを設定可能です。 ※開発中のOpenRTM-aistでは使用可能ですが、リリースしたバージョンでは未実装の場合があります。
以下に設定例を記載します。
fast-rtps.xmlprofile.filename: ${OPENRTM_INSTALL_DIR}/transport/FastRTPsQoSExample.xml fast-rtps.participant.name: participant_openrtm
データポート接続時のコネクタプロファイルに設定できるオプションは以下の通りです。
manager.components.preconnect: ConsoleOut0.in?interface_type=fast-rtps&fast-rtps.subscriber.name=subscriber_openrtm
Fast DDSはDDS Security仕様のセキュア通信機能を提供しています。
OpenRTM-aistのFast DDSプラグインでセキュア通信機能を使用するためには起動時のオプションを設定する必要があります。 以下に設定例を記載します。
fast-rtps.dds.sec.auth.plugin: builtin.PKI-DH fast-rtps.dds.sec.auth.builtin.PKI-DH.identity_ca: file://C:/workspace/openrtm_test/build/install/2.0.0/ext//transport/mainexamplecacert.pem fast-rtps.dds.sec.auth.builtin.PKI-DH.identity_certificate: file://C:/workspace/openrtm_test/build/install/2.0.0/ext//transport/appexamplecert.pem fast-rtps.dds.sec.auth.builtin.PKI-DH.private_key: file://C:/workspace/openrtm_test/build/install/2.0.0/ext//transport/appexamplekey.pem fast-rtps.dds.sec.crypto.plugin: builtin.AES-GCM-GMAC
Fast DDSのマニュアルの手順で秘密鍵、証明書を作成します。
以下で秘密鍵、自己署名証明書を作成するコマンドを掲載します。 maincaconf.cnfはFast DDSのマニュアルのものを使用します。 出力するファイル名を変更したい場合は適宜maincaconf.cnfの以下の項目を変更してください。
certificate = $dir/mainexamplecacert.pem private_key = $dir/mainexamplecakey.pem
また、req_distinguished_nameの項目は変更して、その内容に応じて変更したappconf.cnfを用意してください。
以下のコマンドを実行します。
type nul > index.txt openssl ecparam -name prime256v1 > ecdsaparam openssl req -nodes -x509 -days 3650 -newkey ec:ecdsaparam -keyout mainexamplecakey.pem -out mainexamplecacert.pem -config maincaconf.cnf openssl ecparam -name prime256v1 > ecdsaparam openssl req -nodes -new -newkey ec:ecdsaparam -config appconf.cnf -keyout appexamplekey.pem -out appexamplereq.pem openssl ca -batch -create_serial -config maincaconf.cnf -days 3650 -in appexamplereq.pem -out appexamplecert.pem
秘密鍵appexamplekey.pem、証明書mainexamplecacert.pem、appexamplecert.pemを使用します。
モーションエディタ/シミュレータ
動力学シミュレータ
統合開発プラットフォーム
産総研が提供するRTC集
東京オープンソースロボティクス協会
ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク
Fast DDS(以前のバージョンではFast RTPS)はeProsima社が開発しているOMG DDS 2.0、RTPS 2.2仕様の通信ミドルウェアです。
以下ではOpenRTM-aistのFast RTPSプラグインのインストール手順、使用方法を説明します。
※ROS2通信機能がインストール済みの場合、Fast DDS通信機能も利用可能になっているため以下の手順は不要です。
C++版のみの対応です。
Windows
Fast DDSのインストール
以下のサイトからインストーラーをダウンロードしてインストールしてください。
OpenRTM-aistのビルド
CMake実行時にFASTRTPS_ENABLEのオプションをONにします。
その他の手順は通常と同じです。
適当な場所にインストールしてください。
インストールするディレクトリはCMAKE_INSTALL_PREFIXのオプションで設定します。
動作確認
{インストールしたパス}\2.0.0\Components\C++\Examples\vc16のサンプルコンポーネントを実行します。
以下の内容のrtc.confを作成してください。
まずFastRTPSTransport.dllのロードが必要になります。 この設定はmanager.modules.preloadのオプションで設定できます。
次にコネクタ生成時にインターフェース型をfast-rtpsに設定する必要があります。 コネクタの生成はmanager.components.preconnectオプションにより設定します。 この例ではConsoleOut0コンポーネントのinのポート、ConsoleIn0コンポーネントのoutのポートにそれぞれコネクタを生成しています。
ConsoleInComp.exe、ConsoleOutComp.exeを実行すると通信ができるようになります。
Ubuntu
Fast DDSのインストール
依存ライブラリのインストール
asio、TinyXML-2をインストールします。
Fast-CDRをビルド、インストールします。
foonathan/memoryをビルド、インストールします。
Fast DDSのビルド
Fast DDSのビルドにはCMake 3.11以上のバージョンが必要です。 Ubuntu 18.04環境ではaptでインストールされるCMakeのバージョンが3.10のため、新しいバージョンのCMakeをダウンロードしてPATHを設定してください。
以下のコマンドでFast DDSをビルド、インストールしてください。
OpenRTM-aistのビルド
CMake実行時にFASTRTPS_ENABLEのオプションをONにします。
その他の手順は通常と同じです。
適当な場所にインストールしてください。
インストールするディレクトリはCMAKE_INSTALL_PREFIXのオプションで設定します。
動作確認
{インストールしたパス}/share/openrtm-2.0/components/c++/examplesのサンプルコンポーネントを実行します。
以下の内容のrtc.confを作成してください。
まずFastRTPSTransport.soのロードが必要になります。 この設定はmanager.modules.preloadのオプションで設定できます。
次にコネクタ生成時にインターフェース型をfast-rtpsに設定する必要があります。 コネクタの生成はmanager.components.preconnectオプションにより設定します。 この例ではConsoleOut0コンポーネントのinのポート、ConsoleIn0コンポーネントのoutのポートにそれぞれコネクタを生成しています。
ConsoleInComp、ConsoleOutCompを実行すると通信ができるようになります。
起動時のオプション
rtc.confでOpenRTM-aistのマネージャ起動時に以下のオプションを設定可能です。 ※開発中のOpenRTM-aistでは使用可能ですが、リリースしたバージョンでは未実装の場合があります。
以下に設定例を記載します。
接続時のオプション
データポート接続時のコネクタプロファイルに設定できるオプションは以下の通りです。
以下に設定例を記載します。
セキュア通信機能の利用
Fast DDSはDDS Security仕様のセキュア通信機能を提供しています。
OpenRTM-aistのFast DDSプラグインでセキュア通信機能を使用するためには起動時のオプションを設定する必要があります。 以下に設定例を記載します。
秘密鍵、証明書の作成
Fast DDSのマニュアルの手順で秘密鍵、証明書を作成します。
以下で秘密鍵、自己署名証明書を作成するコマンドを掲載します。 maincaconf.cnfはFast DDSのマニュアルのものを使用します。 出力するファイル名を変更したい場合は適宜maincaconf.cnfの以下の項目を変更してください。
また、req_distinguished_nameの項目は変更して、その内容に応じて変更したappconf.cnfを用意してください。
以下のコマンドを実行します。
秘密鍵appexamplekey.pem、証明書mainexamplecacert.pem、appexamplecert.pemを使用します。