自律走行用navigationパッケージについて(ROS.Python)

本日のメモは、ROSのロボットの自律走行を行うnavigationパッケージについてです。研究で使うため、色々調べ、中身の理解をして、せっかくなのでメモとして残します。

まず、このnavigationパッケージとは何かというと自律走行させるための機能を詰め込んだものです。 自律走行させるための機能と言っても色々あり、初めはちんぷんかんぷんになると思います。なので簡単に必要な機能の説明を行います。

1つ目に必要な機能がロボットのマップを準備する機能です。これはmap-serverと言われるものです。ロボット用のマップを作成し、それをロボットに送信してくれます。
ロボットは賢くはないので、マップを自律走行する際必要とします。マップはGoogle マップとかではなく、ロボット視点のものを準備します。
この準備に関してはgmappingというパッケージを使用します。ここでは、ロボット用のマップが必要なんだぁくらいで考えてもらって大丈夫です。

2つ目は、レーザーセンサーの機能です。
基本ロボットはレーザーセンサーの値を元に自分の位置の推定などを行います。
レーザーセンサーは、ロボットに取り付け、動かすことが多いと思います。その場合は、レーザーセンサー起動用のパッケージを起動する必要があります。基本、センサー起動のパッケージは、そのメーカーのサイトとかにあるのでインストールしてください。
3つ目は、レーザーセンサーの値をロボット用に変換する機能です。いわゆるtfというものです。
自律走行する際、ロボットは、自分の機体を中心に位置などを算出します。レーザーセンサーを後でロボットに取り付けた場合、レーザーの値をロボットの車体中心に変換する必要があるのです。
また、自律走行を行う際は、rvizというロボット可視化ツールを使用します。レーザーセンサーは、車体の動きによって当然値が変化します。そのため、それにそって値を変換してあげる必要があります。

4つ目は、自己位置推定の機能です。いわゆるamclというやつです。 ロボット用のマップとレーザーで検出した値から自分のマップ上での位置を推定します。この昨日は、パーティクルフィルタなどが使われていることが多いそうです。
パーティクルフィルタはここでは深堀りしませんが、現在地図上に表示されているロボットの周りにたくさんの点を起き、移動させた時、どの点がその位置と近いかをレーザーの値から判定し、自己位置を常に推定する仕組みです。

基本これらを組みあわせて、自律走行を行っていきます。足りないものがもしあれば教えて下さると助かります。

この記事が気に入ったらサポートをしてみませんか?