ROS 2でCRANE+V2を動かしてみた 技術情報・開発日誌

ros2_controlを使ってみた

ROS 2でCRANE+V2を動かしてみた
ros2_controlとは

こんにちは、shotaです。

先日(2/19)ros2_controlの最新版がリリースされました。

また、同日ROS Japan User Groupにて、ros_control/ros2_controlに関する勉強会が開催されました。

今回は、ROS勉強会で私が発表した資料を紹介します。

発表資料一覧

勉強会前にこんなツイートをしました。(たくさんの方に見て頂き、感謝です)

発表資料がこちらです。(※スライド32ページ以降にメモを残しています(100枚くらい)

発表動画はこちらです。(ROS Japan UG 運営のYutaka Kondoさんの投稿より)

発表の詳細

発表のスライドを用いて、ROS勉強会で何を話したのか、その一部を紹介します。

ros2_controlとは

ros2_controlは、世の中にある制御理論をロボットに適用しやすくするものです。(※私の解釈です)

例えば、2輪走行ロボットで自動走行したい場合、アプリケーション(自動走行)とロボットとの間に差動2輪走行制御が必要です。
この走行制御はros2_control特有のものではなく、すでに世の中にある制御理論です。

アプリケーションやロボットのハードウェアをできるだけ意識せずに、制御理論を適用できる仕組みがros2_controlです。
どのようにハードウェアを抽象化しているのか、その仕組みを知ることがros2_controlを理解する上で重要です。

ros2_controlとは

ros2_controlの詳細については、公式ドキュメント(https://ros-controls.github.io/control.ros.org/)を参照して下さい

ros2_controlで登場するキーワード

ros2_controlで登場する6つのキーワードを紹介します。

まず紹介するのが、Controller ManagerとResource Managerという管理職です。
Controller ManagerはControllerを管理します(例:コントローラの読み込み、実行)。
Resource Managerはハードウェアを管理しますが、裏方なので存在は薄いです。

Hardware ComponentsとControllersはユーザが実装するものです。
Hardware ComponentsにはSensor、Actuator、Systemの3種類のComponentsがあります。
Controllersがいわゆる世の中の制御理論です。

Command InterfaceとState Interfaceは共有メモリでアクセスするインタフェースです。
Commandは読み書きでき、Stateは読み取り専用です。

ros2_controlで登場するキーワード

ハードウェアを抽象化する仕組み

ros2_controlではハードウェアの抽象化が重要です。それを担うのがHardware Componentsです。
Hardware ComponentsにはSensor、Actuator、Systemの3種類が用意されています。コードを実装する際は、動かしたいハードウェアがどれに該当するかを考えます。

Sensorは環境をセンシングしたデータを読み取るためのComponentです。
State InterfaceをResource Managerにエクスポートします。

Actuatorは自身を動かすためのCommand Interfaceをエクスポートします。

SensorとActuatorの集合体であるハードウェア(例、ロボット)はSystemとして定義できます。SystemはState InterfaceやCommand Interfaceをエクスポートします。

ハードウェアを抽象化する仕組み

Controllerがハードウェアのアクセス権を得る仕組み

Controllerはハードウェアを動かしたいのですが、直接動かすのではなく、State InterfaceやCommand Interfaceを使ってやりとりします。

ControllerはどんなInterfaceが必要なのかをController Managerに伝え、Controller ManagerはそれをResource Managerに伝え、
該当するInterfaceがあればそれをControllerに渡します。

Interfaceが存在しない、あるいは別のControllerに使われている場合は、ControllerはInterfaceを得ることができません。
Resource Managerのおかげで、ハードウェアへのアクセスが干渉しない仕組みが実現できています。

コントローラがハードウェアのアクセス権を得るしくみ

ros2_controlを使って何を作ったか

アールティが販売しているアームロボットCRANE+V2をros2_controlで動かしました。

CRANE+V2とは

ソースコードはGitHubに公開しています(下記リンク参照)。
今はプルリクエストの状態ですが、MoveIt2の最新版がリリースされたら、プルリクエストをマージする予定です。

CRANE+V2の製品ページはこちら。

ros2_controlでマスタースレーブコントロール

ros2_controlの応用として、CRANE+V2とCRANE-X7を動かすマスタースレーブコントローラを作成しました。
CRANE+V2(マスター)を手で動かして、その角度をCRANE-X7(スレーブ)に伝えています。

マスタースレーブコントロールを実現するために、コントローラ(MasterSlaveController)と、CRANE-X7のHardware Componentを作成しています。

マスタースレーブコントローラの作成

ソースコードはこちらに公開しています。

CRANE-X7の製品ページはこちら。

おわりに。ROS勉強会のその他の資料について

こちらのページにROS勉強会の他の発表資料が公開されています。

ROS Japan UG #41 ROS/ROS2 Control勉強会 - 資料一覧 - connpass
「ROS Japan UG #41 ROS/ROS2 Control勉強会」の資料一覧です

また発表動画もこちらにまとめられています。(ROS Japan UG 運営のYutaka Kondoさんのチャンネルです)

ROS Japan User GroupはROS初心者でも、そうでない方でも気軽に参加できます
下記URLからぜひご登録ください。

ROS Japan UG
# ROS (Robot Operating System) Japan Users Group ROSに関連する開発者会議、勉強会、ハッカソン、講習会などのイベント告知を行います。 > ROS (Robot Operating System)はソフトウェア開発者のロボット・アプリケーション作成を支援するライブラリ...
タイトルとURLをコピーしました