■Dynamixelをコントロールするにあたり
DynamixelシリーズをPCから制御ためのAPIとして
DXLIBを公開していますが、Dynamixelが持っているコントロールテーブルへアクセスする事に特化しているため、Dynamixelの素性に応じた違いや行いたい制御方法によっては無限とも言える組み合わせでユーザ自ら試行錯誤してプログラミングしなくてはなりません
。
一応1台のDynamixelの動作を確認したり設定を変更するのであれば
DXCONFというツールである程度対応できますが、こちらもまたコントロールテーブルの中身を可視化させて書き換えがしやすくなっている意外には特別な機能は持っていません。
さらに、マイコンから制御するとなると、これまたPCとは違う知識が要求される面が多々あって、「ひとまず動かしてみる」といった用途には向きません。
結局のところ、プログラミングスキルを身につけないと、要求仕様のレベルが少し上がるだけでハードルがうんと高くなってしまうのが実情です
。
■とりあえずでもある程度動かす
Dynamixelを使用する台数が多いアプリケーションは用途が複雑なケースが大半でしょうから、双方向で通信できる事に期待した機能も盛り込みたくなるのが心情です。しかしながら構成が変わる度にゼロからプログラミングするのはかなり酷ですし、複雑であるがゆえに初期の段階で試運転したくなります。
ということで、少しでもそれらのニーズの一助となればと思い、PCとDynamixel間を
DXHUBや
USB-3WAY等で
接続した環境において、予め設定しておいた様々な動きを再現させる
だけのツールを準備する事としました。
予め各々異なるIDを振りボーレートを同じにしたDynamixelを、みんなつないで一斉に面倒を見てくれるといった感じです。
実は、これと同様な環境が
ROBO-ONEというイベントで頒布したツールにも含まれていましたが、イベントという事もあり解る方にしかわからない環境を要求されてしまうのと複数メーカをサポートしているため、二次的に頒布するには使い勝手が悪いのは否めませんでした。
今回は用途を「ひとまず複数台を連動してスムーズに動かす」に限定し、全て
NI社の
LabVIEWを使って作り直したものを提供することにします。
■大まかな構成
プログラムは2つ提供します。
<ホスト>
Dynamixelとの通信を高い頻度で行い続けるホスト役で、ウィンドウの外観からは動いている事をうかがい知ることがほとんどできませんが、Dynamixelならではの処理ルーチンが集約されています。
基本的に、後述する他のプログラム等から角度と角速度程度の情報をこのホストに投げかけると、目的の角度まで自動的にスムーズに動かしてくれます。
また、アラームやエラー・温度・トルク・現在角度をリアルタイムに取得し続けていますので、これらの情報を他のプログラムからモニタする事もできます。
なお、DynamixelのID・Baudrate・Return Delay Timeの3つの設定に限り本ツールより直接変更する機能も盛り込んでいますので、よほどのことが無い限りDXCONFいらずです。
基本的な操作は、IDやDynamixelの種類、Goal Position等の位置と角度(deg)の変換係数、ホームポジションといった情報を登録するだけですが、接続されたDynamixelを自動的に検索して登録させる事もできます。
<エディタ>
DynamixelのネイティブなIDや位置の概念は無く、ホストに登録された順に軸を扱い、各軸のホームポジションからの角度(deg)の偏差と時間を扱うポーズエディタです。
アニメーションの様にある時点の角度を記憶させ、それを複数用意し、最終的に連続して再生するといった手法を採用しています。本当のアニメーションの様にたくさんのポーズを作る必要はなく、今のポーズから次のポーズへ移行する時間を設定する事で、その間は自動的に直線的に補完します。ようするに道のりを問わないのであれば、A地点からB地点移動する場合はA地点とB地点の2つのポーズだけ登録し、その間を移動する時間を設定すれば良い訳です。なお、FDIII-HCの
ライブラリとほぼ考え方は一緒です。
ポーズはファイルとして保存できますので、二次利用も容易なはずです。
なお、本ツールではポーズの編集と再生以外の機能は持たせるつもりは無く、さらなる利便性やニーズに応える機能は別の機会に提供しようと考えています。
一応ホストはそのままで、エディタをIKを使った6軸アームロボット制御プログラムに入れ替えたものや、もっと実機に近いイメージでポーズをデザインできるエディタ等は既に一部に提供済だったりしますが、他に何か楽しげなネタがあればリクエストいただければと思います。
■制約等
<PC>
最近のマルチコアCPUを搭載したPCがあると良いです。必須というわけではありませんが、ある程のリアルタイム性を確保するためには、ここ数年来のPCがあると良いです。
<レイテンシ>
DXHUBやUSB-3WAYはPCのUSBポートに接続して使用しますが、これらに適用されるデバイスドライバをデフォルトのまま使用すると通信の応答性が極端に悪くなり、スムーズな動作ができなくなります。
各I/Fのドキュメントに記載されている応答の待ち時間を1にしなくてはなりません。
<ボーレート>
先のレイテンシと似ていますが、通信速度が遅いと情報の伝達速度も遅くなります。できるだけ高速な通信が望まれるため、ボーレートは1Mbpsを推奨します。
<Dynamixel I/F>
よく見受けられる散発的だったり一方通行のDynamixelとの通信プログラムとは異なり、ホストではかなり込み入ったトランザクションを処理します。そのため、正常に通信が行えないDynamixelがI/F上に1台でも存在していてはなりません。
<ネットワーク環境>
LabVIEWの機能をふんだんに使っているため、オンライン・オフラインにかかわらずファイアウォールの影響を受けます。アンチウィルス等でポート開放の動作が阻害されないようにしなくてはなりません。
<LabVIEWのランタイムエンジン>
提供するプログラムはexeファイルではありますが、LabVIEW 2011SP1にて開発されているため、
ランタイムエンジンを予めインストールしておく必要があります。
<制限>
フリー版と有償版を準備する予定ですが、どの程度の機能制限をするかは検討中でして、今のところ軸数や動作時間を予定しています。
といったところで、今月中には試食版を提供できる予定です。
技術