Powered By Blogger

2020年5月30日土曜日

Jetson Nanoマウス?③

前回の続き。今回は、作成した車体の紹介とテスト動画。今回で最終回。
まずは、システムの紹介。前回紹介の通り、Realsenseカメラを車体上部に搭載、迷路の壁の検出に使用している。
システム全体としては、カメラの画像をJetson Nanoで習得し、モーター制御ボードと通信し車輪を駆動する構成となる。また、HMIとやカメラのデータからの地図情報の取得、走行ナビゲーションは別のPCで実行している。(車体に画面やキーボードを乗せるのはイマイチなので、、、)


車体全景

システム概要 




紹介はこれくらいにして、実際の走行動画。まずはナビゲーションに必要な地図情報の取得。下記の動画の通り、カメラで撮影した壁の情報を2次元の点群に変換し、手動で走行しながら認識できた障害物(壁)を黒塗りのドット絵で保存する。



地図が作成できたらそれをもとに自動走行。下記の動画の通り、作成した地図に対し目標とする地点と車体の向きを指定すると、そこへ至るルートを計算されロボットが自律的に走行する。走行中は、認識できた壁情報と地図情報の整合性をチェックし自身の位置をほせいする。


以上、ここ数年のオープンソースライブラリのマイクロマウス活用事例の紹介。マイクロマウスだと、幾何的に壁の配置が決まっているし、赤外線センサ4つ程度で十分走れてしまうのだが、こんなやり方もありますよと。

2020年5月9日土曜日

Jetson Nanoマウス?②

 前回の続き。今回は、壁の認識方法について。
Turtlebot3のキットには、Lidarセンサと、ステレオカメラ(Realsenseカメラ)が付属している。このうちLidarは、測定レンジ的にそのままでは真横の壁も認識できないし、2次元でしか計測できないので工夫して使用するのも難しいと思い、カメラで壁を認識しようと思い立った。

 カメラでもそのままでは真横の壁も見えないわけだが、他の方もされているように迷路を上から見下ろすようにすれば、壁の上面の赤いところを視野に入れることができる。
 これを認識できないか、というわけで実験をしてみたのが以下の動画である。これは下記図の通りカメラで上から壁を見て、特定の高さ以上で、かつ赤いものつまり迷路壁上面のみを抽出したものである。
 マイクロマウスの競技の性質である、「ロボットの障害物は壁のみで、上面は赤である」という性質を利用し、3次元のカメラの画像を変換して検知した障害物を、高さ情報を消去して2D平面に圧縮し表示している。




動画の通り、赤い点(ハーフマウスの壁、ほんとはクラシックでやりたい、、、車体がそんなに小さくはつくれないので)と黒い点(床に引いた布)からなる生データのうち、コの字状にならんだ点のみ抽出できていることがわかる。

 これで、カメラのデータを変換して2DLidarのようなデータが得られ、LidarによるSLAMのようなことができるのでマウスっぽくなるかと。ちなみにカメラのデータをそのまま用いてSLAM(例えばこれ)をする技術もあるんですが、画像処理が結構重そうで、(よく見る実行環境がcorei7とかメモリ32GBとか、、、Jetson Nano(ARM4コア、4GBではさすがに実行できないよなぁ、、、)
重い環境認識処理自体と、処理後のデータそのものをなんとかしたかったわけである。

 壁の認識がそれっぽくやれたので次はシャーシを作って実際に走行させて、いろいろためしてみようと思う。

2020年5月6日水曜日

Jetson Nanonマウス?①

 突然なタイトルだが、昨今の世の中の情勢により、自宅で過ごすことが多く、何か面白いことできないかな~と思い遊びはじめてしまいました。

 ちなみに今年の大会に向け新作は作っており、それはまずまずいい仕上がりにはなっているものの、具体的にターゲットとする大会とその開催日が不明で、最後の仕上げみたいなのが着手できない感じである。。。

 経験上新作マウスを作る場合はGWくらいまでに基本的な調整を済ませて迷路を走れていないと大会でいい走りをするのが難しく、今年は世の情勢的にそれ以上のペースで開発ができているものの、その先いつ大会があるかわからないので他のネタを仕込もうかと思ったわけである。

 さて、前置きが長くなってしまったが、今回はJetson Nano積んだマウス的なのでSLAMで走行したら面白いんじゃないか?というお話。そういえば私の本業がこういう感じのロボットなのもありまして。
きっかけは、2019年の全日本大会で、副賞としてJetson Nanoをいただいていることである。

また、2018年全日本大会では、副賞としてTurtlebot3をいただいていることを思い出し、開発に着手した。

 これは、下記メーカー公式動画の通り、空間認識技術によって一度通ったルートを自動で走行できるロボットである。

 空間認識にはTOF方式の距離センサを回転させて空間のある平面上の各点の距離を計測する2次元Lidarセンサや、ステレオカメラによる三角測距で距離情報付きでRGB値が取得できるIntelのRealsenseカメラを用いる。それぞれのセンサの長所として、2次元Lidarセンサは特定の平面しか見れないが360度全方向監視できること、Realsenseカメラは全方向は見れない(今回のやつでは視野角70度くらい)が、3次元の物体の距離情報を得ることができるということがあげられる。

いただいたキットにはモーターからLidar/カメラ、バッテリなども含まれているので、マウスの迷路を走らせるならシャーシを小さくすればそれでいけると思っていたが、マウスの迷路のサイズと、付属センサの測距方法(TOF計測や三角測距)では、レンジが合わないという問題があった。
 TOF計測やカメラの三角測距では、良いものでも100mm以下での計測はあまり得意ではなく、クラッシックマウスでも迷路中央に車体があるとき真横の壁が見えないわけである。
 じゃあどうするのってことでやってみたらそれなりにうまくいく方法が見つかった。それはまた次回。