EtherCAT MainDeviceプロトコルスタック EC-Master for ROS(Robot Operating System)
はじめに
Robot Operating System(ROS)は、ロボットアプリケーションの開発を容易にするために設計された、オープンソースのフレームワーク、およびソフトウェアライブラリとツール群です。
名称に「Operating System」とありますが、ROSはWindowsやLinuxのような実際のオペレーティングシステムではなく、一般的にはメタオペレーティングシステム、またはミドルウェア層として位置付けられています。通常はホストOS上で動作し、主にLinuxが使用されますが、macOSおよびWindowsもサポートされています。
ROSは、「ノード(Node)」と呼ばれる個々の実行プログラムやコンポーネント(センサ制御、モータ制御、アルゴリズムなど)で構成されるモジュール型アーキテクチャを採用しています。各ノードは、「トピック(Topic)」と呼ばれる標準化されたPublish-Subscribe型のメッセージングシステムを介して相互に通信します。これにより、複数のコンピュータにまたがる場合も含め、処理を容易に分散させることができます。
ROSは、複雑なロボットシステムの開発および制御を行うための標準化されたプラットフォーム、およびソフトウェア開発キット(SDK)として利用されています。
また、ROSはヒューマノイドロボットの開発および制御にも広く利用されています。主な用途として、モーションプランニングや歩行制御(Locomotion)、周辺環境を認識するためのセンサシステム、ヒューマン・ロボット・インタラクション(HRI)などがあります。
ROSにおけるEtherCAT SubDeviceの制御
ROSにおけるハードウェア制御には、多層化された標準アーキテクチャが採用されています。これにより、ハードウェアとの直接通信に伴う複雑さを上位の制御アルゴリズムから隠蔽し、制御アルゴリズムをさまざまなハードウェアに適用できるようにしています。
EtherCAT SubDeviceを統合するには、EtherCAT MainDeviceソフトウェア(EtherCATプロトコルスタック)が必要です。このソフトウェアは、すべてのSubDeviceを管理・制御し、プロセスデータ(入力変数および出力変数)を2つのメモリ領域を介してアプリケーション層へ提供します。さらに、MainDeviceソフトウェアは、パラメータ転送(CAN application protocol over EtherCAT)やファームウェア転送(File access over EtherCAT)をはじめとする、さまざまな機能を提供します。また、物理層からアプリケーション層まで、すべてのレベルにおける障害の検出および発生箇所の特定を行い、詳細な情報をアプリケーション層へ通知する機能も必要となります。
acontis EC-Masterは、ネットワークやアプリケーションを停止・再起動することなく、SubDeviceを動的に接続・切断できる高度な機能にも対応しています。このHot Connect機能は、高精度な同期動作のためにDistributed Clocks技術を使用するSubDeviceに対しても利用できます。Hot Connectの詳細については、関連するブログ記事をご参照ください。
安全関連機器間の通信には、FSoE(FailSafe over EtherCAT)プロトコルを使用します。FSoEの詳細については、関連するブログ記事をご参照ください。

Variant A:ROS 2ノードとしてのEtherCAT MainDevice ―「EcMasterRos2Node」
acontisの「EcMasterRos2Node」は、EtherCAT MainDeviceプロトコルスタックであるEC-Masterを、独立したROSノードとして実装したものです。
EtherCATネットワークのパラメータ設定には、標準化されたEtherCAT Network Information(ENI)ファイルを使用します。セキュアなFSoEデバイスを含め、市場で提供されているすべてのEtherCAT SubDeviceをサポートします。
EtherCATネットワークの初期化後、すべての入出力データに対応するROSトピックが自動的に生成されます。これにより、他のROSノードから、すべての周期EtherCATプロセスデータへ容易にアクセスできます。
さらに、EcMasterRos2Nodeは、SubDeviceおよびネットワーク全体の状態を確認するためのROSサービスなどを提供します。
主要なEC-Master APIは、ROS Actionとして利用できます。例えば、「CAN application protocol over EtherCAT」プロトコルを使用して、任意のパラメータをSubDeviceへ転送することが可能です。

Variant B:ros2_control向けHardware InterfaceとしてのEtherCAT MainDevice
ros2_control 制御フレームワークは、ROSのロジックとハードウェアインターフェースを接続する役割を担います。
ros2_control は、カメラやLiDARなどの各種センサ、およびモータやロボットアームなどのアクチュエータの制御を標準化するためのドライバとインターフェースを提供します。
ハードウェアの管理は、特定のHardware Interfaceクラスを介してResource Managerによって行われます。このハードウェア抽象化レイヤは、あらゆるアプリケーションにおいて、データ転送、ハードウェアのライフサイクル管理、およびエラー処理を行う上で重要な役割を担います。
Hardware Interfaceの設定には、URDF(Unified Robot Definition Format)ファイルを使用します。<ros2_control> タグには、Hardware Interfaceプラグインおよびそのインターフェースを記述します。
EC-Masterは「System」タイプのハードウェアコンポーネントとして接続され、ENI(EtherCAT Network Information)ファイルに定義されているすべての入力変数および出力変数を提供します。
SubDeviceの入力変数は <state_interface> を介して、出力変数は <command_interface> を介して提供されます。
URDFファイルに記述するEC-Master Hardware Interface Descriptionは、ENIファイルとEC-Engineerツールを使用して容易に生成できます。
これにより、効率的に設定を作成できるとともに、ENIファイルとHardware Interface Description間の整合性を確保できます。
