ROS(ロボットオペレーティングシステム)の概要と要点

ROS Robot Operating System Overview and Key Points

ROSシステムの設計目標

ロボット工学の急速な進歩と複雑化に伴い、コードの再利用性とモジュール性への要求はますます緊急性を増している。オープンソースのロボットシステムの中には、このようなニーズを十分に満たすことができないものもあった。2007年、ウィロー・ガレージはオープンソースのロボット・オペレーティング・システム(ROS)をリリースし、ロボット研究コミュニティにおける学習と採用の波に一気に火をつけた。

ROSシステムは、2007年のスタンフォード大学人工知能研究所とウィロー・ガレージのパーソナル・ロボット・プログラムとの共同プロジェクトに端を発する。2008年以降は、ウィロー・ガレージが開発を主導している。PR2のような初期のROSロボットが、衣類をたたんだり、機器のプラグを差し込んだり、朝食の準備をしたりといった目覚ましい活躍を見せたことで、ROSへの注目が高まった。ウィロー・ガレージは、オープンソース開発を活用し、PR2を「ユニバーサル」なロボットに変貌させる意欲を示した。

PR2には高額な値段がついており、2011年には$400,000円で販売された。現在は主に研究用に使用されている。7つの関節を持つ2本のアームを備え、PR2のエンドエフェクターは把持用グリッパーである。移動はベースに取り付けられた4つの車輪で行う。PR2の頭部、胸部、肘、グリッパーには、高解像度カメラ、レーザー距離計、慣性計測ユニット、触覚センサーなどの高度なセンシング機器が搭載されている。基部にある2台の8コアコンピューターは、ロボットのハードウェアの制御と通信のハブとして機能する。どちらのコンピューターもUbuntuとROSを実行している。

ROSの設計目標

ROSはオープンソースであり、ロボット用の二次オペレーティングシステムとして機能する。ROSは、ハードウェア抽象化、低レベルドライバー管理、共有機能の実行、プログラム間メッセージング、パッケージ管理など、オペレーティングシステムと同様の機能を提供する。また、複数ロボットの協調プログラムを取得、構築、作成、実行するためのツールとライブラリも提供する。ROSはオープンソースであり、ロボット用のバックエンドオペレーティングシステム、すなわち二次オペレーティングシステムとして機能する。ROSは、ハードウェア抽象化、低レベルドライバー管理、共有機能の実行、プログラム間メッセージング、パッケージ管理など、オペレーティングシステムと同様の機能を提供する。さらに、複数ロボットの協調プログラムを取得、構築、作成、実行するためのユーティリティプログラムとライブラリも提供する。

ROSの主要な特徴

ROSランタイムアーキテクチャは、ROS通信モジュールを利用してモジュール間の疎結合ピアツーピアネットワーク接続を確立する処理フレームワークである。サービスベースの同期RPC(Remote Procedure Call)通信、トピックベースの非同期データフロー通信、パラメータサーバーへのデータ保存など、いくつかの通信タイプを実装している。しかし、ROS自体は本質的にリアルタイム機能を持っていない。

活性酸素の主な特徴は以下のようにまとめられる:

  • ピアツーピア・デザイン

ROSを使用するシステムは、複数の異なるホストに存在し、動作中にピアツーピアトポロジーを介して通信する一連のプロセスで構成される。中央サーバーベースのソフトウェアフレームワークでもマルチプロセスおよびマルチホスト環境の利点を達成できるが、これらのフレームワークでは、コンピューターが異なるネットワークを介して接続されている場合に中央データサーバーで問題が発生する。ROSを使用するシステムは、複数の異なるホスト上に存在し、動作中にピアツーピアトポロジーを介して通信する一連のプロセスで構成される。中央サーバーベースのソフトウェアフレームワークでもマルチプロセスおよびマルチホスト環境の利点を達成できるが、これらのフレームワークでは、コンピューターが異なるネットワークを介して接続されている場合に中央データサーバーで問題が発生する。

  • 多言語サポート

コードを作成する際、多くのプログラマーは特定のプログラミング言語を好む傾向がある。このような好みは、各言語でのプログラミング時間、デバッグ効率、構文、実行効率、およびさまざまな技術的・文化的要因に起因する。これらの問題に対処するため、ROSは言語に依存しないフレームワークとして設計された。ROSは現在、C++、Python、Octave、LISPなど多数の異なる言語をサポートしており、他の言語向けの複数のインターフェース実装も含まれている。

