ディレクトリ
7 ROSレーザーSLAM
ロボットのナビゲーションの主な問題は、マッピング、ローカリゼーション、経路計画の3つの部分に分けることができます。同時配置とマッピング(SLAM)の問題は、配置とマッピングの交差点にあります。SLAMでは、ロボットが未知の環境で徐々に地図を作成し、さらに地図に基づいて自身の位置を特定してさらに特定する必要があります。
SLAMは、レーザー、ビジョン、レーザー+ビジョンの3つのカテゴリに分類できます。この章では、主にレーザーSLAMアルゴリズムについて説明します。
7.1マップ
ROSのマップは通常のpgm形式の通常のグレースケール画像です。この画像の黒いピクセルは障害物を示し、白いピクセルは実行可能な領域を示し、灰色は探索されていない領域を示します。以下に示すように:
マップは維持され、ROSのトピックの形式で表示されます。トピック名は/マップで、そのメッセージタイプはnav_msgs / OccupancyGridです。
メッセージのフォーマットは、rosmsg show nav_msgs / OccupancyGridで確認できます。
std_msgs/Header header #消息的报头
uint32 seq
time stamp
string frame_id #地图消息绑定在TF的哪个frame上,一般为map
nav_msgs/MapMetaData info #地图相关信息
time map_load_time #加载时间
float32 resolution #分辨率 单位:m/pixel
uint32 width #宽 单位:pixel
uint32 height #高 单位:pixel
geometry_msgs/Pose origin #原点
geometry_msgs/Point position
float64 x
float64 y
float64 z
geometry_msgs/Quaternion orientation
float64 x
float64 y
float64 z
float64 w
int8[] data #地图具体信息
上記は/マップトピックのデータ構造を定義します。これには、ヘッダー、情報、データの3つの主要な部分が含まれます。ヘッダーはメッセージのヘッダーであり、シーケンス番号、タイムスタンプ、フレームなどの一般的な情報を格納します。infoはマップの構成情報であり、マップの属性を反映します。dataは実際にマップデータを格納する部分であり、可変長配列です、[] int8の後に追加されます。これは、このマップの各ピクセルである幅*高さのint8タイプのデータを格納するベクターのようなコンテナーとして理解できます。
未知の領域のマップの場合、SLAMアルゴリズムを使用してロボットを動的に構築できます。
既知のエリアのマップの場合、最初にSLAMアルゴリズムノードを起動し、ロボットを移動して周囲の環境をスキャンしてマップを作成し、次にmap_server($ rosrun map_server map_saver -f map)を使用してマップを保存します。保存したマップを今後のナビゲーションに使用します。
7.2一般的に使用されるレーザーSLAMアルゴリズムの比較
ROSで一般的に使用されるレーザーSLAMアルゴリズムは、Gmapping、Karto、Hector、およびその他のアルゴリズムです。
具体的な比較を次の表に示します。
|
マッピング |
カルト |
ヘクター |
必要なセンサー |
ライダー 走行距離計 |
ライダー 走行距離計 |
ライダー(高周波レーダーが必要) |
トピックを入力してください |
|
|
|
出力トピック |
|
|
|
提供されたサービス |
/ dynamic_map:タイプはnav_msgs / GetMapで、現在のマップを取得するために使用されます。 |
/ dynamic_map:タイプはnav_msgs / GetMapで、現在のマップを取得するために使用されます |
/ dynamic_map:タイプはnav_msgs / GetMapで、現在のマップを取得するために使用されます |
技術的実現 |
粒子フィルター |
グラフベースの最適化 |
スキャンマッチング(ガウス-ニュートン方程式) |
効果 |
成熟した、信頼性の高い、安定したエフェクトである多くのROSベースのロボットは、gmapping_slamを実行します |
gmappingに似ており、大規模なマップ環境により適しています |
LIDAR情報のみを使用するため、効果はGmappingおよびKartoほど良くありません。 |
(1)オドメーターには、ホイール上の光電コードホイール、慣性ナビゲーションユニット(IMU)、および視覚オドメーターが含まれます。1つだけをオドムに使用したり、複数を選択してデータを融合したり、融合結果をオドムとして使用したりできます。
(2)https://blog.csdn.net/dddxxxx/article/details/78460636
(3)《ロボット操作システムで利用可能な2D SLAM技術の評価》を参照
7.2.1マッピングSLAM計算チャート
7.2.2 Karto SLAM計算表
7.2.3ヘクターSLAM計算表