「gmapping」の編集履歴(バックアップ)一覧はこちら
「gmapping」(2011/02/28 (月) 21:30:40) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*gmapping
ROSに標準で実装されているSLAMのパッケージであるgmapping(http://www.ros.org/wiki/gmapping)についてのちょっとした説明.
Grid mapを構築する為のSLAMであり,このアルゴリズム自体は非常に代表的なアルゴリズムで実装されている.
OpenSLAMプロジェクトのソースを利用しているらしく,
http://openslam.org/gmapping.html
も参照している.
このページに書かれているように,元になった論文は
-Giorgio Grisetti, Cyrill Stachniss, and Wolfram Burgard: Improved Techniques for Grid Mapping with Rao-Blackwellized Particle Filters, IEEE Transactions on Robotics, 2006
-Giorgio Grisetti, Cyrill Stachniss, and Wolfram Burgard: Improving Grid-based SLAM with Rao-Blackwellized Particle Filters by Adaptive Proposals and Selective Resampling, In Proc. of the IEEE International Conference on Robotics and Automation (ICRA), 2005
である.
次に本SLAMのアルゴリズムの簡単な説明をする.
**アルゴリズムの説明
このSLAMはParticleフィルタのフレームワークを用いたGrid mapベースのSLAMアルゴリズムである.
よって,FastSLAM2.0のフレームワークといえる.
ここで,FastSLAM1.0ではない理由は,Scan matchによって遷移モデルの再サンプリングをしているからである.
大まかなアルゴリズムの説明を以下に載せる.
***アルゴリズム
+ロボットの運動モデルに従ってパーティクルを遷移させる
+遷移したパーティクルそれぞれにScan matchをかけて位置を補正する
+各パーティクルに対してレーザスキャンデータと地図との尤度を計算し,Particle FilterのImportance Weightsを計算する.
+地図を更新
+Sequential Importance Resampling(SIR)(おそらく)によってリサンプリング
+1に戻って各パーティクルを運動モデルによって遷移させる
このアルゴリズムではScan matchingをすることによって,遷移させたパーティクルの分布をより確からしい位置に補正を欠けているため,少ないパーティクルでも良い結果が得られやすい.
このコンセプトはFastSLAM2.0と同様なものである.
Scan matchingのアルゴリズムはICPではなく,CARMENのVoscoが実装されている.
なので,比較的いScan matchができている.
**gmappingパラメータ
SLAMを行う上で必要なパラメータが幾つかある.
ここでは簡単なパラメータの説明を行う.
gmappingのページにも説明が載っているので参考に.
またslam_gmapping.cppのコメントにも記載されており,こちらのほうが分かりやすいかも.
以下,slam_gmapping.cppのコメントより
(以下,編集中)
***Parameters used by GMapping itself:
~throttle_scans [int]
throw away every nth laser scan
~base_frame [string]
the tf frame_id to use for the robot base pose
~map_frame [string]
the tf frame_id where the robot pose on the map is published
~odom_frame [string]
the tf frame_id from which odometry is read
~map_update_interval [double]
time in seconds between two recalculations of the map
***Laser Parameters:
~/maxRange
[double] maximum range of the laser scans. Rays beyond this range get discarded completely. (default: maximum laser range minus 1 cm, as received in the the first LaserScan message)
~/maxUrange [double]
maximum range of the laser scanner that is used for map building (default: same as maxRange)
~/sigma [double]
standard deviation for the scan matching process (cell)
~/kernelSize [double]
search window for the scan matching process
~/lstep [double]
initial search step for scan matching (linear)
~/astep [double]
initial search step for scan matching (angular)
~/iterations [double]
number of refinement steps in the scan matching. The final "precision" for the match is lstep*2^(-iterations) or astep*2^(-iterations), respectively.
~/lsigma [double]
standard deviation for the scan matching process (single laser beam)
~/ogain [double]
gain for smoothing the likelihood
~/lskip [int]
take only every (n+1)th laser ray for computing a match (0 = take all rays)
***Motion Model Parameters (all standard deviations of a gaussian noise model)
~/srr [double]
linear noise component (x and y)
~/stt [double]
angular noise component (theta)
~/srt [double]
linear -> angular noise component
~/str [double]
angular -> linear noise component
***Others:
~/linearUpdate [double]
the robot only processes new measurements if the robot has moved at least this many meters
~/angularUpdate [double]
the robot only processes new measurements if the robot has turned at least this many rads
~/resampleThreshold [double]
threshold at which the particles get resampled. Higher means more frequent resampling.
~/particles [int]
(fixed) number of particles. Each particle represents a possible trajectory that the robot has traveled
***Likelihood sampling (used in scan matching)
~/llsamplerange [double]
linear range
~/lasamplerange [double]
linear step size
~/llsamplestep [double]
linear range
~/lasamplestep [double]
angular setp size
***Initial map dimensions and resolution:
~/xmin [double]
minimum x position in the map [m]
~/ymin [double]
minimum y position in the map [m]
~/xmax [double]
maximum x position in the map [m]
~/ymax [double]
maximum y position in the map [m]
~/delta [double]
size of one pixel [m]
*gmapping
ROSに標準で実装されているSLAMのパッケージであるgmapping(http://www.ros.org/wiki/gmapping)についてのちょっとした説明.
Grid mapを構築する為のSLAMであり,このアルゴリズム自体は非常に代表的なアルゴリズムで実装されている.
OpenSLAMプロジェクトのソースを利用しているらしく,
http://openslam.org/gmapping.html
も参照している.
このページに書かれているように,元になった論文は
-Giorgio Grisetti, Cyrill Stachniss, and Wolfram Burgard: Improved Techniques for Grid Mapping with Rao-Blackwellized Particle Filters, IEEE Transactions on Robotics, 2006
-Giorgio Grisetti, Cyrill Stachniss, and Wolfram Burgard: Improving Grid-based SLAM with Rao-Blackwellized Particle Filters by Adaptive Proposals and Selective Resampling, In Proc. of the IEEE International Conference on Robotics and Automation (ICRA), 2005
である.
次に本SLAMのアルゴリズムの簡単な説明をする.
**アルゴリズムの説明
このSLAMはParticleフィルタのフレームワークを用いたGrid mapベースのSLAMアルゴリズムである.
よって,FastSLAM2.0のフレームワークといえる.
ここで,FastSLAM1.0ではない理由は,Scan matchによって遷移モデルの再サンプリングをしているからである.
大まかなアルゴリズムの説明を以下に載せる.
***アルゴリズム
+ロボットの運動モデルに従ってパーティクルを遷移させる
+遷移したパーティクルそれぞれにScan matchをかけて位置を補正する
+各パーティクルに対してレーザスキャンデータと地図との尤度を計算し,Particle FilterのImportance Weightsを計算する.
+地図を更新
+Sequential Importance Resampling(SIR)(おそらく)によってリサンプリング
+1に戻って各パーティクルを運動モデルによって遷移させる
このアルゴリズムではScan matchingをすることによって,遷移させたパーティクルの分布をより確からしい位置に補正を欠けているため,少ないパーティクルでも良い結果が得られやすい.
このコンセプトはFastSLAM2.0と同様なものである.
Scan matchingのアルゴリズムはICPではなく,CARMENのVascoが実装されている.
なので,比較的いScan matchができている.
**gmappingパラメータ
SLAMを行う上で必要なパラメータが幾つかある.
ここでは簡単なパラメータの説明を行う.
gmappingのページにも説明が載っているので参考に.
またslam_gmapping.cppのコメントにも記載されており,こちらのほうが分かりやすいかも.
以下,slam_gmapping.cppのコメントより
(以下,編集中)
***Parameters used by GMapping itself:
~throttle_scans [int]
throw away every nth laser scan
~base_frame [string]
the tf frame_id to use for the robot base pose
~map_frame [string]
the tf frame_id where the robot pose on the map is published
~odom_frame [string]
the tf frame_id from which odometry is read
~map_update_interval [double]
time in seconds between two recalculations of the map
***Laser Parameters:
~/maxRange
[double] maximum range of the laser scans. Rays beyond this range get discarded completely. (default: maximum laser range minus 1 cm, as received in the the first LaserScan message)
~/maxUrange [double]
maximum range of the laser scanner that is used for map building (default: same as maxRange)
~/sigma [double]
standard deviation for the scan matching process (cell)
~/kernelSize [double]
search window for the scan matching process
~/lstep [double]
initial search step for scan matching (linear)
~/astep [double]
initial search step for scan matching (angular)
~/iterations [double]
number of refinement steps in the scan matching. The final "precision" for the match is lstep*2^(-iterations) or astep*2^(-iterations), respectively.
~/lsigma [double]
standard deviation for the scan matching process (single laser beam)
~/ogain [double]
gain for smoothing the likelihood
~/lskip [int]
take only every (n+1)th laser ray for computing a match (0 = take all rays)
***Motion Model Parameters (all standard deviations of a gaussian noise model)
~/srr [double]
linear noise component (x and y)
~/stt [double]
angular noise component (theta)
~/srt [double]
linear -> angular noise component
~/str [double]
angular -> linear noise component
***Others:
~/linearUpdate [double]
the robot only processes new measurements if the robot has moved at least this many meters
~/angularUpdate [double]
the robot only processes new measurements if the robot has turned at least this many rads
~/resampleThreshold [double]
threshold at which the particles get resampled. Higher means more frequent resampling.
~/particles [int]
(fixed) number of particles. Each particle represents a possible trajectory that the robot has traveled
***Likelihood sampling (used in scan matching)
~/llsamplerange [double]
linear range
~/lasamplerange [double]
linear step size
~/llsamplestep [double]
linear range
~/lasamplestep [double]
angular setp size
***Initial map dimensions and resolution:
~/xmin [double]
minimum x position in the map [m]
~/ymin [double]
minimum y position in the map [m]
~/xmax [double]
maximum x position in the map [m]
~/ymax [double]
maximum y position in the map [m]
~/delta [double]
Grid mapのGridの一辺のサイズ [m]