ROS研究ノート(7):ナビゲーション

ディレクトリ

8ナビゲーション

8.1ナビゲーション作業フレームワーク

8.2 move_base

8.3コストマップ

8.4 map_server

8.5 AMCLの位置付け


8ナビゲーション

ナビゲーションはロボットの最も基本的な機能の1つです。ROSは、グローバルおよびローカルパス計画、コストマップ、異常な動作の回復、マップサーバーなど、ナビゲーションソリューションの完全なセットを提供します。この機能は、経路計画、配置、マップ、および異常な動作の回復のためのパッケージを含むナビゲーションスタックROSメタパッケージに配置されます。

パッケージ名

機能

amcl

ポジショニング

fake_localization

ポジショニング

map_server

地図を提供する

move_base

パス計画ノード

nav_core

base_local_plannerを含むパスプランニング用のインターフェースクラス

3つのインターフェースbase_global_plannerとrecovery_behavior

base_local_planner

軌道計画ロールアウトとDWAの2つのローカル計画アルゴリズムを実装

dwa_local_planner

再実装されたDWAローカル計画アルゴリズム

parrot_planner

よりシンプルなグローバル計画アルゴリズムを実装

navfn

DijkstraおよびA *グローバル計画アルゴリズムを実装

global_planner

再実装されたダイクストラとA *グローバル計画アルゴリズム

clear_costmap_recovery

コストマップをクリアするリカバリー行動を実現

rotate_recovery

ローテーションのリカバリー動作を実現

move_slow_and_clear

動きの遅い回復動作を実現

costmap_2d

2次元コストマップ

voxel_grid

三次元の小さな正方形

robot_pose_ekf

ロボットポーズのカルマンフィルタリング

 

8.1ナビゲーション作業フレームワーク

入力してください:

  • / tf:フィードによって提供されるtfには、map_frame、odom_frame、base_frame、およびロボットの各関節間の完全なtfツリーが含まれます。
  • / odom:オドメーター情報
  • / scanまたは/ pointcloud:センサーの入力情報。最も一般的に使用されるのはレーザーレーダー(sensor_msgs / LaserScanタイプ)であり、点群データ(sensor_msgs / PointCloud)もあります。
  • /マップ:マップはSLAMプログラムによって提供されるか、既知のマップをmap_serverによって指定できます。

     上記の4つのトピックは、ナビゲーションシステムに継続的に提供する必要があります。次のトピックは、いつでも公開できます。

  • move_base_simple /ゴール:ターゲットポイントの位置。

出力:

  • / cmd_vel:geometry_msgs /ツイストタイプ、各瞬間に計画される速度情報。形式は次のとおりです。

geometry_msgs / Vector3リニア

  float64 x

  float64および

  float64と

geometry_msgs / Vector3角度

  float64 x

  float64および

  float64と

move_baseが提供するサービス

  • make_plan:nav_msgs / GetPlanタイプ。リクエストはターゲットポイントであり、レスポンスは計画された軌道ですが、軌道は実行されません。
  • clear_unknown_space:std_srvs /空のタイプ。ユーザーが不明なエリアのマップをクリアできるようにします。
  • clear_costmaps:std_srvs /空のタイプ。ユーザーがコストマップ上の障害物をクリアできるようにします。

8.2 move_base

move_baseはNavigationのコアノードであり、Navigationのタスクで主要な位置にあり、他のいくつかのパッケージはそのプラグインです。

move_baseを実行するには、3つのプラグイン(base_local_planner、base_global_planner、recovery_behavior)を含むプラグインを選択する必要があります。これらの3つのプラグインを指定する必要があります。指定しない場合、システムがデフォルト値を指定します。ナビゲーションは、move_baseを構成するときに選択できる多数の候補プラグインを提供します。

base_local_plannerプラグイン:

  • base_local_planner:軌道計画ロールアウトとDWAの2つのローカル計画アルゴリズムを実装します
  • dwa_local_planner:実装されたDWAローカル計画アルゴリズム。base_local_plannerの改良バージョンと見なすことができます

base_global_plannerプラグイン:

  • parrot_planner:よりシンプルなグローバル計画アルゴリズムを実装します
  • navfn:DijkstraおよびA *グローバル計画アルゴリズムを実装
  • global_planner:再実装されたダイクストラとA *グローバル計画アルゴリズム。これはnavfnの改良バージョンと見なすことができます

recovery_behaviorプラグイン:

  • clear_costmap_recovery:コストマップをクリアする回復動作を実装します
  • rotate_recovery:ローテーションの回復動作を実装します
  • move_slow_and_clear:遅い動きの回復動作が実現されます

