2018年4月22日日曜日

第7回ROBO-剣優勝

4月14日に行われた第7回ROBO-剣に参加しました。
初優勝、加えて画像処理テクニック賞を受賞しました。

今回も基本的なアルゴリズムは前回とほぼ同じだったのですが、対象物位置の計測とアームの機械およびハンドアイ系のキャリブレーション精度を向上させました。それにより打突の精度が上がり、良い結果につながったのではないかと思います。

ハードウェアと基本的なアルゴリズムは同じなのですが、実は見えないところで大きな変更を行っています。ソフトウェアをすべて書き直しました。今後の活用等を考えてロボット用フレームワークのROSを使用するようにしました。

プロセス間通信による分散処理・非同期処理のためのフレームワークとして活用した他、センサデータ取得や3次元点群の処理でROS用に作られた既存のモジュールを活用できました。
サーボの制御、ハンドアイ系のキャリブレーション、アームの制御、順・逆運動学計算、動作計画、といった部分は過去の自作プログラムを分割・移植して自作モジュールのノードをいくつか作る形で開発を進めました。


上の動画は、DS325から得られる頂点データ(ポイントクラウド)と、そこからの対象物検出結果を可視化したものです。ROS標準の可視化ビューアrvizを使用しています。以前はOpenGLを使って自前で描画していましたが、それ以外の部分に注力することができるようになりました。
また、深度画像センサからの情報(ポイントクラウド)を処理する基本的な操作を実装したPCL(ポイント・クラウド・ライブラリ)を使用しました。このPCLも元々ROSの一部だったもので、ROSのモジュールとして公開されているものです。
色と位置の両方を考慮したクラスタリングによりクラスタを生成、その中から対象物の色マーカー(赤・黄色・青)部分らしいものを選び、およその中心位置を求めるという操作を行っています。

なお、ROSで多関節マニピュレータといえば多くの解説書・入門書では動作プランニングフレームワークのMoveitと動力学シミュレータGazeboを取り上げています。今回私のロボットでは使用しませんでした。
今回私がROSを使うのがほぼ初めてだった上にROBO-剣の準備を始めたのが3週間前だったという状況で。最初は入門書にしたがってMoveitを使うつもりでした。ところが私のロボットのアプリケーションで要求する機能はこのフレームワークでは出来ないか、あるいは少なくとも入門書に書いてある使用方法を逸脱するためこの短期間では難しいことがわかりました。そのため途中からこれらを一旦保留し、とりあえず動くように前回までのプログラムをROSのモジュールとして移植するにとどめました。メリットは大きいと思うので今後これら既存の強力なモジュールとも繋げられるようにしていきたいと思います。

大会表彰式にて、次回ROBO-ONEテクニカルカンファレンスで発表して欲しいという依頼を受けました。大会前に慌てて書いた汚いプログラムを整理するのと並行して発表も準備していきたいと思います。

1 件のコメント:

  1. このコメントはブログの管理者によって削除されました。

    返信削除

電源分配基板

電源分配用基板を作り直しました。 電源をON/OFFするためのパワーMOSFETと、基板にネジが落ちるなど不慮の事故に備えての安全のための電流ヒューズを載せました。ロボットの操作パネルに付く電源スイッチ(定格5A)は駆動用電流を直接流すためではなく、このMOSFETのゲート電圧を...