ホーム > 製品概要 > EMMA-U0A > サーボ制御 Vol.5

会社概要

・EMMA-U0A(エマ・ユーゼロエー) ソフトウェア

サーボ制御 Vol.5

サーボ制御 Vol.5サーボ制御 Vol.5.2 前項で、一つのサーボモータをコントロールする方法を紹介してみた。今回はサーボモータを複数扱う為の方法を紹介したいと思う。
 0.55msから2.55msの間で設定されるON時間が重要である事は述べたとおりである。複数のサーボモータをコントロールするという事は、それぞれ独立したON時間を複数用意する事である。人型ロボットには20数個のサーボモータが搭載されている事が多い。しかしこの、20数個という信号を、同時に生成する事は大変である。この説明では、信号をONにしてからOFFにするまでの時間を「ON時間」と呼んでいる。信号をONにするタイミングを20数個合わせる事は難しくない。だが、ロボットの各関節が欲している位置は違い、ON時間もそれぞれ異なる。信号をONにするタイミングを全てあわせたとしても、信号をOFFにするタイミングはそれぞれのサーボモータにより異なる。高い性能をもつCPUであったり、頼る事の出来る拡張機能が搭載されている場合、またはCPUを複数用いているならば、比較的容易に可能になるだろう。しかしEMMA-U0Aに限って言えば、高い性能でもなく、拡張機能もそこまで頼れず、複数用いるわけでもない。信号をOFFにする時間をそれぞれ変化させる事は困難を極めるだろう。


  前回の制御では、最終的にそれぞれのサーボモータにより異なる、ON時間を、5つ程度ならば、それなりの性能を得る事が可能である事を紹介した。
だが、EMMA-U0Aの仕様である0.012秒で全てのサーボモータの位置を更新する、というところには到達していない。それと、サーボモータのそれぞれの位置により、位置の更新にかかる時間が大幅に狂ってしまう。
 それぞれ大きな欠点ではあるが、今回は後者の問題である時間が狂う問題についての対策について説明していこうと思う。
 上左図にあるとおり、至って簡単な対策である。信号がONからOFFになるタイミングは、それぞれのサーボモータの信号により異なる。だが、次の信号を生成開始するに当たって、今までは一つの信号のON時間が終了してすぐに、次の信号を生成していた。これを改めて、一つの信号のON時間が終わってもある一定の時間に至るまで、ここでは2.55msという時間がON時間生成開始から過ぎるまで、次の信号を生成しないという方法をとる。これならば、ON時間がそれぞれのサーボモータにより変動しても、変わらず2.55msの時間ごとに信号が生成されていく。
 プログラムの構成であるが、上右図のような流れとなる。フローチャートで表現してあるので、説明の足しにしていただきたい。
ただ、何度も言うが、CPUはPIC18F452であるので、EMMA-U0Aの仕様を満たす為には、必ずアセンブリ言語でのプログラミングが必須となる。C言語などでフローチャート通りにプログラムしたとしても、コンパイルの方式によっては、信号のタイミングも保証されはしないし、例えそれを解決できても満足のいく角度分解能・信号の更新速度は得る事が出来ないだろう。
 上左図のとおり、25のサーボモータ信号を順次生成していくと、それぞれのサーボモータの位置に関係なく、63.75msという固定時間での位置更新が可能となる。これをVol.4の信号の並列生成を組合わせて使えば、5分の1の時間に短縮が出来る。
つまり 63.75ms / 5並列 = 12.75ms
という時間で、25個のサーボモータの位置更新が終了し、かつ、この12.75msという時間は固定値であり、それぞれのサーボモータの位置によりタイミングが狂う事はなくなるだろう。
 今までの技術で達成可能な仕様は、
○一回の位置データ更新で25個のサーボモータを同時制御
○角度分解能は9BIT(512段階)
○サーボモータの位置に関わらず、位置更新時間は12.75msの固定値

である。これは、アセンブリ言語を駆使し、CPUを限界まで使用した結果のものである。
だがここでまた問題を一つ挙げておこう。気づいた方もいるかと思うが、Vol.1に公開されているEMMA-U0Aの仕様には、データ更新周期は0.012sとなっており、これは12.0msでの位置更新が可能という意味だ。しかし、今までの説明で限界値は12.75msであり、0.75msという時間、EMMA-U0Aの仕様に届いていない。
 次はこの差について、紹介したいと思う。恐らくはEMMA-U0Aのサーボ制御について触れる、最後の機会となるだろう。本当は全てのサーボモータの速度を、独立で生成しているトリックについても触れたいが、非常に冗長な説明になってしまうと思われるので、興味のある方には申し訳ないのだが、機会があれば説明していく・・・という事でご勘弁願いたい。


ページの先頭へ

Copyright 2009 ROBO Engine Co., Ltd. All Right Reserved.