佐倉です。本日もDARwIn-OPの復旧作業を行ないました。
今の問題は、「通信ができているのに一部のサーボモータしか動かない」という点なので、その原因を探りました。
まず、DARwIn-OPに使われているサーボモータの紹介をします。DARwIn-OPにはROBOTIS社製のMX-28Tというサーボモータが20個使用されています。
このサーボモータには、従来のRCサーボモータとは違う点が2点あります。
- 双方向デジタル通信
- 磁気式非接触アブソリュートエンコーダ
双方向デジタル通信にはTTLを使ったものと、RS485を使った物の2種類が用意されており、DARwIn-OPに使われているのはTTLを使った物です。双方向で様々な情報をやりとりできるので、求められる性能が部位やシチュエーションによって違う人型ロボットのサーボモータを1種類であがなってしまっています。
磁気式非接触アブソリュートエンコーダが使用されているため、従来のポテンショメータ式サーボモータで問題になっていた停留点付近の接点の劣化が抑えられ、長寿命が達成されています。
さて、このような特徴を持ったサーボモータなのですが、うまく動いていないので、原因を探りました。
次のような手順で原因を特定するに至りました。
- 通信の設定の見なおし(半二重通信なので、応答までの待ち時間等)→問題なし
- DARwIn-OPにつながったままサーボモータの設定をモニタ→PIDゲインがD=32以外0になっている!
- PIDゲインはRAM領域にあり、何者かが能動的に書き換えない限り、Pのみ32で, IとDが0である→DARwInがD=32を設定している
- 当然Dゲインだけでまともに動くはずもないし、DARwInが間違っている事もないであろう→通信規格がファームウェアバージョンで変わった?
ということで、ROBOTISのMX-28のページを見てみると、P-I-Dの順番で並んでいた設定項目をD-I-Pの順に変更した という記述がありました。
※この件についての、より詳しい情報はまとまり次第別の記事でご紹介する予定です。
つまり、DARwIn-OPを動かすには、最低でもあと2ステップの変更が必要なようです。
- サーボモータのファームウェアのバージョンを揃える
- サーボモータの設定を行なっている部分のソフトウェアを更新する
それと、サーボモータを弄っているうちに動作で不可解な点を見つけました。Dゲインだけが設定されていても、サーボ制御されていれば動作指令が来た時点で少しは動くはずなのですが、ぴくりともしませんでした。もしかしたらちゃんとしたサーボ制御はされていなく、レギュレータとしてPID制御が組んであるのかな、と思いました。
さて、原因を掴んだので、サーボモータのファームウェアの更新を行なっていきます。ファームウェアの更新自体は通常のTTL接続経由で行えるのですが、どうやらDARwIn-OPの通信マスタと干渉してうまくいかないようなので、配線を取り外して行う事になりました。
ただ、古いバージョンのファームウェアが入っているサーボモータはちょうど体の内部に入っていて、配線をちょっと組み替えるだけでも一苦労でした。
5/7の研修時にはちゃんと動くDARwIn-OPを見たいですね。