(57)【要約】【課題】量子アルゴリズムを用いて、ロボットアーム等、ロボットの姿勢が所定の条件を満たすような関節の角度を量子コンピュータに探索させる探索装置、探索方法及び探索プログラムを提供する。【解決手段】探索装置１０は、ロボットの姿勢が所定の条件を満たすか否かを識別する関数を特定する特定部１１と、ロボットの関節の角度に対応する複数の量子ビットに対して、関数に基づいて構成されるユニタリ変換を複数の量子ビットの数に応じた回数作用させて、所定の条件を満たす角度に対応する量子ビットの状態を量子アルゴリズムによって探索するように、量子コンピュータを設定する設定部１２と、複数の量子ビットの測定値に対応する角度を算出する算出部１３と、を備える。【選択図】図１
2020099984.tif 000002
【特許請求の範囲】
【請求項１】
ロボットの姿勢が所定の条件を満たすか否かを識別する関数を特定する特定部と、
前記ロボットの関節の角度に対応する複数の量子ビットに対して、前記関数に基づいて構成されるユニタリ変換を前記複数の量子ビットの数に応じた回数作用させて、前記所定の条件を満たす前記角度に対応する前記複数の量子ビットの状態を量子アルゴリズムによって探索するように、量子コンピュータを設定する設定部と、
前記複数の量子ビットの測定値に対応する前記角度を算出する算出部と、
を備える探索装置。
【請求項２】
前記所定の条件は、前記ロボットに備えられたエンドエフェクタの位置が目標位置に最も近いことを表す条件を含む、
請求項１に記載の探索装置。
【請求項３】
前記所定の条件は、前記ロボットに備えられたエンドエフェクタの軌跡が目標軌跡に最も近いことを表す条件を含む、
請求項１又は２に記載の探索装置。
【請求項４】
前記所定の条件は、前記関節が障害物と干渉しないことを表す条件を含む、
請求項１から３のいずれか一項に記載の探索装置。
【請求項５】
前記設定部は、前記関節が前記障害物と干渉するか否かに対応するカウンタ量子ビットを前記量子コンピュータに設定する、
請求項４に記載の探索装置。
【請求項６】
前記ユニタリ変換は、
前記複数の量子ビットに対応する前記角度が前記所定の条件を満たし、かつ、前記カウンタ量子ビットが、前記関節が前記障害物と干渉しないことに対応する場合に、前記複数の量子ビット及び前記カウンタ量子ビットの直積状態の位相を反転させ、
前記複数の量子ビットに対応する前記角度が前記所定の条件を満たさないか、又は、前記カウンタ量子ビットが、前記関節が前記障害物と干渉することに対応する場合に、前記複数の量子ビット及び前記カウンタ量子ビットの直積状態の位相を変えない、第１ユニタリ変換と、
前記複数の量子ビット及び前記カウンタ量子ビットの直積状態を所定の量子状態に関して反転させる第２ユニタリ変換と、を含む、
請求項５に記載の探索装置。
【請求項７】
前記角度は、ＣＯＲＤＩＣアルゴリズムによってビット列で表される、
請求項１から６のいずれか一項に記載の探索装置。
【請求項８】
ロボットの姿勢が所定の条件を満たすか否かを識別する関数を特定することと、
前記ロボットの関節の角度に対応する複数の量子ビットに対して、前記関数に基づいて構成されるユニタリ変換を前記複数の量子ビットの数に応じた回数作用させて、前記所定の条件を満たす前記角度に対応する前記複数の量子ビットの状態を量子アルゴリズムによって探索するように、量子コンピュータを設定することと、
前記複数の量子ビットの測定値に対応する前記角度を算出することと、
を含む探索方法。
【請求項９】
探索装置に備えられたプロセッサを、
ロボットの姿勢が所定の条件を満たすか否かを識別する関数を特定する特定部、
前記ロボットの関節の角度に対応する複数の量子ビットに対して、前記関数に基づいて構成されるユニタリ変換を前記複数の量子ビットの数に応じた回数作用させて、前記所定の条件を満たす前記角度に対応する前記複数の量子ビットの状態を量子アルゴリズムによって探索するように、量子コンピュータを設定する設定部、及び
前記複数の量子ビットの測定値に対応する前記角度を算出する算出部、
として機能させる探索プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、探索装置、探索方法及び探索プログラムに関する。
【背景技術】
【０００２】
従来、ロボットアームに備えられたエンドエフェクタを所望の位置に制御するため、エンドエフェクタの目標位置からロボットアームの関節の角度を算出することがある。
【０００３】
例えば、下記特許文献１には、ＣＯＲＤＩＣ（COordinate Rotational DIgital Computer）アルゴリズムによって座標逆変換を実行する座標逆変換プロセッサが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平２−５１２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
近年、物質の量子力学的性質を利用して計算を行う量子コンピュータの研究が進められている。量子コンピュータは確率的コンピュータであり、確率振幅を操作して正当の出力確率のみを大きくすることで古典コンピュータに比べて計算を高速に行うことができ、特定の問題について計算時間を飛躍的に短縮できる場合がある。
【０００６】
例えばロボットアームのエンドエフェクタの目標位置からロボットアームの関節の角度を算出するような、ロボットの姿勢を制御する問題についても、量子コンピュータを用いることで計算時間を短縮できると期待される。しかしながら、量子コンピュータを用いれば常に古典コンピュータよりも計算時間が短くなるわけではなく、問題に応じて適切な量子アルゴリズムを採用する必要がある。
【０００７】
そこで、本発明は、量子アルゴリズムを用いて、ロボットアーム等、ロボットの姿勢が所定の条件を満たすような関節の角度を量子コンピュータに探索させる探索装置、探索方法及び探索プログラムを提供する。
【課題を解決するための手段】
【０００８】
本発明の一態様に係る探索装置は、ロボットの姿勢が所定の条件を満たすか否かを識別する関数を特定する特定部と、ロボットの関節の角度に対応する複数の量子ビットに対して、関数に基づいて構成されるユニタリ変換を複数の量子ビットの数に応じた回数作用させて、所定の条件を満たす角度に対応する複数の量子ビットの状態を量子アルゴリズムによって探索するように、量子コンピュータを設定する設定部と、複数の量子ビットの測定値に対応する角度を算出する算出部と、を備える。
【０００９】
この態様によれば、量子アルゴリズムとして例えばグローバーのアルゴリズムを用いることで、ロボットの姿勢が所定の条件を満たすような関節の角度を量子コンピュータに探索させることができ、同じ処理を古典コンピュータによって実行する場合よりも高速に角度を探索することができる。
【発明の効果】
【００１０】
本発明によれば、量子アルゴリズムを用いて、ロボットアーム等、ロボットの姿勢が所定の条件を満たすような関節の角度を量子コンピュータに探索させる探索装置、探索方法及び探索プログラムを提供することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態に係る探索装置を含む探索システムの概要を示す図である。
【図２】本実施形態に係る探索装置の機能ブロックを示す図である。
【図３】本実施形態に係る探索装置の物理的構成を示す図である。
【図４】本実施形態に係る探索装置による探索対象となるロボットアームの角度の概要を示す図である。
【図５】本実施形態に係る探索装置により実行される探索処理のフローチャートである。
【図６】本実施形態に係る探索装置により設定される量子コンピュータによって実行されるグローバーのアルゴリズムのフローチャートである。
【図７】本実施形態に係る探索装置により実行される探索処理のフローチャートである。
【発明を実施するための形態】
【００１２】
添付図面を参照して、本発明の実施形態について説明する。なお、各図において、同一の符号を付したものは、同一又は同様の構成を有する。
【００１３】
図１は、本発明の実施形態に係る探索装置１０を含む探索システム１００の概要を示す図である。探索システム１００は、探索装置１０、量子コンピュータ２０、ロボット制御装置３０及びロボット４０を含む。
【００１４】
探索装置１０は、ロボット４０の姿勢が所定の条件を満たす関節の角度を探索する装置である。ここではロボットの一例として、ロボットアームの例について説明する。探索装置１０は、適切な関節の角度を探索する量子アルゴリズムを実行するように量子コンピュータ２０を設定する。以下では、角度を探索する量子アルゴリズムとして、グローバーのアルゴリズムを用いる例を説明する。
【００１５】
量子コンピュータ２０は、物質の量子力学的性質を利用して計算を行うコンピュータであり、ゲート型であってよい。量子コンピュータ２０は、任意のハードウェアで構成されるものであってよく、通信ネットワークＮを介して探索装置１０から量子ビットと、量子ビットを操作するためのユニタリ変換に関する設定を受け付ける。通信ネットワークＮは、有線又は無線の通信ネットワークであり、例えばインターネットであってよいが、ＬＡＮ（Local Area Network）等であってもよい。
【００１６】
ロボット制御装置３０は、通信ネットワークＮを介して、探索装置１０からロボットアームの角度に関する情報を受け付けて、ロボット４０を制御する。ロボット制御装置３０は、例えばＰＬＣ（Programmable Logic Controller）によって構成されてよい。
【００１７】
ロボット４０は、１又は複数のロボットアームを備え、ロボットアームの先端に設けられたエンドエフェクタによって所定の動作を行う。ロボットアームは、１又は複数のサーボモータによって動作するものであってよく、探索装置１０により探索された関節の角度は、サーボモータの角度を表してよい。なお、関節は、ロボットアームにおいて当該関節よりも先端側を回転駆動させる機構（例えば図４のＣ１、Ｃ２である）をいい、ロボットアームの根元の機構を含む。また、ロボットアームにおいて関節同士、又は関節とエンドエフェクタとをつなぐ機構をアーム（例えば図４の４１，４２である）という。
【００１８】
図２は、本実施形態に係る探索装置１０の機能ブロックを示す図である。探索装置１０は、特定部１１、設定部１２及び算出部１３を備える。
【００１９】
特定部１１は、ロボット４０の姿勢が所定の条件を満たすか否かを識別する関数を特定する。ここで、所定の条件は、ロボットアームに備えられたエンドエフェクタの位置が目標位置に最も近いことを表す条件を含んでよい。関数の具体的な形については、後に詳細に説明する。
【００２０】
設定部１２は、ロボット４０の関節の角度に対応する複数の量子ビットに対して、特定した関数に基づいて構成されるユニタリ変換を複数の量子ビットの数に応じた回数作用させて、所定の条件を満たす角度に対応する量子ビットの状態をグローバーのアルゴリズムによって探索するように、量子コンピュータ２０を設定する。
【００２１】
ロボットアームの関節の角度は、ＣＯＲＤＩＣアルゴリズムによってビット列で表されてよい。例えば、ロボットアームがＭ個の関節を有し、ＣＯＲＤＩＣアルゴリズムによってＭ個の関節の角度θ1、θ2、…、θMをそれぞれａ個のビット列で表す場合、設定部１２は、ｎ＝ａ×Ｍ個の量子ビットを量子コンピュータ２０に設定してよい。これにより、量子状態の次元はＮ＝２a×Mとなる。ＣＯＲＤＩＣアルゴリズムを用いることで、ロボットアームの関節の角度をビット列で表すことができ、関節の角度に対応する複数の量子ビットを適切に設定することができる。
【００２２】
また、設定部１２は、ロボットアームの関節が障害物と干渉するか否かに対応するカウンタ量子ビットを量子コンピュータ２０に設定してよい。ロボットアームがＭ個の関節を有する場合、設定部１２は、（ｌｏｇ2Ｍ）を切り上げた個数のカウンタ量子ビットを量子コンピュータ２０に設定してよい。なお、エンドエフェクタについては目標位置に近接するように制御を行い、障害物と干渉するかどうかは考慮しない場合には、設定部１２は、（ｌｏｇ2（Ｍ-１））を切り上げた個数のカウンタ量子ビットを量子コンピュータ２０に設定してよい。後に詳細に説明するように、カウンタ量子ビットを設定することで、ロボットアームの関節が障害物と干渉するか否かをカウンタ量子ビットによって識別し、グローバーのアルゴリズムによって障害物と干渉しない関節の角度を高速に探索することができる。
【００２３】
量子ビットの２状態を｜０＞及び｜１＞と表すとき、設定部１２は、Ｎ個の量子ビット及び（ｌｏｇ2Ｍ）を切り上げた個数のカウンタ量子ビットの初期状態｜ｓ＞を、以下の数式（１）で表される状態に設定してよい。
【００２４】
【数１】
2020099984.tif 000003
【００２５】
ここで、｜ｘ＞は、ｎ個の量子ビットの直積状態である。また、｜ｃx＞は、（ｌｏｇ2Ｍ）を切り上げた個数のカウンタ量子ビットの直積状態であり、｜ｃx＞＝｜００…０＞という状態に初期化されていてよい。
【００２６】
設定部１２により設定されるユニタリ変換は、複数の量子ビットに対応するロボットアームの角度が所定の条件を満たし、かつ、カウンタ量子ビットが、ロボットアームの関節が障害物と干渉しないことに対応する場合に、複数の量子ビット及びカウンタ量子ビットの直積状態の位相を反転させ、複数の量子ビットに対応するロボットアームの角度が所定の条件を満たさないか、又は、カウンタ量子ビットが、ロボットアームの関節が障害物と干渉することに対応する場合に、複数の量子ビット及びカウンタ量子ビットの直積状態の位相を変えない、第１ユニタリ変換を含む。また、ユニタリ変換は、複数の量子ビット及びカウンタ量子ビットの直積状態を所定の量子状態に関して反転させる第２ユニタリ変換を含む。第１ユニタリ変換及び第２ユニタリ変換の詳細については、図４を用いて説明する。
【００２７】
算出部１３は、複数の量子ビットの測定値に対応するロボット４０の関節の角度を算出する。量子コンピュータ２０は、設定部１２により設定された量子ビット及びユニタリ変換によってグローバーのアルゴリズムを用いた量子計算を行い、量子ビットを測定した値を探索装置１０に送信する。算出部１３は、受信した測定値に基づいて、ＣＯＲＤＩＣアルゴリズムを用いてロボット４０の関節の角度を算出する。
【００２８】
このように、本実施形態に係る探索装置１０によれば、量子アルゴリズムとしてグローバーのアルゴリズムを用いることで、ロボット４０の姿勢が所定の条件を満たすような関節の角度を量子コンピュータ２０に探索させることができ、同じ処理を古典コンピュータによって実行する場合よりも高速に角度を探索することができる。
【００２９】
図３は、本実施形態に係る探索装置１０の物理的構成を示す図である。探索装置１０は、プロセッサに相当するＣＰＵ（Central Processing Unit）１０ａと、記憶部に相当するＲＡＭ（Random Access Memory）１０ｂと、記憶部に相当するＲＯＭ（Read only Memory）１０ｃと、通信部１０ｄと、入力部１０ｅと、表示部１０ｆと、を有する。これらの各構成は、バスを介して相互にデータ送受信可能に接続される。なお、本例では探索装置１０が一台の古典コンピュータで構成される場合について説明するが、探索装置１０は、複数の古典コンピュータが組み合わされて実現されてもよい。また、図３で示す構成は一例であり、探索装置１０はこれら以外の構成を有してもよいし、これらの構成のうち一部を有さなくてもよい。
【００３０】
ＣＰＵ１０ａは、ＲＡＭ１０ｂ又はＲＯＭ１０ｃに記憶されたプログラムの実行に関する制御やデータの演算、加工を行うプロセッサである。ＣＰＵ１０ａは、ロボット４０の姿勢が所定の条件を満たすロボット４０の関節の角度を量子コンピュータに探索させるプログラム（探索プログラム）を実行する。ＣＰＵ１０ａは、入力部１０ｅや通信部１０ｄから種々のデータを受け取り、データの演算結果を表示部１０ｆに表示したり、ＲＡＭ１０ｂやＲＯＭ１０ｃに格納したりする。ＣＰＵ１０ａは、物質の量子力学的性質を積極的に利用することがない古典プロセッサであってよい。
【００３１】
ＲＡＭ１０ｂは、記憶部のうちデータの書き換えが可能なものであり、例えば半導体記憶素子で構成されてよい。ＲＡＭ１０ｂは、ＣＰＵ１０ａが実行する探索プログラム、目標位置等を記憶してよい。なお、これらは例示であって、ＲＡＭ１０ｂには、これら以外のデータが記憶されていてもよいし、これらの一部が記憶されていなくてもよい。
【００３２】
ＲＯＭ１０ｃは、記憶部のうちデータの読み出しが可能なものであり、例えば半導体記憶素子で構成されてよい。ＲＯＭ１０ｃは、例えば探索プログラムや、書き換えが行われないデータを記憶してよい。
【００３３】
通信部１０ｄは、探索装置１０を他の機器に接続するインターフェースである。通信部１０ｄは、インターネット等の通信ネットワークＮに接続されてよい。
【００３４】
入力部１０ｅは、ユーザからデータの入力を受け付けるものであり、例えば、キーボードやタッチパネルを含んでよい。
【００３５】
表示部１０ｆは、ＣＰＵ１０ａによる演算結果を視覚的に表示するものであり、例えば、ＬＣＤ（Liquid Crystal Display）により構成されてよい。表示部１０ｆは、関節の角度の探索結果を表示してよい。
【００３６】
探索プログラムは、ＲＡＭ１０ｂやＲＯＭ１０ｃ等のコンピュータによって読み取り可能な記憶媒体に記憶されて提供されてもよいし、通信部１０ｄにより接続される通信ネットワークを介して提供されてもよい。探索装置１０では、ＣＰＵ１０ａが探索プログラムを実行することにより、図２を用いて説明した様々な動作が実現される。なお、これらの物理的な構成は例示であって、必ずしも独立した構成でなくてもよい。例えば、探索装置１０は、ＣＰＵ１０ａとＲＡＭ１０ｂやＲＯＭ１０ｃが一体化したＬＳＩ（Large-Scale Integration）を備えていてもよい。
【００３７】
図４は、本実施形態に係る探索装置１０による探索対象となるロボットアームの角度の概要を示す図である。同図では、第１アーム４１、第２アーム４２及びエンドエフェクタ４３を備えるロボットアームがｘ−ｙ平面内で動作する例を示している。
【００３８】
第１アーム４１は、長さがＬ１であり、ｘ軸から反時計回りに測った角度がθ１である。第２アーム４２は、長さがＬ２であり、第１アーム４１の延伸方向から時計回りに測った角度がθ２である。なお、本例で示している第２アーム４２の角度は、第１アーム４１の延伸方向から反時計回りに測ると負の値になっている。また、エンドエフェクタ４３は、第２アーム４２の先端に備えられ、ｘ−ｙ平面における位置が（ｘ，ｙ）である。また、同図では、エンドエフェクタ４３の目標位置を（ｘ*，ｙ*）で表している。
【００３９】
エンドエフェクタ４３の位置（ｘ，ｙ）が目標位置（ｘ*，ｙ*）に最も近いことを表す条件を満たすか否かを識別する第１関数ｆ（θ１，θ２）は、以下の数式（２）で表されるものであってよい。
【００４０】
【数２】
2020099984.tif 000004
【００４１】
ここで、（ｘ，ｙ）は、（θ１，θ２）の関数として以下の数式（３）のように表される。
【００４２】
【数３】
2020099984.tif 000005
【００４３】
また、数式（２）のεは、ＣＯＲＤＩＣアルゴリズムの誤差に基づいて定められる微小量であり、実質的に０を意味する。すなわち、第１関数ｆ（θ１，θ２）は、エンドエフェクタ４３の位置が目標位置に一致している場合に１となり、一致していない場合に０となる関数である。
【００４４】
図４では、障害物５０を図示している。本例の障害物５０の外形は、ｙ＝ｇ（ｘ）という関数で与えられるものとする。その場合、第１アーム４１と第２アーム４２を接続する関節が障害物５０と干渉しないことを表す条件を満たすか否かを識別する第２関数ｈ１（θ１）は、以下の数式（４）で表されるものであってよい。
【００４５】
【数４】
2020099984.tif 000006
【００４６】
また、第２アーム４２の先端（エンドエフェクタ４３）が障害物５０と干渉しないことを表す条件を満たすか否かを識別する第２関数ｈ２（θ１，θ２）は、以下の数式（５）で表されるものであってよい。
【００４７】
【数５】
2020099984.tif 000007
【００４８】
量子コンピュータ２０は、第１関数及び第２関数少なくともいずれかの値が１となる状態ｘについて、カウンタ量子ビットをインクリメントする。これにより、いずれかの関節が障害物５０と干渉する場合、カウンタ量子ビットが１以上の値となる。一方、全ての関節が障害物５０と干渉していない場合、カウンタ量子ビットの値は０となる。
【００４９】
設定部１２は、以下の数式（６）で表される第１ユニタリ変換Ｕ1を量子コンピュータ２０に設定してよい。ここで、ｘはＣＯＤＩＣアルゴリズムによって（θ１，θ２）をビット列で表した量である。
【００５０】
【数６】
2020099984.tif 000008
【００５１】
設定部１２は、以下の数式（７）で表される第２ユニタリ変換Ｕ2を量子コンピュータ２０に設定してよい。ここで、状態｜ｓ＞は、数式（１）で表されるものである。
【００５２】
【数７】
2020099984.tif 000009
【００５３】
設定部１２は、初期状態｜ｓ＞を量子コンピュータ２０に設定し、第１ユニタリ変換及び第２ユニタリ変換Ｕ2Ｕ1を複数の量子ビットの数に応じた回数作用させる。具体的には、Ｕ2Ｕ1をπ／４√Ｎを切り上げ又は切り下げた回数作用させることとしてよい。このように、複数の量子ビット及びカウンタ量子ビットの直積状態にユニタリ変換を作用させることで、所定の条件を満たす量子状態の振幅が増幅され、ロボット４０の姿勢が所定の条件を満たすような関節の角度を表す量子状態が測定される確率を高めることができる。
【００５４】
また、関節が障害物と干渉しないことを表す条件を第２関数として表し、第１ユニタリ変換を構成することで、ロボット４０と障害物が干渉しない関節の角度を高速に探索することができる。
【００５５】
図５は、本実施形態に係る探索装置１０により実行される探索処理のフローチャートである。探索装置１０は、はじめにエンドエフェクタの目標位置の入力を受け付ける（Ｓ１０）。また、探索装置１０は、障害物の設定を受け付ける（Ｓ１１）。
【００５６】
その後、探索装置１０は、エンドエフェクタの位置が目標位置に最も近い場合に１となり、それ以外の場合に０となる第１関数を特定する（Ｓ１２）。また、探索装置１０は、関節の位置が障害物と重なる場合に１となり、それ以外の場合に０となる第２関数を特定する（Ｓ１３）。
【００５７】
探索装置１０は、関節の角度に対応する複数の量子ビットを量子コンピュータ２０に設定する（Ｓ１４）。また、探索装置１０は、カウンタ量子ビットを量子コンピュータ２０に設定する（Ｓ１５）。さらに、探索装置１０は、第１関数及び第２関数に基づき構成されるユニタリ変換を量子コンピュータ２０に設定する（Ｓ１６）。
【００５８】
その後、量子コンピュータ２０による処理を実行する（Ｓ１７）。量子コンピュータ２０による処理については、次図を用いて詳細に説明する。
【００５９】
最後に、探索装置１０は、複数の量子ビットの測定値に対応する角度を算出する（Ｓ１８）。この後、探索装置１０は、算出した角度をロボット制御装置３０に送信してもよい。以上により、探索処理が終了する。
【００６０】
図６は、本実施形態に係る探索装置１０により設定される量子コンピュータ２０によって実行されるグローバーのアルゴリズムのフローチャートである。同図では、図５に示す量子コンピュータ２０による処理（Ｓ１７）の詳細を示している。はじめに、量子コンピュータ２０は、複数の量子ビット及びカウンタ量子ビットを初期化する（Ｓ１７１）。
【００６１】
その後、量子コンピュータ２０は、複数の関節それぞれの回転によるエンドエフェクタの変位を算出し、量子メモリに格納する（Ｓ１７２）。例えば、図４に示す例の場合、第１アーム４１の角度θ１を取り得る全ての値にわたって変化させた場合におけるエンドエフェクタ４３の変位を算出し、第２アーム４２の角度θ２を取り得る全ての値にわたって変化させた場合におけるエンドエフェクタ４３の変位を算出してよい。
【００６２】
量子コンピュータ２０は、複数の関節に関するエンドエフェクタの変位の総和を算出する（Ｓ１７３）。そして、量子コンピュータ２０は、複数の関節の角度を取り得る全ての値にわたって変化させたそれぞれの場合について第２関数の値を算出し、第２関数が１となる場合、カウンタ量子ビットをインクリメントする（Ｓ１７４）。これにより、いずれかの関節が障害物と干渉するような関節の角度を表す量子状態について、カウンタ量子ビットが１以上の値となる。
【００６３】
量子コンピュータ２０は、第１関数が１であり、カウンタ量子ビットが０である量子状態の位相を反転させ、それ以外の量子状態の位相を変えない第１ユニタリ変換を、複数の量子ビット及びカウンタ量子ビットの直積状態に作用させる（Ｓ１７５）。また、量子コンピュータ２０は、量子状態を初期状態に関して反転させる第２ユニタリ変換を、複数の量子ビット及びカウンタ量子ビットの直積状態に作用させる（Ｓ１７６）。
【００６４】
その後、第１ユニタリ変換及び第２ユニタリ変換を所定回数作用させたか判定する（Ｓ１７７）。ここで、所定回数は、おおよそ√Ｎである。所定回数の処理が終了していない場合（Ｓ１７７：ＮＯ）、量子コンピュータ２０は、処理Ｓ１７２から処理Ｓ１７６までを再び実行する。一方、所定回数の処理が終了した場合（Ｓ１７７：ＹＥＳ）、量子コンピュータ２０は、複数の量子ビットを測定し（Ｓ１７８）、測定値を探索装置１０に送信する。以上により、量子コンピュータ２０による処理が終了する。
【００６５】
図７は、本実施形態に係る探索装置１０により実行される探索処理のフローチャートである。同図では、ロボットアームに備えられたエンドエフェクタの軌跡が目標軌跡に最も近いことを表す条件を満たすような、ロボットアームの姿勢の時間変化を探索する処理を示している。
【００６６】
探索装置１０は、はじめにエンドエフェクタの目標軌跡の入力を受け付ける（Ｓ２０）。また、探索装置１０は、障害物の設定を受け付ける（Ｓ２１）。
【００６７】
その後、探索装置１０は、エンドエフェクタの軌跡が目標軌跡に最も近い場合に１となり、それ以外の場合に０となる第１関数を特定する（Ｓ２２）。このような第１関数ｆは、例えば、エンドエフェクタを動かす時間をｔ＝１〜Ｔまでの区間に分割して、各区間についてエンドエフェクタの目標位置（ｘ*t，ｙ*t）を定めて、各区間について数式（２）によってｆtを定義して、ｆ＝Πt=1Tｆtによって特定してよい。
【００６８】
また、探索装置１０は、関節の位置が障害物と重なる場合に１となり、それ以外の場合に０となる第２関数を特定する（Ｓ２３）。第２関数ｈ１，ｈ２についても、例えば、ｔ＝１〜Ｔまでの各区間について数式（４）及び（５）によってｈ１t，ｈ２tを特定してよい。
【００６９】
探索装置１０は、複数の時刻における関節の角度に対応する複数の量子ビットを量子コンピュータに設定する（Ｓ２４）。具体的には、ｔ＝１〜Ｔまでの各区間について、ｎ個の量子ビットの直積状態である｜ｘt＞を設定し、それらを全区間について直積した｜ｘ＞＝Πt=1T｜ｘt＞を量子コンピュータ２０に設定してよい。また、探索装置１０は、カウンタ量子ビットを量子コンピュータ２０に設定する（Ｓ２５）。ここで、カウンタ量子ビットの数は、（ｌｏｇ2（Ｍ×Ｔ））を切り上げた個数であってよい。
【００７０】
さらに、探索装置１０は、第１関数及び第２関数に基づき構成されるユニタリ変換を量子コンピュータ２０に設定する（Ｓ２６）。ここで、第１ユニタリ変換は数式（６）で表されるものであってよく、第２ユニタリ変換は数式（７）で表されるものであってよい。
【００７１】
その後、量子コンピュータ２０による処理を実行する（Ｓ２７）。量子コンピュータ２０による処理については、図６に示すものと同様である。
【００７２】
最後に、探索装置１０は、複数の量子ビットの測定値に対応する角度の時間変化を算出する（Ｓ２８）。この後、探索装置１０は、算出した角度の時間変化をロボット制御装置３０に送信してもよい。このようにして、エンドエフェクタの軌跡が目標軌跡となるような関節の角度の時系列を高速に探索することができる。以上により、探索処理が終了する。
【００７３】
（その他の実施形態）
既述の実施形態において、設定部１２は、ロボットアームの関節が障害物と干渉するか否かに基づいて複数の量子ビット及びカウンタ量子ビットの直積状態の位相を反転させるか否かを決定していたがこれに限定されない。設定部１２により設定されるユニタリ変換は、複数の量子ビットに対応するロボットアームの角度が所定の条件を満たし、かつ、カウンタ量子ビットが、ロボットアームの関節及びアームが障害物と干渉しないことに対応する場合に、複数の量子ビット及びカウンタ量子ビットの直積状態の位相を反転させ、複数の量子ビットに対応するロボットアームの角度が所定の条件を満たさないか、又は、カウンタ量子ビットが、ロボットアームの関節及びアームが障害物と干渉することに対応する場合に、複数の量子ビット及びカウンタ量子ビットの直積状態の位相を変えない、第１ユニタリ変換を含んでもよい。
【００７４】
この場合、例えば、第２関数はロボットアームにおけるアーム上の任意の点が障害物５０と干渉しないことを表す条件を満たすか否かを識別するものでもよい。例えばアーム４２を例に説明すると、この場合の第２関数は、任意の点がアーム４２において関節Ｃ２から距離Ｌｘの位置にあるとすると、数式（８）で表される。
【数８】
2020099984.tif 000010
【００７５】
量子コンピュータ２０は、アーム４２上に第２関数の値を１とする点が存在する場合に、カウンタ量子ビットをインクリメントする。これによりアーム４２が障害物５０と干渉する場合、カウンタ量子ビットの値が１以上となる。一方、アーム４２上に第２関数の値を１とする点が存在しない場合には、カウンタ量子ビットの値は０となる。
【００７６】
以上説明した実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。実施形態が備える各要素並びにその配置、材料、条件、形状及びサイズ等は、例示したものに限定されるわけではなく適宜変更することができる。また、異なる実施形態で示した構成同士を部分的に置換し又は組み合わせることが可能である。
【符号の説明】
【００７７】
１０…探索装置、１０ａ…ＣＰＵ、１０ｂ…ＲＡＭ、１０ｃ…ＲＯＭ、１０ｄ…通信部、１０ｅ…入力部、１０ｆ…表示部、１１…特定部、１２…設定部、１３…算出部、２０…量子コンピュータ、３０…ロボット制御装置、４０…ロボット、４１…第１アーム、４２…第２アーム、４３…エンドエフェクタ、５０…障害物、１００…探索システム
【図１】
2020099984.tif 000011
【図２】
2020099984.tif 000012
【図３】
2020099984.tif 000013
【図４】
2020099984.tif 000014
【図５】
2020099984.tif 000015
【図６】
2020099984.tif 000016
【図７】
2020099984.tif 000017