コストマッププラグイン:

      プラグインはデフォルトで選択されています。デフォルトはcostmap_2dで、変更できません。

プラグインはmove_baseのパラメータ設定で選択できます。構成するにはパラメータが多すぎるため、構成は通常yamlファイルに書き込まれます。上記のパラメータを保存するには、param / move_base_params.yamlを使用します。

8.3コストマップ

ROSのマップはトピック/マップであり、画像でもあります。1ピクセルは実際の領域を表し、グレー値は障害物の可能性を示すために使用されます。ただし、実際のナビゲーションタスクでは、マップを用意するだけでは不十分です。ロボットは、動的に障害物を追加したり、存在しない障害物をクリアしたり、マップ上の危険な領域にマークを付けてルートを計画したりできる必要があります。より有用な情報を提供します。

ナビゲーションが必要なため、コストマップが表示されます。コストマップは、/マップの上にいくつかのマップを追加することとして理解できます。これには、元のマップ情報が含まれるだけでなく、他の補助情報も追加されます。

コストマップには次の特性があります。

1。まず、2つのコストマップがあります。1つはlocal_costmapで、もう1つはglobal_costmapです。これらはそれぞれローカルパスプランナーとグローバルパスプランナーに使用されます。これら2つのコストマップはデフォルトであり、costmap_2dのみをプラグインとして選択できます。

2. local_costmapでもglobal_costmapでも、それらのレイヤーを構成でき、複数のレベルを選択できます。  

      コストマップレイヤーには次のものが含まれます。

  • 静的マップレイヤー:静的マップレイヤー、通常はSLAMによって作成された静的マップ。
  • 障害物マップレイヤー:障害物マップレイヤー。センサーが感知した障害物情報を動的に記録するために使用されます。
  • インフレーションレイヤー:インフレーションレイヤー、ロボットの外側のレイヤーを回避するために、マップの上の2つのレイヤーをインフレート(外側に拡大)します
  • シェルが障害物にぶつかります。
  • その他のレイヤー:プラグインの形でコストマップを自分で実装することもできます。
  • LayerやRange Sensor Layerなどのオープンソースプラグイン。

      複数のレイヤーを選択して同時に共存させることができます。

コストマップの設定もyamlで保存されます。通常、コストマップはローカルとグローバルのコーストマップに分割されるため、2つのコストマップを分離するために使用されます。

8.4 map_server

固定されたシナリオでは、(SLAMまたは測定を介して)マップがわかっているため、ロボットは、オンになるたびに再構築するのではなく、開始するたびに既知のマップを直接ロードするのが最適です。この場合、シーン情報を提供するためにパブリッシュ/マップするノードが必要です。map_serverは、ナビゲーションやその他の機能のために既知のマップを公開したり、SLAMによって作成されたマップを保存したりできる、このような関数パッケージです。

map_serverを公開/マップするには、2つのファイルを入力する必要があります。

  • 通常はpgm形式のマップファイル。
  • 通常、yaml形式のマップ記述ファイル

上記の2つのファイルを使用すると、指示に従ってこのマップをロードできます。map_server関連のコマンドは次のとおりです。

  • rosrun map_server map_server Software_Museum.yamlはカスタムマップをロードします
  • rosrun map_server map_saver -f mymap現在のマップをmymap.pgnおよびmymap.yamlとして保存します

map_serverは、次のトピックとサービスを提供します。

  • トピック
  • / map_metadata:マップの説明情報を公開します
  • /マップ:ラッチされたマップメッセージを公開する
  • サービス
  • static_map:現在の静的マップを要求して応答するために使用されます。

パラメータ:map_serverには、設定が必要なパラメータがあります。これは、マップを公開するためのフレームです。

〜frame_id:文字列タイプ、デフォルトはマップです。パブリッシュされたマップをバインドするtf内のフレームは通常、マップです。

8.5 AMCLの位置付け

アダプティブメンカルトローカリゼーション(AMCL):モンテカルロアダプティブポジショニングは、非常に一般的に使用されているポジショニングアルゴリズムで、検出された障害物を既知のマップと比較することで特定されます。

AMCLの通信アーキテクチャは次のとおりです。

以前のSLAMフレームワークと同様に、主な違いは/ mapが出力ではなく入力として使用されることです。これは、AMCLアルゴリズムがマップの構築に関係なく配置のみを担当するためです。

31件の元の記事を公開 いいね3 2028訪問

おすすめ

転載: blog.csdn.net/lclfans1983/article/details/105399759