ROSの独自性は、主にメッセージ通信層において顕著であり、より深いレベルではない。エンドツーエンドの接続と構成はXML-RPCメカニズムを使用して実装され、主要なプログラミング言語のほとんどに対して十分に文書化された実装も含まれている。ROSは、他の言語向けにCベースのインターフェースを提供するのではなく、各言語の構文規則に合わせて、さまざまな言語でより自然に実装されることを目指している。ただし、特定のケースでは、既存のライブラリを活用して新しい言語のサポートをカプセル化することが便利である。例えば、OctaveクライアントはC++ラッパーライブラリを使用して実装されている。

クロス言語開発をサポートするため、ROSはシンプルで言語に依存しないインターフェース定義言語(IDL)を採用し、モジュール間のメッセージ交換を記述する。IDLは簡潔なテキストを使用して各メッセージの構造を定義し、メッセージの合成を可能にする。例えば、以下の図はIDLを使用して記述されたポイントメッセージを示している。

各言語のコードジェネレーターが対応するネイティブコードファイルを生成する。メッセージの送受信中、ROSはこれらのファイルを自動的に並行してコンパイルおよび実行する。これにより、プログラミング時間を大幅に節約し、エラーを削減できる。3行のIDLファイルは、137行のC++コード、96行のPythonコード、81行のLispコード、99行のOctaveコードに自動的に展開される。メッセージは単純なテキストファイルから自動生成されるため、新しいメッセージタイプを容易に列挙できる。執筆時点で、既知のROSベースのコードライブラリには400以上のメッセージタイプが含まれている。これらのメッセージはセンサーデータを送信し、オブジェクトが周囲を検出できるようにする。

その結果、言語に依存しないメッセージ処理が実現され、複数の言語を自由に組み合わせて使用できる。

  • 効率化と統合

既存のロボットソフトウェアエンジニアリングプロジェクトの多くには、プロジェクト外でも再利用可能なドライバやアルゴリズムが含まれている。しかし、さまざまな理由により、ほとんどのコードの中間層は過度に複雑化しており、プロトタイピングを超えてその機能を抽出して適用することは困難である。

この傾向に対抗するため、すべてのドライバとアルゴリズムを、ROS依存から独立したスタンドアロンライブラリへ段階的に進化させることを推奨する。ROSで構築されたシステムはモジュール性を備えており、各モジュール内のコードは個別にコンパイルできる。コンパイルに使用されるCMakeツールは、ミニマリズムの概念を促進する。ROSは本質的に複雑なコードをライブラリ内にカプセル化し、ライブラリの機能を実証するための小さなアプリケーションのみを作成する。これにより、シンプルなコードをプロトタイピングを超えて移植・再利用できる。新たな利点として、コードがライブラリ全体に分散されている場合、単体テストが大幅に容易になる。単一のテストプログラムで、ライブラリ内の複数の機能を検証できる。

ROSは、数多くの既存のオープンソースプロジェクトからコードを活用している。例えば、Playerプロジェクトからドライバ、モーションコントロール、シミュレーションコードを、OpenCVからビジョンアルゴリズムを、OpenRAVEからプランニングアルゴリズムを借用している。それぞれのケースにおいて、ROSは多様な設定オプションを提供し、最小限のラッパーと修正を適用しながら、ソフトウェアコンポーネント間のデータ通信を促進する。ROSはコミュニティによるメンテナンスを通じて継続的に進化し、他のソフトウェアライブラリやアプリケーションパッチからの更新をソースコードに組み込んでいる。

  • 包括的なツールキット

複雑なROSソフトウェアフレームワークを管理するため、多様なROSコンポーネントをコンパイル・実行するための多数のユーティリティを活用し、大規模な開発・実行環境を構築するのではなく、カーネルとして設計した。これらのツールは、ソースコード構造の整理、設定パラメータの取得・設定、エンドツーエンドのトポロジ接続の可視化、帯域幅使用量の測定、情報データの視覚的表現、ドキュメントの自動生成など、さまざまなタスクを処理する。コントローラモジュール用のグローバルクロックやレコーダーなどのコアサービスはテスト済みだが、すべてのコードをモジュール化することを目指している。効率性の損失は、安定性と管理の複雑さの低減という利点によって十分に相殺されると考えている。

  • 無料かつオープンソース

