(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0008】
以下、添付図面を参照して、本発明を実施するための実施形態を詳細に説明する。以下に説明する実施形態は、本発明の実現手段としての一例であり、本発明が適用される装置やシステムの構成や各種条件によって適宜修正または変更されるべきものであり、本発明は以下の実施形態に限定されない。
【0009】
実施形態1
図1(a)は実施形態1に係るロボット10の正面図である。本実施形態では、ロボット10の下肢に設けられた6つのモータモジュール(
図2(a)の符号60)にIDを設定する場合を説明する。モータモジュールはデバイスの一種であるので、モータモジュールに設定されるIDは、以下の説明においてデバイスIDと称する場合もある。
【0010】
(ロボットの構成)
図1(a)に示すように、ロボット10は、頭部12、胴部14、左上腕16、左前腕18、左手20、右上腕22、右前腕24、右手26、鼠径部28、左大腿30、左下腿32、左足34、右大腿36、右下腿38及び右足40を有している。また、ロボット10は、上記した各部の間に可動部を有している。具体的には、例えば、ロボット10の下肢においては、鼠径部28と右大腿36の間に第1可動部42を有し、鼠径部28と左大腿30の間に第2可動部44を有し、右大腿36と右下腿38の間に第3可動部46を有し、左大腿30と左下腿32の間に第4可動部48を有し、右下腿38と右足40の間に第5可動部50を有し、左下腿32と左足34の間に第6可動部52を有している。第1可動部42は右腰、第2可動部44は左腰、第3可動部46は右膝、第4可動部48は左膝、第5可動部50は右足首、第6可動部52は左足首と称することもできる。本実施形態では、第1可動部42〜第6可動部52に、それぞれ、1つのモータモジュール60が設けられているとする。第1可動部42〜第6可動部52に設けられる6つのモータモジュール60は同一の構成を有するとする。なお、ロボット10の上肢の可動部にもモータモジュールが設けられているが、以下の記載では、ロボット10の上肢の可動部に設けられたモータモジュールにIDを設定する場合の説明は省略する。
【0011】
ロボット10の胴部14には、システムモジュール54が設けられている。システムモジュール54は、ロボット10の全体の動作を制御する。また、システムモジュール54は、第1可動部42〜第6可動部52に設けられた6つのモータモジュールにデバイスIDを設定する。システムモジュール54はマスタと称することができ、6つのモータモジュールはスレーブと称することができる。システムモジュール54と6つのモータモジュールは有線または無線で通信可能に接続されている。デバイスIDは、システムモジュール54が6つのモータモジュールを制御する際の、各モータモジュールの通信アドレスの役割を果たす。
本実施形態において、各可動部は、2つの要素が接続する接続部(関節)である。例えば、第2可動部44は、鼠径部28と左大腿30の接続部(関節)である。当該接続部に設けられたモータモジュールが回転駆動される(具体的には、モータモジュール内のモータが回転する)と、ロボット10が動く。モータモジュールが回転駆動されると、ロボット10は、例えば、
図1(b)に示すような姿勢を取ることができる。
【0012】
(モータモジュールの構成)
図2(a)はモータモジュール60の外観斜視図であり、
図2(b)はモータモジュール60のブロック図である。
図2(a)に示すように、モータモジュール60は、本体61と出力軸62を有する。モータモジュール60は、サーボモータモジュールである。
上記したように、本実施形態では6つのモータモジュールが同一の構成を有している。
また、6つのモータモジュールには、モータモジュールの製造当初、同一のデバイスID(初期デバイスID)が付与されているとする。そして、システムモジュール54によるデバイスID設定が行われる前にあっては、同一のデバイスIDが付与されている6つのモータモジュールがロボット10に組み込まれているとする。
図2(b)に示すように、モータモジュール60は、モータ制御MCU(Micro Control Unit)65、モータ66、ギヤ67及びセンサ68を備える。本明細書において、モータモジュール60が回転駆動するというのは、モータ66が回転することを意味する。
【0013】
モータ制御MCU65は、センサ68からの検知信号に基づいてモータ66を回転させる。また、モータ制御MCU65は、システムモジュール54からの指示に応じて、仮IDを自ら決める。本実施形態において、仮IDは2桁の数字であるとする。モータ制御MCU65は、仮ID生成のための乱数発生機能を有している。また、モータ制御MCU65は、システムモジュール54との通信を行うための通信機能も有している。
ギヤ67は、モータ66の回転出力を受け取り、モータ制御MCU65の制御の下で、モータ66の出力トルクや回転速度を変える。
センサ68は、例えば、モータ66の温度、電流及び軸位置(出力軸62の角度位置)を検知する。センサ68は、
図2(b)において1つのブロックで描かれているが、温度センサ、電流センタ及び軸位置センサに分かれていてもよい。モータ制御MCU65は、例えば、センサ68が検知した電流と軸位置に基づいて、モータのトルク(負荷)を算出(推定)することができる。
【0014】
(デバイスIDの設定)
次に、
図3を参照して、6つのモータモジュール60にデバイスIDを設定するフローを説明する。以下の説明において、第1可動部42に設けられたモータモジュール60は、第1モータモジュール60aと称し、第2可動部44に設けられたモータモジュール60は、第2モータモジュール60bと称し、第3可動部46に設けられたモータモジュール60は、第3モータモジュール60cと称し、第4可動部48に設けられたモータモジュール60は、第4モータモジュール60dと称し、第5可動部50に設けられたモータモジュール60は、第5モータモジュール60eと称し、第6可動部52に設けられたモータモジュール60は、第6モータモジュール60fと称する。
第1モータモジュール60a〜第6モータモジュール60fの製造時において、第1モータモジュール60a〜第6モータモジュール60fには、同一のデバイスIDが設定されている。そして、同一のデバイスIDが設定されている第1モータモジュール60a〜第6モータモジュール60fが、ロボット10に組み込まれているとする。
図3のフローはこの状態においてスタートする。
【0015】
まず、S10において、システムモジュール(マスタ)54が第1モータモジュール60a〜第6モータモジュール60fに、ブロードキャスト通信で、「仮IDを決めて返送せよ」という指示と、「少し動きトルク値を返送せよ」という指示を送る。システムモジュール54からの指示に応じて各モータモジュールが回転駆動するので、システムモジュール54はモータモジュール60を動作させる動作機能を有すると言える。また、システムモジュール54からの指示に基づいて各モータモジュールが仮IDを設定するので、システムモジュール54は仮IDを設定させる仮ID設定機能を備えると言える。
【0016】
S11において、システムモジュール54からの指示を受けた第1モータモジュール60aは、疑似乱数で、第1モータモジュール60aの仮IDを決める。
また、S12において、第1モータモジュール60aは、システムモジュール54からの指示に応じて、少しモータ66を回転させ、その時のトルク値を算出(測定)する。
そして、S13において、第1モータモジュール60aは、仮IDと測定したトルク値をシステムモジュール54に送信する。この送信により、システムモジュール54は、第1モータモジュール60aの仮IDと動作時のトルク値を取得する。S13の「Source=仮ID」は、信号の発信元を示す情報として、第1モータモジュール60aの仮IDを使用していることを示している。S13の「Destination=Master」は、S13の信号送信における送信先がシステムモジュール54であることを示している。
【0017】
S14において、システムモジュール54からの指示を受けた第2モータモジュール60bは、疑似乱数で、第2モータモジュール60bの仮IDを決める。
また、S15において、第2モータモジュール60bは、システムモジュール54からの指示に応じて、少しモータ66を回転させ、その時のトルク値を測定する。
そして、S16において、第2モータモジュール60bは、仮IDと測定したトルク値をシステムモジュール54に送信する。この送信により、システムモジュール54は、第2モータモジュール60bの仮IDと動作時のトルク値を取得する。
同様に、第3モータモジュール60c〜第6モータモジュール60fは、疑似乱数で、それぞれ、仮IDを決める。また、第3モータモジュール60c〜第6モータモジュール60fは、少しモータ66を回転させ、その時のトルク値を測定する。そして、第3モータモジュール60c〜第6モータモジュール60fは、ぞれぞれ、仮IDと測定したトルク値をシステムモジュール54に送信する。この送信により、システムモジュール54は、第3モータモジュール60c〜第6モータモジュール60fの仮IDと動作時のトルク値を取得する。
【0018】
S17において、システムモジュール54は、第1モータモジュール60a〜第6モータモジュール60fから受信した6つの仮IDが全て異なっているかを判定する。同じ仮IDがあった場合、システムモジュール54は、全ての仮IDが異なるようになるまで、「仮IDを決めて返送せよ」という指示を第1モータモジュール60a〜第6モータモジュール60fに送信する。6つの仮IDが全て異なるIDになったならば、S18に進む。
S18において、システムモジュール54は、各モータモジュールについて、受信したトルク値に基づいて、トルク−デバイスID表(
図4)を用いて、本IDを特定(決定)する。
【0019】
図4は、本実施形態で使用するトルク−デバイスID表70を示している。トルク−デバイスID表70は、測定したトルク値と、デバイスIDと、デバイス(モータモジュール)設置位置との関係を示す表である。測定したトルク値は、システムモジュール54からの「少し動きトルク値を返送せよ」という指示に基づいた値であるので、モータ66の動き出しのトルク値である。このトルク値は、表70では「初期トルク値」と記載されている。表70のトルク値の単位はNmである。なお、以下の記載において、トルク値を説明する際に単位(Nm)は省略する。例えば、トルク値「3」は3Nmを意味する。
【0020】
ロボット10を動かす場合、モータモジュールの設置位置により、必要なトルク値が異なる。よって、トクル値が分かれば、ロボット10のどの部位(どの可動部)に設置されたモータモジュールのトルク値であるかが分かる。本実施形態では、予め、右腰に設置されるモータモジュールにはデバイスID「1」が設定され、左腰に設置されるモータモジュールにはデバイスID「2」が設定され、右膝に設置されるモータモジュールにはデバイスID「3」が設定され、左膝に設置されるモータモジュールにはデバイスID「4」が設定され、右足首に設置されるモータモジュールにはデバイスID「5」が設定され、左足首に設置されるモータモジュールにはデバイスID「6」が設定されることが決められているとする。
トルク−デバイスID表70は、ロボット10を製造する際に、予め用意し、システムモジュール54に記憶させておく。
【0021】
本実施形態では、システムモジュール54がS10で「時計回りに少し回転した際のトルク値と、反時計回りに少し回転した際のトルク値を返送せよ」という指示を出すとする。この場合、システムモジュール54が、時計回りに回転した際のトルク値として「3」を受信し、反時計回りに回転した際のトルク値として「1」を受信したならば、当該トルク値は右膝に設けられたモータモジュール60cから受信したものであることが分かる。よって、システムモジュール54は、当該モータモジュール60cに、本IDとして「3」を設定すべきであることを特定(決定)する。
システムモジュール54が、時計回りに回転した際のトルク値として「4」を受信し、反時計回りに回転した際のトルク値として「1」を受信したならば、当該トルク値は右足首に設けられたモータモジュール60eから受信したものであることが分かる。よって、システムモジュール54は、当該モータモジュール60eに、本IDとして「5」を設定すべきであることを特定する。
【0022】
トルク−デバイスID表70において、例えば、時計回りの初期トルク値が右膝は「3〜4」と記載され、右足首は「4〜5」と記載されている。これは、時計回りに回転した際のトルク値は、右足首の方が右膝より大きい値となることを示している。例えば、時計回りに回転した際の右膝のトルク値が「3」であれば、右足首のトルク値は「3」より大きな値(例えば「4」)になり、時計回りに回転した際の右膝のトルク値が「4」であれば、右足首のトルク値は「4」より大きな値(例えば「5」)になる。
【0023】
また、時計回りの初期トルク値については、右腰は「0.2〜0.6」と記載され、左腰は「0.1〜0.5」と記載されている。これは、時計回りに回転した際のトルク値は、右腰の方が左腰より大きい値となることを示している。例えば、時計回りに回転した際の右腰のトルク値が「0.2」であれば、左腰のトルク値は「0.2」より小さい値(例えば「0.1」)になり、時計回りに回転した際の右腰のトルク値が「0.3」であれば、左腰のトルク値は「0.3」より小さい値(例えば「0.2」)になる。
このように、本実施形態では、受信したトルク値に基づいて、トルク−デバイスID表70を用いて、当該モータモジュールの設置位置(どの可動部に設けられたか)を特定し、その後、当該可動部の位置に基づいて、設定すべきデバイスIDを決定することができる。
【0024】
S18において、システムモジュール54が、各モータモジュールの本IDを特定したならば、S19に進む。
S19において、システムモジュール54は、第1モータモジュール60aに「本IDをデバイスIDとして設定せよ」という指示を送る。本実施形態のロボット10では、6つのモータモジュール60a〜60fにデバイスID「1」〜「6」を設定することが求められている(予め決められている)。S19以前の状態では、6つのモータモジュール60a〜60fには6つの異なる仮IDが設定されているが、ロボット10を適切に制御するためには、仮IDに代えて本IDを各モータモジュールに設定する必要がある。仮IDは乱数で決められた値なので、どのような値が各モータモジュールに設定されているか不明である。システムモジュール54は、右腰に設けられた第1モータモジュール60aにはデバイスID「1」が設定され、左腰に設けられた第2モータモジュール60bにはデバイスID「2」が設定され、右膝に設けられた第3モータモジュール60cにはデバイスID「3」が設定され、左膝に設けられた第4モータモジュール60dにはデバイスID「4」が設定され、右足首に設けられた第5モータモジュール60eにはデバイスID「5」が設定され、左足首に設けられた第6モータモジュール60fにはデバイスID「6」が設定されることを前提として構成されている。
【0025】
S19でシステムモジュール54が第1モータモジュール60aに指示を送る際、システムモジュール54は、例えば、
図5に示すような通信プロトコルを使用する。通信プロトコルについては、後述する。
S20において、第1モータモジュール60aは、システムモジュール54から指定された本IDを、第1モータモジュール60aのデバイスIDとして設定する。
S21において、システムモジュール54は、第2モータモジュール60bに「本IDをデバイスIDとして設定せよ」という指示を送る。
S22において、第2モータモジュール60bは、システムモジュール54から指定された本IDを、第2モータモジュール60bのデバイスIDとして設定する。
同様に、システムモジュール54は、第3モータモジュール60c〜第6モータモジュール60fに「本IDをデバイスIDとして設定せよ」という指示を送る。そして、第3モータモジュール60c〜第6モータモジュール60fは、システムモジュール54から指定された本IDを、第3モータモジュール60c〜第6モータモジュール60fのデバイスIDとして設定する。
【0026】
図5は、システムモジュール54と各モータモジュールとの間の通信に用いられる通信パケット(プロトコル)を示している。
Headerは、通信パケットの始まりを示す定形の情報である。
DeviceIDは、システムモジュール54が各モータモジュールに送るデバイスIDである。DeviceIDは、デバイスIDの通信先を特定する情報(Destination)と、デバイスIDの発信元を特定する情報(Source)を含む。全デバイスをDestinationとして指定することも可能である。
Lengthは、通信で有効なバイト長さである。
【0027】
CommonDataStructure(共通データ構造)は、目的のデバイスに指示する情報であり、OperationとAttirbuteを含む。Operationは、目的のデバイスへの動作系コマンドであり、例えば、ブロードキャスト、ライト、リード、ストップ、リセット、イニシャライズ等の操作情報である。Attributeは、目的のデバイスへの属性系コマンドであり、例えば、時計回りに30度回転せよ、反時計回りに30度回転せよ等の情報である。
Checksumは、通信したデータが正常か否かを確認するために使用する情報である。
図5の通信パケットは、システムモジュール54が各モータモジュール60へ指示を送る場合に用いられるパケットである。なお、
図5の通信パケットは、各モータモジュール60がシステムモジュール54へ信号を送る際に用いられてもよい。
【0028】
(実施形態1の効果)
本実施形態によれば、システムモジュール54は、各モータモジュール60から取得したトルク値に基づいて、各モータモジュール60にデバイスIDを設定している。つまり、本実施形態によれば、デバイスの動作トルク値に基づいて、デバイスIDを設定することができる。よって、モータモジュール60にデバイスID設定用信号線などのハードウエアを追加することなく、モータモジュール60にデバイスIDを設定することができる。本実施形態では、既存のロボットに設けるシステムモジュール54のソフトウエアを変更するだけで、複数のモータモジュール60に異なるデバイスIDを設定することができる。
【0029】
ロボット10は複数のモータモジュール60を備え、各モータモジュール60が個別に持つデバイスIDは、各モータモジュール60とシステムモジュール54とが通信する際のアドレスとなる。よって、当該アドレスを使用することにより、各モータモジュール60とシステムモジュール54は、適切な通信を行うことができる。
【0030】
従来は、ロボットにモータモジュールを組み込む前に、モータモジュールに個別のデバイスIDを付与(設定)して、当該デバイスIDに従った目的の部位に各モータモジュールを組み込むという手法も採用されていた。このような手法では、例えば、6つのデバイスIDを設定する場合には、モータモジュールをロボットに組み込む前に、6つの異なるモータモジュールを管理する必要があった。本実施形態によれば、複数のモータモジュールをロボットに組み込む際には、複数のモータモジュールには同一のデバイスIDが設定されている。よって、最終的に6つのモータモジュールに6つの異なるデバイスIDを設定する場合でも、モータモジュールをロボットに組み込む前にあっては、6つの異なるモータモジュールを管理するという必要はなくなる。本実施形態によれば、複数のモータモジュール60をロボット10に組み込んだ後に、自動でデバイスIDを設定することができる。本実施形態では、ロボット10に複数の同じモータモジュール60を組み込んだ後に、異なるデバイスIDをモータモジュール60に設定する。よって、ロボット10を組み立てるときには、どのモータモジュールをどの部位に設けるかについて、管理する必要がなくなる。
ロボット10を組み立てた直後の状態では、6つのモータモジュールに重複したデバイスIDが設定されている。本実施形態によれば、重複したデバイスID(初期デバイスID)を、ロボット10の組み立て後に、重複しないデバイスIDに書き換えることができる。
【0031】
(変形例)
上記した本実施形態では6つのモータモジュールが同一の構成を有するとしたが、全てのモータモジュールが同じ構成を有さなくてもよい。例えば、第5可動部50と第6可動部52に設けられるモータモジュール60eと60fには大きな負荷が作用すると考えられるので、第5可動部50と第6可動部52に設けられるモータモジュール60eと60fは、他の可動部に設けられるモータモジュールより大きな負荷に耐えられる構造のものを採用してもよい。
【0032】
図3のフローでは、S10においてシステムモジュール54が第1モータモジュール60a〜第6モータモジュール60fに、「仮IDを決めて返送せよ」という指示と、「少し動きトルク値を返送せよ」という指示を送った。本実施形態は、このようなフローに限定されない。例えば、S10において、システムモジュール54は第1モータモジュール60a〜第6モータモジュール60fに、「仮IDを決めて返送せよ」という指示のみを送ってもよい。この場合、システムモジュール54は、S17の後に、「少し動きトルク値を返送せよ」という指示を第1モータモジュール60a〜第6モータモジュール60fに送る。
【0033】
上記した実施形態では、センサ68は、検知した電流と軸位置に基づいて、モータのトルク(負荷)を算出するとしたが、トルク値を計測するトルクセンサを設けてもよい。
上記した実施形態では、システムモジュール54は、ロボット10の胴部14の中に設けられるとしたが、システムモジュール54の設置位置は胴部14の中に限定されない。例えば、ロボット10の外部に設置してもよい。
上記した実施形態では、デバイスIDは「1」〜「6」であったが、本発明のデバイスIDは「1」〜「6」以外の識別番号あるいは識別情報であってもよい。
トルク−デバイスID表70は
図4に示したものに限定されない。本実施形態で使用するトルク−デバイスID表は、複数のトルク値と、当該複数のトルク値に対応付けられた接続部及びデバイスIDとを含むものであればよい。
【0034】
上記した実施形態では、本発明を複数のモータデバイスを備えるロボットに適用したが、本発明の適用はこれに限定されない。本発明は1つまたは複数のモータ等のデバイスに識別情報や識別番号を付与する場合に適用することができる。例えば、本発明は、モータを備える制御装置やシステムに適用することができる。