フォロ君成長日記3「回転角&測距センサで部屋スキャン」

明けまして、おめでとうございます。

ちょうど昨年の今日は体調を崩し、寝ながら色んなドロイド君を検索している記事がでてきました。

今年は体調バッチリでございます。今年もよろしくお願い致します。

さて、今回はフォロ君がさらに賢くなりまして、部屋をスキャンできるようになりました。
(ただし、現状は静止状態に限る)

その動画がこちら。

リアルタイムに部屋がスキャンされる様子は、結構面白いです。

この機能を実現するには、
----
・フォロ君が向ている方向(回転角センサ)
・その方向にある物体までの距離(測距センサ)
----
の2つが必要になります。

さらに、フォロ君で計測されたデータは、Bluetoothでスマホへ送信、可視化しています。

今回、小さいフォロ君にセンサを入れ込むのは、なかなか苦労しました。

ということで、今回は各種センサを導入した際の工夫について、記載しようと思います。

測距センサ

物体までの距離を測定するため、フォロ君のおでこに測距センサ(VL53L0X)を取り付けました。

元々、ここには押しボタンがついていました。

しかし、初めてフォロ君をみた瞬間「こりゃ、おでこに測距センサを付けてくれ、と言わんばかりの形状じゃないか!(ピカーン)」と、閃いた覚えがあります。懐かしい。

距離測定の仕組み

センサ自体は以下のようなモジュールになっています。

中央の黒い長方形のものが、センサの本体です。はて、小さい穴が2つ開いていますね。

この穴、実は片方からレーザーを飛ばして、それが物体で反射し、もう片方の穴でそれを検知します。

物体との距離によって、レーザーが戻ってくるまでの時間がかわるため、それを測定することで距離を計算する仕組みです。

このように、レーザーが飛んでいる時間を使って計測するので、ToF(Time of Flight)センサと呼ばれています。

制御的には、I2C通信により、測距データを取得することが可能です。

結構モジュールが賢いので、使う側がレーザーなどをあまり意識しなくても、簡単に測距できてしまいます。

回転角センサ

フォロ君が向いている方向を知るため、回転角センサを使います。

といっても、回転角の検知にはいくつか方法があるのですが、今回はフォロ君の駆動機構とスペースを考慮し、「フォトリフレクタ」を使った方法で実現しました。

回転角測定の仕組み

フォトリフレクタの動作原理は、以前こちらの記事で紹介した「フォロ君が物体を検知する方法」と同じです。

上記の構造をぎゅっと小さく凝縮したものがフォトリフレクタで、実際のセンサーの写真はこちら(TPR-105)。

2つの窓がありますが、それぞれの窓に「フォトダイオード」と「赤外線LED」が入っています。

さて、これでどうやって回転角を検知するのか。

まず、フォロ君の回転モータにつながっている「白ギア」を、半分黒く塗ります。

そして、フォロ君ギアボックスの「白ギア」のギリギリ上部分に、フォトリフレクタを取り付けます。(構造上、取り付けた状態で撮影できないので、イラストで解説)

このように取り付けると、白ギアの「白と黒」のどちらが来ているか、フォトリフレクタのセンサ値を読むことで把握できるようになります。

というのも、黒よりも白のほうが光をたくさん反射し、センサの値が大きくなるためです。
(制御的には、AD変換して値を見ます)

なので、センサの値から白と黒が入れ替わった回数を計測すれば、「白ギア」が何回転したかを知ることができます。

あとは、「白ギア」が何回転したら、フォロ君が一周するのか。これが分かれば、向いている方向を検知できそうですね。

ギアの回転数

まずは、フォロ君の回転に関わるギアについて、回転の伝わる順に並べてみます。

同時に、各ギアの歯数も数えて記載しました。

それでは、フォロ君の脚一周が、白ギア何回転に相当するのか計算してみましょう。

まず、赤い矢印はギアが噛み合うもの同士を示しています。

これによると、フォロ君の脚60歯のギアとかみ合うのは、橙青の上段10歯のギアです。

つまり、フォロ君の脚が1回転すると60歯動き、それは10歯で1回転の橙青ギアにとっては「60/10 = 6回転」に相当します。

これと同様の計算をかみ合うギア同士で繰り返していくと、最終的にフォロ君の脚が1回転すると、白ギアが112.84回転する、という結果を得ることができます。

以上の方法により、白ギアの回転数から「フォロ君が向いている方向」を知ることができます。

ただし、フォロ君が移動したら向きがわかんなくなっちゃうので、現状の回転角の検知は、静止状態に限ります。

また、フォトリフレクタを2個使うと、モータの回転方向も検知することができ、誤検知を減らすことができます。

ここら辺は、また細かい話になるので、別の機会に記事を書こうと思います。

おわりに

今回は、回転角センサと測距センサを使って、部屋の形状をスキャンする仕組みをご紹介しました。

スマホアプリの実装も色々工夫したんですが、それはまた機会があれば。

実は、既にフォロ君には他にも色々なセンサを入れ込んであり、様々な情報を知ることができるように育てました。

なので、今後もさらに賢くなる予定です。どんな子になることやら。

ということで、また次回をお楽しみに。