ROSのソースコードはすべて公開されています。これにより、ROSソフトウェアのあらゆるレベルでのデバッグが必然的に促進され、継続的にエラーが修正されると信じています。Microsoft Robotics StudioやWebotsのような非オープンソースソフトウェアは多くの称賛に値する特性を持っていますが、オープンソースプラットフォームは依然としてかけがえのないものであると私たちは主張しています。これは、ハードウェアとソフトウェアのすべてのレベルが同時に設計され、デバッグされる場合に特に当てはまります。ROSのソースコードはすべて公開されています。これにより、ROSソフトウェアのあらゆるレベルでのデバッグが必然的に促進され、継続的にエラーが修正されると考えています。Microsoft Robotics StudioやWebotsのような非オープンソースソフトウェアも多くの称賛に値する特性を持っていますが、オープンソースプラットフォームはかけがえのないものだと考えています。あらゆるレベルのハードウェアとソフトウェアが同時に設計され、デバッグされる場合は特にそうです。

市販されている代表的なROSロボット

市場でROSを採用した代表的なロボットは、このオープンソースフレームワークが多様なアプリケーションをどのようにサポートするかを示している。例えば、 移動ロボット TurtleBotやHusarion ROS botなどは、教育や研究で広く使用されている。FetchやPR2のようなサービスロボットは、高度なマニピュレーションとナビゲーション機能を実証している。一方、ClearpathのHuskyのような産業用プラットフォームは、過酷な環境でのROS統合を示している。これらの例は、学術および商業ロボティクスにおけるROSの柔軟性と拡張性を反映している。

以下に、代表的な四足歩行ROSロボット、車輪型ROSロボット、クローラ型ROSロボットを紹介します。

ROSを搭載した最高の四脚ロボット

会社名国名ロボット画像用途公式サイト
Unitree Robotics中国Unitree Robotics 教育、研究、産業https://www.unitree.com/go2
Boston DynamicsアメリカBoston Dynamics産業用点検https://bostondynamics.com/products/spot/

ROSを使用した車輪型ロボットトップ5

会社名国名ロボット画像積載量公式サイト
MiRデンマークMiRロボット600kghttps://www.mobile-industrial-robots.com
Robotnik Robotスペインロボトニック・オートメーション・ロボット150kghttps://bostondynamics.com/products/spot/
ロボトニックスペインROSを使用した車輪型ロボットトップ5250kg
Clearpath RoboticsカナダClearpath Robotics100kghttps://clearpathrobotics.com
Fdata Robot中国農業用ロボット A0251000KGhttps://www. fdatabot.com

ROSを統合した最高の追従型ロボット

会社名国名ロボット画像用途公式サイト
Superdroid

ロボット

カナダSuperdroid Robot Tactical Robot Tactical Robothttps://www.superdroidrobots.com/store/tracked-robots

カスタマイズされたロボティクスソリューションをお探しですか?お問い合わせ

お問い合わせ

Fdataは中国の移動ロボットメーカーであり、カスタマイズされた移動ロボットソリューションを専門としており、お客様のアイデア段階から量産に至るまでをサポートしています。.

お客様専用のモバイルロボットソリューションはここから始まります

中国を拠点とするOEM/ODMメーカー — AMR、AGV、倉庫自動化。設計・研究開発から世界各国への納品まで。.

  • AMRおよびAGVの製造実績10年以上
  • 50カ国以上で導入されているカスタムソリューション
  • 無料のプロジェクト評価およびROI分析
  • エンジニアが24時間以内に返信いたします
お問い合わせフォーム

FdataBotのロボティクス専門家。移動ロボット、AMR/AGVシステム、ロボットシャーシの開発、およびOEM/ODMのカスタマイズにおいて8年以上の経験を有する。彼女のガイドは、世界中のバイヤーがサプライヤーを評価し、技術的な選択肢を比較し、より信頼性の高い調達判断を下すのに役立っている。.

今すぐお問い合わせください