(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0012】
添付図面を参照して、本発明の実施形態について説明する。なお、各図において、同一の符号を付したものは、同一又は同様の構成を有する。
【0013】
図1は、本発明の実施形態に係る探索装置10を含む探索システム100の概要を示す図である。探索システム100は、探索装置10、量子コンピュータ20、ロボット制御装置30及びロボット40を含む。
【0014】
探索装置10は、ロボット40の姿勢が所定の条件を満たす関節の角度を探索する装置である。ここではロボットの一例として、ロボットアームの例について説明する。探索装置10は、適切な関節の角度を探索する量子アルゴリズムを実行するように量子コンピュータ20を設定する。以下では、角度を探索する量子アルゴリズムとして、グローバーのアルゴリズムを用いる例を説明する。
【0015】
量子コンピュータ20は、物質の量子力学的性質を利用して計算を行うコンピュータであり、ゲート型であってよい。量子コンピュータ20は、任意のハードウェアで構成されるものであってよく、通信ネットワークNを介して探索装置10から量子ビットと、量子ビットを操作するためのユニタリ変換に関する設定を受け付ける。通信ネットワークNは、有線又は無線の通信ネットワークであり、例えばインターネットであってよいが、LAN(Local Area Network)等であってもよい。
【0016】
ロボット制御装置30は、通信ネットワークNを介して、探索装置10からロボットアームの角度に関する情報を受け付けて、ロボット40を制御する。ロボット制御装置30は、例えばPLC(Programmable Logic Controller)によって構成されてよい。
【0017】
ロボット40は、1又は複数のロボットアームを備え、ロボットアームの先端に設けられたエンドエフェクタによって所定の動作を行う。ロボットアームは、1又は複数のサーボモータによって動作するものであってよく、探索装置10により探索された関節の角度は、サーボモータの角度を表してよい。なお、関節は、ロボットアームにおいて当該関節よりも先端側を回転駆動させる機構(例えば
図4のC1、C2である)をいい、ロボットアームの根元の機構を含む。また、ロボットアームにおいて関節同士、又は関節とエンドエフェクタとをつなぐ機構をアーム(例えば
図4の41,42である)という。
【0018】
図2は、本実施形態に係る探索装置10の機能ブロックを示す図である。探索装置10は、特定部11、設定部12及び算出部13を備える。
【0019】
特定部11は、ロボット40の姿勢が所定の条件を満たすか否かを識別する関数を特定する。ここで、所定の条件は、ロボットアームに備えられたエンドエフェクタの位置が目標位置に最も近いことを表す条件を含んでよい。関数の具体的な形については、後に詳細に説明する。
【0020】
設定部12は、ロボット40の関節の角度に対応する複数の量子ビットに対して、特定した関数に基づいて構成されるユニタリ変換を複数の量子ビットの数に応じた回数作用させて、所定の条件を満たす角度に対応する量子ビットの状態をグローバーのアルゴリズムによって探索するように、量子コンピュータ20を設定する。
【0021】
ロボットアームの関節の角度は、CORDICアルゴリズムによってビット列で表されてよい。例えば、ロボットアームがM個の関節を有し、CORDICアルゴリズムによってM個の関節の角度θ
1、θ
2、…、θ
Mをそれぞれa個のビット列で表す場合、設定部12は、n=a×M個の量子ビットを量子コンピュータ20に設定してよい。これにより、量子状態の次元はN=2
a×
Mとなる。CORDICアルゴリズムを用いることで、ロボットアームの関節の角度をビット列で表すことができ、関節の角度に対応する複数の量子ビットを適切に設定することができる。
【0022】
また、設定部12は、ロボットアームの関節が障害物と干渉するか否かに対応するカウンタ量子ビットを量子コンピュータ20に設定してよい。ロボットアームがM個の関節を有する場合、設定部12は、(log
2M)を切り上げた個数のカウンタ量子ビットを量子コンピュータ20に設定してよい。なお、エンドエフェクタについては目標位置に近接するように制御を行い、障害物と干渉するかどうかは考慮しない場合には、設定部12は、(log
2(M-1))を切り上げた個数のカウンタ量子ビットを量子コンピュータ20に設定してよい。後に詳細に説明するように、カウンタ量子ビットを設定することで、ロボットアームの関節が障害物と干渉するか否かをカウンタ量子ビットによって識別し、グローバーのアルゴリズムによって障害物と干渉しない関節の角度を高速に探索することができる。
【0023】
量子ビットの2状態を|0>及び|1>と表すとき、設定部12は、N個の量子ビット及び(log
2M)を切り上げた個数のカウンタ量子ビットの初期状態|s>を、以下の数式(1)で表される状態に設定してよい。
【0025】
ここで、|x>は、n個の量子ビットの直積状態である。また、|c
x>は、(log
2M)を切り上げた個数のカウンタ量子ビットの直積状態であり、|c
x>=|00…0>という状態に初期化されていてよい。
【0026】
設定部12により設定されるユニタリ変換は、複数の量子ビットに対応するロボットアームの角度が所定の条件を満たし、かつ、カウンタ量子ビットが、ロボットアームの関節が障害物と干渉しないことに対応する場合に、複数の量子ビット及びカウンタ量子ビットの直積状態の位相を反転させ、複数の量子ビットに対応するロボットアームの角度が所定の条件を満たさないか、又は、カウンタ量子ビットが、ロボットアームの関節が障害物と干渉することに対応する場合に、複数の量子ビット及びカウンタ量子ビットの直積状態の位相を変えない、第1ユニタリ変換を含む。また、ユニタリ変換は、複数の量子ビット及びカウンタ量子ビットの直積状態を所定の量子状態に関して反転させる第2ユニタリ変換を含む。第1ユニタリ変換及び第2ユニタリ変換の詳細については、
図4を用いて説明する。
【0027】
算出部13は、複数の量子ビットの測定値に対応するロボット40の関節の角度を算出する。量子コンピュータ20は、設定部12により設定された量子ビット及びユニタリ変換によってグローバーのアルゴリズムを用いた量子計算を行い、量子ビットを測定した値を探索装置10に送信する。算出部13は、受信した測定値に基づいて、CORDICアルゴリズムを用いてロボット40の関節の角度を算出する。
【0028】
このように、本実施形態に係る探索装置10によれば、量子アルゴリズムとしてグローバーのアルゴリズムを用いることで、ロボット40の姿勢が所定の条件を満たすような関節の角度を量子コンピュータ20に探索させることができ、同じ処理を古典コンピュータによって実行する場合よりも高速に角度を探索することができる。
【0029】
図3は、本実施形態に係る探索装置10の物理的構成を示す図である。探索装置10は、プロセッサに相当するCPU(Central Processing Unit)10aと、記憶部に相当するRAM(Random Access Memory)10bと、記憶部に相当するROM(Read only Memory)10cと、通信部10dと、入力部10eと、表示部10fと、を有する。これらの各構成は、バスを介して相互にデータ送受信可能に接続される。なお、本例では探索装置10が一台の古典コンピュータで構成される場合について説明するが、探索装置10は、複数の古典コンピュータが組み合わされて実現されてもよい。また、
図3で示す構成は一例であり、探索装置10はこれら以外の構成を有してもよいし、これらの構成のうち一部を有さなくてもよい。
【0030】
CPU10aは、RAM10b又はROM10cに記憶されたプログラムの実行に関する制御やデータの演算、加工を行うプロセッサである。CPU10aは、ロボット40の姿勢が所定の条件を満たすロボット40の関節の角度を量子コンピュータに探索させるプログラム(探索プログラム)を実行する。CPU10aは、入力部10eや通信部10dから種々のデータを受け取り、データの演算結果を表示部10fに表示したり、RAM10bやROM10cに格納したりする。CPU10aは、物質の量子力学的性質を積極的に利用することがない古典プロセッサであってよい。
【0031】
RAM10bは、記憶部のうちデータの書き換えが可能なものであり、例えば半導体記憶素子で構成されてよい。RAM10bは、CPU10aが実行する探索プログラム、目標位置等を記憶してよい。なお、これらは例示であって、RAM10bには、これら以外のデータが記憶されていてもよいし、これらの一部が記憶されていなくてもよい。
【0032】
ROM10cは、記憶部のうちデータの読み出しが可能なものであり、例えば半導体記憶素子で構成されてよい。ROM10cは、例えば探索プログラムや、書き換えが行われないデータを記憶してよい。
【0033】
通信部10dは、探索装置10を他の機器に接続するインターフェースである。通信部10dは、インターネット等の通信ネットワークNに接続されてよい。
【0034】
入力部10eは、ユーザからデータの入力を受け付けるものであり、例えば、キーボードやタッチパネルを含んでよい。
【0035】
表示部10fは、CPU10aによる演算結果を視覚的に表示するものであり、例えば、LCD(Liquid Crystal Display)により構成されてよい。表示部10fは、関節の角度の探索結果を表示してよい。
【0036】
探索プログラムは、RAM10bやROM10c等のコンピュータによって読み取り可能な記憶媒体に記憶されて提供されてもよいし、通信部10dにより接続される通信ネットワークを介して提供されてもよい。探索装置10では、CPU10aが探索プログラムを実行することにより、
図2を用いて説明した様々な動作が実現される。なお、これらの物理的な構成は例示であって、必ずしも独立した構成でなくてもよい。例えば、探索装置10は、CPU10aとRAM10bやROM10cが一体化したLSI(Large-Scale Integration)を備えていてもよい。
【0037】
図4は、本実施形態に係る探索装置10による探索対象となるロボットアームの角度の概要を示す図である。同図では、第1アーム41、第2アーム42及びエンドエフェクタ43を備えるロボットアームがx−y平面内で動作する例を示している。
【0038】
第1アーム41は、長さがL1であり、x軸から反時計回りに測った角度がθ1である。第2アーム42は、長さがL2であり、第1アーム41の延伸方向から時計回りに測った角度がθ2である。なお、本例で示している第2アーム42の角度は、第1アーム41の延伸方向から反時計回りに測ると負の値になっている。また、エンドエフェクタ43は、第2アーム42の先端に備えられ、x−y平面における位置が(x,y)である。また、同図では、エンドエフェクタ43の目標位置を(x
*,y
*)で表している。
【0039】
エンドエフェクタ43の位置(x,y)が目標位置(x
*,y
*)に最も近いことを表す条件を満たすか否かを識別する第1関数f(θ1,θ2)は、以下の数式(2)で表されるものであってよい。
【0041】
ここで、(x,y)は、(θ1,θ2)の関数として以下の数式(3)のように表される。
【0043】
また、数式(2)のεは、CORDICアルゴリズムの誤差に基づいて定められる微小量であり、実質的に0を意味する。すなわち、第1関数f(θ1,θ2)は、エンドエフェクタ43の位置が目標位置に一致している場合に1となり、一致していない場合に0となる関数である。
【0044】
図4では、障害物50を図示している。本例の障害物50の外形は、y=g(x)という関数で与えられるものとする。その場合、第1アーム41と第2アーム42を接続する関節が障害物50と干渉しないことを表す条件を満たすか否かを識別する第2関数h1(θ1)は、以下の数式(4)で表されるものであってよい。
【0046】
また、第2アーム42の先端(エンドエフェクタ43)が障害物50と干渉しないことを表す条件を満たすか否かを識別する第2関数h2(θ1,θ2)は、以下の数式(5)で表されるものであってよい。
【0048】
量子コンピュータ20は、第1関数及び第2関数少なくともいずれかの値が1となる状態xについて、カウンタ量子ビットをインクリメントする。これにより、いずれかの関節が障害物50と干渉する場合、カウンタ量子ビットが1以上の値となる。一方、全ての関節が障害物50と干渉していない場合、カウンタ量子ビットの値は0となる。
【0049】
設定部12は、以下の数式(6)で表される第1ユニタリ変換U
1を量子コンピュータ20に設定してよい。ここで、xはCODICアルゴリズムによって(θ1,θ2)をビット列で表した量である。
【0051】
設定部12は、以下の数式(7)で表される第2ユニタリ変換U
2を量子コンピュータ20に設定してよい。ここで、状態|s>は、数式(1)で表されるものである。
【0053】
設定部12は、初期状態|s>を量子コンピュータ20に設定し、第1ユニタリ変換及び第2ユニタリ変換U
2U
1を複数の量子ビットの数に応じた回数作用させる。具体的には、U
2U
1をπ/4√Nを切り上げ又は切り下げた回数作用させることとしてよい。このように、複数の量子ビット及びカウンタ量子ビットの直積状態にユニタリ変換を作用させることで、所定の条件を満たす量子状態の振幅が増幅され、ロボット40の姿勢が所定の条件を満たすような関節の角度を表す量子状態が測定される確率を高めることができる。
【0054】
また、関節が障害物と干渉しないことを表す条件を第2関数として表し、第1ユニタリ変換を構成することで、ロボット40と障害物が干渉しない関節の角度を高速に探索することができる。
【0055】
図5は、本実施形態に係る探索装置10により実行される探索処理のフローチャートである。探索装置10は、はじめにエンドエフェクタの目標位置の入力を受け付ける(S10)。また、探索装置10は、障害物の設定を受け付ける(S11)。
【0056】
その後、探索装置10は、エンドエフェクタの位置が目標位置に最も近い場合に1となり、それ以外の場合に0となる第1関数を特定する(S12)。また、探索装置10は、関節の位置が障害物と重なる場合に1となり、それ以外の場合に0となる第2関数を特定する(S13)。
【0057】
探索装置10は、関節の角度に対応する複数の量子ビットを量子コンピュータ20に設定する(S14)。また、探索装置10は、カウンタ量子ビットを量子コンピュータ20に設定する(S15)。さらに、探索装置10は、第1関数及び第2関数に基づき構成されるユニタリ変換を量子コンピュータ20に設定する(S16)。
【0058】
その後、量子コンピュータ20による処理を実行する(S17)。量子コンピュータ20による処理については、次図を用いて詳細に説明する。
【0059】
最後に、探索装置10は、複数の量子ビットの測定値に対応する角度を算出する(S18)。この後、探索装置10は、算出した角度をロボット制御装置30に送信してもよい。以上により、探索処理が終了する。
【0060】
図6は、本実施形態に係る探索装置10により設定される量子コンピュータ20によって実行されるグローバーのアルゴリズムのフローチャートである。同図では、
図5に示す量子コンピュータ20による処理(S17)の詳細を示している。はじめに、量子コンピュータ20は、複数の量子ビット及びカウンタ量子ビットを初期化する(S171)。
【0061】
その後、量子コンピュータ20は、複数の関節それぞれの回転によるエンドエフェクタの変位を算出し、量子メモリに格納する(S172)。例えば、
図4に示す例の場合、第1アーム41の角度θ1を取り得る全ての値にわたって変化させた場合におけるエンドエフェクタ43の変位を算出し、第2アーム42の角度θ2を取り得る全ての値にわたって変化させた場合におけるエンドエフェクタ43の変位を算出してよい。
【0062】
量子コンピュータ20は、複数の関節に関するエンドエフェクタの変位の総和を算出する(S173)。そして、量子コンピュータ20は、複数の関節の角度を取り得る全ての値にわたって変化させたそれぞれの場合について第2関数の値を算出し、第2関数が1となる場合、カウンタ量子ビットをインクリメントする(S174)。これにより、いずれかの関節が障害物と干渉するような関節の角度を表す量子状態について、カウンタ量子ビットが1以上の値となる。
【0063】
量子コンピュータ20は、第1関数が1であり、カウンタ量子ビットが0である量子状態の位相を反転させ、それ以外の量子状態の位相を変えない第1ユニタリ変換を、複数の量子ビット及びカウンタ量子ビットの直積状態に作用させる(S175)。また、量子コンピュータ20は、量子状態を初期状態に関して反転させる第2ユニタリ変換を、複数の量子ビット及びカウンタ量子ビットの直積状態に作用させる(S176)。
【0064】
その後、第1ユニタリ変換及び第2ユニタリ変換を所定回数作用させたか判定する(S177)。ここで、所定回数は、おおよそ√Nである。所定回数の処理が終了していない場合(S177:NO)、量子コンピュータ20は、処理S172から処理S176までを再び実行する。一方、所定回数の処理が終了した場合(S177:YES)、量子コンピュータ20は、複数の量子ビットを測定し(S178)、測定値を探索装置10に送信する。以上により、量子コンピュータ20による処理が終了する。
【0065】
図7は、本実施形態に係る探索装置10により実行される探索処理のフローチャートである。同図では、ロボットアームに備えられたエンドエフェクタの軌跡が目標軌跡に最も近いことを表す条件を満たすような、ロボットアームの姿勢の時間変化を探索する処理を示している。
【0066】
探索装置10は、はじめにエンドエフェクタの目標軌跡の入力を受け付ける(S20)。また、探索装置10は、障害物の設定を受け付ける(S21)。
【0067】
その後、探索装置10は、エンドエフェクタの軌跡が目標軌跡に最も近い場合に1となり、それ以外の場合に0となる第1関数を特定する(S22)。このような第1関数fは、例えば、エンドエフェクタを動かす時間をt=1〜Tまでの区間に分割して、各区間についてエンドエフェクタの目標位置(x
*t,y
*t)を定めて、各区間について数式(2)によってf
tを定義して、f=Π
t=1Tf
tによって特定してよい。
【0068】
また、探索装置10は、関節の位置が障害物と重なる場合に1となり、それ以外の場合に0となる第2関数を特定する(S23)。第2関数h1,h2についても、例えば、t=1〜Tまでの各区間について数式(4)及び(5)によってh1
t,h2
tを特定してよい。
【0069】
探索装置10は、複数の時刻における関節の角度に対応する複数の量子ビットを量子コンピュータに設定する(S24)。具体的には、t=1〜Tまでの各区間について、n個の量子ビットの直積状態である|x
t>を設定し、それらを全区間について直積した|x>=Π
t=1T|x
t>を量子コンピュータ20に設定してよい。また、探索装置10は、カウンタ量子ビットを量子コンピュータ20に設定する(S25)。ここで、カウンタ量子ビットの数は、(log
2(M×T))を切り上げた個数であってよい。
【0070】
さらに、探索装置10は、第1関数及び第2関数に基づき構成されるユニタリ変換を量子コンピュータ20に設定する(S26)。ここで、第1ユニタリ変換は数式(6)で表されるものであってよく、第2ユニタリ変換は数式(7)で表されるものであってよい。
【0071】
その後、量子コンピュータ20による処理を実行する(S27)。量子コンピュータ20による処理については、
図6に示すものと同様である。
【0072】
最後に、探索装置10は、複数の量子ビットの測定値に対応する角度の時間変化を算出する(S28)。この後、探索装置10は、算出した角度の時間変化をロボット制御装置30に送信してもよい。このようにして、エンドエフェクタの軌跡が目標軌跡となるような関節の角度の時系列を高速に探索することができる。以上により、探索処理が終了する。
【0073】
(その他の実施形態)
既述の実施形態において、設定部12は、ロボットアームの関節が障害物と干渉するか否かに基づいて複数の量子ビット及びカウンタ量子ビットの直積状態の位相を反転させるか否かを決定していたがこれに限定されない。設定部12により設定されるユニタリ変換は、複数の量子ビットに対応するロボットアームの角度が所定の条件を満たし、かつ、カウンタ量子ビットが、ロボットアームの関節及びアームが障害物と干渉しないことに対応する場合に、複数の量子ビット及びカウンタ量子ビットの直積状態の位相を反転させ、複数の量子ビットに対応するロボットアームの角度が所定の条件を満たさないか、又は、カウンタ量子ビットが、ロボットアームの関節及びアームが障害物と干渉することに対応する場合に、複数の量子ビット及びカウンタ量子ビットの直積状態の位相を変えない、第1ユニタリ変換を含んでもよい。
【0074】
この場合、例えば、第2関数はロボットアームにおけるアーム上の任意の点が障害物50と干渉しないことを表す条件を満たすか否かを識別するものでもよい。例えばアーム42を例に説明すると、この場合の第2関数は、任意の点がアーム42において関節C2から距離Lxの位置にあるとすると、数式(8)で表される。
【数8】
【0075】
量子コンピュータ20は、アーム42上に第2関数の値を1とする点が存在する場合に、カウンタ量子ビットをインクリメントする。これによりアーム42が障害物50と干渉する場合、カウンタ量子ビットの値が1以上となる。一方、アーム42上に第2関数の値を1とする点が存在しない場合には、カウンタ量子ビットの値は0となる。
【0076】
以上説明した実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。実施形態が備える各要素並びにその配置、材料、条件、形状及びサイズ等は、例示したものに限定されるわけではなく適宜変更することができる。また、異なる実施形態で示した構成同士を部分的に置換し又は組み合わせることが可能である。
【課題】量子アルゴリズムを用いて、ロボットアーム等、ロボットの姿勢が所定の条件を満たすような関節の角度を量子コンピュータに探索させる探索装置、探索方法及び探索プログラムを提供する。
【解決手段】探索装置10は、ロボットの姿勢が所定の条件を満たすか否かを識別する関数を特定する特定部11と、ロボットの関節の角度に対応する複数の量子ビットに対して、関数に基づいて構成されるユニタリ変換を複数の量子ビットの数に応じた回数作用させて、所定の条件を満たす角度に対応する量子ビットの状態を量子アルゴリズムによって探索するように、量子コンピュータを設定する設定部12と、複数の量子ビットの測定値に対応する角度を算出する算出部13と、を備える。