ROSでLRFを2つ使おうとした
去年も出たけど、今年もつくばチャレンジ2016に出るということで色々やっている。
去年のチームに引き続き、新ロボを投入し色々ハードウェア的なアップデートもされている。
自分はソフトウェア担当?だけど。今年もROSベースシステムでいく。
とりあえず、LRF(レーザーレンジファインダー/URGとかLidarとか呼ばれたりもする)を前後に設置し、二次元で全方位を即位できるようにする予定だ。そこで使用するLRFのUTM30-LX-EWは270[deg]しか測位できない(なので前後に設置する)ので、2つのLRFからのトピックsensor_messages/LaserScanを合成し360[deg]のトピックを生成し再度Publishする必要がある。
やりかたとしては、scan1とscan2のトピックをPointcloudに変換しtfによる座標変換をしパパっと合成、それをブレゼンハムのアルゴリズムやなんかを使って二次元極座標系にしてからsensor_msgs/LaserScanに落とし込めばいいと考えたが、作るのは面倒なのでインターネッツで探すことに。
大抵の機能を持ったパッケージなら、探せばだいたい見つかる。オープンソースであるROSの非常に良い所。
IRALABという研究室によるもので、イタリアのミラノ大学の研究室?らしい。
ira_laser_toolsのlaserscan_multi_mergerというノードが複数のscanトピックを合成してくれるものらしい。
しかし動かない。合成してほしい2つのscanトピックをSubscribeしていない。Launchファイルで指定しているトピックのリストが読み込めていないのか。
環境はROS:Indigo/OS:Ubuntu14.04
解決策ではないが、ソースで原因となってそうな場所を見つけたのでこんなクソみたいな手を加えて一応動作させることはできた。
合成させるトピック名は/front_scanと/rear_scanとした。
とりあえずこんな感じ。 写真など無くて申し訳ない。