製品情報
2023.11.07
「ROS開発キット」開発レポート GNSS+ホイールオドメトリで自律走行!
こんにちは。ロボティクスエンジニアの吉田です。
本記事は、ROS開発キットを”ハードウェアを気にせず、いきなりソフト開発ができる!” 製品とすることを目的に、「つくばチャレンジ」という技術チャレンジへの参加を通してROS開発キットをブラッシュアップするプロジェクトの開発レポートとなります。
2回目の本記事では、屋外におけるロボットの自己位置推定についてご紹介します。
同テーマの記事は
「ROS開発キット」開発レポート つくばチャレンジに参加します!
から連載しておりますので、こちらもぜひご覧ください。
GNSS自律走行ロボットの自己位置推定
ロボットが自律走行を行うためには、まず自分がどこにいてどちらを向いているかを把握する自己位置推定を行う必要があります。この自己位置推定を正確に行うことは、安定した自律移動を行うためには非常に重要になります。自己位置推定には様々なセンサが使用されますが、センサには環境や使用方法により得意・不得意があるため、「どこでも正確な自己位置推定ができるセンサ」というものは存在しません。
そこで自律ロボットでは一般的に、複数の種類のセンサ情報を統合し自己位置を推定しています。センサの不得意な箇所を補い合う形で複数種のセンサを使うことで、ひとつのセンサで自己位置推定するよりも安定して精度の高い自己位置推定が可能になります。
今回のつくばチャレンジの屋外走行でも、GNSSとホイールオドメトリを使い自己位置推定を行います。それぞれの特徴は下記の通りです。
※GNSSの詳細な特性は前回の記事もご参照ください。
長所 | 短所 | |
GNSS |
地球上の位置がわかる 移動量で精度が落ちない |
電波状況により精度が落ちる ロボットの向きがわからない |
ホイールオドメトリ |
向きの変化も検出できる 短距離の移動は正確 |
長距離の移動で精度が落ちる ずれるとずれを補正できない |
GNSSでの「向き」
GNSSは、高い精度で自分がどの位置にいるか測位することが可能です。今回のシステムでも、屋外ではこれを強く信じて自己位置を推定します。しかし、GNSSは単体で「地図に対して、ロボットがどちらを向いているか」という角度情報を取得できません。GNSSで自己位置推定を行うためには、何らかの方法で角度情報を取得する必要があります。
GNSSを用いて角度情報を推測する手法は、1つのロボットにGNSSを2つ搭載する方法が一般的です。
この手法はGNSS1個では推測できなかった情報が取得可能となる半面、測量用のアンテナといった計測装置も2倍数必要になるため、コストも増加します。そこで、本システムでは、ロボットは多くの場合前に進むという条件の下、「GNSSで計算される自己位置が動いた方向にロボットが向いている」という計算をすることで、1つのGNSSから角度情報を算出する形としました。
ただし、ロボットが旋回を行った際や遅い速度で走行している際は、角度の精度が低くなります。そのため、これらの状況においては上記の式で算出される自己位置を信頼せず、ホイールオドメトリによる自己位置を信頼します。
ホイールオドメトリとクローラ
GNSSの補助として使う「ホイールオドメトリ」とは、ロボットの移動機構(CuGoの場合はクローラ)がどれだけ動いたかを検出するセンサを用い、自分の位置や速度を計算したものの呼称です。
ホイールオドメトリはロボットの移動量を直接計測する値となるため、短期間の計測においては高い精度を持っています。しかし、計測時間が長くなるほど誤差が蓄積していく累積誤差が存在します。また、石を踏むなどによりタイヤの空転が発生した際、それを補正することができません。
累積誤差を確認するため、実際にCuGoを利用したロボットが走行した位置とホイールオドメトリを比較した画像が下の画像になります。青い点線が実際に移動した軌跡、赤い矢印がホイールオドメトリです。最初のうちはロボットの位置とホイールオドメトリが一致していますが、後半になるにつれて誤差が大きくなっていることがわかると思います。
この誤差の要因は、部品の寸法誤差や取付け誤差、部品の変形といった機械的な誤差に起因する点が多いです。オドメトリの算出のためにプログラム上で設定されたパラメータ(タイヤの径など)が、実際のハードウェアと異なる値となっているために誤差が発生します。この誤差は、パラメータを個体ごとに違う適切な値に調整することで、誤差の低減を期待できます。
空転は瞬間的に大きな誤差を生じる原因となります。タイヤの回転した量と同じだけロボットが動いていればホイールオドメトリと自己位置のずれは発生しませんが、実際には走行面の路面状況によりタイヤが滑ってしまったり、タイヤが地面から浮いてしまった状態となった際に「タイヤは回っているがロボットは動いていない」という状況が発生してしまいます。
CuGoを使用したROS開発キットでは、タイヤではなくクローラを使用しています。クローラは車輪に比べ地面との接地面積が多く、地面との滑りや浮きが発生しにくいです。そのため、車輪型の自律移動ロボットにくらべ、クローラ型のロボットはオドメトリの精度が高いと体感しています。(特に直線の移動において顕著となります。)
本システムでは、ロボットの機械誤差を可能な限りプログラムに反映させて、屋外を走行した際のホイールオドメトリを確認しました。下の図は、「ROS開発キットをコントローラで6m先の地点に直進させ、180°折り返して元の位置に戻る」という動作を4回繰り返した際のホイールオドメトリをプロットしたものです。タイヤの空転もなく、蓄積誤差も少ない、非常に精度の高いホイールオドメトリを取得できていることがわかります。
屋外自律走行の様子
上記のGNSSとホイールオドメトリを組み合わせた自己位置推定をもとに、自律走行を行うプログラムを作成しました。実際につくばチャレンジの試走会で自律走行を行った様子が下記の動画となります。
動画の通り、頭上に遮蔽物のない環境では安定して自律走行ができるようになりました。つくばチャレンジの試走会でテストをしている中でも、自律走行に失敗することはほとんど起きていません。
9月・10月の実験走行を終えて
CuboRexは、9/23(土)、10/21(土) に行われた実験走行会に参加してきました。最初の試走会ではコントローラで操作しているロボットも多かったですが、10月になると自律走行を行うロボットがかなり増えてきました。本走行会まであと1ヶ月を切り、追い込みの時期になってきたことを強く感じます。
CuboRexも、2kmのコース完走を目指し引き続き開発を進めており、現在は本番に向けて屋内の自律走行の調整を進めている状態です。次回のレポートでは、この屋内の自律走行の説明と、つくばチャレンジ全体の報告をしたいと考えています。
つくばチャレンジ2023の本走行会は11/19(日) に開催されます。一般の方もご覧いただける街中を舞台としたロボットチャレンジとなっておりますので、お近くにお住まいの方や、同日につくば市にお越しになる方は、ぜひご覧いただけますと幸いです。
お問い合わせ
ROS開発キットの詳細情報についてはこちらをご覧ください。
お求めの場合は、上記お問い合わせにお願いいたします。
https://prtimes.jp/main/html/rd/p/000000057.000022568.html
また、このプロジェクトではROS開発キットという製品を使用していますが、別シリーズのクローラロボット開発プラットフォームにセンサやPCを追加することで同様な自律走行をすることも可能です。ぜひ製品ページをご覧ください。
https://cuborex.myshopify.com/collections/cugo-series
CuboRexでは、いままでロボットがうまく立ち入れなかった不整地環境で役に立つロボットを開発しています。より詳しい情報を知りたい方は以下までお気軽にお問い合わせください。