内容紹介
ロボットの自律走行・ドローンの自律飛行の鍵となるSLAM技術について一から解説した入門書。
本書は、ロボットの自律走行・ドローンの自律の鍵となるSLAM(Simultaneously Localization and Mapping)技術について一から解説した入門書です。
現在,SLAMは,車の自動運転,ドローンの自律飛行,ヒューマノイドの環境認識など,現在の多くのロボットにおいてかかせない基盤技術となっていますが,多種多様な基礎理論の上に成り立っているため,初学者のアプローチは決して容易ではありません.
本書では,プログラムをつくりながら考えるスタイルにし,読み進めるうちに,必要に応じて基礎に立ち返ることができるようにしました.すなわち,「まずは原理も構造も簡単な部品をつくり,何がうまくいかなかったかを分析しながら,改良して部品を置き換える」という手順で,簡単なところから段階的に理解を深めてもらえるように解説しています(解説に使用しているプログラムはWebサイトより入手可能).
ロボットの環境認識,センシング,SLAMなどに興味があり,既存のオープンソースを使うだけでなく,自分でプログラムをつくれるようになりたい,あるいは,プログラムの内容を理解したいと考えている人に,まさに「打って付け」の書籍です.
このような方におすすめ
ロボット開発者、技術者(趣味用ロボットを含む)
大学・高専の学生(ロボット研究会等)
目次
主要目次
第1章 はじめに
第2章 SLAMの基礎
第3章 SLAMの入出力
第4章 SLAMシステムの具体化
第5章 本書のプログラム
第6章 オドメトリによる地図構築
第7章 スキャンマッチング
第8章 スキャンマッチングの改良
第9章 センサ融合による退化への対処
第10章 ループ閉じ込み
第11章 SLAMの数学的基礎
詳細目次
第1章 はじめに
1.1 なぜ地図が必要か?
1.2 SLAMで何ができるのか?
1 SLAMの効果
2 SLAMの実行形態
3 SLAMの種類
1.3 SLAMで構築した地図の例
トピック1 移動ロボットのナビゲーション
第2章 SLAMの基礎
2.1 SLAMとは
2.2 SLAMの原理
1 地図構築:ランドマーク位置の推定
2 ロボット位置の推定
3 ロボット位置とランドマーク位置の同時推定
4 外界センサデータが一度に大量に得られる場合
2.3 SLAMの要素技術
1 不確実性の扱い
2 データ対応づけ
3 センサ融合
4 ループ閉じ込み
2.4 SLAMの処理形態:一括処理と逐次処理
トピック2 SLAMの関連技術
第3章 SLAMの入出力
3.1 SLAMの入力
1 外界センサ
2 内界センサ
3.2 SLAMの出力
1 ロボット位置
2 地 図
トピック3 SLAMの歴史
第4章 SLAMシステムの具体化
4.1 システム構成の方針
1 フィルタアプローチと最適化アプローチ
2 本書のアプローチ
4.2 システムの概要
4.3 グラフベースSLAM
1 SLAMのグラフ表現
2 完全SLAM問題
3 ポーズ調整
4 本書におけるグラフベースSLAM
トピック4 SLAMは何が難しいか?
第5章 本書のプログラム
5.1 プログラムの概要
5.2 本書で用いるC++の要点
5.3 プログラムの構成
5.4 データセット
5.5 プログラムの使い方
1 プログラムの動作環境
2 入手方法とインストール
5.6 プログラムの起動
トピック5 SLAMと測量の違い
第6章 オドメトリによる地図構築
6.1 センサデータの構造
1 スキャン
2 オドメトリデータ
3 センサデータの座標系
4 センサデータの同期
6.2 実 装
1 プログラム構成
2 統括プログラム
3 センサデータの読み込み
4 スキャンの描画
5 オドメトリによる地図構築
6.3 gnuplotによる描画関数
トピック6 スキャン歪み
第7章 スキャンマッチング
7.1 スキャンマッチングとは
7.2 ICP
1 ICPの概要
2 データ対応づけ
3 ロボット位置の推定
7.3 ICPの実装
1 プログラムの構成
2 スキャンマッチング統括
3 ICPによるロボット位置の推定
4 データ対応づけ
5 コスト関数の最小化
6 コスト関数
7 地図の生成
7.4 動作確認
1 ビルド
2 実 行
トピック7 レーザスキャナによる3D?SLAM
第8章 スキャンマッチングの改良
8.1 改良のポイント
8.2 スキャン前処理
1 スキャン点間隔の均一化
2 法線ベクトル
8.3 地図生成の改良
8.4 参照スキャン生成の改良
8.5 データ対応づけの改良
8.6 ロボット位置の最適化
1 コスト関数の改良
2 最適化手法の改良
8.7 改良プログラムの実装
1 プログラムの構成
2 スキャン前処理
3 参照スキャン生成の改良
4 地図生成の改良
5 データ対応づけの改良
6 ロボット位置の最適化
7 フレームワークのカスタマイズ
8.8 動作確認
トピック8 カメラによる3D?SLAM
第9章 センサ融合による退化への対処
9.1 退化はなぜ生じるか?
9.2 センサ融合
9.3 共分散の計算
1 スキャンマッチングによるロボット位置の共分散
2 オドメトリによるロボット位置の共分散
9.4 センサ融合の実装
1 プログラムの構成
2 センサ融合
3 ICPの共分散
4 オドメトリの共分散
5 スキャンマッチングへの組み込み
9.5 動作確認
1 退化の発生
2 退化の対処
トピック9 退化の余談
第10章 ループ閉じ込み
10.1 ループ閉じ込みとは
1ループが閉じないとなぜ困る?
2ループ閉じ込みの手順
10.2 ポーズ調整
1ポーズグラフ
2ポーズグラフの最適化
10.3 部分地図の導入
10.4 ループ検出
10.5 地図の修正
10.6 ループ閉じ込みの実装
1 プログラムの構成
2 全体制御
3 ポーズグラフ
4 部分地図
5 ループ検出
6 ポーズ調整の実行と地図の修正
10.7 動作確認
1 単一ループの閉じ込み
2 多重ループの閉じ込み
3 実世界データ処理に向けて
トピック10 ループ検出の性能向上
第11章 SLAMの数学的基礎
11.1 線形代数
1 行列とベクトル
2 内積とノルム
3 微 分
11.2 座標変換
1 点の座標変換
2 ロボット位置の座標変換
11.3 最小二乗法
1 線形の場合
2 非線形の場合
3 重みつき最小二乗法
11.4 確率分布
1 確率密度と確率
2 正規分布
11.5 誤差解析
1 誤差の種類
2 誤差の伝播
11.6 ロボット位置の共分散の計算
1 移動によるロボット位置の共分散
2 ランドマーク計測によるロボット位置の共分散
11.7 点群の主成分分析
11.8 垂直距離と共分散の関係
11.9 正規分布の融合
11.10 ベイズフィルタによるSLAM
1 拡張カルマンフィルタによるSLAM
2 パーティクルフィルタによるSLAM
11.11 バンドル調整
11.12 オブジェクト指向フレームワーク
続きを見る