
今風(’07年2月)の小型二足歩行ロボットは、大半がラジコンの取舵に使用されているサーボモータを各関節に流用している。御多分漏れず、EMMA-U0Aも同様の構成を採用した。だがしかし、価格は他方ロボットに対しEMMA-U0Aは1/6・・・とこういう話ではないので次に進もう。
これらサーボモータも、CPUなどから位置データを取得し、反射的に設定位置に移動するように出来ている。動作パターンなどのデータ類はCPU側が持ち、CPUはサーボモータが判断できる形式で、随時データを送り続けねばならない。1個や2個程度ならば、各サーボモータを異なる速度で別々に制御させる事も容易である。しかし人型ロボットともなると、間接数は大抵20を超え、サーボモータの数もそれだけ必要になる。
サーボモータのコントロール自体も、右か左か的な簡潔な動作ではなく、指定角度が1度刻みであったり、0.5度刻みを下回る角度分解能を必要とする場合もある。むしろそれが自然である。そうなってくると、CPUは煩雑な処理を強いられる事となり、設計者が欲する仕様を満たす事が出来なくなる場合がある。
さて、これらがどの程度の難易度であるのかを判断するために、いくつかの現状を挙げてみよう。まず、角度分解能であるが、本来ならば16BIT(65536段階)分解能が一つずつのサーボモータに欲しいところであるが、大半が8、9BIT(256、512段階)分解能である。実際、構造的に、サーボモータの位置精度がそこまで高くなく、9BIT(512段階)分解能あれば今のところは十分である。
8BITの角度分解能を、20以上のサーボモータに割り当てられるならばまだ良い方で、全てのサーボモータを同時に動かす事が出来ず、5個ずつ、10個ずつといった制御を採用しているものもある。それら問題はクリアできても、全てのサーボモータを独立した速度で動かす事は困難であり、搭載されている例は少ない。これを解決するために考え出されたのが、複数の高機能なCPUを用いる方法と、外部にデータコンバータ(パルスジェネレータ)を搭載する方法である。
つまり、ある程度の角度分解能を持ち、全てのサーボモータを同時に、独立した速度で、最低限のCPUで動作させることは非常に困難である事になる。
私が余りたくさんのプログラム言語に精通していない事が原因であるかもしれないのだが、確信している事であり、実際に可能である事を述べよう。現状、他方に搭載されているシステムや、性能をみて判断するに、アセンブリ言語を用いれば、上記の問題はかなりの部分が解決可能である。以下に現在のEMMA-U0Aに搭載されているシステムと性能をまとめる事にする。
搭載CPU:PIC18F452(40MHZ) x 1個
制御可能サーボモータ数:25個
制御モード:各軸 同時移動・独立速度 制御
角度分解能:9BIT(512段階) ※実用最大10BIT(1024段階)
速度分解能:8BIT(256段階)
データ更新周期:0.012s ※実用最速0.005s
モーションサイズ:300モーション程度
(1モーションはサーボモータ25個[位置16BIT、速度8BIT、再生範囲時間16BIT])
特色:目標位置・速度の中途変更が各軸独立で可能
![]()