ros は Linux ディストリビューション バージョンです。 ROS の完全な名前はロボット オペレーティング システムで、ロボット オペレーティング システムと訳されます。ROS は Linux カーネルに基づいており、Linux 上でのみ実行できます。 ROS は、ハードウェア抽象化、基礎となるデバイス制御、共通機能実装、プロセス間メッセージング、パケット管理など、いくつかの標準オペレーティング システム サービスを提供します。 ROS は 2 つの層に分けることができ、下位層は前述のオペレーティング システム層であり、上位層は位置マッピング、アクション プランニング、知覚などのさまざまな機能を実装するために幅広いユーザー ベースによって提供されるさまざまなソフトウェア パッケージです。 。
#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。
ROS はロボット オペレーティング システムの略で、ロボット オペレーティング システムと訳されます。 Linux カーネルをベースにしており、現在は Linux 上でのみ実行されます。
ROS 設計者は、ROS を「ROS = Plumbing Tools Capabilities Ecosystem」と説明しています。つまり、ROS は、通信メカニズム、ツール ソフトウェア パッケージ、高度なロボット スキル、およびロボット エコシステムの集合です。
名前が示すように、ROS はシステムです。これは、私たちが使用する通常のオペレーティング システムに似ています。ROS は、基礎となるロボット ハードウェアをカプセル化します。言い換えれば、異なるロボットに含まれるさまざまな基礎となるパラメータは、ROS を使用して開発する人の目には同じに見えます。ここで、ROS には現在ビジュアル インターフェイスがないことにも言及する必要があります。私たちが使っている Windows や Linux はビジュアルインターフェースを持っているため、画像インターフェースを直接見て操作することができますが、ROS にはありません。私たちがオペレーティング システムと呼ぶものは、必ずしもビジュアル インターフェイスを備えている必要はありません。興味があれば、コマンド ラインのみがあり、カラフルなインターフェイスがなかった初期のオペレーティング システムを見てみることができます。
ROS は、ハードウェア抽象化、基盤となるデバイス制御、共通機能実装、プロセス間メッセージング、データ パケット管理など、いくつかの標準オペレーティング システム サービスを提供します。 ROS はグラフ アーキテクチャに基づいているため、さまざまなノード上のプロセスがさまざまな情報 (センシング、制御、ステータス、計画など) を受信、公開、集約できます。
ROS は 2 つの層に分けることができます。下位層は上記のオペレーティング システム層であり、上位層は位置マッピング、行動計画、認識、シミュレーションなど。
ROS は多義語であり、コミュニケーション メカニズムにもなります。 ROS 開発では、ノードはアプリケーションを表すために使用され、ノードは実行可能プログラムです。ノード間の通信は ROS を介して行われます。 ROS は、ノード マネージャー (マスター) を通じて各ノードを管理します。原則の具体的な実現については、後ほど説明します。
さらに、ROS は、ロボット開発のための一連のツールキット、アルゴリズム、スキル、プラットフォーム、エコロジーなども表します。
ROS の歴史。端的に言えば、ROS とは、ロボットを開発するときに優れていると考えた偉い人たちのグループ (便利なライブラリやソフトウェア、またはアイデア、プロトコル、標準など) が集まって形成されたものです。ロボットの開発では、さまざまなロボットの統一規格が存在せず、見たことのないロボットを開発するたびに、多くのことを改めて学習する必要があり、非常に不便です。オペレーティング システムから作成するシステムを、ロボットが最下層をカプセル化するシステムも構築できないのではないかと考えました。こうしてROSが誕生しました。何年にもわたる改良を経て、ROS はますます完璧になり、ますます多くの人がそれを使用しています。
ROS が何をするのか知りたければ、一文を知るだけで十分です。 ROS はロボットやロボット アームの開発に使用されます。
ロボット開発の歴史において、標準化作業はまだ十分に行われていません。ロボットが異なれば、使用するシステムやプログラムなどが異なるため、クロスプラットフォームである限り開発は非常に困難になります。このような問題を解決するためにROSが誕生しました。 ROS は、カプセル化を通じて基盤となるハードウェアを開発者に対して透過的にすることができ、クロスプラットフォーム開発の困難さを大幅に軽減します。
ROS を選択する理由は、これまで述べてきたことを誰もが理解できるようにするためであり、多くの人に使用され、広く普及しているということに他なりません。 ROS には、多くのフィールド、データ、関数、コンテンツ、知識などが含まれています。ROS を使用せずに独自のデータベースを構築したいですか?
ROS を正式に学習する前に、まず ROS のいくつかの特性、つまりメタ オペレーティング システム、分散通信メカニズム、疎結合について紹介しましょう。 . 知覚的な理解を構築するのに役立つソフトウェア フレームワーク、豊富なオープンソース関数ライブラリなど。
ROS は、ロボット工学分野のメタ オペレーティング システムです。つまり、これは本当の意味でのオペレーティング システムではなく、その基礎となるタスク スケジューリング、コンパイル、デバイス ドライバーなどは依然としてネイティブ オペレーティング システムである Ubuntu Linux によって完成されます。
ROS は、実際には Ubuntu Linux 上で実行されるサブオペレーティング システム、またはソフトウェア フレームワークですが、ハードウェアの抽象化、関数呼び出し、プロセス管理などのオペレーティング システムのような機能を提供します。また、フェッチ、コンパイル、クロスプラットフォームのための関数とツールも提供します。
ROS の中心的なアイデアは、ロボットのソフトウェア機能をノードにし、ノードが相互にメッセージを送信することで通信することです。 これらのノードは、同じホスト、異なるホスト、さらにはインターネット上に展開できます。 ROS ネットワーク通信メカニズムのマスター ノード (マスター) は、ネットワーク内のさまざまなノード間の通信プロセスの管理とスケジュールを担当し、ネットワーク内のグローバル パラメーターを構成するサービスも提供します。
ROS は、分散通信メカニズムを使用してノード間のプロセス通信を実現する疎結合ソフトウェア フレームワークです。 ROS のソフトウェア コードは疎結合方式で編成されており、柔軟な開発プロセスと容易な管理とメンテナンスを備えています。
ROS には豊富なオープンソース関数ライブラリがあります。 ROS は、BSD (Berkeley Software Distribution) プロトコルに基づくオープン ソース ソフトウェアであり、誰でも変更、再利用、再配布、商用およびクローズドソース製品での使用が可能です。ROS を使用すると、独自のロボット プロトタイプを迅速に構築できます。
Linux ディストリビューション バージョンと同様に、ROS ディストリビューション バージョンには、一般的に使用される一連の関数パッケージが組み込まれています。 ROS システムはパッケージ化され、ネイティブ システムにインストールされます。 ROS はもともと Ubuntu システムに基づいて開発されており、ROS のリリース バージョン名も Ubuntu と同じルールを採用しており、バージョン名は最初の文字が同じ 2 つの英単語で構成され、バージョンの最初の文字が選択されます。図 1-1 は、ROS のいくつかのメジャー リリースをアルファベットの昇順に示しています。
ROS をインストールしたら、多くの友人がすぐにプログラムを書き始めたくなるはずです。 ROS のアーキテクチャは比較的複雑であるため、後で説明するさまざまな概念を簡単に理解するために、誰もが ROS のさまざまな概念を包括的に理解できるように、最初に ROS のシステム アーキテクチャについて説明します。公式声明によると、ROS アーキテクチャは、計算グラフ、ファイル システム、オープン ソース コミュニティの観点から理解できます。
ROS の実行可能プログラムの基本単位は node (ノード) と呼ばれます、ノード間の通信は、図 1-3 に示すように、計算図とも呼ばれるネットワーク図を形成するメッセージ メカニズムを通じて実行されます。
ノードは実行可能プログラムであり、通常はプロセスとも呼ばれます。 ROS 機能パッケージで作成された各実行可能プログラムは、起動されてシステム プロセス (図 1-3 のノード 1、ノード 2、ノード 3 など) にロードされた後、ROS ノードになります。
ノードはメッセージの送受信によって通信します。メッセージの送受信メカニズムは、topic(トピック)、service(サービス)、および action# に分かれています。 ##(action). 図 1-3 では、ノード 2 とノード 3、ノード 2 とノード 5 はトピック通信を使用し、ノード 2 とノード 4 はサービス通信を使用し、ノード 1 とノード 2 はアクション通信を使用します。 計算グラフ内のノード、トピック、サービス、およびアクションには、識別子として一意の名前が必要です。
ROS はノードを使用してコードと機能を分離し、システムの耐障害性と保守性を向上させます。したがって、すべてを包括する巨大なノードを 1 つ作成するよりも、各ノードに特定の単一の機能を提供させる方がよいでしょう。 C を使用してノードを作成する場合は、ROS が提供する roscpp ライブラリを使用する必要があります。Python を使用してノードを作成する場合は、ROS が提供する rospy ライブラリを使用する必要があります。 メッセージは、メッセージ メカニズムやメッセージ タイプなど、計算グラフの鍵となります。メッセージ メカニズムにはトピック、サービス、アクションの 3 つのタイプがあり、各メッセージ メカニズムで転送されるデータは特定のデータ型 (メッセージ タイプ) を持ち、メッセージ タイプはトピック メッセージ タイプ、サービス メッセージ タイプ、およびアクション メッセージ タイプに分類できます。メッセージのメカニズムとメッセージの種類については、セクション 1.5 で説明します。データ パッケージ (rosbag) は、トピック内のデータの保存と再生に特別に使用される ROS のファイルです。収集が難しい一部のセンサー データは、データ パッケージに記録してから、アルゴリズムのパフォーマンスのデバッグを実行します。
パラメータ サーバーは、ROS ネットワーク全体のノードに簡単に変更されたパラメータを提供できます。パラメータは、静的パラメータや動的パラメータなど、外部から変更できるノード内のグローバル変数と考えることができます。静的パラメータは通常、ノードの起動時にノードの動作モードを設定するために使用されます。動的パラメータは、モータ制御ノードの PID 制御パラメータなど、ノードを動的に構成したり、ノードの実行中にノードの動作ステータスを変更したりするために使用できます。
マスター ノードは、各ノード間の通信プロセスのスケジューリングと管理を担当します。したがって、マスター ノードを最初に起動する必要があり、roscore コマンドを通じて起動できます。
ROS プログラムの異なるコンポーネントは、異なるフォルダーに配置する必要があります。これらのフォルダーには、次に従ってファイルが保存されます。整理すると、これは ROS のファイル システム構造です (図 1-4 を参照)。
ワークスペースは、関数パッケージ、コンパイル パッケージを含むパッケージです。コンパイルされた実行可能ファイルのフォルダー内に、ユーザーは自分のニーズに応じて複数のワークスペースを作成し、各ワークスペースで異なる目的の機能パッケージを開発できます。図 1-4 では、catkin_ws という名前のワークスペースを作成しました。このワークスペースには、src、build、devel の 3 つのフォルダーが含まれています。
関数パッケージは、ROS のソフトウェア構成の基本的な形式であり、ROS プログラムを作成するための最小限の構造と最小限の内容があり、ROS ノードのソース コード、スクリプト、設定ファイルなどが含まれています。
i. CMakeLists.txt は、Cmake 関数パッケージのコンパイル構成をコンパイルするために使用される関数パッケージ構成ファイルです。
ii. package.xml は関数パッケージのマニフェスト ファイルであり、XML タグ形式を使用して、パッケージ名、開発者情報、依存関係など、関数パッケージのさまざまな関連情報をマークします。主に機能パッケージのインストールと配布を容易にするためです。
iii. include/
iv. msg、srv、action の 3 つのフォルダーは、それぞれ非標準のトピック メッセージ、サービス メッセージ、アクション メッセージの定義ファイルを格納するために使用されます。 ROS は、ユーザーがメッセージ通信プロセスで使用されるメッセージ タイプをカスタマイズできるようにします。プログラムは標準のメッセージ タイプのみを使用するため、これらのカスタム メッセージは必要ありません。
v. script ディレクトリには Bash、Python、その他のスクリプト ファイルが保存されますが、これは必須ではありません。
vi. 起動ディレクトリには、ノードの起動ファイルが保存されます。*.launch ファイルは、1 つ以上のノードを起動するために使用されます。複数のノードを持つ大規模なプロジェクトで非常に役立ちますが、必須ではありません。
vii. src ディレクトリには、関数パッケージ ノードに対応するソース コードが格納されます。関数パッケージには、異なる関数を実行するために複数のノード プログラムを含めることができ、各ノード プログラムは独立して実行できます。ここの src ディレクトリには、これらのノード プログラムのソース コードが格納されます。必要に応じてフォルダーやファイルを作成してソース コードを整理できます。ソース コードは C、Python などで記述できます。
ROS はオープン ソース ソフトウェアであり、それぞれの独立したオンライン コミュニティがソフトウェアとチュートリアルを共有し、貢献して、図 1-5 に示すように、強力な ROS オープン ソース コミュニティ。
ROS の開発は、オープン ソースと共有ソフトウェアに依存しています。これらのコードは、GitHub ソース コード共有、Ubuntu ソフトウェア ウェアハウス リリース、サードパーティ ライブラリなど、さまざまな組織による共有と公開によって提供されます。 ROS の公式 Wiki は重要なドキュメントのディスカッション コミュニティであり、対応するドキュメント ページを簡単に公開および変更できます。 ROS Answer ホームページには、ROS 開発者からの多数の質問と回答が含まれており、ROS 開発で遭遇するさまざまな問題についての議論が非常に活発です。
関連する推奨事項: 「Linux ビデオ チュートリアル 」
以上がros は Linux のどのバージョンですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。