ROSにつなぐ←URDFをつくる
Meridian計画。
10年ほど前からロボット界隈で注目されているROS(Robot Operating System)というシステムがあります。扱うにはちょっと難解な感じもありますが、センサ系や移動系の処理をサポートするライブラリが豊富で、マニピュレーターの制御なども得意です。
大学の研究でもよく使われているようです。
ヒューマノイド向けの機能はあまり豊富ではないようですが、AldebaranのNaoに採用されていることでもおなじみです。
MeridianはROSがおそらく苦手だったであろう領域(大量のサーボのリアルタイム処理)を強みとしていますので、ROSとつながるようにしておけば良いことがあるに違いありません。
ということで、さっそくMeridianデモ用ロボットの"Roid1"をROS対応にしていきます。
URDFファイルをつくる
ROSのシステムでロボットを扱う際にまず欠かせないのがURDF(Unified Robot Description Format)というロボットモデル用の記述書式です。
手元のロボットを一度この書式で作成しておけば、ROSその他で使用することができて便利ですが、あいにくURDFを書くためのわかりやすい手引き書がないことが欠点のようです。
実際やってみてもなかなか大変だったため、URDFの詳しい作成方法について、別記事としてなるべくわかりやすくまとめておきました。(作成方法へのリンク)
また、今回作成した"Roid1"のURDFファイルもすぐに使えるようgithubで公開しています。
ROSとRvizを導入済みのPCであればすぐにスライドバーで関節を操作できるロボットを試すことができます。(githubへのリンク)
ROSとつなぐ
"Roid1"のURDF化ができたので、今度はソフト側をROSに対応させていきます。
以前の記事で書いたように、Meridianの心臓部はMeridian92という中間プロトコルとそれをサーボに伝えるためのボードです。ROSにつなぐにはROS NodeというROSの一端を担えるソフトを作り、その中でMeridianとの翻訳をさせればOKです。
理屈上、やればできるとわかってはいるものの、細かいところの理解が足りておらずこちらもなかなか大変でした。
(@deveminさん、@witch_kazuminさん、今回もアドバイスをいただきありがとうございました。)
python用に作りなおしたUDP通信部分と、ROSの中で通用するtopicという信号に置き換える部分をrospyで作成して組み合わせ、なんとかROS Nodeを自作しました。
ちなみにUDPには簡単なチェックサムを入れてあります。通信品質については1/100秒以上の更新で0.1%以下のエラーですので、エラーのデータを無視して有効なデータをどんどん送るという方式で良さそうです。
上の動画は以前Unityで行ったこととほぼ同じ内容なのでかなり既視感がありますが、ROS環境で可能になったというのは一歩前進です。
今回はまだサーボ信号→ROSへの一方通行なので、ROS→サーボの方も作っていく必要があります。
次にとりくむこと
市販のロボットに搭載できるサイズまでMeridianのテストボードを小型化していきたいと考えています。ソフトの公開ふくめ、年内のリリースを目指していこうと思います。
並行して、gazebo用のシミュレータやモーション作成ソフトについても取り掛かっていきたいと思います。
次の記事:
前の記事:
目次:
この記事が気に入ったらサポートをしてみませんか?