この記事はWeChatの公開アカウント「Big Data DT」から転載したもので、著者はZhang Huです。この記事を転載する場合は、Big Data DT パブリックアカウントにご連絡ください。 1. ROSの紹介多くの初心者は、ロボットのオペレーティングシステムと聞いて、「オペレーティングシステム」という言葉に怖気づくかもしれません。実際、簡単に言えば、ROS はプログラム プロセス間の通信をより便利にする分散通信フレームワークです。 ロボットは通常、複数の部分で構成されており、各部分にはロボットの動きや視聴覚機能などを実現するための対応する制御プログラムがあります。では、ロボット内のこれらのコンポーネントをどのように調整するか、または複数のロボットで構成されるロボット クラスターをどのように調整するのでしょうか。この場合、分散コンポーネントが相互に通信できるようにする必要があります。マルチロボット クラスターでは、これらの分散コンポーネントもさまざまなロボットに分散されています。この分散通信の問題を解決することこそが、ROS が設計された目的です。 ROS の開発とソースコードの貢献に参加する人が増えるにつれて、コミュニティには多数のサードパーティ ツールと実用的なオープン ソース ソフトウェア パッケージが登場し、ROS は今日の姿になりました。 初心者がよく混乱するのは、ROSを学んだらロボットの開発方法を学んだことになるのかということです。もちろん違います。厳密に言えば、ROSは単なる通信フレームワークです。ロボットのさまざまなアルゴリズムやアプリケーションは、依然としてC++やPythonなどの一般的なプログラミング言語で開発されています。 1. ROSのパフォーマンス特性ROS を正式に学習する前に、まず ROS のいくつかの機能、つまりメタオペレーティングシステム、分散通信メカニズム、疎結合ソフトウェアフレームワーク、豊富なオープンソース関数ライブラリなどを紹介し、誰もが直感的に理解できるようにします。 ROS はロボット工学のためのメタオペレーティングシステムです。言い換えれば、これは真のオペレーティング システムではありません。基盤となるタスク スケジューリング、コンパイル、デバイス ドライバーなどは、ネイティブ オペレーティング システムである Ubuntu Linux によって実行されます。 ROS は実際には Ubuntu Linux 上で実行されるサブオペレーティングシステム、つまりソフトウェアフレームワークですが、ハードウェア抽象化、関数呼び出し、プロセス管理などのオペレーティングシステムのような機能を提供します。また、取得、コンパイル、クロスプラットフォームのための機能とツールも提供します。 ROSの核となる考え方は、ロボットのソフトウェア機能をノード化し、ノード同士がメッセージを送信して通信することです。これらのノードは、同じホスト、異なるホスト、さらにはインターネット上に展開できます。 ROS ネットワーク通信メカニズムのマスター ノードは、ネットワーク内の各ノード間の通信プロセスを管理およびスケジュールする役割を担い、ネットワーク内のグローバル パラメータを構成するためのサービスも提供します。 ROS は、分散通信メカニズムを使用してノード間のプロセス通信を実装する、疎結合のソフトウェア フレームワークです。 ROS のソフトウェア コードは疎結合方式で構成されており、柔軟な開発プロセスと簡単な管理および保守が可能です。 ROS には豊富なオープンソース関数ライブラリがあります。 ROS は BSD (Berkeley Software Distribution) プロトコルに基づくオープンソース ソフトウェアであり、誰でも変更、再利用、再配布し、商用製品やクローズド ソース製品で使用することができます。ROS を使用すると、独自のロボット プロトタイプをすばやく構築できます。 2. ROS リリースLinux ディストリビューションと同様に、ROS ディストリビューションには、ROS システムをパッケージ化してネイティブ システムにインストールする、一般的に使用される一連の関数パッケージが組み込まれています。 ROS はもともと Ubuntu システムをベースに開発されました。ROS のリリース バージョンの名前も Ubuntu と同じ規則に従います。つまり、バージョン名は最初の文字が同じ 2 つの英語の単語で構成され、バージョンの最初の文字はアルファベットの昇順で選択されます。図 1-1 に、ROS のいくつかの主要なバージョンを示します。 ▲図1-1 ROSの主なバージョン 3. ROSの学習方法ROS を習得し、使いこなすためには、多くの実践的な操作が必要です。したがって、ROS のコアコンセプトとプログラミングパラダイムを素早く理解した後、多数の実践的なプロジェクトを組み合わせて ROS を深く理解する必要があります。問題を正しい方法で解決することを学ぶと、能力をより早く向上させることができます。 ROS の主な学習リソースは次のとおりです。
2. ROSシステムアーキテクチャROS をインストールした後、多くの友人はすぐにプログラムを書き始めるのを待ちきれません。 ROS のアーキテクチャは比較的複雑なので、後で出てくるさまざまな概念を理解しやすくするために、まず ROS のシステム アーキテクチャについて説明し、誰もが ROS のさまざまな概念を包括的に把握できるようにします。公式声明によると、ROS アーキテクチャは、計算グラフ、ファイルシステム、オープンソースコミュニティの観点から理解できます。 1. 計算グラフの観点からROSアーキテクチャを理解するROS の実行可能プログラムの基本単位はノードと呼ばれます。ノードはメッセージ メカニズムを通じて相互に通信し、図 1-3 に示すように、計算グラフとも呼ばれるネットワーク グラフを形成します。 ▲図1-3 ROS計算グラフ構造 ノードは実行可能プログラムであり、一般的にプロセスとも呼ばれます。 ROS 関数パッケージで作成された各実行可能プログラムは、起動されてシステム プロセスにロードされた後、図 1-3 のノード 1、ノード 2、ノード 3 などの ROS ノードになります。 ノードは、メッセージの送受信によって互いに通信します。メッセージの送受信メカニズムは、トピック、サービス、アクションの 3 種類に分かれています。たとえば、図 1-3 では、ノード 2 と 3、ノード 2 と 5 はトピック通信を使用し、ノード 2 と 4 はサービス通信を使用し、ノード 1 と 2 はアクション通信を使用します。計算グラフ内のノード、トピック、サービス、およびアクションには、識別子として一意の名前が必要です。 ROS はノードを使用してコードと機能を分離し、システムのフォールト トレランスと保守性を向上させます。したがって、すべてをカバーする単一の巨大なノードを作成するのではなく、各ノードに特定の単一の機能を持たせる方が適切です。 C++ でノードを作成する場合は、ROS が提供する roscpp ライブラリを使用する必要があります。Python でノードを作成する場合は、ROS が提供する rospy ライブラリを使用する必要があります。 メッセージは計算グラフを構築するための鍵であり、メッセージ メカニズムとメッセージ タイプという 2 つの部分で構成されます。メッセージメカニズムには、トピック、サービス、アクションの 3 種類があります。各メッセージメカニズムで送信されるデータには、特定のデータ型 (つまり、メッセージタイプ) があります。メッセージタイプは、トピックメッセージタイプ、サービスメッセージタイプ、アクションメッセージタイプに分けられます。メッセージメカニズムとメッセージタイプについては、セクション 1.5 で詳しく説明します。 データ パケット (rosbag) は、トピック内のデータを保存および再生するために特別に使用される ROS のファイルです。収集が難しい一部のセンサー データは、データ パケットを使用して記録し、繰り返し再生してアルゴリズムのパフォーマンスをデバッグすることができます。 パラメータ サーバーは、ROS ネットワーク全体のノードに対して簡単に変更できるパラメータを提供できます。パラメータは、外部から変更できるノード内のグローバル変数と見なすことができます。静的パラメータと動的パラメータがあります。静的パラメータは通常、ノードの起動時にノードの動作モードを設定するために使用されます。動的パラメータは、モーター制御ノードの PID 制御パラメータなど、ノードの実行中にノードを動的に構成したり、ノードの動作状態を変更したりするために使用できます。 マスター ノードは、各ノード間の通信プロセスのスケジュールと管理を担当します。したがって、最初にマスター ノードを起動する必要があります。これは、roscore コマンドを使用して起動できます。 2. ファイルシステムの観点からROSアーキテクチャを理解するROS プログラムのさまざまなコンポーネントは、さまざまなフォルダに配置する必要があります。これらのフォルダは、さまざまな機能に応じてファイルを整理します。これが、図 1-4 に示す ROS のファイル システム構造です。 ▲図1-4 ROSファイルシステム構造 ワークスペースは、関数パッケージ、コンパイル パッケージ、およびコンパイルされた実行可能ファイルを含むフォルダーです。ユーザーは、必要に応じて複数のワークスペースを作成し、各ワークスペースでさまざまな目的の関数パッケージを開発できます。図 1-4 では、src、build、devel の 3 つのフォルダーを含む catkin_ws という名前のワークスペースを作成しました。
関数パッケージは、ROS におけるソフトウェア構成の基本的な形式です。ROS プログラムを作成するための最小限の構造とコンテンツを持ちます。ROS ノードのソース コード、スクリプト、構成ファイルなどが含まれます。
3. オープンソースコミュニティの観点からROSアーキテクチャを理解するROS はオープンソース ソフトウェアです。独立したオンライン コミュニティがソフトウェアやチュートリアルを共有、提供し、図 1-5 に示すように強力な ROS オープンソース コミュニティを形成しています。 ▲図1-5 ROSオープンソースコミュニティ構造 ROS の開発は、オープンソースと共有ソフトウェアに依存しています。これらのコードは、GitHub ソースコード共有、Ubuntu ソフトウェア リポジトリ リリース、サードパーティ ライブラリなど、さまざまな組織によって共有およびリリースされています。 ROS の公式 wiki は重要なドキュメント ディスカッション コミュニティであり、対応するドキュメント ページを簡単に公開および変更できます。 ROS 回答ホームページには、ROS 開発者からの質問と回答が多数掲載されており、ROS 開発で遭遇するさまざまな問題について活発な議論が行われています。 著者について: 深セン瑞思インテリジェントドライビングテクノロジー株式会社 CEO、張 胡彼はかつて深セン市知能ロボット研究所に勤務し、ロボットの自律航行に関する研究プロジェクトを率いていました。彼は仕事中、「小虎大好き学習兄さん」というオンライン名で、知乎、CSDN、bilibiliなどのプラットフォーム上でロボットSLAMナビゲーションに関する高品質のブログ記事やビデオチュートリアルを多数作成し、大多数のネットユーザーから深く愛されました。彼は強力な人工知能の研究に非常に興味を持っており、高度な知能を備えたロボットの産業化に尽力しています。 この記事は「ロボット SLAM ナビゲーション: コア技術と実践」から抜粋したもので、出版社の許可を得ています。 (ISBN: 9787111697428) |
<<: 改良された ResNet が Transformer を上回り、アーキテクチャの戦いが再燃します。著者は「革新はない」と述べた
>>: 3億7500万人の労働者が転職する?人工知能が代替できない分野はどれですか?
10 年前、ほとんどの人は、今日では現金やカードを持ち歩かずに携帯電話だけを持って街を歩き回り、買...
貪欲アルゴリズム (または貪欲アルゴリズム) とは、問題を解決するときに、その時点で適切と思われる選...
人工知能は科学技術革命を牽引する重要な原動力として、国家戦略計画や産業界の注目の的となり、オープンソ...
[[423004]]文字列が与えられたら、文字列内の各単語を 1 つずつ逆にします。例1:入力: 「...
ほとんどのソフトウェア アプリケーション開発と同様に、開発者は複数の言語を使用して AI プロジェク...
[[410843]] 7月9日、2021年世界人工知能大会の期間中に開催された「新世代人工知能コンピ...
組織は、全員を関与させれば、AI を活用してビジネスを成長させることができます。人工知能への投資は、...
[[387235]]テスト セットのヒル クライミングは、トレーニング セットに影響を与えたり、予測...
日用消費財業界の商品識別需要シナリオでは、日用消費財ブランドの営業担当者は、販売のために端末店舗を訪...
世界が人工知能(AI)を採用し続けるにつれて、AIを使用したスマートビルディングの人気が高まっていま...
2023年はGenAIの年ですが、GenAI(生成型人工知能)の採用率は期待に応えていません。ほとん...
問題は正確には何ですか? これらのエラーを回避する方法はありますか?今日、人工知能 (AI)、機械学...
生成 AI は、新しい製品、ビジネス、業界、さらには新しい経済に情報を提供することができます。しかし...