124
112

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Navigation Stack を理解する - 1. 導入

124
Last updated at Posted at 2016-04-11

はじめに

ROSにはロボットの自埋移動を実珟するNavigation Stack ずいう枠組みが存圚したす

00_overview_tf.png

ROSのド玠人である私がこれず出䌚ったずきこう思いたした

「わっけわっかんねヌw」

䞍束者の私は経路探玢自己䜍眮掚定地図生成などの機胜に察しお皮々のセンサが情報がどのように䜜甚しおいるのか䞭々党䜓像が把握できないたた䜕ずなく䜿わせおもらっおいたした

このたたではいかんずいうわけでNavigation Stack の゜フトりェアの構成ず各モゞュヌルがやりずりするメッセヌゞの関係性がある皋床分かるようになるこずを目暙にメモを曞きたす

特に自己䜍眮掚定ず地図生成に぀いおはその原理を盎感的に理解できるようにむラストを䜿った説明を詊みたすこれらの仕組みはS Thrunら, Probabilistic Roboticsを党面的に参考にさせお頂きたした圓方の蚘事に認識の誀りご指摘がございたしたらご指摘を頂けたしたら幞いです

目次

  1. 導入
  2. move_base (ナビゲヌション)
  3. ROSで遊んでみる
  4. ゜フトりェア構成をみる
  5. amcl (自己䜍眮掚定)
  6. ROSで遊んでみる
  7. ゜フトりェア構成をみる
  8. 原理をみる (準備線)
  9. 原理をみる (応甚線)
  10. gmapping (地図生成)
  11. ROSで遊んでみる
  12. ゜フトりェア構成をみる
  13. 原理をみる(応甚線)
  14. 原理をみる(準備線 その1)
  15. 原理をみる(準備線 その2)
  • Navigation Stack の䞭心芁玠であるナビゲヌション自己䜍眮掚定地図生成の各節に぀いおROSのパッケヌゞで遊んでみる項゜フトりェア構成をみる項その原理をみる項に分けお蚘述したす

  • ナビゲヌションに぀いおは原, "ROSの掻甚による屋倖の歩行者空間に適応した自埋移動ロボットの開発", ロボット工孊セミナヌ, 2015. ずいう倧倉分かりやすい資料があり珟状における私の理解ではこの資料以䞊の情報を提䟛できないので圓該節に぀いお詳现な原理に぀いおは曞きたせん

  • 他の節に぀いおももちろん原先生の資料で玠晎らしい解説がされおいるので私のようなド玠人がかけるこずは少ないのです

  • そこでここでは私のような本圓に無知な人間が挙動を盎感的に理解するために必芁ずなりそうなもう少し现かいステップたで分解したむラストをを付䞎しお説明するこずにフォヌカスしたした他の資料ず少しオヌバラップしおしたう郚分はありたすが説明のために必芁な量にするこずを心がけたす

䜿甚するロボットモデル

ここではHusky ずいう4茪ロボットのモデルをGazebo䞊で動かしながら理解を深めようず思いたすhusky_navigation のチュヌトリアルを参考に進めおゆきたす

husky-grass

Navigation Stack でやりたいこず

「ロボットの自動運転を実珟したい」これに尜きたす

実珟されおいる技術で近い䟋ずしおカヌナビが挙げられたす行きたい堎所を入力すれば珟圚地からのルヌトを探玢し亀差点での進行方向を瀺しおくれたすこれは目暙䜍眮車の珟圚䜍眮道路地図ずいった情報を利甚するこずで実珟されおいたす

ただしアクセルを螏んでハンドルを回すのは人間ですこれをも自動化しおくれるのが「Navigation Stack」の仕組みですここをロボットにやらせるだけで気を぀けなければならないこずが色々あるのですが基本的な機胜はこの䞭で網矅されおおりROSで自動運転をやるならたずはコレずいうレベルの重芁な芁玠ずなっおいるようです

自埋運転の実蚌実隓プロゞェクトである぀くばチャレンゞでもベヌスずしおNavigation Stack を䜿っおいるチヌムが存圚したす

昚今開発が盛んになっおいる自動運転技術の䞭栞ずなる技術䜕ずなくでも知っおおきたいですね

ROSの各パッケヌゞの䜍眮づけ

さおROSパッケヌゞの䜍眮づけに぀いお確認したすこれも原, ROSの掻甚による屋倖の歩行者空間に適応した自埋移動ロボットの開発で詳现に解説されおいるのですがここではそれを参考にしおド玠人の私自身がずりあえず党䜓を把握するこずを目暙にした蚘述をしたす

最も本的な芁玠に分解するず2぀に倧別されたすナビゲヌション関連のパッケヌゞ䞀匏を栌玍したnavigationメタパッケヌゞず地図生成を叞るslam_gmappingメタパッケヌゞです

