2. 始める前に
Ubuntuは コンピューターを動かす基本的なプログラム(オペレーティングシステム)の一つです。
私たちがよく使うWindowsやMacOSもオペレーティングシステムであり、Ubuntuもその一つです。
しかし、ロボット分野ではUbuntuが標準として使われています。
その理由は?
簡単に比較すると
| 項目 | Windows | Ubuntu |
|---|---|---|
| 一般ユーザー | 文書作成、ゲーム、YouTubeなど | 開発者、研究者、ロボット |
| 使用目的 | 便利な日常用 | 正確で自由な開発用 |
| 費用 | 基本的に有料 | 無料 |
つまり、ロボットはUbuntu上で動かすのが最も自然なのです。
ROSはRobot Operating Systemの略です。
名前は「オペレーティングシステム」ですが、実際にはロボットをより簡単に作れるようにするソフトウェアの集合体です。
なぜ必要なのか?
ロボットは複数のデバイスが同時に動作します。
これらすべてがデータをやり取りし「協調」することでロボットが動きます。
ROSはこの協調を標準的な方法で実現する「共通言語」の役割を果たします。
例
このような情報を決められたルールに従ってやり取りできるようにします。
SLAMの核心となる問いは2つあります。
「自分は今どこにいるのか?」
「周囲の環境はどのようになっているのか?」
SLAMはこの2つの問題を同時に解決する技術です。
なぜ必要なのか?
家や倉庫などの屋内ではGPSがうまく機能しません。
そのためロボットは自分で周囲を観察しながら、自分の位置を推定する必要があります。
ロボットが使用する情報:
これらのデータを組み合わせて、ロボットは「地図と自分の位置」をリアルタイムで計算します。
簡単に言えば:
「コンパスなしで地図を描きながら旅をする探検家」のようなものです。
Mappingとは、地図を作るプロセスです。
ロボットが周囲を移動してスキャンすると、コンピュータは
「ここは壁です」
「ここは通れる通路です」
と記録します。
こうして作られた地図は、写真のような画像として保存されます。
例:
██████ 壁 ・ ・ ・ ・ 通路(通れる道)
Mappingは、後で自律走行を行うために必ず最初に行う必要があるプロセスです。
Navigationとは、作成された地図の上で目的地まで自律的に移動するプロセスです。
ロボットが行うこと:
一つの例として考えると:
ナビゲーションアプリ(カカオ/Google)をロボットが自分で起動して、道を探して進むイメージです。
全体の概念フローを一目で確認
| ステップ | 説明 | 結果 |
|---|---|---|
| Mapping | 移動しながら地図を作成 | 周囲の地形情報を保存 |
| SLAM | 地図と自分の位置を同時に計算 | 「私は今ここにいる」 |
| Navigation | 地図上で目的地まで自律移動 | 自律走行完了 |
理解を助ける直感的な比喩のまとめ
| 概念 | 人に例えると | ロボットでは |
|---|---|---|
| Ubuntu | 私たちが生活する「基本環境」 | ロボットソフトウェアを実行する オペレーティングシステム |
| ROS | 共通言語およびコミュニケーションの仕組み | センサー・モーター・制御が協力するルール |
| SLAM | 地図を見ながら道を探す探検家(Explorer) | 移動しながら地図作成+自分の位置推定 |
| Mapping | 周囲の地域を手で描く地図作業 | LiDARで壁・通路を記録 |
| Navigation | ナビゲーションを起動して目的地まで行く | 地図を基に自律走行 |