レーザー距離センサVL53L0Xを動かしてみました。
無事動きました。
レーザー距離センサVL53L0Xが無事動きました。
チャンとしたところのものを買ったのは正解でした。
レーザーセンサ自体は同じSTマイクロなんですが、回路が違うんでしょうね。
下の写真にあるようにArduino unoを載せたZumo Robotに取り付けてI2Cとして認識されているかどうかを確認しました。
結果がコチラ。
まずは、VL53L0Xを接続せずにI2Cが使っているアドレスを調べました。
すると下の図にあるように、アドレス1Dと6BにI2Cデバイスを見つけました。
そしてVL53L0Xを接続して同じように調べると下の図のように
アドレス1D、29、6BにI2Cデバイスを見つけました。
結果、アドレス29がVL53L0Xであることが判ります。
VL53L0Xがちゃんと認識されたので、いよいよ動作確認をします。
動作確認は、githubにあるPololuのVL53L0Xのコードを使って行いました。
それがコレ。
VL53L0Xは波長940nmの不可視光線を放出し、それが対象物にぶつかって跳ね返ってくるまでの時間を測定することで対象物までの距離を測ります。
githubのコードは幾つかの測定方法を含んでいます。
大きくは、continuousとsingleがありsingleには長距離優先、速度優先、精度優先があ
今回は、これらの測定方法を試してみることでZumo Robotで使う測定方法はどれがいいかを考えてみることにします。
測定結果です。
VL53L0Xの前にキャラメルの箱を置いて距離を測りました。
下の写真の右端にZumo Robotに載せたVL53L0Xが見えます。
左端の水玉の箱がキャラメルの箱です。
まずは、singleの長距離優先の結果です。
箱の位置は変えていないのですが、短いときで728mm、長いときで792mmとなっています。
また、8190mmとなっているのは測定できなかったときではないかと思います。
次にsingleの速度優先です。
下の図が結果ですが、短いときで658mm、長いときで849mmと長距離優先より測定の幅が広くなってしまっています。
ところが、8190mmは存在せず、測定不能な状態にはなっていないようです。
誤差は大きいが測定は行う、ということのようです。
次にsingleの精度優先です。
下の図が結果ですが、短いときで740mm、長いときで792mmと3つの測定方法の中で一番測定の幅が小さくなっています。
但し、回数は少ないものの測定不能を意味すると思われる8190mmは存在します。
次にcontinuousでの測定を試しました。
まずは、キャラメルの箱とVL53L0Xの距離が短いところから始めました。
その結果がコチラ。
短いときが126mmで長いときが132mmです。
なかなかのものです。
ちょっとずつ距離を離しました。
その結果がコチラ。
短いとき241mm、長いとき246mm
短いとき471mm、長いとき505mm
短いとき748mm、長いとき858mm
短いとき687mm、長いとき976mmで測定不能もあり。
以上の測定からVL53L0Xの特徴が大体わかりました。
まとめ
VL53L0Xは、
・短い距離は測定不能にならず数ミリの誤差で測定できる。
・距離が長くなるにつれ誤差範囲は大きくなる(カタログ上は3%)。
・更に距離が長くなると測定不能の状態も発生する。
・測定不能の状態をできるだけ発生させないようにするためには、
singleの速度優先で測定する。
以上のことから、Zumo Robotでは、
・まずはsingleの速度優先で使ってみて測定誤差が問題なければOK
・測定誤差が問題になればsingleaの精度優先で測定不能のときは無視する機能を
つけて対応
という順番でやってみようと思います。
今日はここまで。
では、また。