ディレクトリ
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アルゴリズムがマップの構築に関係なく配置のみを担当するためです。