かみやんの技術者ブログ

主にプログラムの話です

Top-URG(UTM-30LX)と接続その2

昨日は、Top-URG(UTM-30LX)との接続で、テキストでTop-URG(UTM-30LX)からPCへデータを取ることができた。
今日は、そのデータのパースと、可視化を行った。
データ要求は、MDコマンド(連続スキャン3キャラエンコーディングモード)で、4ステップでまとめる&秒間10回スキャン&無限回数要求で取得。

得られるデータは、下記のような感じ。

MD0000108004100;741478125000
99b
03FnG
03E03U03U03O03K03N03L03L03P03N03O03O03P03P03U03U03V03Y03\03b03d0E
3e03e03e03e04\03o04A0Zm0[90[=0oY0\P0\O0\P06006803A02g02m02X02^021
c0330340ad0b80bJ0bT0c60c=0cW0d:0`X0^W0\;0[:0YF0X20VY0UD0TA0Rf0R=H
0Q00PA0ON0NR02j02j03303303303302i02k02c02`02`02\02Z02\02\02Z02]01
2W02]02^02d02f02=02=0KR0IF0Hf0Gd0Fa0FU0ED0BR07E04F03;02d02a02_02H
_02]02]02^02_02Z02\02V02W02`02`02_02_02a02h02g03608J0:70:h0;60;[:
0;h0<B0<O0<\0=<0=o0>20>T0?80?I0>=0>20>W0?h0Ad0BO0AN0@h0@@0?V0?90[
>a0>?0=\0=P0<f0<M0<E0;i0;d0;d0<10<D0<G0<T0<b0=90=C0=S0=\0=i0><0>K
E0>U0?10?90?V0?h0@D0@f0AC0A\0B70Ba0CH0Cl0D[0EJ0EM0E=0E80E50Df0D]A
0DS0DN0Be0A_0Ac0Ae0An0AA0A70A70AE0AH0@S0@S0A20AM0A?0@d0@n0AJ0AO0N
A[0Ae0A]0A]0AH0AG0AC0A^0BS0BA0Ad0Ab0Bc0Bb0BG0An0B10B10BE0C]0CB0BG
o0Bi0CG0DX0Cg0D?0CT0CE0CL0F=0HJ0H[0L50LL0LW0M80MR0Mf0N20j40Uc0UL=
0Te0So0Pi0Pi0TN0NX0M60M90MS0MM0MJ0N>0MY0MB0M;X

1行目のMD〜が、送信したコマンドのエコーバック。2行目の99bが、レスポンスコード(99はOK)。
3行目の03FnGが、Top-URG内の時計。4行目以降が、スキャンデータ。
スキャンデータは、3キャラエンコーディングというSCIP(Top-URG(UTM-30LX)の採用しているプロトコル)の独自フォーマットで、64文字(6bit)の印字可能文字を3文字(18bit)で、1データ。1データは18bitなので0〜262143まであらわせる。単位は、mm。各行は、¥nがあり、その1文字前がチェックサム

で、PC側メインソフトであるAibiUIにTop-URG(UTM-30LX)との通信機能、レスポンスデータのパース機能、可視化機能をつけたものが、下記。

これで、部屋の形状とかもばっちり分かります。これで壁に沿って移動したり、障害物を避けて移動したりできるようになるんですね。(ちゃんと作れば)
楽しみ!