技術共有

ROS基礎学習~ROS運用管理~

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

ROS運用管理

1. ROS運用管理の概要

ROS はマルチプロセス (ノード) 分散フレームワークであり、完全な ROS システム実装です。

複数のホストが含まれる場合があります。
各ホストには複数のワークスペースがあります。
各ワークスペースには複数の関数パッケージが含まれています。
各関数パッケージには複数のノード (Node) が含まれており、異なるノードには独自のノード名があります。
各ノードには 1 つ以上のトピックを設定することもできます。

ここに画像の説明を挿入します
マルチレベル ROS システムでは、その実装とメンテナンスにおいて、次のようないくつかの問題が発生する可能性があります。
1. 異なる機能パッケージの関連付け方法---(メタ機能パッケージ)
2. 各種ROSノードの起動方法---(起動ファイル)
3. 関数パッケージ、ノード、トピック、パラメータの名前が重複する場合の対処方法----(重複名問題の解決)
4. 異なるホスト上のノードがどのように通信するか----(分散通信)

この章の主な内容では、ROS における上記の問題の解決策を紹介します (この章の目次を参照) 期待される学習目標も上記の問題に対応しています。

  • メタ関数パッケージを使用するための構文をマスターします。
  • 起動ファイルを使用する構文をマスターします。
  • ROS ワークスペースの対象範囲と、そこに存在するセキュリティ リスクを理解します。
  • 重複したノード名に対処する方法を理解します。
  • 重複した名前を持つトピックを処理する方法を理解します。
  • 重複したパラメータ名を処理する方法を理解します。
  • ROS分散通信を実現可能。

2. ROSメタファンクションパッケージ

シナリオ: ROS で系統的な機能を完成させるには、地図、測位、経路計画などのさまざまなサブレベル機能パッケージを持つロボット ナビゲーション モジュールの実装など、複数の機能パッケージが必要となる場合があります。それでは、呼び出し元がモジュールをインストールするとき、各関数パッケージを 1 つずつインストールする必要があるのでしょうか?

明らかに、関数パッケージを 1 つずつインストールするのは非効率です。ROS では、特定の関数モジュールをインストールするときに、パッケージ化された関数パッケージを直接呼び出すだけで済みます。このパッケージはメタパッケージとも呼ばれます。 。

2.1 コンセプト

MetaPackage は、Linux のファイル管理システムの概念です。これは ROS の仮想パッケージであり、実質的な内容はありませんが、他のソフトウェア パッケージに依存しており、このようにして、他のパッケージを結合することができます。 - パッケージはパッケージ コレクションにあり、ダウンロードする場所もあります。

例えば:

  • sudo apt install ros-noetic-desktop-full コマンドは、ros のインストール時にメタ関数パッケージを使用します。このメタ関数パッケージは、ROS の他の関数パッケージに依存します。このパッケージをインストールすると、依存関係も一緒にインストールされます。
    いくつかの一般的なメタパッケージもあります: ナビゲーション moveit!

2.2 機能

ユーザーのインストールを容易にするために、他の関連ソフトウェア パッケージをまとめてインストールするには、この 1 つのパッケージのみが必要です。

2.3 実装

step1: まず、新しい機能パッケージを作成します。
ステップ 2: 次に、package.xml を変更します。内容は次のとおりです。

<exec_depend>統合された機能パッケージ</exec_depend>

<export>
<metapackage />
</export>
ここに画像の説明を挿入します

ステップ 3: 最後に、CMakeLists.txt を変更します。内容は次のとおりです。

cmake_minimum_required(バージョン 3.0.2)
プロジェクト(デモ)
find_package(catkin 必須)
catkin_メタパッケージ()

上記の 4 行を保持し、残りを削除してください。

以下も参照してください。
http://wiki.ros.org/catkin/package.xml#メタパッケージ

3. ROS 起動ファイル

最初の章では、起動ファイルの使用に慣れていません。

プログラムは、ROS の組み込みの小さなタートルの場合のように、複数のノードを起動する必要がある場合があります。タートルの動きを制御したい場合は、roscore、タートル インターフェイス ノード、およびキーボード コントロール ノードを起動して、複数のウィンドウを起動する必要があります。それぞれ。毎回 rosrun を呼び出して 1 つずつ起動するのは明らかに非効率です。

採用された最適化戦略は、roslaunch コマンドを使用して管理ノードを起動するための起動ファイルを収集することであり、後続のチュートリアルでも起動ファイルが何度も使用されます。

3.1. ROS ノード管理起動ファイル

3.1.1 コンセプト

起動ファイルは、複数のローカルおよびリモート ノードを起動し、パラメータ サーバーにパラメータを設定できる XML 形式のファイルです。

3.1.2 機能

ノードの構成と起動を簡素化し、ROS プログラムの起動効率を向上させます。

3.1.3 使用方法方法

Turtlesim を例として説明します。

ステップ1. 新しい起動ファイルを作成します。
関数パッケージの下に起動ディレクトリを追加し、そのディレクトリ内に新しい xxxx.launch ファイルを作成し、起動ファイルを編集します

<launch>
<node pkg=“turtlesim” type=“turtlesim_node” name=“myTurtle” output=“screen” />
<node pkg=“turtlesim” type=“turtle_teleop_key” name=“myTurtleContro” output=“screen” />
</launch>

ステップ2. 起動ファイルを呼び出す

roslaunch パッケージ名 xxx.launch

注: roslaunch コマンドは、起動ファイルを実行するときに、最初に roscore が開始されているかどうかを判断します。開始されていない場合は、roscore が自動的に呼び出されます。

以下を参照できます:
http://wiki.ros.org/roslaunch/XML

3.2 起動ファイルタグ

https://www.bilibili.com/video/BV1Ci4y1L7ZZ?p=150&spm_id_from=pageDriver&vd_source=15dd2e64f0499027ca66125b65dd2de9