(訳注:最新の情報は[[ROS/Concepts|原文]]を参照してください.) <> <> ROS には ファイル システム・コンピュテーション グラフ・コミュニティという3つのレベルのコンセプトが存在します.これらの水準とコンセプトについては,以下に要約して説明するとともに,後で[[ROS_Users_Manual|ROS ユーザ マニュアル]]においてより個々に分け入って詳しく説明します. 3つのレベルのコンセプトに加えて,ROS には2種類の[[Names|名前]]があります.それはパッケージ リソース名とグラフ リソース名です.以下ではこれらについて話します. <> == ROS ファイル システムレベル == ファイル システムレベルのコンセプトは,ディスク内で見つかるROSリソースにあります.それは: * '''[[ja/Packages|パッケージ]]''': パッケージはROSを形成するソフトウェアの主な単位です.一つのパッケージには,ROSのランタイム プロセス(ノード)・ROS依存ライブラリ・環境設定ファイル・その他の一緒に使用すると有用なものが含まれている場合があります. * '''[[ja/Manifest|マニフェスト]]''': マニフェストはライセンス情報や依存関係(コンパイラのフラグといった,言語依存項目など)を含めた,パッケージについてのデータを規定します. * '''[[Stacks|スタック]]''': スタックはナビゲーション スタックのような機能の寄せ集めを提供するパッケージのコレクションです.スタックはまた,ソフトウェア リリースの単位であり,バージョン番号と関係しています. * '''[[Stack Manifest|スタック マニフェスト]]''': スタック マニフェストはライセンス情報や他のスタックとの依存関係を含んだ,スタックについてのデータを提供します. * '''[[msg|メッセージ (msg) タイプ]]''': メッセージの説明は,`my_package/msg/MyMessageType.msg`に格納されており,ROS で送られる[[Messages|メッセージ]]のデータ構成が宣言されています. ## * '''[[srv|サービス (srv) タイプ]]''': サービスの説明は,`my_package/srv/MyServiceType.srv`に格納されており,ROS [[Services|サービス]] のリクエストとレスポンスのデータ構成が宣言されています. * '''[[srv|サービス (srv) タイプ]]''': サービスの説明は,`my_package/srv/MyServiceType.srv`に格納されており,ROSサービスのリクエストとレスポンスのデータ構成が宣言されています. <> == ROS コンピュテーション グラフレベル == ''コンピュテーション グラフ''とは,データを共有して動作している ROS プロセスの Peer-to-Peer ネットワークのことです.ROS におけるコンピュテーション グラフの基本的なコンセプトは,''ノード,'' ''マスター,'' ''パラメータ サーバ,'' ''メッセージ,'' ''サービス,'' ''トピック,'' ''バグ''で,これらからの全てのデータは別々の経路を経てグラフにもたらされます. <> * '''[[Nodes|ノード]]''': ノードはコンピュテーションを行うプロセスです.ROS は,きめ細やかなスケールでモジュール化するように設計されており,ロボットの制御システムは通常多くのノードで構成されます.例えば,一つのノードが測域センサを制御し,一つのノードが車輪のモータを制御し,一つのノードが位置を計測し,一つのノードが経路を計画し,一つのノードがシステムのグラフィカルな見栄えを提供するなどといったものです.ROS ノードは [[roscpp]] か [[rospy]] といった,ROS [[Client Libraries|クライアント ライブラリ]] を用いて記述されています. * '''[[Master|マスター]]''': ROS マスターは名前登録とグラフのすき間探索を行います.マスターがないと,ノードは他のノードを探したり,メッセージを交換したり,サービスを要求したりすることができません. * '''[[Parameter Server|パラメータ サーバ]]''': パラメータ サーバは中心位置のキーによってデータが格納されるようにします.現在はマスターの一部となっています. * '''[[Messages|メッセージ]]''': ノード同士は [[Messages|メッセージ]] のやり取りで通信します.一つのメッセージは型フィールドから成る単純なデータ構造です.一般的な基本型(整数型・浮動小数点型・真偽値など)が基本的な配列として提供されています.メッセージは C の構造体のように,任意にネストや配列を含むことができます. * '''[[Topics|トピック]]''': メッセージは交換器を通じて意味を配信・購読されてやりとりされます.ノードは ''配信'' で与えられた [[Topics|トピック]] に従ってメッセージを送信します.トピックとはメッセージの内容を区別するための [[Names|名前]] です.ある種のデータに興味をもつノードは,それにふさわしいトピックを ''購読'' します.一つのトピックには多くの配信者と購読者が同時に存在するでしょう.また,一つのノードは複数のトピックで配信したり購読したり,あるいはどちらもするでしょう.普通は配信者も購読者もお互いの存在を意識しません.この発想は情報の生成をその廃棄の手間から解き放つためのものです.理論的には,トピックを強力なメッセージ型の経路と考えることもできます.経路はそれぞれが名前を持っており,正しい型である限り誰でも経路に接続してメッセージを送ったり受け取ったりすることができます. * '''[[Services|サービス]]''': 配信と購読のモデルは柔軟な通信の枠組みです.しかしその多対多で一方通行の信号は,発行された(distributedの訳)システムで頻繁に求められるリクエストとレスポンスの通信にはふさわしくありません.リクエストとレスポンスは,リクエストとレスポンスのための一対のメッセージ構造として定義された [[Services|サービス]] 経路で行われます.供給側のノードは [[Names|名前]] を下にサービスを要求し,クライアントはサービスを使用してリクエストを送り,レスポンスを待ちます.ROS クライアント ライブラリには一般的にこのようなやり取りが,プログラマが遠隔で手順を呼び出すために存在します. * '''[[Bags|バグ]]''': バグは ROS メッセージ データを保存したり再生したりするための書式です.バグは、アルゴリズムの開発およびテストに必要ではあるが集めるのが難しいこともあるデータ(センサーデータなど)を蓄積するための重要な機構です. ## {{attachment:ROS/Concepts/ROS_basic_concepts.png}} {{http://ros.org/images/wiki/ROS_basic_concepts.png}} [[attachment:ROS_basic_concepts.dia]] == ROS コミュニティレベル == ROS コミュニティレベルのコンセプトは異なるコミュニティとソフトウェアと知識を交換することを可能にする ROS の資産です.この資産に含まれるのは: * '''[[Distributions|ディストリビューション]]''': ROS ディストリビューションはあなたがインストール可能な [[Stacks|スタック]] のバージョンのコレクションです.ディストリビューションは Linuxのディストリビューションの役割と似た働きをし,ソフトウェア コレクションのインストールとソフトウェアを超えたバージョン管理を簡易化します. * '''[[Repositories|リポジトリ]]''': ROS はそれぞれ別のロボット ソフトウェア構成を開発・リリースする機関のコード リポジトリで構成されるネットワークに依存しています. * '''[[Documentation|ROS Wiki]]''': ROS コミュニティ - Wiki は ROS についての情報を文書化するための中心的な場所です.誰でもアカウントを作成したり,文書を寄稿したり, コレクションやアップデートを供給したり,チュートリアルを書いたりすることができます. * '''バグ チケット システム''': ファイルのチケットについての情報は [[Tickets|チケット]] を参照してください. * '''[[Mailing Lists|メーリングリスト]]''': [[Mailing Lists|ros-users メーリングリスト]] はフォーラムで ROS ソフトウェアについて質問するのと同様に, ROS 新規アップデートについて話し合うのに一番の場です. * '''[[http://www.willowgarage.com/blog|ブログ]]''': [[http://www.willowgarage.com/blog|Willow Garage のブログ]] では,通常のアップグレードや写真・動画についても提供されます. <> == 次へ == [[ROS/Higher-Level Concepts|Higher-Level Concepts]]