通信環境が生命線であるDynamixel。無線ではないので断線なんぞはもってのほかですし、瞬断も許容できません。おまけに軸数が増えると電線の距離も長くなり、電気屋でも考えたくない現象まで意識せざるを得なくなってきます。
一応プログラマー向けのツールは
DXCONFや
DXLIBといった感じでそこそこ用意はしていますが、オールOKの前提でプログラミングされてしまうといざというときにシステム全体が瓦解しかねません。
また、各APIからはアラームステータスを返す事になっていますが、全ての事象がそのステータスで把握できないため、それだけでシステムとしての故障状態が軽度なのか重度なのかは簡単には判断がつきません。
正常に取得できたアラームステータスを使ってできる事は、人間で例えると微熱だけどもうちょっとがんばるか・はりきりすぎて筋肉痛ぅといったそこそこ動ける「軽度」な状況の時だけで、足がしびれて立ち上がったとたんに足の甲が地面・走ってたらアキレス腱がプチッ・ヘルニアで突然脱力!(例えが痛々しくてごめんなさい)といった「重度」な状況での動作を考えるのは至難の業です。
ましてやアテにしている通信の応答すら断線等で得られないとなると、神経が切れてしまったの如くどうのしようもありません。
それらを全て解消するという訳ではありませんが、少なくともネットワークの健全性ぐらいは簡単に確認できても良いだろうということで、今回簡単なツールを用意しました。
全然仰々しい物ではなく、IDを書き連ねてスタートかけると各IDのデバイス名を取得して延々と通信し続けてその状況をレポートするだけです。
元はと言えばDXLIBを使う際の
タイムアウトオフセット値をいくつにするべきかを判断するために作った代物ですが、DXLIBを使用したユーザアプリとはさほど乖離していないだろうと考えて公開します。
Dynamixel I/F Checker
ちなみに、本ツールは通信環境の健全性を見定めるためにRead Instructionのみを使用し、アクチュエータへの位置指令等は一切行いません。