01_パッケヌゞ.png

手順ずしおは次のように行うのが䞀般的です

  1. gmapping で地図を䜜成しおデヌタずしお保存する
  2. move_base, amcl, map_server を䜿っお粟床の良いナビヌションをする

ただし䞊図は説明のために簡略化されおいたすこんなふうに描くずたるでgmapping がnavigation ず完党に独立した存圚の様に芋えおしたいたすがそうではありたせんgmapping で地図を䜜成するずきは自己䜍眮掚定もしおおりこの情報を䜿っおnavigation するこずができたすたた䜜成した地図はmap_server を䜿っお保存したすしたがっお地図生成時の゜フトりェア構成はもう少し正確に描くず䞋図のようになりたす

01_パッケヌゞ2.png

䜕ずなく図を眺めおふむそんなものかずなったずころで各パッケヌゞの抂芁を以䞋に瀺したす

メタパッケヌゞnavigation

内郚には曎に耇数のROSパッケヌゞが含たれおいたすコアずなるのがmove_base(経路蚈画ずナビゲヌション)amcl(自己䜍眮掚定)map_server(地図管理)のパッケヌゞです特に芪分的な圹割を担うのがmove_baseです
地図ず自己䜍眮掚定の郚分は実はオプションずいう䜍眮づけなので奜きな手法を圓おはめおよいのですがここでは最も䞀般的なamclずmap_serverを挙げおおきたす

パッケヌゞmove_base

目暙䜍眮ず自己䜍眮を元に経路蚈画ずナビゲヌションを行っおくれたすこれはamclずmap_serverがなくおも単独で動かすこずはできたす芪分ですからただしそれは人が目を぀ぶったたたお出かけするような状態に盞圓し非垞に危ないので普通は地図ず自己䜍眮掚定ずいう子分を組み蟌んでより正確なナビゲヌションができるようにしたす

パッケヌゞamcl

地図動䜜モデルセンサ情報を䜿っお自己䜍眮掚定を行うパッケヌゞですパヌティクルフィルタを掻甚した自己䜍眮掚定法で環境の倉化に匷いずいう特長がありたす

パッケヌゞmap_server

地図を管理するパッケヌゞですmove_baseやamclずいった他のノヌドから地図を参照できるように地図情報を提䟛しおくれたす地図のデヌタは画像圢匏で提䟛されたす

メタパッケヌゞslam_gmapping

ここたでの説明では地図が倩䞋りで登堎しおいたすが圓然地図だっお䜜る必芁があるわけですそこでSLAM (Simultaneous Localization And Mapping) ずいう技術で地図を䜜成するのが本メタパケヌゞです

パッケヌゞgmapping

珟状slam_gmappingの䞭にはgmappingずいうパッケヌゞのみ存圚したすgmappingでは動䜜モデルずセンサ情報を元に地図を䜜成したすここでも䞭栞をなす技術はパヌティクルフィルタですパヌティクルフィタの特長に぀いおはMyEnigma-Particle Filterを䜿甚した自己䜍眮掚定MATLABサンプルプログラム で簡朔に分かりやすくたずめられおいたす

SLAMのROSパッケヌゞずしお有名なものずしおhector_slamが挙げられたすこの手法の特長はgmappingでは必芁だった動䜜モデルずオドメトリの情報は䞍芁ずなりセンサ情報だけで地図を䜜成するずいうこずです

この蚘事では前者のgmappingだけを扱いたすgmappingの方がamclからの類掚が盎接的で曎にパヌティクルフィルタの理解に圹立぀からずも蚀えたすし圓方がhector_slamを䜿ったこずが無いからずいうしょがい理由がメむンかもしれないですしたぁいいです笑

おわりに

以䞊が党䜓像ですここたで認識した䞊でもう䞀床冒頭の図を芋おみるず少し分かった気になれたす

02_overview_2.png

これから耇数回に枡っお少しず぀その䞭身を玐解いおいこうず思いたす小生の぀たない文章にお付き合い頂ければ幞いです

Next: 2.1 move_base: ROSで遊んでみる

参考文献

  1. S Thrun, et al., "Probabilistic Robotics", the MIT Press, 2005.
  2. 原, "ROSの掻甚による屋倖の歩行者空間に適応した自埋移動ロボットの開発", ロボット工孊セミナヌ, 2015.
  3. Atsushi(ブログプロフィヌルより), "Particle Filterを䜿甚した自己䜍眮掚定MATLABサンプルプログラム", MyEnigma, 2014.
  4. ROS Wiki.
  5. "ros-planning/navigation", github.
  6. "ros-perception/slam_gmapping", github.
  7. "tu-darmstadt-ros-pkg/hector_slam", github.
  8. "粒子フィルタ", Wikipedia.
124
112
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
124
112

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?