LMS200をUSB接続する

[| ]  最終更新: 2011/02/10 20:09:59

はじめに

本ページではSICK社製レーザーレンジファインダ LMS200を、開発したUSB-シリアル変換器で接続した事例について紹介します。

現状で、

です。

Windowsでの使用

Windowsはいろいろと制約が多い関係で、いまのところ、普通?の方法では500kbpsの通信はできていません。 レジストリを書き換えて(FTDIの解説をヒントに小細工)、Windowsをだまして実現しています。

この項準備中。


Linuxでの使用

Linuxでは、FTDIのドライバが、現行の2.6では標準で搭載されているため、USBコネクタに接続するだけで、認識されます。
(認識の確認は、刺したところでrootでdmesgコマンド)

あとは、普通にシリアルポート用のプログラムを書くだけで、通信速度設定でB500000を指定するのみです。

以下、動作を確認したプログラムをご参考までおいておきます。
LMS200との通信クラス (2008/03/15, 12,179 bytes)
180[deg]/0.25[deg]スキャンで距離データをダンプするプログラム (2008/03/15, 4,145 bytes)
同、グラフ表示(以下参照) (2008/03/15, 5,839 bytes)
EGGX用g++スクリプト (2008/03/15, 1,274 bytes)

sickcomif.ccは、LMS200と通信するために開発したC++のクラスです。
最低限のテレグラムコマンドしか実装していませんが、一応、データの検出はできます。
ただし、かなりいい加減&動けばいいやなので、通信がちゃんとつながらない場合があります(おそらく、ハンドシェークでなにかミスがある)。

sickmap.cc の実行例
sickmap.cc の実行例
sickdump.ccはsickcomif.ccを利用(include)して、定期的に距離データをテキストで表示します。 そのままでは実用性は薄いと考えますが、動作確認には使えます。
gcc -o sickdump sickdump.cc
でコンパイルしてください。

sickmap.ccは右図のように、画面にリアルタイムに検出値を表示します。
ただし、コンパイルにはEGGX / ProCALLが必要です。また力任せに書くため、PCにもそれなりにスペックが必要です(Xが速ければいい)。
EGGX付属のコンパイルスクリプト egg は C言語プログラムのコンパイル用なので、それを修正して作ったeg++を用いて、
eg++ -o sickmap sickmap.cc
でコンパイルして使います。


以上は、自作の変換基板、秋月部品でつくった回路ともに動作を確認しています。

sickcomif.cc は3年ほど前に勢いで作ったこともあって、すでにわからなくなっている部分もあり、お問い合わせや拡張にはお答えできない可能性が大です。が、ご自分で適当に書き換えて使う分にはいっこうにかまいません。
なお、通信ポートの設定については、SickLMSIF::SetComSpeed(int baud,int local) をご覧ください。シリアルポートの使い方の例にはなるかと思われます。

蛇足:制御専用機なのでrootでログインして、そのまま作業しています。気にしないでください:-)



熊谷正朗 [→連絡]
東北学院大学 工学部 機械知能工学科 RDE
[| ]