(57)【要約】【課題】従来ロボットでは、状態情報群に対し効率的な解探索を行えず、動きが不安定になる場合があった。【解決手段】１または２以上の状態情報の集合である部分状態情報群に対応付けられたルールであり、禁止事項を示す１以上の負ルールを格納している格納部と、２以上の脚部と、２以上の各脚部の状態を少なくとも示す状態情報の集合である状態情報群を取得し、当該状態情報群が有する１以上の各部分状態情報群に対応する負ルールに合致しない状態情報群を取得し、当該状態情報群に基づいて２以上の各脚部の制御を行う制御部とを具備し、２以上の脚部のうち少なくとも一部の脚部は、少なくとも一時的に、部分状態情報群に基づいた動作を行わないロボットにより、状態情報群に対し効率的な解探索が行える結果、動きが不安定になり難くなる。【選択図】図１
2019198903.tif 000002
【特許請求の範囲】
【請求項１】
１または２以上の状態情報の集合である部分状態情報群に対応付けられたルールであり、禁止事項を示す１以上の負ルールを格納している格納部と、
２以上の脚部と、
前記２以上の各脚部の状態を少なくとも示す状態情報の集合である状態情報群を取得し、当該状態情報群が有する１以上の各部分状態情報群に対応する負ルールに合致しない状態情報群を取得し、当該状態情報群に基づいて前記２以上の各脚部の制御を行う制御部とを具備し、
前記２以上の脚部のうち少なくとも一部の脚部は、少なくとも一時的に、前記部分状態情報群に基づいた動作を行わないロボット。
【請求項２】
前記２以上の各脚部は、当該脚部が着地している状態か否かを検知するセンサを有し、
前記状態情報群は、前記２以上の各脚部のセンサによる検知結果を示す状態情報を含む請求項１記載のロボット。
【請求項３】
ダイオードとコンデンサとスイッチとを有する２以上の部分回路を有するコア回路をさらに具備し、
前記２以上の部分回路は、前記２以上の脚部の動きを制御する回路であり、
前記制御部は、
前記２以上の各部分回路の状態をも示す状態情報群を取得し、当該状態情報群が有する１以上の各部分状態情報群に対応する負ルールに合致しない状態情報群を取得し、当該状態情報群に基づいて前記２以上の各部分回路に電流を流すまたは電流を止める、のいずれかの動作ための制御を行い、
前記２以上の各部分回路が有する１以上のコンデンサの少なくとも一部のコンデンサの充電または放電の時定数が異なり、
当該時定数が異なることにより、前記コア回路が有する２以上の部分回路のうち少なくとも一部の部分回路は、少なくとも一時的に、前記部分状態情報群に基づいた動作を行わない請求項１または請求項２記載のロボット。
【請求項４】
前記２以上の部分回路は、ハブを介して接続され、
前記ハブの中心から前記２以上の各部分回路に電流が供給される請求項３記載のロボット。
【請求項５】
前記制御部は、
前記２以上の各部分回路の状態を少なくとも示す状態情報の集合である状態情報群を取得する状態情報群取得手段と、
当該状態情報群が有する１以上の各部分状態情報群に対応する１以上の負ルールを前記格納部から取得する負ルール取得手段と、
前記負ルール取得手段が取得した１以上の負ルールのいずれにも合致しない正例の状態情報群を取得する正例取得手段と、
前記正例の状態情報群に基づいて前記２以上の各部分回路に電流を流すまたは電流を止める、のいずれかの動作ための制御を行う制御手段とを具備する請求項３または請求項４記載のロボット。
【請求項６】
前記コンデンサの容量の充電時間または放電時間が、前記制御部が状態情報群を取得した結果に応じた前記制御を行うまでの時間より長い請求項３から請求項５いずれか一項に記載のロボット。
【請求項７】
前記正例取得手段は、
試行錯誤により、正例の状態情報群を取得する請求項５記載のロボット。
【請求項８】
前記格納部は、
着地している状態を示す脚部の数が予め決められた数以下である場合に、脚を上げることを禁止する第一の負ルールを格納している請求項１から請求項７いずれか一項に記載のロボット。
【請求項９】
前記２以上の各脚部は、前後に移動可能であり、
前記格納部は、
前記２以上の脚部間の前後の位置関係に対応して、当該２以上の脚部のうち１以上の脚部の前後の動きを禁止する第二の負ルールを格納している請求項１から請求項８いずれか一項に記載のロボット。
【請求項１０】
前記２以上の各脚部は、上げ下げ可能であり、
前記格納部は、
前記２以上の各脚部に関し、当該脚部が着地している状態に対応して、当該脚部を下げた状態で前方に移動させることを禁止する第三の負ルール、および当該脚部が着地していない状態に対応して、当該脚部を上げた状態で後方に移動させることを禁止する第四の負ルールを格納している請求項１から請求項９いずれか一項に記載のロボット。
【請求項１１】
前記格納部は、
前記２以上の各脚部に関し、当該脚部の位置が前方または後方にある場合に、当該脚部と予め決められた位置関係にある他の脚部の動きを禁止する第五の負ルールを格納している請求項１から請求項１０いずれか一項に記載のロボット。
【請求項１２】
前記格納部は、
前記２以上の各脚部に関し、当該脚部の上げ下げの状態と接地している状態か否かとの組み合わせに応じて、禁止されている移動を許可する第六の負ルールを格納している請求項１から請求項１１いずれか一項に記載のロボット。
【請求項１３】
前記第六の負ルールは、同じ状態情報群に対して、２種類以上の動きを許可し得る請求項１２記載のロボット。
【請求項１４】
２以上の脚部を具備するロボットを制御するロボット制御方法であって、
１または２以上の状態情報の集合である部分状態情報群に対応付けられたルールであり、禁止事項を示す１以上の負ルールを格納している格納部、および制御部によって実現され、
前記制御部が、前記２以上の各脚部の状態を少なくとも示す状態情報の集合である状態情報群を取得し、当該状態情報群が有する１以上の各部分状態情報群に対応する負ルールに合致しない状態情報群を取得し、当該状態情報群に基づいて前記２以上の各脚部の制御を行う制御ステップを具備し、
前記２以上の脚部のうち少なくとも一部の脚部は、少なくとも一時的に、前記部分状態情報群に基づいた動作を行わないことを特徴とするロボット制御方法。
【請求項１５】
２以上の脚部を具備するロボットのコンピュータは、１または２以上の状態情報の集合である部分状態情報群に対応付けられたルールであり、禁止事項を示す１以上の負ルールを格納している格納部にアクセス可能であり、
前記コンピュータを、
前記２以上の各脚部の状態を少なくとも示す状態情報の集合である状態情報群を取得し、当該状態情報群が有する１以上の各部分状態情報群に対応する負ルールに合致しない状態情報群を取得し、当該状態情報群に基づいて前記２以上の各脚部の制御を行う制御部として機能させ、
前記２以上の脚部のうち少なくとも一部の脚部は、少なくとも一時的に、前記部分状態情報群に基づいた動作を行わないことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、状態変数群に対する解探索を行うロボット等に関し、特に、例えば、その脚部の動きを制御するための状態変数群に対する解探索を行うロボット等に関するものである。
【背景技術】
【０００２】
一般的なコンピュータによるＳＡＴ（satisfiability problem：充足可能性問題）等の解探索では、状態変数の数が増えると、計算量が爆発的に増え、正解の取得に長い時間を要するようになる。そこで、従来、アメーバ型コンピュータが提案された（例えば、特許文献１参照）。アメーバ型コンピュータでは、状態変数の数が増えても、計算量は、例えば、線形に増えるに過ぎず、効率的な解探索が期待できる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−８５７３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本願の発明者らは、その脚部の動きを制御するデバイスに、アメーバ型コンピュータの原理を用いたロボット（以下、アメーバ型ロボットと記す）を発案した。
【０００５】
しかし、従来のアメーバ型コンピュータでは、ロボットの脚部の動きを制御するための状態変数群に関し、コントローラからのフィードバックに対して解が更新されず、定常解を繰り返し取得する状態や解探索が不可能になる状態に陥る結果、効率的な解探索が困難となり、ロボットの動作が不安定になる場合があった。
【０００６】
また、アメーバ型以外のロボットでも、その状態情報群に対して効率的な解探索が行えず、動作が不安定となる場合があった。
【課題を解決するための手段】
【０００７】
本第一の発明のロボットは、１または２以上の状態情報の集合である部分状態情報群に対応付けられたルールであり、禁止事項を示す１以上の負ルールを格納している格納部と、２以上の脚部と、２以上の各脚部の状態を少なくとも示す状態情報の集合である状態情報群を取得し、当該状態情報群が有する１以上の各部分状態情報群に対応する負ルールに合致しない状態情報群を取得し、当該状態情報群に基づいて２以上の各脚部の制御を行う制御部とを具備し、２以上の脚部のうち少なくとも一部の脚部は、少なくとも一時的に、部分状態情報群に基づいた動作を行わないロボットである。
【０００８】
かかる構成により、定常解を繰り返し取得する状態や解探索が不可能になる状態に陥り難くなり、効率的な解探索が行える結果、動作が不安定になり難いロボットが実現される。
【０００９】
なお、上記構成において、「２以上の脚部のうち少なくとも一部の脚部は、少なくとも一時的に、部分状態情報群に基づいた動作を行わない」ことは、例えば、制御部が行う２以上の各脚部の制御に異なる遅延が生じた結果である。２以上の各脚部に生じる遅延は、例えば、数ミリ秒〜数百ミリ秒程度であってもよい。かかる範囲で揺らいだ遅延は、例えば、後述する第三の発明に記載しているような、アナログのコア回路で実現されることは好適であるが、制御部がソフト的に実現してもよい。その場合、制御部の動作における単位時間が、例えば、数ミリ秒程度であるとすると、制御部は、各脚部への制御信号を、例えば、単位時間の１千倍〜１０万倍程度、遅延させることによって、各脚部における数ミリ秒〜数百ミリ秒程度の範囲で揺らいだ遅延を実現できる。
【００１０】
すなわち、実施の形態で説明するような、制御部を含むデバイスを有するロボットにおける動作のタイムスケールは、デバイスの内部における動作のタイムスケールと異なるため、ロボットの動作が不安定になることを回避するには、制御部は、ロボットにおける動作のタイムスケールに応じた長さの遅延であり、かつ脚部間で異なる遅延を生じさせればよい。
【００１１】
または、上記構成において、「２以上の脚部のうち少なくとも一部の脚部は、少なくとも一時的に、部分状態情報群に基づいた動作を行わない」ことは、予め決められた条件を満たした場合に、制御部が、２以上の脚部のうち少なくとも一部の脚部を、少なくとも一時的に、部分状態情報群に基づいた動作を行わないように制御した結果であってもよい。予め決められた条件は、通常、部分状態情報群以外の情報に関する条件である。部分状態情報群以外の情報は、例えば、カメラからの画像、温度センサや湿度センサからの情報といった、ロボットの外部の情報（環境情報といってもよい）である。
【００１２】
画像に関する条件は、例えば、高周波成分が閾値より多い又は閾値以上であることであってもよく、それによって、地面が荒れている場合には、部分状態情報群に基づく動作が行われず、ロボットの転倒を回避できる可能性が高まる。温度情報に関する条件は、例えば、温度が閾値より低い又は閾値以下であることであってもよく、それによって、地面が凍結している場合には、部分状態情報群に基づく動作が行われず、ロボットのスリップによる衝突や転倒を回避できる可能性が高まる。湿度情報に関する条件は、例えば、湿度が閾値より高い又は閾値以上であることであってもよく、それによって、地面が濡れている場合には、部分状態情報群に基づく動作が行われず、ロボットのスリップによる衝突や転倒を回避できる可能性が高まる。
【００１３】
また、本第二の発明のロボットは、第一の発明に対して、２以上の各脚部は、当該脚部が着地している状態か否かを検知するセンサを有し、状態情報群は、２以上の各脚部のセンサによる検知結果を示す状態情報を含むロボットである。
【００１４】
かかる構成により、その脚部の動きを制御するための状態変数群に関して、効率的な解探索が行えるアメーバ型ロボットが実現される。
【００１５】
本第三の発明のロボットは、第一または第二の発明に対して、ダイオードとコンデンサとスイッチとを有する２以上の部分回路を有するコア回路をさらに具備し、２以上の部分回路は、２以上の脚部の動きを制御する回路であり、制御部は、２以上の各部分回路の状態を少なくとも示す状態情報の集合である状態情報群を取得し、状態情報群が有する１以上の各部分状態情報群に対応する負ルールに合致しない状態情報群を取得し、状態情報群に基づいて２以上の各部分回路に電流を流すまたは電流を止める、のいずれかの動作ための制御を行い、２以上の各部分回路が有する１以上のコンデンサの少なくとも一部のコンデンサの充電または放電の時定数が異なり、時定数が異なることにより、コア回路が有する２以上の部分回路のうち少なくとも一部の部分回路は、少なくとも一時的に、部分状態情報群に基づいた動作を行わないロボットである。
【００１６】
かかる構成により、定常解を繰り返し取得する状態や解探索が不可能になる状態に陥り難くなり、効率的な解探索が行える結果、動作が不安定になり難いロボットが実現される。
【００１７】
また、本第四の発明のロボットは、第三の発明に対して、２以上の部分回路は、ハブを介して接続され、ハブの中心から２以上の各部分回路に電流が供給されるロボットである。
【００１８】
かかる構成により、ハブ内の総電流は、キルヒホッフの法則に従って保存される。
【００１９】
また、本第五の発明のロボットは、第三または第四の発明に対して、制御部は、２以上の各部分回路の状態を少なくとも示す状態情報の集合である状態情報群を取得する状態情報群取得手段と、状態情報群が有する１以上の各部分状態情報群に対応する１以上の負ルールを格納部から取得する負ルール取得手段と、負ルール取得手段が取得した１以上の負ルールのいずれにも合致しない正例の状態情報群を取得する正例取得手段と、正例の状態情報群に基づいて２以上の各部分回路に電流を流すまたは電流を止める、のいずれかの動作ための制御を行う制御手段とを具備するロボットである。
【００２０】
かかる構成により、例えば、アメーバ型ロボットの脚部の動きを制御するための状態変数群に関して、効率的な解探索が行える。
【００２１】
また、本第六の発明のロボットは、第三から第五いずれか１つの発明に対して、コンデンサの容量の充電時間または放電時間が、制御部が状態情報群を取得した結果に応じた制御を行うまでの時間より長いロボットである。
【００２２】
かかる構成により、状態変化が制御に追い付かず、結果として動作が行われない場合が生じ、正解を発見できる可能性が高まる。
【００２３】
また、本第七の発明のロボットは、第五の発明に対して、正例取得手段は、試行錯誤により、正例の状態情報群を取得するロボットである。
【００２４】
かかる構成により、効率よく正例の状態情報群を取得できる。
【００２５】
また、本第八の発明のロボットは、第一から第七いずれか一つの発明に対して、格納部は、着地している状態を示す脚部の数が予め決められた数以下である場合に、脚を上げることを禁止する第一の負ルールを格納しているロボットである。
【００２６】
かかる構成により、その脚部の動きを的確に制御できるアメーバ型ロボットが実現される。
【００２７】
また、本第九の発明のロボットは、第一から第八いずれか一つの発明に対して、２以上の各脚部は、前後に移動可能であり、格納部は、２以上の脚部間の前後の位置関係に対応して、２以上の脚部のうち１以上の脚部の前後の動きを禁止する第二の負ルールを格納しているロボットである。
【００２８】
かかる構成により、その脚部の動きを的確に制御できるアメーバ型ロボットが実現される。
【００２９】
また、本第十の発明のロボットは、第一から第十いずれか１つの発明に対して、２以上の各脚部は、上げ下げ可能であり、格納部は、２以上の各脚部に関し、脚部が着地している状態に対応して、脚部を下げた状態で前方に移動させることを禁止する第三の負ルール、および脚部が着地していない状態に対応して、脚部を上げた状態で後方に移動させることを禁止する第四の負ルールを格納しているロボットである。
【００３０】
かかる構成により、その脚部の動きを的確に制御できるアメーバ型ロボットが実現される。
【００３１】
また、本第十一の発明のロボットは、第一から第十いずれか１つの発明に対して、格納部は、２以上の各脚部に関し、脚部の位置が前方または後方にある場合に、脚部と予め決められた位置関係にある他の脚部の動きを禁止する第五の負ルールを格納しているロボットである。
【００３２】
かかる構成により、その脚部の動きを的確に制御できるアメーバ型ロボットが実現される。
【００３３】
また、本第十二の発明のロボットは、第一から第十一いずれか１つの発明に対して、格納部は、２以上の各脚部に関し、脚部の上げ下げの状態と接地している状態か否かとの組み合わせに応じて、禁止されている移動を許可する第六の負ルールを格納しているロボットである。
【００３４】
かかる構成により、その脚部の動きを的確に制御できるアメーバ型ロボットが実現される。
【００３５】
また、本第十三の発明のロボットは、第十二の発明に対して、第六の負ルールは、同じ状態情報群に対して、２種類以上の動きを許可し得るロボットである。
【００３６】
かかる構成により、定常解を繰り返し取得する状態や解探索が不可能になる状態から脱出できる可能性が高まり、その結果、その脚部の動きを的確に制御できるアメーバ型ロボットが実現される。
【発明の効果】
【００３７】
本発明によれば、例えば、その状態変数群に対して効率的な解探索が行える結果、動きが不安定になり難いロボットが実現される。
【図面の簡単な説明】
【００３８】
【図１】実施の形態におけるロボットのブロック図
【図２】同デバイスのブロック図
【図３】同負ルールのデータ構造図
【図４】同デバイスの動作について説明するフローチャート
【図５】同ロボットの概観図
【図６】同電子アメーバの回路構成を、単細胞アメーバと共に示す図
【図７】同仮足ユニットの回路構成と、仮足ユニットに与えられる異なる特性のエラー信号波形とを示す図
【図８】同４変数の時間発展（ａ）と、エラー確率ごとの、エラー期間λの変化に応じた探索時間の変動（ｂ）とを示す図
【図９】同コンピュータシステムの内部構成の一例を示す図
【発明を実施するための形態】
【００３９】
以下、ロボットの実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
【００４０】
図１は、本実施の形態におけるロボットのブロック図である。ロボットは、デバイス１、胴体２、２以上（例えば、４つ、８つ等）の脚部３、および駆動機構４を備える。
【００４１】
デバイス１については後述する。胴体２は、例えば、柔軟性を有する素材で構成され、図示しない中空部を有し、その中空部内が与圧されていてもよい。ただし、胴体２の素材や構造は問わない。
【００４２】
脚部３は、上下および前後に移動可能である。脚部３もまた、例えば、ゴムやエストラマ等の柔軟性を有する素材で構成され、図示しない中空部を有し、その中空部内が与圧されていてもよい。この場合、脚部３の上下および前後の移動は、その伸縮および屈曲によって実現される。または、脚部３は、金属や炭素繊維等の固い素材で構成され、関節を有していてもよい。この場合における上下および前後の移動は、関節の折り曲げによって実現される。
【００４３】
また、脚部３は、センサ３１を備える。センサ３１は、脚部３が着地している状態か否かを検知し、検知結果を出力する。検知結果とは、例えば、脚部３が着地している状態か否かを示す情報（例えば、着地している状態を示す“ｏｎ”，着地していない状態を示す“ｏｆｆ”等）である。または、検出結果は、接地を検知していない状態では出力されず、接地を検知したことに応じて出力される信号でもよいし、接地を検知していない状態で継続的に出力され、接地を検知したことに応じて停止される信号でも構わない。ただし、脚部３の素材や構成は問わない。
【００４４】
また、センサ３１は、例えば、タッチセンサであるが、距離センサや押しボタン等でもよく、着地している状態か否かを検知し得る素子であれば、その種類は問わない。また、センサ３１が出力する検知結果の態様も問わない。
【００４５】
駆動機構４は、２以上の各脚部３の上下および前後の移動を実現するための機構（例えば、アクチュエータ）である。駆動機構４は、例えば、２以上の脚部３ごとに、その中空部内に対して空気の注入および排出を行うブロワと、その中空部内に取り付けられた１以上のワイヤと、１以上のワイヤの巻取りを行う電動リールとを有している。または、駆動機構４は、２以上の脚部３ごとに、その関節を折り曲げるための１以上のモータを有していてもよい。ただし、駆動機構４の構成は問わない。
【００４６】
デバイス１は、駆動機構４を介して、２以上の各脚部３を駆動する。具体的には、デバイス１は、駆動機構４を構成する電動リールやモータ等の２以上の電動素子の電流を制御することにより、２以上の各脚部３を駆動し、それによって、ロボットの移動を実現する。
【００４７】
なお、ロボットは、例えば、市販の多脚ロボットでもよく、そのハードウェア構成は問わない。また、デバイス１は、ロボット以外の装置に設けられても構わない。ロボット以外の装置とは、例えば、化学反応シミュレータである。化学反応シミュレータは、例えば、共有結合する有機分子化合物の化学反応プロセスのシミュレート、および反応生成物の予測を行う。ここでは、物理原理または一般化学反応則のうち１以上に反する結合状態が、負ルールとされる。
【００４８】
図２は、デバイス１のブロック図である。デバイス１は、格納部１１、コア回路１２、および制御部１３を備える。
【００４９】
コア回路１２は、２以上の部分回路１２１を備える。２以上の部分回路１２１は、例えば、ハブを介して接続され、このハブの中心から２以上の各部分回路１２１に、電流が供給される。かかる構成により、ハブ内の総電流は、キルヒホッフの法則に従って保存される結果、例えば、体積が保存されるアメーバに相当するアメーバ型ロボットの動きが実現できる。
【００５０】
制御部１３は、状態情報群取得手段１３１、負ルール取得手段１３２、正例取得手段１３３、および制御手段１３４を備える。
【００５１】
デバイス１を構成する格納部１１は、各種の情報を格納し得る。各種の情報とは、例えば、１または２以上の負ルールである。負ルールとは、禁止事項に関するルールである。禁止事項とは、行っていけない事柄である。負ルールは、例えば、１または２以上の状態情報の集合である部分状態情報群に対応付けられたルールであり、禁止事項を示すルールである。部分状態情報群とは、状態情報群の一部分である。状態情報群とは、１または２以上の状態情報の集合である。状態情報とは、状態を示す情報である。なお、状態情報、状態情報群、および部分状態情報群の詳細については後述する。
【００５２】
禁止事項は、例えば、ロボットの転倒を回避するために、２以上の脚部３の動作に関して禁止された事項であるといってもよい。負ルールは、具体的には、例えば、「一度に３本以上の足を上げることは禁止」といったルールである。
【００５３】
なお、格納部１１は、例えば、正ルールも格納し得る。正ルールとは、守るべきルールである。ただし、格納部１１は、正ルールを格納しないことは好適である。または、正ルールがなくても、ロボットは、負ルールに基づいて的確な動きを行うことができる、といってもよい。
【００５４】
格納部１１は、例えば、第一の負ルールを格納している。第一の負ルールとは、ロボットが有する２以上の脚部３のうち、着地している状態を示す脚部３の数が、予め決められた数以下である場合に、脚を上げることを禁止するルールである。予め決められた数とは、例えば、２であるが、ロボットが２つの脚部３しか有さない場合は、１でもよい。
【００５５】
第一の負ルールは、例えば、“ｉｆ（センサｏｎの脚が２本以下），ｔｈｅｎ（脚を上げることを禁止）”等であるが、その表現形式は問わない。
【００５６】
また、格納部１１は、例えば、第二の負ルールを格納している。第二の負ルールとは、２以上の脚部３の間の前後の位置関係に対応して、２以上の脚部３のうち１以上の脚部３の前後の動きを禁止するルールである。
【００５７】
第二の負ルールは、例えば、“ｉｆ（右、左前脚のどちらかが後方にある），ｔｈｅｎ（片方の脚が後方に動くことを禁止）”、“ｉｆ（右、左後脚のどちらかが前方にある），ｔｈｅｎ（片方の脚が前方に動くことを禁止）”等であるが、許可の取消でもよく、その表現形式は問わない。
【００５８】
また、格納部１１は、第三および第四の２つの負ルールを格納している。第三の負ルールとは、２以上の各脚部３に関し、脚部３が着地している状態に対応して、脚部３を下げた状態で前方に移動させることを禁止するルールである。第四の負ルールとは、同じく２以上の各脚部３に関し、脚部３が着地していない状態に対応して、脚部３を上げた状態で後方に移動させることを禁止するルールである。
【００５９】
第三の負ルールは、例えば、“ｉｆ（センサｏｎ），ｔｈｅｎ（前方に動くこと＋下げた状態を禁止、ａｎｄ後方に動くこと＋下げた状態を許可）”であり、第四の負ルールは、例えば、“ｉｆ（センサｏｆｆ），ｔｈｅｎ（後方に動くこと＋上げた状態を禁止、ａｎｄ前方に動くこと＋上げた状態を許可）であるが、その表現形式は問わない。
【００６０】
また、格納部１１は、例えば、第五の負ルールを格納している。第五の負ルールとは、２以上の各脚部３に関し、脚部３の位置が前方または後方にある場合に、脚部３と予め決められた位置関係にある他の脚部３の動きを禁止するルールである。
【００６１】
第五の負ルールは、例えば、“ｉｆ（脚が前方にある），ｔｈｅｎ（点対称な位置にある脚が前方以外に動くことを禁止）”、“ｉｆ（脚が後方にある），ｔｈｅｎ（点対称な位置にある脚が後方以外に動くことを禁止）”等であるが、その表現形式は問わない。
【００６２】
また、格納部１１は、例えば、第六の負ルールを格納している。第六の負ルールとは、２以上の各脚部３に関し、脚部３の上げ下げの状態と、接地している状態か否かとの組み合わせに応じて、禁止されている移動を許可するルールである。組み合わせとは、例えば、脚の上げ下げと接地の有無に関し、“脚を下げた状態かつ接地した状態（センサｏｎ）”、“脚を上げた状態かつ接地していない状態（センサｏｆｆ）”、“脚を下げた状態かつ接地した状態（センサｏｎ）”、および“脚を上げた状態かつ接地した状態（センサｏｎ）”の４通りである。
【００６３】
第六の負ルールは、例えば、禁止された動き“脚を下ろしたまま方向を変えること”を許可するルール“ｉｆ（脚を下げた状態かつセンサｏｆｆ），ｔｈｅｎ（脚を下ろしたまま方向を変えることを許可）”である。
【００６４】
または、第六の負ルールは、禁止された動き“その方向のまま脚を下ろすこと”を許可するルール“ｉｆ（脚を上げた状態かつセンサｏｆｆ），ｔｈｅｎ（その方向のまま脚を下ろすことを許可）”でもよい。
【００６５】
または、第六の負ルールは、禁止された動き“方向を変えて脚を下ろすこと”を許可するルール“ｉｆ（脚を上げた状態かつセンサｏｆｆ），ｔｈｅｎ（方向を変えて脚を下ろすことを許可）”でもよい。
【００６６】
または、第六の負ルールは、禁止された動き“その方向のまま脚を上げること”を許可するルール“ｉｆ（脚を下げた状態かつセンサｏｎ）”，ｔｈｅｎ（その方向のまま脚を上げることを許可）でもよい。
【００６７】
または、第六の負ルールは、禁止された動き“方向を変えて脚を上げること”を許可するルール“ｉｆ（脚を下げた状態かつセンサｏｎ），ｔｈｅｎ（方向を変えて脚を上げることを許可）”でもよい。
【００６８】
または、第六の負ルールは、禁止された動き“その方向のまま脚を下ろすこと”を許可するルール“ｉｆ（脚を上げた状態かつセンサｏｎ），ｔｈｅｎ（その方向のまま脚を下ろすことは禁止）”でもよい。
【００６９】
ただし、第六の負ルールの表現形式は問わない。また、第六の負ルールは、例えば、上記６例のうち２例以上に対応するルール群を含んでいてもよい。
【００７０】
なお、第六の負ルールは、例えば、上記６例のうち、２つ目と３つ目、４つ目と５つ目がそうであるように、同じ状態情報群に対して、２種類以上の動きを許可し得る。これによって、例えば、後述する具体例において、定常解を繰り返し取得する状態や解探索が不可能になる状態から脱出できる可能性が高まり、その結果、アメーバ型ロボットの脚部３の動きを的確に制御できる。なお、解探索が不可能になる状態とは、同時刻に全ての変数が同値をとろうとして、コンフリクトを起こした状態である。この状態でシステムがロックされる結果、ロボット１は、動作を停止したり、不安定な場所で転倒したりする。
【００７１】
コア回路１２を構成する２以上の部分回路１２１の各々は、ダイオードとコンデンサとスイッチとを有する。ダイオードは、一の方向（順方向）にのみ電流を流し、逆の方向には電流を流さない。コンデンサは、ダイオードを介して流れ込む電気を蓄え、蓄えた電気を、スイッチを介して放出する。
【００７２】
２以上の部分回路１２１の間で、コンデンサの充電または放電の時定数（以下、充放電時時定数、または単に時定数と記す場合がある）が異なることは好適である。充放電時時定数は、基本的には、当該コンデンサの静電容量で決まるが、当該コンデンサと接続されている他の回路要素（例えば、ダイオード、抵抗、スイッチ等）によっても変化する。従って、２以上の部分回路１２１の間で、たとえコンデンサの静電容量が同一であっても、例えば、抵抗の値やダイオードの特性が異なっていたり、スイッチを実現するＮＯＴゲート等の閾値が異なっていたりしていれば、充放電時時定数が異なる結果となる。
【００７３】
スイッチは、コンデンサへの充電が可能な状態と、コンデンサからの放電が可能な状態とを切り替える。つまり、コンデンサは、スイッチがＯＦＦの状態で充電可能であり、スイッチがＯＮの状態で放電可能である。
【００７４】
部分回路１２１は、通常、抵抗も有する。抵抗は、例えば、コンデンサの充放電の時定数を大きくする。時定数とは、コンデンサの充放電に要する時間である。スイッチがＯＮされたタイミングに対し、コンデンサへの充電が完了するタイミングは、時定数に応じた時間だけ遅延する。同様に、スイッチがＯＦＦされたタイミングに対し、充電されたコンデンサからの放電が完了するタイミングもまた、時定数に応じた時間だけ遅延する。
【００７５】
なお、スイッチは、例えば、ＮＯＴゲートで構成されるが、インバータを用いてもよく、その実現手段は問わない。また、部分回路１２１は、その他の素子も有してよいことは言うまでもない。その他の素子とは、例えば、具体例で説明する電界効果トランジスタ（ＦＥＴ）であるが、その種類は問わない。
【００７６】
制御部１３は、コア回路１２を構成する２以上の部分回路１２１介して、２以上の脚部３の動きを制御する。詳しくは、制御部１３は、コア回路１２を構成する２以上の各部分回路１２１の状態を少なくとも示す状態情報の集合である状態情報群を取得し、当該状態情報群が有する１以上の各部分状態情報群に対応する負ルールに合致しない状態情報群を取得し、当該状態情報群に基づいて２以上の各部分回路１２１に電流を流すまたは電流を止める、のいずれかの動作ための制御を行う。
【００７７】
状態情報とは、状態を示す情報である。状態とは、例えば、部分回路１２１の状態である。部分回路１２１の状態を示す情報とは、例えば、コンデンサに蓄えられている電気量、充電中か放電中かを示す情報等であるが、抵抗を流れる電流の値や電圧等でもよい。
【００７８】
または、状態とは、センサ３１の状態でもよい。センサ３１の状態を示す状態情報は、例えば、前述した“ｏｎ”や“ｏｆｆ”等であるが、その表現形式は問わない。
【００７９】
または、状態とは、脚部３の状態であってもよい。脚部３の状態を示す状態情報とは、例えば、“脚を上げた状態”、“脚を下ろした状態”、“後方に移動した状態”、前方に移動した状態、“接地した状態”、“接地していない状態”等である。
【００８０】
なお、“接地した状態”および“接地していない状態”は、センサ３１の“ｏｎ”および“ｏｆｆ”と同等である。それ以外の“脚を上げた状態”等の情報は、例えば、部分回路１２１の状態を示す状態情報を用いて取得されてもよい。ただし、状態情報は、例えば、駆動機構４の状態を示す情報（例えば、電動リールの電流値、関節の角度等）など、ロボットの構成要素の状態を示す情報であれば何でもよい。また、ロボット以外の装置の構成要素の状態を示す情報でも構わない。
【００８１】
状態情報群とは、上記のような各種の状態情報の集合である。状態情報群は、コア回路１２を構成する２以上の各部分回路１２１の状態情報を少なくとも含む。また、図１に示したロボットの場合、状態情報群は、通常、センサ３１の状態情報も含む。
【００８２】
なお、状態情報群は、例えば、具体例で説明する状態変数群｛Ｘ１，Ｘ２，Ｘ３，Ｘ４・・・｝でもよい。状態変数群を構成する各状態変数“Ｘ１”，“Ｘ２”等は、真（例えば“１”）または偽（例えば“０”）のいずれかの値をとる。
【００８３】
この場合、格納部１１には、例えば、図３に示すような２以上の負ルールが格納されていてもよい。図３は、負ルールのデータ構造図である。負ルールは、状態情報群と、禁止事項とを有する。状態情報群は、１または２以上の状態変数Ｘ１〜Ｘ４等で構成される。
【００８４】
状態変数Ｘ１は、例えば、脚部３を上げている状態か否かを示す変数であり、真“脚を上げた状態”に対応する“１”、または偽“脚を下げた状態”に対応する“０”のいずれかの値をとる。なお、真偽と“０”，“１”の対応は逆でもよい（以下同様）。
【００８５】
また、状態変数Ｘ２は、例えば、脚部３を前に移動した状態か否かを示す変数であり、真“前に移動した状態”に対応する“１”、または偽“前に移動していない状態”に対応する“０”のいずれかの値をとる。同様に、状態変数Ｘ３は、例えば、脚部３を後ろに移動した状態か否かを示す変数であり、真“後ろに移動した状態”に対応する“１”、または偽“後ろに移動していない状態”に対応する“０”のいずれかの値をとる。
【００８６】
さらに、状態変数Ｘ４は、例えば、脚部３が接地している状態か否かを示す変数であり、真“接地した状態”に対応する“１”、または偽“接地していない状態”に対応する“０”のいずれかの値をとる。
【００８７】
格納されている２以上の負ルールには、ＩＤ（例えば、“１”，“２”等）が対応付いている。例えば、ＩＤ“１”に対応する負ルール（以下、負ルール１と記す場合がある）は、状態情報群“０，１，０，１・・・”と禁止事項“点対称な位置にある脚が前方以外に動くことを禁止”とを有する。また、ＩＤ“２”に対応する負ルール（負ルール２）は、状態情報群“０，０，１，１・・・”と禁止事項“点対称な位置にある脚が前方以外に動くことを禁止”とを有する。
【００８８】
同様に、負ルール３は、状態情報群“Ｎｕｌｌ，０，０，１・・・”と禁止事項“前方に動くこと＋下げた状態を禁止、ａｎｄ後方に動くこと＋下げた状態を許可”とを有し、負ルール４は、状態情報群“Ｎｕｌｌ，０，０，０・・・”と禁止事項“後方に動くこと＋上げた状態を禁止、ａｎｄ前方に動くこと＋上げた状態を許可”とを有する。なお、“Ｎｕｌｌ”は、当該状態変数の値が“０”または“１”のどちらでもよいことを示す。
【００８９】
ただし、負ルールのデータ構造は問わない。負ルールは、後述する具体例におけるバウンスバックルールでもよい。
【００９０】
状態情報群取得手段１３１は、例えば、２以上の部分回路１２１ごとに、当該部分回路１２１の１以上の状態情報を含む状態情報群を取得する。
【００９１】
または、状態情報群取得手段１３１は、２以上の脚部３ごとに、当該脚部３に対応する部分回路１２１の１以上の状態情報と、当該脚部３に対応するセンサ３１の状態情報とを含む状態情報群を取得してもよい。
【００９２】
負ルール取得手段１３２は、状態情報群取得手段１３１が取得した２以上の状態情報群ごとに、当該状態情報群が有する１または２以上の各部分状態情報群に対応する１または２以上の負ルールを格納部１１から取得する。
【００９３】
部分状態情報群とは、各種の状態情報の集合である状態情群の部分集合である、といってもよい。例えば、状態変数群｛Ｘ１，Ｘ２，Ｘ３，Ｘ４｝の場合、その１以上の部分状態情報群は、｛Ｘ１｝，｛Ｘ２｝・・・，｛Ｘ１，Ｘ２｝，｛Ｘ２，Ｘ３｝・・・，｛Ｘ１，Ｘ２，Ｘ３｝，｛Ｘ１，Ｘ２，Ｘ４｝・・・，｛Ｘ１，Ｘ２，Ｘ３，Ｘ４｝等である。
【００９４】
負ルール取得手段１３２は、例えば、上記のような１以上の部分状態変数群ごとに、当該状態情報群をキーとして格納部１１を検索し、当該状態変数群に対応する負ルールを取得する。従って、一の状態情報群に対して、１以上の部分状態情報群が取得され、その各々に対して、１以上の負ルールが取得され得る。
【００９５】
正例取得手段１３３は、正例の状態情報群を取得する。正例の状態情報群とは、負ルール取得手段１３２が取得した１以上の負ルールのいずれにも合致しない状態情報群である。
【００９６】
正例取得手段１３３は、例えば、試行錯誤により、正例の状態情報群を取得する。試行錯誤とは、試行錯誤とは、未知の課題に対して、既知の解決法がない場合に、試みと失敗を繰り返しながら、最後には課題を解決するに至るプロセスをいう。試行錯誤は、例えば、具体例で説明するような、状態変数群に対する解探索でもよい。
【００９７】
すなわち、正例取得手段１３３は、例えば、取得された１以上の負ルールのいずれにも合致しない状態変数群（これを｛Ｘ１＝１，Ｘ２＝０，Ｘ３＝０，Ｘ４＝１｝とする）を構成する１以上の各状態変数を反転し、その反転した状態変数群（すなわち｛Ｘ１＝０，Ｘ２＝１，Ｘ３＝１，Ｘ４＝０｝）を用いて、単位時間Δｔ後の状態変数群を計算する処理を、前回の計算結果と今回の計算結果とが一致するまで繰り返す。
【００９８】
そして、正例取得手段１３３は、前回の計算結果と今回の計算結果とが一致した状態変数群を、正例の状態情報群として取得する。なお、正例取得手段１３３は、こうして取得した正例の状態情報群を格納部１１に蓄積してもよい。
【００９９】
制御手段１３４は、正例取得手段１３３が取得した正例の状態情報群に基づいて、２以上の各部分回路１２１に電流を流すまたは電流を止める、のいずれかの動作ための制御を行っても良い。詳しくは、例えば、上述した第六の負ルールを構成する条件（ｉｆ・・・）および許可事項（ｔｈｅｎ・・・）のうち、前者（例えば、“足を上げた下げた状態かつセンサｏｆｆ”等）が正例の状態情報群に該当し、後者（例えば、“足を下ろしたまま方向を変えることを許可”等）が正例の状態情報群に基づく制御に対応する。
【０１００】
以上のように構成されたデバイス１において、コア回路１２を構成する２以上の各部分回路１２１が有する１以上のコンデンサの少なくとも一部のコンデンサの静電容量が異なることは好適である。静電容量が異なることは、例えば、２以上の部分回路１２１が、各々一のコンデンサのみを有する場合に、当該２以上のコンデンサの間で静電容量がばらついていることである。または、静電容量が異なることは、２以上の部分回路１２１が、各々２以上のコンデンサを有する場合には、例えば、一の部分回路１２１が有する２以上のコンデンサの間で静電容量がばらついていることでもよいし、２以上の部分回路１２１の間で静電容量のばらつきの程度が異なることでもよい。静電容量が異なることにより、コア回路１２が有する２以上の部分回路１２１のうち少なくとも一部の部分回路１２１は、少なくとも一時的に、部分状態情報群に基づいた動作を行わない。
【０１０１】
なお、動作を行わないことは、例えば、制御手段１３４の制御に対する当該一部の部分回路１２１の状態変化が遅く、結果として、当該一部の部分回路１２１の動作が行われない場合も含む。
【０１０２】
または、コア回路１２を構成する２以上の部分回路１２１の間で、コンデンサの充放電時定数が異なっていてもよい。なお、充放電時定数は、例えば、コンデンサの静電容量によって、または、コンデンサの静電容量と抵抗の値との組み合わせによって、変化する。
【０１０３】
コンデンサの充放電時定数が異なることにより、少なくとも一部の部分回路１２１では、コンデンサの容量の充電時間または放電時間が、制御部１３が正例の状態情報群を取得した結果に応じた制御を行うまでの時間より長くなり、結果として、当該一部の部分回路１２１の動作が行われない場合がある。
【０１０４】
なお、後述する具体例では、コンデンサの充放電時定数が、コントローラからコア回路１２へのフィードバック時間より長いことによっても、少なくとも一部の部分回路１２１の動作が行われない結果をもたらす場合がある。
【０１０５】
こうして、少なくとも一部の部分回路１２１の動作が行われないことにより、ロボットの２以上の各脚部３の動きを制御するための状態変数群に関して、定常解を繰り返し取得する状態や解探索が不可能になる状態に陥り難くなる結果、効率的な解探索が行える。
【０１０６】
格納部１１は、例えば、フラッシュメモリ等の不揮発性の記録媒体が好適であるが、ＲＡＭなど揮発性の記録媒体でも実現可能である。
【０１０７】
格納部１１等に情報が記憶される過程は問わない。例えば、メモリカード等の記録媒体を介して情報が格納部１１等で記憶されるようになってもよく、ネットワークや通信回線等を介して送信された情報が格納部１１等で記憶されるようになってもよく、あるいは、入力デバイスを介して入力された情報が格納部１１等で記憶されるようになってもよい。入力デバイスは、例えば、タッチパネル、キーボード等、何でもよい。
【０１０８】
制御部１３、状態情報群取得手段１３１、負ルール取得手段１３２、正例取得手段１３３、および制御手段１３４は、通常、ＭＰＵやメモリ等から実現され得る。制御部１３等の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。ただし、処理手順は、ハードウェア（専用回路）で実現してもよい。
【０１０９】
次に、デバイス１の動作について図４のフローチャートを用いて説明する。なお、このフローチャートの処理は、例えば、マイコン等のコンピュータによってソフト的に実行されるが、論理ゲートによるデジタル回路または論理演算を行うアナログ回路でハード的に実行されてもよい。
【０１１０】
（ステップＳ４０１）制御部１３は、変数ｉに初期値１をセットする。変数ｉとは、コア回路１２を構成する２以上の部分回路１２１のうち、未選択の部分回路１２１を順番に選択していくための変数である。なお、アナログ回路の場合、連続時間で動作するため、変数ｉは理解のための便宜的なものになる。
【０１１１】
（ステップＳ４０２）制御部１３は、ｉ番目の部分回路１２１があるか否かを判別する。ｉ番目の部分回路１２１がある場合はステップＳ４０３に進み、ｉ番目の部分回路１２１がない場合はステップＳ４０１に戻る。
【０１１２】
（ステップＳ４０３）状態情報群取得手段１３１は、ｉ番目の部分回路１２１に対応する状態情報群を取得する。
【０１１３】
（ステップＳ４０４）負ルール取得手段１３２は、ステップＳ４０３で取得された状態情報群に対応する１以上の負ルールを格納部１１から取得する。
【０１１４】
（ステップＳ４０５）正例取得手段１３３は、ステップＳ４０４で取得された１以上の負ルールのいずれにも合致しない正例の状態情報群を取得する。
【０１１５】
（ステップＳ４０６）制御手段１３４は、ステップＳ４０５で取得された正例の状態情報群を用いて、ｉ番目の部分回路１２１に電流を流す又は電流を止める、のいずれかの動作ための制御を行う。
【０１１６】
（ステップＳ４０７）制御部１３は、変数ｉをインクリメントする。その後、ステップＳ４０２に戻る。
【０１１７】
なお、図４のフローチャートにおいて、デバイス１の電源オフや処理終了の割り込みにより処理は終了する。
【０１１８】
以下、本実施の形態におけるロボットの具体的な動作例について説明する。本例のロボットは、図４に示すようなアメーバ型ロボットである。なお、このロボットの脚数は４であるが、８や６等、２以上であれば何脚でもよい。このロボットの各脚（仮足ユニット：pseudopod unit）は、図１に示したロボットの各脚部３に相当する。各脚は、関節を有し、上下および前後の各方向に移動可能である。各脚の先端には、センサ３１に相当するタッチセンサが設けられている。
【０１１９】
そして、このロボットは、デバイス１に相当する電子アメーバ（Electronic amoeba）を有する。電子アメーバは、単細胞のアメーバ生物（amoeboid organism：以下、単細胞アメーバ）の餌食行動からインスピレーションを得て、組合せ最適化問題の解を探索するように設計されている。単細胞アメーバは、与えられた制約を満たしながら、食物摂取量を最大限にしようとする。
【０１２０】
詳しくは、第一に、単細胞アメーバは、仮足を、ある程度のゆらぎを以て、一方向に拡張する。電子アメーバは、状態変数に対応して、仮足ユニット内のダイオードを流れる一方向の電流によって、かかる仮足の動きを表す。単細胞アメーバの変形のゆらぎおよび誤差は、電子アメーバにおいては、ランダムビット発生器を用いて電子的に実現される。または、電源などに雑音をいれることでも、同様なゆらぎおよび誤差が得られる。
【０１２１】
第二に、単細胞アメーバは、体積保存によって、その変形が制約される。体積保存による変形の制約は、仮足間の時空間相関を生じさせる。電子アメーバにおいて、体積保存は、仮足ユニットの星形ネットワークの中心におけるキルヒホッフの法則によって表現される。
【０１２２】
第三に、単細胞アメーバは、光の照射を受けると、その仮足が収縮する。この光回避は、アメーバ形状を意図的に変形させるために用いられる。光回避の特性は、各仮足ユニット内におけるコンデンサを有する電界効果トランジスタによる電流制御によって表現される。
【０１２３】
図６には、上記のような電子アメーバの回路構成が、単細胞アメーバと共に示されている。電子アメーバは、コア回路１２に相当するアメーバコア（amoeba core）と、制御部１３に相当するコントローラと、格納部１１に相当する図示しないメモリとを有する。
【０１２４】
メモリには、負ルールに対応するバウンスバックルールが格納されている。なお、バウンスバックルールは、単細胞アメーバの「与えられた制約」に相当するルールであるといってもよい。また、バウンスバックルールは、プログラムに組み込まれていても構わない。さらに、プログラムで記載されている論理関数を、論理ゲートによる回路で直接実装しても構わない。
【０１２５】
アメーバコアは、部分回路１２１に相当する２以上（図６では８つ）の仮足ユニット（pseudopod unit）を有する。これら２以上の仮足ユニットは、ハブに相当する星形ネットワーク（star-topology network）を介して接続されている。星形ネットワークの中心（ハブ）に電流が供給され、供給された電流は、２以上の各仮足ユニットに分配される。各仮足ユニットには、電流Ｉｉが入力され、各仮足ユニットの出力Ｘｉが、コントローラに与えられる。コントローラは、各仮足ユニットからの出力Ｘｉに対し、バウンスバックルール基づくフィードバック信号ｙｉを生成して、各仮足ユニットに与える。フィードバック信号とは、状態変数を更新するための信号であり、バウンスバック信号とも呼ばれる。
【０１２６】
各仮足ユニットにはまた、図示しないランダムビット発生器が発生するエラー信号ｅｉも与えられる。エラー信号とは、単細胞アメーバの変形の誤差ないしはゆらぎを実現する信号である、といってもよい。
【０１２７】
図７には、各仮足ユニットの回路構成と、各仮足ユニットに与えられる、異なる特性の３つのエラー信号の波形とが示される。まず、回路構成に関し、仮足ユニットの入力端は、抵抗Ｒを介して、ダイオードのアノード側に接続され、ダイオードのカソード側は、ＮＯＴゲートを介して出力端に接続される。ダイオードのカソード側はまた、コンデンサＣを介して接地されており、ダイオードのカソード側とコンデンサＣとの間に第一のＦＦＴが、コンデンサＣと接地との間に、第一のＦＥＴと直列の第二のＦＥＴが、それぞれ接続されている。そして、第一のＦＥＴにフィードバック信号ｙｉが、第二のＦＥＴにはエラー信号ｅｉが、それぞれ与えられる。
【０１２８】
例えば、各仮足ユニットのコンデンサＣの静電容量は１０ｎＦであり、抵抗Ｒは１００Ωである。ただし、静電容量また抵抗値のうち１種類以上は、仮足ユニット間でばらついていることは好適である。例えば、仮足ユニット間での静電容量等の相対ばらつきは、１００％未満であることが望ましい。相対ばらつきとは、例えば、単位や平均等が異なる２以上の集団におけるばらつきの程度を相対的に示す値であるといってもよい。相対ばらつきは、例えば、標準偏差を算術平均で割った相対標準偏差（変動係数ともいう）であるが、ばらつきの程度を相対的に表現し得る値であれば、その種類は問わない。ばらつきが大きすぎると、デバイス１が動作しなくなる場合があるからである。
【０１２９】
ハブに注入される電流は１０μＡである。変数の数Ｎは１２であり、冗長変数の数は２Ｎ＝２４である。コントローラのクロック周波数は８４ＭＨｚであり、コンデンサＣの充放電速度よりも十分に速い。
【０１３０】
ゆらぎの原因となるエラー信号としては、Ｘｏｒｓｈｉｆｔ法で生成したランダムビット列を用いる。エラー信号は、バウンスバック信号とは無関係に“０”を生成する。
【０１３１】
図７下段に示されたｅ１〜ｅ３のような異なる特性のエラー信号は、解探索に影響を及ぼす。エラー確率ｐは、一度にどれくらいの仮足ユニットがエラー信号を受信したかを意味する。エラー周期λは、エラービット幅と隣接ビット間の平均時間間隔との和である。λを増加させると、誤差のビット幅と時間間隔の両方が増加する。電子アメーバの状態変数Ｘｉは、仮足ユニットの出力端（つまり、ＮＯＴゲートの出力電圧）から取得される。
【０１３２】
図８には、４変数の時間発展（ａ）と、エラー確率ごとの、エラー期間λの変化に応じた探索時間の変動（ｂ）とが示される。
【０１３３】
図８（ａ）において、エラー確率ｐは０．６５、状態変数の数は２４である。すべてのｉとｊについて、初期状態Ｘｉ＿ｊ＝１から探索プロセスを開始すると、状態変数はそれぞれ変化し、時々振動的挙動を示す。エラー信号が仮足ユニットにランダムに課されると、電子アメーバは別の状態になる。エラー信号を数回与えた後、系は定常状態に達し安定する。これにより、安定状態の状態変数が常に制約式を満たしていること、すなわちアメーバコアが解を見つけ得ることが確認できる。
【０１３４】
一方、振動状態は、アメーバコアが変数間の不一致を解決できないことを示唆している。系はローカライズされた状態になり、ローカライズされた状態から逃れるために、系にエラー信号を与えることが必要となる。言い換えれば、アメーバコアは、最終的な解が見出されるまで、ダイナミクスを維持する。これは、すべての状態変数が制約式を満たすまで、バウンスバックルールが状態変数の少なくとも１つを反転し続けるためである。
【０１３５】
また、図８（ｂ）からは、エラー確率が解の検索効率に関連することがわかる。各曲線は最小値を有し、それによって、解探索時間を最小にする最適誤差周期の存在が示される。このデータは、最適誤差周期は誤差確率に依存すること、および、静電容量の充電時定数程度の時間であることを示しており、それによって、解探索時間も最小化する最適なエラー確率ｐの値が存在することがわかる。
【０１３６】
このように、本例の電子アメーバは、センサ３１信号と以前の状態に応じて、まっすぐ歩く適切な状態を見出す。電子アメーバに転倒や迷いを避けるための制約を与えておけば、歩く方法をプログラムしておく必要はない。
【０１３７】
以上、本実施の形態によれば、ロボットは、１または２以上の状態情報の集合である部分状態情報群に対応付けられたルールであり、禁止事項を示す１以上の負ルールを格納している格納部１１と、ダイオードとコンデンサとスイッチとを有する２以上の部分回路１２１を有するコア回路１２と、２以上の各部分回路１２１の状態を少なくとも示す状態情報の集合である状態情報群を取得し、状態情報群が有する１以上の各部分状態情報群に対応する負ルールに合致しない状態情報群を取得し、状態情報群に基づいて２以上の各部分回路１２１に電流を流すまたは電流を止める、のいずれかの動作ための制御を行う制御部１３とを具備する。そして、２以上の各部分回路１２１が有する１以上のコンデンサの少なくとも一部のコンデンサの充電または放電の時定数が異なることにより、コア回路１２が有する２以上の部分回路１２１のうち少なくとも一部の部分回路１２１は、少なくとも一時的に、部分状態情報群に基づいた動作を行わない。かかるロボットによれば、その脚部３の動きを制御するための状態変数群に関して定常解を繰り返し取得する状態や解探索が不可能になる状態に陥り難くなり、効率的な解探索が行える結果、動作が不安定になり難くなる。
【０１３８】
また、上記ロボットにおいて、２以上の部分回路１２１は、ハブを介して接続され、ハブの中心から２以上の各部分回路１２１に電流が供給されることにより、ハブ内の総電流は、キルヒホッフの法則に従って保存される結果、例えば、体積が保存されるアメーバに相当するロボットの動きが実現できる。
【０１３９】
また、上記ロボットにおいて、制御部１３は、２以上の各部分回路１２１の状態を少なくとも示す状態情報の集合である状態情報群を取得する状態情報群取得手段１３１と、状態情報群が有する１以上の各部分状態情報群に対応する１以上の負ルールを格納部１１から取得する負ルール取得手段１３２と、負ルール取得手段１３２が取得した１以上の負ルールのいずれにも合致しない正例の状態情報群を取得する正例取得手段１３３と、正例の状態情報群に基づいて２以上の各部分回路１２１に電流を流すまたは電流を止める、のいずれかの動作ための制御を行う制御手段１３４とを具備することにより、その動きを制御するための状態変数群に関して、効率的な解探索が行える。
【０１４０】
また、上記ロボットにおいて、コンデンサの容量の充電時間または放電時間が、制御部１３が状態情報群を取得した結果に応じた制御を行うまでの時間より長いことにより、状態変化が制御に追い付かず、結果として動作が行われない場合が生じ、正解を発見できる可能性が高まる。
【０１４１】
また、上記ロボットにおいて、正例取得手段１３３は、試行錯誤により、正例の状態情報群を取得することにより、効率よく正例の状態情報群を取得できる。
【０１４２】
また、上記ロボットは、２以上の脚部３をさらに具備し、２以上の部分回路１２１は、２以上の脚部３の動きを制御する回路であり、２以上の各脚部３は、脚部３が着地している状態か否かを検知するセンサ３１を有し、状態情報群は、２以上の各脚部３のセンサ３１による検知結果を示す状態情報も含むことにより、アメーバ型ロボットの脚部３の動きを制御するための状態変数群に関して、効率的な解探索が行える。
【０１４３】
また、上記ロボットにおいて、格納部１１は、着地している状態を示す脚部３の数が予め決められた数以下である場合に、脚を上げることを禁止する第一の負ルールを格納していることにより、脚部３の動きを的確に制御できる。
【０１４４】
また、上記ロボットにおいて、２以上の各脚部３は、前後に移動可能であり、格納部１１は、２以上の脚部３間の前後の位置関係に対応して、２以上の脚部３のうち１以上の脚部３の前後の動きを禁止する第二の負ルールを格納していることにより、脚部３の動きを的確に制御できる。
【０１４５】
また、上記ロボットにおいて、２以上の各脚部３は、上げ下げ可能であり、格納部１１は、２以上の各脚部３に関し、脚部３が着地している状態に対応して、脚部３を下げた状態で前方に移動させることを禁止する第三の負ルール、および脚部３が着地していない状態に対応して、脚部３を上げた状態で後方に移動させることを禁止する第四の負ルールを格納していることにより、脚部３の動きを的確に制御できる。
【０１４６】
また、上記ロボットにおいて、格納部１１は、２以上の各脚部３に関し、脚部３の位置が前方または後方にある場合に、脚部３と予め決められた位置関係にある他の脚部３の動きを禁止する第五の負ルールを格納していることにより、脚部３の動きを的確に制御できる。
【０１４７】
また、上記ロボットにおいて、格納部１１は、２以上の各脚部３に関し、脚部３の上げ下げの状態と接地している状態か否かとの組み合わせに応じて、禁止されている移動を許可する第六の負ルールを格納していることにより、脚部３の動きを的確に制御できる。
【０１４８】
また、上記ロボットにおいて、第六の負ルールは、同じ状態情報群に対して、２種類以上の動きを許可し得ることにより、定常解を繰り返し取得する状態や解探索が不可能になる状態から脱出できる可能性が高まり、その結果、脚部３の動きを的確に制御できる。
【０１４９】
なお、本実施の形態では、コア回路１２を構成する２以上の各部分回路１２１はアナログ回路であり、かかる部分回路１２１間でコンデンサの充電または放電の時定数が異なることにより、少なくとも一部の部分回路１２１は、少なくとも一時的に、部分状態情報群に基づいた動作を行わない結果となったが、コア回路１２を構成する２以上の各部分回路１２１がデジタル回路であっても、かかる部分回路１２１間で、例えば、その出力に異なる遅延を付加したり、その出力を確率論的に遅れさせたりすることにより、少なくとも一部の部分回路１２１は、少なくとも一時的に、部分状態情報群に基づいた動作を行わない結果となるようにすることができる。
【０１５０】
従って、本実施の形態、および上記のような変形例（変形例１）によれば、２以上の各部分回路１２１がアナログ回路かデジタル回路かによらず、少なくとも一部の部分回路１２１は、少なくとも一時的に、部分状態情報群に基づいた動作を行わない結果を得ることが可能であり、状態情報群に対し効率的な解探索が行える。
【０１５１】
また、デバイス１が上記のような２以上の部分回路１２１で構成されたコア回路１２を有さないような変形例（変形例２）においても、例えば、制御部１３が、２以上の各脚部３の動きを制御する際に、脚部間で異なる遅延が生じるような処理をソフト的に行うことによって、２以上の脚部３のうち少なくとも一部の脚部３は、少なくとも一時的に、部分状態情報群に基づいた動作を行わない結果となるようにすることができる。
【０１５２】
脚部間で異なる遅延が生じるような処理とは、例えば、各脚部３への制御信号を０と１の間で変化させるタイミングを、ＭＰＵの動作クロックに基づく周期（以下、単位時間と記す場合がある）の整数倍だけ遅延させる処理であるが、結果的に脚部間で異なる遅延が生じるような処理であれば、その手順は問わない。ここで、単位時間は、例えば、数マイクロ秒程度である。ただし、単位時間は、マイクロ秒より短いオーダーの時間でもよいし、１０マイクロ秒以上の時間でもよく、その値は問わない。
【０１５３】
これに対して、実施の形態で説明したアナログのコア回路１２を構成する２以上の各部分回路１２１で生じる遅延は、例えば、数ミリ秒〜数百ミリ秒の範囲で揺らいでいる。ただし、各部分回路１２１で生じる遅延は、例えば、ミリ秒より短いオーダーの時間でもよいし、１秒以上の時間でもよく、その値や揺らぎの範囲は問わない。
【０１５４】
従って、コア回路１２で生じる上記のような遅延と同等の遅延をソフト的に実現するには、各脚部３への制御信号を、例えば、単位時間の１千〜１０万倍程度の範囲で、ランダムに又は所定のアルゴリズムで遅延させればよい。
【０１５５】
すなわち、ロボットにおける動作のタイムスケールは、デバイス１の内部における動作のタイムスケールと異なるため、ロボットの動作が不安定になることを回避するには、制御部１３は、ロボットにおける動作のタイムスケールに応じた長さの遅延であり、かつ揺らいだ遅延を生じさせればよい。
【０１５６】
脚部間で異なる遅延が生じることは、例えば、２以上の脚部３のうち、１以上の脚部３においてのみ、予め決められた長さ（例えば、１０万単位時間）の遅延が生じ、他の１以上の脚部３においては、何ら遅延が生じないことでもよい。
【０１５７】
そのための処理として、制御部１３は、例えば、２以上の脚部３ごとに、乱数を発生させ、当該乱数（例えば、５３９０、１２５３、５３２６等）を予め決められた数（例えば、１０）で除算し、その剰余（例えば、０、３、６等）が、予め決められた値（例えば、０）である場合は、当該脚部３への制御信号を予め決められた時間（例えば、１０万単位時間）だけ遅延させ、予め決められた値とは異なる値（例えば、３、６等）である場合は、当該脚部３への制御信号を遅延させない、といった処理を行う。これにより、２以上の各脚部３は、一定の確率（例えば、１０分の１の確率）で、その動きが予め決められた時間（例えば、１０万単位時間）だけ遅延する結果となる。
【０１５８】
なお、制御部１３は、除算を行う際の上記予め決められた数を変更することによって、確率を変化させてもよい（例えば、予め決められた数が１００の場合、各脚部３の動きが遅延する確率は１００分の１となる）。
【０１５９】
または、脚部間で異なる遅延が生じることは、２以上の脚部３のうち、少なくとも一部の脚部３において、予め決められた範囲（例えば、１万単位時間〜９万単位時間）内で、ランダムな長さの遅延が生じることでもよい。
【０１６０】
そのための処理として、制御部１３は、例えば、２以上の脚部３ごとに、乱数を発生させ、当該乱数（例えば、５３９０、１２５３、５３２６等）を予め決められた数（例えば、１０）で除算し、その剰余（例えば、０、３、６等）に応じた長さ（例えば、０、３万単位時間、６万単位時間）だけ、当該脚部３への制御信号を遅延させる、といった処理を行う。これにより、２以上の各脚部３は、その動きが、例えば、０〜９万単位時間の範囲内で、ランダムな長さだけ遅延する結果となる。
【０１６１】
従って、変形例２によっても、状態情報群に対し効率的な解探索が行える結果、動作が不安定になり難いロボットが実現される。
【０１６２】
そして、変形例２によれば、デバイス１をロボット以外の装置に用いる場合にも、制御部１は、その装置における動作のタイムスケールに応じた長さの遅延であり、かつ揺らいだ遅延を生じさせることによって、装置の動作の安定化を図ることができる。また、デバイス１の内部において、そのデバイスの動作のタイムスケールに応じた長さ（例えば、単位時間の数倍程度）の遅延であり、かつ揺らいだ遅延を生じさせることによって、デバイス１自体の動作の安定化を図ることもできる。
【０１６３】
ただし、デバイス１がコア回路１２を有していれば、当該デバイス１における又はそれを有するロボット等の装置における動作のタイムスケールに応じた充放電時定数であり、かつ揺らいだ充放電時定数を有するコンデンサ群を用いることで、制御部１３が上記のような処理を行う必要がなくなり、制御部１３を実現するＭＰＵ等への負荷が軽減される。
【０１６４】
または、予め決められた条件を満たした場合に、制御部１３は、２以上の脚部３のうち少なくとも一部の脚部３を、少なくとも一時的に、部分状態情報群に基づいた動作を行わないように制御してもよい。予め決められた条件は、通常、部分状態情報群以外の情報に関する条件である。部分状態情報群以外の情報は、例えば、カメラからの画像、湿度センサや温度センサからの情報といった、ロボットの外部の情報（環境情報といってもよい）である。
【０１６５】
詳しくは、例えば、ロボットが移動する範囲を撮影するカメラが、ロボット自体又はその外部に設けられている。カメラからの画像に関する条件は、「高周波成分が閾値より多い又は閾値以上である」という条件である。それによって、例えば、地面が荒れている場合は、部分状態情報群に基づく動作が行われず、ロボットの転倒を回避できる可能性が高まる。
【０１６６】
また、例えば、ロボット自体又はロボットが移動する範囲に、温度センサが設けられている。温度センサからの温度情報に関する条件は、「温度が閾値より低い又は閾値以下である」という条件である。それによって、例えば、地面が凍結している場合は、部分状態情報群に基づく動作が行われず、ロボットのスリップによる衝突や転倒を回避できる可能性が高まる。
【０１６７】
さらに、例えば、ロボット自体又はロボットが移動する範囲に、湿度センサが設けられている。湿度センサからの湿度情報に関する条件は、「湿度が閾値より高い又は閾値以上であること」である。それによって、例えば、雨で地面が濡れている場合に、部分状態情報群に基づく動作が行われないことで、ロボットのスリップによる衝突や転倒を回避できる可能性が高まる。
【０１６８】
さらに、本実施の形態における処理は、ソフトウェアで実現しても良い。そして、このソフトウェアをソフトウェアダウンロード等により配布しても良い。また、このソフトウェアをＣＤ−ＲＯＭなどの記録媒体に記録して流布しても良い。
【０１６９】
なお、本実施の形態におけるロボットを実現するソフトウェアは、例えば、以下のようなプログラムである。つまり、２以上の脚部３を具備するロボットのコンピュータは、１または２以上の状態情報の集合である部分状態情報群に対応付けられたルールであり、禁止事項を示す１以上の負ルールを格納している格納部１１にアクセス可能であり、このプログラムは、前記コンピュータを、前記２以上の各脚部３の状態を少なくとも示す状態情報の集合である状態情報群を取得し、当該状態情報群が有する１以上の各部分状態情報群に対応する負ルールに合致しない状態情報群を取得し、当該状態情報群に基づいて前記２以上の各脚部３の制御を行う制御部１３として機能させ、前記制御部１３が行う前記２以上の各脚部３への制御に異なる遅延が生じることにより、前記２以上の脚部３のうち少なくとも一部の脚部３は、少なくとも一時的に、前記部分状態情報群に基づいた動作を行わないことを特徴とするプログラムである。
【０１７０】
図９は、実施の形態におけるプログラムを実行して、ロボットを実現するコンピュータシステム９００の内部構成の一例を示す図である。図９において、コンピュータシステム９００は、プログラムを実行するコンピュータであるＭＰＵ９１１と、ブートアッププログラム等のプログラムを記憶するためのＲＯＭ９１２と、ＭＰＵ９１１に接続され、アプリケーションプログラムの命令を一時的に記憶すると共に、一時記憶空間を提供するＲＡＭ９１３と、アプリケーションプログラム、システムプログラム、およびデータを記憶するストレージ９１４と、ＭＰＵ９１１、ＲＯＭ９１２等を相互に接続するバス９１５と、外部ネットワークや内部ネットワーク等のネットワークへの接続を提供するネットワークカード９１６と、メモリカードスロット９１７と、コア回路１２とを備える。ストレージ９１４は、例えば、フラッシュメモリやＳＳＤなどである。なお、コンピュータシステム９００全体をコンピュータと呼んでもよい。
【０１７１】
コンピュータシステム９００に、ロボットの機能を実行させるプログラムは、例えば、メモリカード９２０に記憶されて、メモリカードスロット９１７に挿入され、ストレージ９１４に転送されてもよい。これに代えて、そのプログラムは、ネットワークを介してコンピュータシステム９００に送信され、ストレージ９１４に記憶されてもよい。プログラムは、実行の際にＲＡＭ９１３にロードされる。なお、プログラムは、メモリカード９２０、またはネットワークから直接、ロードされてもよい。
【０１７２】
プログラムは、コンピュータシステム９００に、ロボットの機能を実行させるオペレーティングシステム（ＯＳ）、またはサードパーティプログラム等を必ずしも含んでいなくてもよい。プログラムは、制御された態様で適切な機能やモジュールを呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいてもよい。コンピュータシステム９００がどのように動作するのかについては周知であり、詳細な説明は省略する。ただし、以上は例示であり、ロボットを実現するコンピュータのハードウェア構成は問わない。
【０１７３】
なお、上記プログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。（ただし、複数のコンピュータで分散処理を行うことは、例えば、コンピュータ間で異なる遅延を容易に付加できる又は確率論的に異なる遅延の発生が予期できることから、好適である。また、一のコンピュータで集中処理（例えば、時分割処理）を行う場合にも、異なる遅延を付加したり、確率論的に異なる遅延の発生が予期されるような制御を行ったりすることは可能である。
【０１７４】
また、上記実施の形態において、各処理（各機能）は、単一の装置（システム）によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。ただし、複数の装置によって分散処理を行うことは、例えば、装置間で異なる遅延を容易に付加できる又は確率論的に異なる遅延の発生が予期できる点で、好適である。また、一の装置で集中処理を行う場合にも、異なる遅延を付加したり、確率論的に異なる遅延の発生が予期されるような制御を行ったりすることは可能である。
【０１７５】
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【０１７６】
以上のように、本発明にかかるロボットは、その状態情報群に対して効率的な解探索が行える結果、動きが不安定になり難いという効果を有し、ロボット等として有用である。
【符号の説明】
【０１７７】
１  デバイス
２  胴体
３  脚部
４  駆動機構
１１  格納部
１２  コア回路
１３  制御部
３１  センサ
１２１  部分回路
１３１  状態情報群取得手段
１３２  負ルール取得手段
１３３  正例取得手段
１３４  制御手段
【図１】
2019198903.tif 000003
【図２】
2019198903.tif 000004
【図３】
2019198903.tif 000005
【図４】
2019198903.tif 000006
【図５】
2019198903.tif 000007
【図６】
2019198903.tif 000008
【図７】
2019198903.tif 000009
【図８】
2019198903.tif 000010
【図９】
2019198903.tif 000011