(半分日記)
なんの因果かSLAMをやっていく必要に迫られており、慌てて勉強をしている。具体的には以下の本を買って読みつつ、コード部分について写経を始めている。
プログラムがちゃんとついていて、順々に機能が追加・発展される形なのは理解しやすいと感じた。第6章からが主なプログラムの解説部分で、
第6章 オドメトリによる地図構築
第7章 スキャンマッチング
第8章 スキャンマッチングの改良
第9章 センサ融合による退化への対処
第10章 ループ閉じ込み
という構成になっている。今回は最初、第6章のところ相当する「オドメトリによる地図構築」のところまでが動くように実装していった。
写経用リポジトリ
元プログラムでは地図描画部分についてgnuplotにパイプを繋いでプログラム実行中に出力し続ける仕組みになっているが、GUIに繋いでいないDockerコンテナで作業し始めたりしたのもあって、一度テキストファイルにマップの情報書き出してから後で画像化するように変更している。
一番最後のフレーム時点での結果を画像化したものが以下の通り。
きちんと本での結果とほぼ同一のものが得られている。オドメトリだけなので歪みが出ており、もちろんループしたときの整合性も取れていない。ここから7~10章の通り改良を進めていく予定。ただ、オドメトリのみから次のステップがまた結構幅の大きい改造が必要そうな感じではあったので苦労するかも。いつまでかかることやら。