おはようございました。
皆様におかれましても、そろそろボーナス払いが解禁される頃合いですね。
相変わらず私は、税金と電気周りだけ魔改造中の家のローン、重なってくる2台分の車検代に殆ど消えるのですが、それでも悪あがきをしようと一歩ずつ前に歩んでいます。
そう!ついに手を出してしまった『Digital Discovery』!!
少し前のネタで『¥1500ほどで出回っている2D LiDAR(360度の距離の測れるセンサー) MB-1R2T』の話を振ったのですが、プロトコルをいろいろと調べている間に手持ちの測定器では限界が見えてしまったのです。
1回の送信で40点分の位置を送る様な通信データなのですが、我が家のDL1740はUARTの解析機能はないし、Analog Discoveryでは記録メモリの少なさから欲しいデータが少し見えたところで途中で切れてしまいます。
最近LiDARを仕事で触ることも多く、結構長いパケットを調べることが多いのです。
『仕事でも使えるし、まぁいいっか…』
と、
『いや、会社で買えよ!』
なんて突っ込まれそうな気もしますが、
『会社で買うならもうちょっとマシな物を買いたいのだけど、それだと一部の上がハンコ押しそうにない』
ということで悩んでおります。
かと言って、
『買ったら同じ機能に見えるものは絶対買い替えさせてくれない』
という動きの方が圧倒的に強い気がするので、なかなか動けないでいるのです。
会社の測定器や工具は私物より残念な代物ばかりなので、
欲しいものばかりで大変困っている(というか必要なので、家が実質第2の開発室化してる)状況。
誰か社内で投げ銭してくれませんかねぇ~
なんて思ってしまう今日この頃です。
前回のブログではデーターのヘッダを追記してあるのですが、Digital Discoveryみたいにメモリがそこそこ多いものを使うと、細かい挙動が見えてきました。
さて、例の『MB-1R2T』ですが、最初のテキストデータ送信後はこんな感じでデータが出ることが分かってきました。
1バイト目: AA ヘッダ1
2バイト目: 55 ヘッダ2
3バイト目: 3C コマンド種類?時々変わる
4バイト目: 28 データの個数 時々変わる
5バイト目: xx 開始角度下位
6バイト目: xx 開始角度上位
7バイト目: xx 終了角度下位
8バイト目: xx 終了角度上位
9バイト目: xx 不明(エラー訂正用?)
10バイト目: xx 不明(エラー訂正用?)
11バイト目: xx 信号品質
12バイト目: xx 距離下位
13バイト目: xx 距離上位
14バイト目: xx 信号品質
15バイト目: xx 距離下位
16バイト目: xx 距離上位
…以降データの個数分『信号品質、距離下位、距離上位』が続く…
角度のデータは0xB400が360度である可能性が高いです。(というかほぼ確定だと思う)
流れてくるデータとしてはこんな感じです。
こんな感じでたまに小さいパケットも飛んできます。
1個しかないデータはコマンド?(3C)としている部分まで変わります。
流れてくるデータ的には距離っぽいのですが…
秋月電子での値上げとカードの支払日の関係から、昨日Digital Discoveryが届いたばかりですので、データの個数が変わる条件がまだ絞り込めてませんが、普段は40個(0x28)連続していますが、たまに個数が不確定に減ります。
各々の角度と長さを求めるには開始位置と終了位置の差分を(データ個数-1)で除算せねばならないので、マイコンの方が圧倒的に楽です。
私は個人的都合でFPGA使ってますので、この除算まで含めて実装すべきか?
動作確認程度の実装だし、少しのデータなので、無視して飛ばすか?
少々悩んでおります。
まぁ、どっちにしてもこんなしょうもない機能にCPUリソース食いたくないので、本気でやるならFPGAで除算実装して、XY座標化や補間も実装しますが…
そんな訳で、今更この手のLiDARに手を出された方には参考になればと思います。