(57)【要約】      （修正有）【課題】ハードウェアに依存しないアプリケーションを搭載できる構造を有する人型等のロボットを提供する。【解決手段】モータ駆動の脚、モータ駆動の腕等のうちの１以上のハードを具備するロボットであり、１以上のハードを動作させるための命令を出力する１以上のアプリであり、異なるロボットに共通の１以上のアプリと、１以上のいずれかのアプリから出力された命令に対応する１以上のハードを動作させる１以上のソフトウェアである１以上のＰＳと、１以上のアプリを動作させるアプリ実行部とを具備するロボットにより、一つのアプリケーションが異なる種類のロボットで動作可能となる。【選択図】図３
2020069006.tif 000002
【特許請求の範囲】
【請求項１】
モータにより駆動される脚、モータにより駆動される腕、カメラにより画像を取り込む目、マイクにより音を受け付ける耳、スピーカーにより音を出力する口のうちの１以上のハードを具備するロボットであり、
前記１以上のハードのうちのいずれか１以上のハードを動作させるための命令を出力する１以上のアプリであり、異なるロボットに共通の１以上のアプリと、
前記１以上のいずれかのアプリから出力された命令に対応する１以上のハードを動作させる１以上のソフトウェアである１以上のＰＳと、
前記１以上のアプリを動作させるアプリ実行部とを具備するロボット。
【請求項２】
前記１以上のいずれかのアプリから出力された命令を受け付け、当該命令に対応する前記１以上のＰＳが処理可能な命令に変更し、当該命令を当該１以上のＰＳに渡すＯＳをさらに具備し、
前記１以上の各ＰＳは、前記ＯＳから渡された命令に基づいて、前記１以上のいずれかのアプリから出力された命令に対応する１以上のハードを動作させる請求項１記載のロボット。
【請求項３】
前記脚、または前記腕の自由度に関する１以上の自由度属性値が格納される自由度属性値格納部をさらに具備し、
前記ＰＳは、
前記脚、または前記腕を曲げる動作を行う命令を受け付けた場合、前記１以上の自由度属性値を読み出し、当該１以上の自由度属性値が示す自由度に対応するように、前記受け付けた命令を実行し、前記脚、または前記腕を曲げる動作を行う請求項１または請求項２記載のロボット。
【請求項４】
前記脚、または前記腕を曲げる動作を行う命令が、自由度Ｎ（Ｎは２以上の自然数）の脚または腕を曲げる動作を行う命令であり、前記Ｎの各々に対応するモータに対する動作を示す命令であり、前記１以上の自由度属性値が示す自由度が「Ｎ−１」以下である場合、
前記ＰＳは、
前記前記Ｎの各々に対応するモータに対する動作を示す命令を前記「Ｎ−１」以下の各々に対応するモータに対する動作を示す命令に変換し、当該変換した命令を実行する請求項３記載のロボット。
【請求項５】
ロボットの重心に関する重心属性値が格納される重心属性値格納部をさらに具備し、
前記ＰＳは、
ロボットを移動させる命令を受け付けた場合、前記重心属性値を読み出し、当該重心属性値を用いて、ロボットが転倒しないように前記脚の関節を曲げるモータを動作させる請求項１または請求項２記載のロボット。
【請求項６】
前記ＰＳは、
各関節のモータにかかるトルク、および脚の終端部にかかる力を取得する請求項１または請求項２記載のロボット。
【請求項７】
ロボットの機種を識別する機種識別子が格納される機種識別子格納部と、
前記１以上のいずれかのアプリから出力された命令を受け付け、当該命令に関する命令情報と前記機種識別子とを有する問合情報をサーバ装置に送信する問合情報送信部と、
前記問合情報の送信に応じて、前記ハードを動作させる命令を受信する命令受信部をさらに具備し、
前記ＰＳは、
前記命令受信部が受信した命令を実行し、前記ハードを動作させる請求項１から請求項６いずれか一項に記載のロボット。
【請求項８】
ロボットの機種を識別する機種識別子を含むダウンロード命令を送信するダウンロード命令送信部と、
前記ダウンロード命令の送信に応じて、サーバ装置から当該ダウンロード命令に対応する１以上のＰＳを受信し、蓄積するＰＳ受信部とをさらに具備する請求項１から請求項７いずれか一項に記載のロボット。
【請求項９】
コントロール端末を識別する端末識別子とロボットを識別するロボット識別子とを有する登録情報をサーバ装置に送信する登録情報送信部と、
前記登録情報を送信し、前記登録情報が前記サーバ装置に登録された後に、前記コントロール端末から送信された動作命令を受信する動作命令受信部とをさらに具備し、
前記アプリ実行部は、
前記動作命令に従って、当該動作命令に対応するアプリを動作させる請求項１から請求項８いずれか一項に記載のロボット。
【請求項１０】
２以上の階層化された記録媒体をさらに具備し、
前記アプリ実行部は、
前記２以上の階層化された各記録媒体に蓄積されたデータまたはプログラムを用いて、前記１以上のアプリを動作させる請求項１から請求項９いずれか一項に記載のロボット。
【請求項１１】
前記２以上の階層化された記録媒体は、
ロボットの内部の記録媒体であるＲメモリ、ロボットと通信可能な装置の記録媒体であるＬストレージ、およびクラウド上の記録媒体であるＣストレージを含む請求項１０記載のロボット。
【請求項１２】
ロボットの１以上の属性値が格納される格納部をさらに具備し、
前記アプリ実行部は、
前記１以上の属性値に応じて、異なる記録媒体からデータまたはプログラムを取得し、当該データまたはプログラムを用いて、前記１以上のアプリを動作させる請求項１０または請求項１１記載のロボット。
【請求項１３】
前記１以上のアプリのうちの少なくとも一のアプリは、
ロボットの成長に関する１以上の属性値を取得し、当該１以上の属性値に応じて、他の属性値を変更する請求項１２記載のロボット。
【請求項１４】
ロボットの１以上の属性値またはユーザの１以上の属性値が格納される格納部をさらに具備し、
前記１以上のアプリのうちの少なくとも一のアプリは、
受け付けられた命令が同じ命令でも、前記ロボットの１以上の属性値または前記ユーザの１以上の属性値に応じて、異なる処理を行う請求項１から請求項１０いずれか一項に記載のロボット。
【請求項１５】
前記一のアプリは、
複数の機能を実現し、かつ前記複数の機能のうちの一部の機能のみ、前記受け付けられた命令が同じ命令でも、前記ロボットの１以上の属性値または前記ユーザの１以上の属性値に応じて、異なる処理を行う機能である請求項１４記載のロボット。
【請求項１６】
前記一のアプリは、
人が身につけた２以上の各センサからの信号を受信し、当該信号を用いて、前記人の動きに対応する動きをロボットにさせる請求項１から請求項１５いずれか一項に記載のロボット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェアに依存しないアプリケーションを搭載できる構造を有する人型等のロボット等に関するものである。
【背景技術】
【０００２】
従来、各種の人型ロボット（例えば、特許文献１、特許文献２、特許文献３参照）、動物や人形等の形状を有するロボット（例えば、特許文献４参照）が存在した。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−１６４８７１号公報
【特許文献２】特開２０１６−５２６９７号公報
【特許文献３】特表２０１７−５１４７０９号公報
【特許文献４】特開２００８−１２６０４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術においては、各ロボットを動作させるプログラムを別々に開発しなければならなかった。つまり、従来技術において、複数種類のロボットを動作させるための各アプリケーションは各ロボットのハードウェアに依存するため、一つのアプリケーションが異なる種類のロボットで動作させることはできなかった。
【課題を解決するための手段】
【０００５】
本第一の発明のロボットは、モータにより駆動される脚、モータにより駆動される腕、カメラにより画像を取り込む目、マイクにより音を受け付ける耳、スピーカーにより音を出力する口のうちの１以上のハードを具備するロボットであり、１以上のハードのうちのいずれか１以上のハードを動作させるための命令を出力する１以上のアプリであり、異なるロボットに共通の１以上のアプリと、１以上のいずれかのアプリから出力された命令に対応する１以上のハードを動作させる１以上のソフトウェアである１以上のＰＳと、１以上のアプリを動作させるアプリ実行部とを具備するロボットである。
【０００６】
かかる構成により、ハードウェアの差異を吸収するソフトウェアであるＰＳをロボットに設けることにより、一つのアプリケーションが異なる種類のロボットで動作可能となる。
【０００７】
また、本第二の発明のロボットは、第一の発明に対して、１以上のいずれかのアプリから出力された命令を受け付け、命令に対応する１以上のＰＳが処理可能な命令に変更し、命令を１以上のＰＳに渡すＯＳをさらに具備し、１以上の各ＰＳは、ＯＳから渡された命令に基づいて、１以上のいずれかのアプリから出力された命令に対応する１以上のハードを動作させるロボットである。
【０００８】
かかる構成により、ＰＳとＯＳとをロボットに設けることにより、一つのアプリケーションが異なる種類のロボットで動作可能となる。
【０００９】
また、本第三の発明のロボットは、第一または第二の発明に対して、脚、または腕の自由度に関する１以上の自由度属性値が格納される自由度属性値格納部をさらに具備し、ＰＳは、脚、または腕を曲げる動作を行う命令を受け付けた場合、１以上の自由度属性値を読み出し、１以上の自由度属性値が示す自由度に対応するように、受け付けた命令を実行し、脚、または腕を曲げる動作を行うロボットである。
【００１０】
かかる構成により、前記脚または前記腕の自由度が異なる複数のロボットで、脚または腕を曲げる動作をさせる同一のアプリケーションが動作可能となる。
【００１１】
また、本第四の発明のロボットは、第三の発明に対して、脚、または腕を曲げる動作を行う命令が、自由度Ｎ（Ｎは２以上の自然数）の脚または腕を曲げる動作を行う命令であり、Ｎの各々に対応するモータに対する動作を示す命令であり、１以上の自由度属性値が示す自由度が「Ｎ−１」以下である場合、ＰＳは、Ｎの各々に対応するモータに対する動作を示す命令を「Ｎ−１」以下の各々に対応するモータに対する動作を示す命令に変換し、変換した命令を実行するロボットである。
【００１２】
かかる構成により、前記脚または前記腕の自由度が異なる複数のロボットで、脚または腕を曲げる動作をさせる同一のアプリケーションが動作可能となる。
【００１３】
また、本第五の発明のロボットは、第一または第二の発明に対して、ロボットの重心に関する重心属性値が格納される重心属性値格納部をさらに具備し、ＰＳは、ロボットを移動させる命令を受け付けた場合、重心属性値を読み出し、重心属性値を用いて、ロボットが転倒しないように脚の関節を曲げるモータを動作させるロボットである。
【００１４】
かかる構成により、重心が異なる複数のロボットで、ロボットを移動させる同一のアプリケーションを動作させた場合でも、ロボットが転倒せずに移動できる。
【００１５】
また、本第六の発明のロボットは、第一または第二の発明に対して、ＰＳは、各関節のモータにかかるトルク、および脚の終端部にかかる力を取得するロボットである。
【００１６】
かかる構成により、ロボットは脚、および腕の終端部に発生させるべき力を計算し、また、各関節が発生させるべきトルクを計算することで、一の部位を動かすモータを動作させ、動作の制御が可能になる。
【００１７】
また、本第七の発明のロボットは、第一から第六いずれか１つの発明に対して、ロボットの機種を識別する機種識別子が格納される機種識別子格納部と、１以上のいずれかのアプリから出力された命令を受け付け、当該命令に関する命令情報と機種識別子とを有する問合情報をサーバ装置に送信する問合情報送信部と、問合情報の送信に応じて、ハードを動作させる命令を受信する命令受信部をさらに具備し、ＰＳは、命令受信部が受信した命令を実行し、ハードを動作させるロボットである。
【００１８】
かかる構成により、処理能力が低いロボットでも、サーバ装置との連携により、適切に処理が行える。
【００１９】
また、本第八の発明のロボットは、第一から第七いずれか１つの発明に対して、ロボットの機種を識別する機種識別子を含むダウンロード命令を送信するダウンロード命令送信部と、ダウンロード命令の送信に応じて、サーバ装置からダウンロード命令に対応する１以上のＰＳを受信し、蓄積するＰＳ受信部とをさらに具備するロボットである。
【００２０】
かかる構成により、プログラムであるＰＳを容易にロボット内に格納できる。そのため、例えば、ＰＳのバージョンアップに容易に対応できる。
【００２１】
また、本第九の発明のロボットは、第一から第八いずれか１つの発明に対して、コントロール端末を識別する端末識別子とロボットを識別するロボット識別子とを有する登録情報をサーバ装置に送信する登録情報送信部と、登録情報を送信し、登録情報がサーバ装置に登録された後に、コントロール端末から送信された動作命令を受信する動作命令受信部とをさらに具備し、アプリ実行部は、動作命令に従って、動作命令に対応するアプリを動作させるロボットである。
【００２２】
かかる構成により、登録されたコントロール端末を用いて、ロボットを制御できる。
【００２３】
また、本第十の発明のロボットは、第一から第九いずれか１つの発明に対して、２以上の階層化された記録媒体をさらに具備し、アプリ実行部は、２以上の階層化された各記録媒体に蓄積されたデータまたはプログラムを用いて、１以上のアプリを動作させるロボットである。
【００２４】
かかる構成により、階層化された２以上の記録媒体に蓄積されたデータまたはプログラムを用いて動作できる。
【００２５】
また、本第十一の発明のロボットは、第十の発明に対して、２以上の階層化された記録媒体は、ロボットの内部の記録媒体であるＲメモリ、ロボットと通信可能な装置の記録媒体であるＬストレージ、およびクラウド上の記録媒体であるＣストレージを含むロボットである。
【００２６】
かかる構成により、階層化されたＲメモリ、Ｌストレージ、Ｃストレージという３つの記録媒体に蓄積されたデータまたはプログラムを用いて動作できる。
【００２７】
また、本第十二の発明のロボットは、第十または第十一の発明に対して、ロボットの１以上の属性値が格納される格納部をさらに具備し、アプリ実行部は、１以上の属性値に応じて、異なる記録媒体からデータまたはプログラムを取得し、データまたはプログラムを用いて、１以上のアプリを動作させるロボットである。
【００２８】
かかる構成により、ロボットの属性値に応じて、異なる記録媒体からデータまたはプログラムを取得し、動作できる。
【００２９】
また、本第十三の発明のロボットは、第十二の発明に対して、１以上のアプリのうちの少なくとも一のアプリは、ロボットの成長に関する１以上の属性値を取得し、１以上の属性値に応じて、他の属性値を変更するロボットである。
【００３０】
かかる構成により、ロボットの成長に応じて、ロボットの属性値を自動変更できる。
【００３１】
また、本第十四の発明のロボットは、第一から第十いずれか１つの発明に対して、ロボットの１以上の属性値またはユーザの１以上の属性値が格納される格納部をさらに具備し、１以上のアプリのうちの少なくとも一のアプリは、受け付けられた命令が同じ命令でも、ロボットの１以上の属性値またはユーザの１以上の属性値に応じて、異なる処理を行うロボットである。
【００３２】
かかる構成により、ロボットの属性値またはユーザの属性値に応じた適切な処理が行える。
【００３３】
また、本第十五の発明のロボットは、第十四の発明に対して、一のアプリは、複数の機能を実現し、かつ複数の機能のうちの一部の機能のみ、受け付けられた命令が同じ命令でも、ロボットの１以上の属性値またはユーザの１以上の属性値に応じて、異なる処理を行う機能であるロボットである。
【００３４】
かかる構成により、ロボットの属性値またはユーザの属性値に応じた適切な処理が行える。
【００３５】
また、本第十六の発明のロボットは、第一から第十五いずれか１つの発明に対して、一のアプリは、人が身につけた２以上の各センサからの信号を受信し、信号を用いて、人の動きに対応する動きをロボットにさせるロボットである。
【００３６】
かかる構成により、人の動きに対応する動作ができる。
【発明の効果】
【００３７】
本発明によるロボットによれば、ハードウェアの差異を吸収するソフトウェアであるＰＳをロボットに設けることにより、一つのアプリケーションが異なる種類のロボットで動作可能となる。
【図面の簡単な説明】
【００３８】
【図１】実施の形態１におけるロボットシステムＡの概念図を示す図
【図２】同ロボットシステムＡのブロック図
【図３】同ロボット１のブロック図
【図４】同ロボット１の動作例について説明するフローチャート
【図５】同コントロール端末２の動作例について説明するフローチャート
【図６】同サーバ装置３の動作例について説明するフローチャート
【図７】同コンピュータシステムの概観図
【図８】同コンピュータシステムのブロック図
【図９】同ロボット１の腕部を動作させる方法の概念図
【図１０】同ロボット１の転倒判定を行う計算の概念図
【発明を実施するための形態】
【００３９】
以下、ロボット等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
【００４０】
（実施の形態１）
本実施の形態において、ハードウェア（以下、適宜「ハード」という。）、ハードとの適合機能を有するプログラムであるＰＳ、アプリケーション（以下、適宜「アプリ」という。）という構造により実現されるロボットを具備するロボットシステムについて説明する。
【００４１】
なお、ＰＳの例として、（１）自由度吸収機能を有するＰＳ、（２）重心対応機能を有するＰＳ、（３）トルク合算機能を有するＰＳ等がある。（１）の自由度吸収機能を有するＰＳにより、複数の各ロボットにおいて、腕または脚などの各部位の自由度が異なる場合でも、各部位を動作させる同一のアプリが動作可能となる。（２）の重心対応機能を有するＰＳにより、複数の各ロボットにおいて、重心が異なる場合でも、同一の移動命令に基づいて、転倒せずに移動可能となる。（３）のトルク合算機能を有するＰＳにより、各ロボットにかかる力およびモーメントを取得でき、複数の各ロボットにおいて、重心、あるいは動作速度が異なる場合でも、同一の移動命令に基づいて、転倒せずに動作可能となる。なお、移動命令は、ロボットを移動させる命令である。また、部位は、腕または脚の他、首などでも良い。さらに、ＰＳは、各関節のモータにかかるトルク、および脚、および腕の終端部にかかる力をセンサにより取得しても良い。
【００４２】
また、本実施の形態において、ＰＳとアプリの間に、オペレーティングシステム（以下、適宜「ＯＳ」という。）を有するソフトウェア構造を持つロボットを具備するロボットシステムについて説明する。なお、ＯＳは、いわゆるＰＣ、サーバ等のＯＳと同様、例えば、タスク管理、メモリ管理、ファイル管理、通信機能等の基本機能を有する。
【００４３】
また、本実施の形態において、アプリからの指示を受け付け、当該指示をサーバ装置に送信し、サーバ装置から指示に対応する動作情報を受信し、動作情報を用いた動作を行えるロボットを具備するロボットシステムについて説明する。なお、かかるロボットは、処理能力が低くても良いロボットである。
【００４４】
また、本実施の形態において、ＰＳのプログラムをサーバ装置からダウンロードできるロボットを具備するロボットシステムについて説明する。
【００４５】
また、本実施の形態において、コントロール端末を用いたロボットの操作が可能となるロボットシステムについて説明する。
【００４６】
また、本実施の形態において、階層化された２以上の各記録媒体に蓄積されたデータまたはプログラムを用いて動作するロボットを具備するロボットシステムについて説明する。なお、階層化された記録媒体は、例えば、後述するＲメモリ、Ｌストレージ、およびＣストレージである。
【００４７】
また、本実施の形態において、属性値に応じて、ロボットが使用するデータまたはプログラムを取得する記録媒体が異なるロボットを具備するロボットシステムについて説明する。
【００４８】
また、本実施の形態において、ロボットが成長するに従って、ロボットの属性値を自動変更するロボットを具備するロボットシステムについて説明する。
【００４９】
また、本実施の形態において、ロボットの属性値またはユーザの属性値に応じて、同じ入力を受け付けても、異なる振る舞いを行うロボットを具備するロボットシステムについて説明する。
【００５０】
また、本実施の形態において、ロボットの属性値またはユーザの属性値によって改変される動作と、改変されない動作の両方を行えるアプリを有するロボットを具備するロボットシステムについて説明する。
【００５１】
さらに、本実施の形態において、人が身につけた２以上の各センサからの信号を受信し、人の動きに対応する動きを行うロボットを具備するロボットシステムについて説明する。
【００５２】
図１は、本実施の形態におけるロボットシステムＡの概念図である。ロボットシステムＡは、１または２以上のロボット１、１または２以上のコントロール端末２、１または２以上のサーバ装置３、１または２以上のＬストレージ端末４、１または２以上のＣストレージサーバ５を備える。
【００５３】
図２は、本実施の形態におけるロボットシステムＡのブロック図である。図３は、ロボット１のブロック図である。
【００５４】
ロボット１は、ハード１１、格納部１２、受付部１３、アプリ実行部１４、送信部１５、および受信部１６を備える。
【００５５】
ハード１１は、１または２以上の脚１１１、１または２以上の腕１１２、１または２以上の目１１３、１または２以上の耳１１４、１または２以上の口１１５のうちの１または２以上の部品であるハード部品を備える。
【００５６】
また、脚１１１は、２つまたは３以上であることは好適である。また、腕１１２は、２つであることは好適である。また、目１１３は、２つであることは好適である。また、耳１１４は、２つであることは好適である。さらに、口１１５は、一つであることは好適である。また、ハード１１は、脚１１１、腕１１２、目１１３、耳１１４、口１１５のうちのすべての種類のハード部品を有することは必須ではなく、１種類または２種類のハード部品を有すれば良い。
【００５７】
格納部１２は、機種識別子格納部１２４、自由度属性値格納部１２５、および重心属性値格納部１２６を備える。
【００５８】
送信部１５は、問合情報送信部１５１、ダウンロード命令送信部１５２、および登録情報送信部１５３を備える。
【００５９】
受信部１６は、命令受信部１６１、ＰＳ受信部１６２、および動作命令受信部１６３を備える。
【００６０】
コントロール端末２は、端末格納部２１、端末受付部２２、端末処理部２３、端末送信部２４、端末受信部２５、および端末出力部２６を備える。
【００６１】
サーバ装置３は、サーバ格納部３１、サーバ受付部３２、サーバ処理部３３、サーバ送信部３４、およびサーバ受信部３５を備える。
【００６２】
Ｌストレージ端末４は、Ｌストレージ４１、およびＬ処理部４２を備える。
【００６３】
Ｃストレージサーバ５は、Ｃストレージ５１、およびＣ処理部５２を備える。
【００６４】
ロボット１を構成するハード１１のうちの脚１１１は、モータにより駆動される。特に、脚１１１の関節は、モータにより動作する。
【００６５】
腕１１２も、モータにより駆動される。特に、腕１１２の関節は、モータにより動作する。
【００６６】
目１１３は、カメラを有する。つまり、目１１３は、カメラにより画像を取り込む。
【００６７】
また、耳１１４は、マイクを有する。つまり、耳１１４は、マイクにより音を受け付ける。
【００６８】
さらに、口１１５は、スピーカーを有する。つまり、口１１５は、スピーカーにより音を出力する。
【００６９】
格納部１２には、各種のデータ、プログラム等が格納される。各種のデータ、プログラム等は、例えば、１または２以上のＰＳ１２１、ＯＳ１２２、および１または２以上のアプリ１２３である。各種のデータ、プログラム等は、例えば、ロボット１の１以上の属性値、ユーザの１以上の属性値、ロボットを識別するロボット識別子である。ロボット１の１以上の属性値は、例えば、性格を特定する性格情報，成長度を示す成長度情報、擬似性別を特定する性別情報、擬似生理状態を示す生理情報、インターネット接続の有無を示す接続情報である。ユーザの１以上の属性値は、例えば、ユーザの性別、年齢、住所、趣味、感情等である。
【００７０】
ＰＳ１２１は、ハード１１の違いを吸収するためのプログラムであり、ＯＳ１２２またはアプリ１２３から受け付けた命令に応じて、ハード１１を動作させるプログラムである。なお、ＰＳ１２１が受け付ける命令は、種々あり得、問わない。
【００７１】
（１）ＰＳ１２１が脚１１１または腕１１２を動作させるプログラムである場合について説明する。かかる場合、ＰＳ１２１は、自由度の違いを吸収する役割を発揮する。
【００７２】
ＰＳ１２１が、脚１１１または腕１１２を曲げる動作を行う命令（かかる命令を、各々、腕動作命令、または脚動作命令と言う。）を受け付けた場合、１以上の自由度属性値を格納部１２から読み出し、当該１以上の自由度属性値が示す自由度に対応するように、受け付けた命令を実行し、脚１１１、または腕１１２を曲げる動作を行う。なお、脚１１１または腕１１２を曲げる動作を行う命令は、例えば、自由度に関する情報を含む。自由度に関する情報は、例えば、自由度属性値、または関節の識別子と関節の曲げ量を示す情報との組をＮ組（Ｎは１以上の自然数）である。自由度属性値とは、自由度に関する情報である。自由度属性値は、通常、自由度を特定する情報であり、例えば、「３」、「５」等の数値であるが、レベル（例えば、「Ａ」「Ｂ」「Ｃ」など）を示す情報でも良い。
【００７３】
例えば、ＰＳ１２１は、Ｎの各々に対応するモータに対する動作を示す命令を「Ｎ−１」以下の各々に対応するモータに対する動作を示す命令に変換し、変換した命令を実行する。
【００７４】
さらに具体的には、あるＰＳ１２１が受け付けた命令が、腕のＮ（ここでは、Ｎは２以上の自然数）の関節を動かす命令であり、Ｎの各関節に対する動作量の情報を有する命令である場合、当該ＰＳ１２１は、自由度属性値格納部１２５から自由度属性値を読み出し、当該自由度属性値が示す自由度がＭ（ＭはＮ未満で、例えば、「Ｎ−１」）である場合、当該ＰＳ１２１は、Ｎの各関節に対する動作量分だけ関節を動かした場合と同様の腕１１２の動きになるように、Ｍの各関節の動作量を算出し、当該算出した動作量の分、Ｍの各関節を動かすプログラムである。
【００７５】
また、例えば、ＰＳ１２１が、脚１１１または腕１１２を曲げる動作を行う命令を受け付けた場合であり、当該命令が自由度Ｎの各関節に対する動作量の情報を有する命令であり、格納部１２から読み出した自由度属性値がＬ「（Ｌは「Ｎ＜Ｌ」を満たす自然数）である場合、当該ＰＳ１２１は、Ｎの各関節に対する動作量分だけ関節を動かした場合と同様の脚１１１または腕１１２の動きになるように、Ｌの各関節の動作量を算出し、当該算出した動作量の分、Ｌの各関節を動かすプログラムである。
【００７６】
さらに具体的には、ＰＳ１２１は、例えば、以下のように動作する。まず、ＰＳ１２１が腕１１２を動作させる場合である。かかる場合の動作について、図９を用いて説明する。
アプリ１２３はロボット１への動作指示として、標準体型の人が腕部を動かした場合に腕部の先端があるべき位置（Ｘ、Ｙ、Ｚ）を指定する。このとき、ＰＳ１２１は、数式１、２を用いた計算により、指定された位置をロボット１に固有の骨格情報にあわせ、調整する。
【００７７】
【数１】
2020069006.tif 000003
【００７８】
【数２】
2020069006.tif 000004
上式に示すとおり、ロボット１のジョイント構造をあらわすことができる。ここで、Ｔはジョイント根本側からジョイント先端側への変換行列、ｎは腕部を構成するジョイントの個数であり、ｄ、ｒ、α、θはジョイントの幾何的な構造を表す、慣習的なＤｅｎａｖｉｔ−Ｈａｒｔｅｎｂｅｒｇパラメータである。例えば、モータによる単軸の回転を行う関節では、θはモータの駆動によって変化する値であり、それ以外のｄ、ｒ、αはロボットの構造にもとづく固定値である。このようなジョイントを定義することで、ロボット１の各モータを駆動した場合の、各ジョイントの位置を計算することができる。
【００７９】
【数３】
2020069006.tif 000005
【００８０】
【数４】
2020069006.tif 000006
【００８１】
【数５】
2020069006.tif 000007
【００８２】
【数６】
2020069006.tif 000008
【００８３】
【数７】
2020069006.tif 000009
【００８４】
【数８】
2020069006.tif 000010
【００８５】
【数９】
2020069006.tif 000011
【００８６】
ジョイント位置が計算可能であることにより、ロボット１の腕部先端の目標位置を考慮することができる。数式３で示すように、ロボット１の動作を計算するためには人の肩部から腕部先端を見た際の位置の変化量に対し、ロボット１と標準体型の人の体格差を乗ずることで、長さをスケールダウンし、ロボットの腕部先端を動作すべき対象位置を得る。Ｐｒｉｇｈｔはロボット１の右腕部が移動すべき手の位置であり、Ｐｒｉｇｈｔａｒｍ，ｈｕｍａｎおよびＰｒｉｇｈｔｈａｎｄ，ｈｕｍａｎはそれぞれ、人のモーションにおける、肩、および手の位置である。ＬｒｏｂｏｔａｒｍおよびＬｈｕｍａｎａｒｍは、それぞれ、ロボット１の腕部の長さ、および人の腕部の長さである。
【００８７】
さらに、数式４、数式５、数式６では、もとの動作指示において人の手が頭より下にある場合の補正計算を示す。この補正計算では、手の高さ方向すなわちＺの値について、肩と手との相対位置、および人とロボット１との体格差を乗ずることで、ロボット１の手がロボット１自身の頭より低い位置へ移動することを保証する。
【００８８】
同様に、数式７、数式８、数式９では、もとの動作指示において手が頭より上にある場合の補正計算を示す。この補正計算では、手の高さ方向すなわちＺの値について、手が頭より上に突き出る高さに着目し、この値を人とロボット１のあいだでスケールすることで、ロボット１の手がロボット１自身の頭より高い位置へ移動することを保証する。
【００８９】
【数１０】
2020069006.tif 000012
【００９０】
【数１１】
2020069006.tif 000013
【００９１】
【数１２】
2020069006.tif 000014
【００９２】
【数１３】
2020069006.tif 000015
【００９３】
【数１４】
2020069006.tif 000016
【００９４】
数式１０、数式１１、数式１２、数式１３、数式１４は、計算された位置へ実際にロボット１の腕部を動かすために用いる、逆運動学（Ｉｎｖｅｒｓｅ  Ｋｉｎｅｍａｔｉｃｓ）の定式化である。数式１０は、ロボット１の両腕の先端位置を同時に計算可能な計算式を表し、ｑは各モータの角度、Ｔは数式４に示した変換行列を、腕ごとの変換計算が行えるよう、対角行列ブロックとして並べたものである。数式１０の成分表記は数式１１のように書くことができる。数式１２は数式１１をｑに関して微分したヤコビ行列（Ｊａｃｏｂｉａｎ）であり。数式１３はこのヤコビアンを用いて表される、ロボット１の腕部先端位置にかんする微分である。数１４は逆運動学を示す式であり、この変分を最適化することにより、最小のジョイント変化で、指定した位置にロボット１の腕部を動かすことができる。ただし、数式１４のＪ＃は一般化ヤコビ行列（Ｇｅｎｅｒａｌｉｚｅｄ  Ｊａｃｏｂｉａｎ）である。
【００９５】
このような逆運動学の計算を行う方法については、従来技術が適用でき、一例としては、Ｓｔｙｌｅ−Ｂａｓｅｄ  Ｉｎｖｅｒｓｅ  Ｋｉｎｅｍａｔｉｃｓなどが挙げられる。
【００９６】
さらに具体的には、ＰＳ１２１は、例えば、以下のように動作する。まず、ＰＳ１２１が脚１１１を動作させる場合である。脚部の動作については、腕部の動作と同様に、アプリ１２３はロボット１への動作指示として、標準体型の人が脚部を動かした場合に足先端があるべき位置（Ｘ，Ｙ，Ｚ）を指定する。このとき、ＰＳ１２１は次に示す数式１５を用いた計算により、指定された位置をロボット１に固有の骨格情報にあわせ、調整する。
【００９７】
【数１５】
2020069006.tif 000017
【００９８】
上式のとおり、脚部の位置を求めるためには、もとの位置に対し、ロボット１と人の脚の長さの比率を考慮し、ロボット１の足部の目標位置をスケールダウンすることで、ロボット１の脚部があるべき位置を求める。
なお、このときに脚部の先端、すなわちロボット１の足首にあたる冗長なモータがある場合、例えば、そのモータについては逆運動学を適用せず、かわりにロボット１の足部が地面と平行になるようモータ角度を設定することができる。
【００９９】
（２）ＰＳ１２１が移動するために脚１１１を動作させるプログラムである場合について説明する。かかる場合、ＰＳ１２１は、ロボット１の重心の違いを吸収する役割を発揮する。
【０１００】
例えば、あるＰＳ１２１が移動する命令である移動命令を受け付けた場合、当該ＰＳ１２１は、重心属性値格納部１２６の重心属性値を読み出し、当該重心属性値を用いて、ロボット１が転倒しないように脚１１１の関節を曲げる量を算出し、当該量に従ってモータを動作させる。このＰＳ１２１の動作により、ロボット１は、転倒せずに移動できる。以下、転倒判定を伴う計算についても、図１０を用いて説明する。
【０１０１】
また、前記のモータ動作でモータが高速に動作し、その力に起因してロボットが転倒する場合、たとえばロボットの動作を一様に低速化することで、発生する力を小さくしつつ、姿勢の整合性を維持できるため、これにより、ロボット１は、転倒せずに移動できる。
【０１０２】
また、あるＰＳ１２１は、ロボットが可動しうるジョイント情報、およびロボットの頭部が向くべき方向を取得し、頭部の向きを補正する。さらに具体的には、ＰＳ１２１は、以下のように動作する。
このようなＰＳ１２１は、ロボットが備える腰部、胴部、頭部のモータ、およびもとのモーションにおける頭部の向きに基づいて、ロボットの頭部がもとのモーションと同じ方向を指向するよう、腰部、胴部、頭部のうち、実際に回転可能なモータへ回転量を分配し、もとの角度になるべく近づくよう、各モータへ回転を適用する。これにより、備えているモータの数によらず、ロボットの首部が指向する方向を補正する。
また、ＰＳ１２１は生成したロボットのモーション情報を取得し、生成したモーションでロボットが転倒するか否かを判別する。さらに具体的には、ＰＳ１２１は次のように動作する。
ロボットのある時点での安定状態を求めるため、ＺＭＰ（Ｚｅｒｏ  ＭｏｍｅｎｔＰｏｉｎｔ）を計算することができる。
【０１０３】
【数１６】
2020069006.tif 000018
【０１０４】
【数１７】
2020069006.tif 000019
上式および図１０のとおり、ロボット１の各部にかかる力ＦおよびトルクＴを取得できれば、ロボット１のある時点でのＺＭＰが計算できる。ＦおよびＴはロボット外部からの力を表すため、実物のロボット１でＦおよびＴを取得するためには、例えば足部に力センサを備える必要がある。実物のロボットが力センサなどを備えていない場合であっても、例えばオープンソースソフトウェアであるＧＡＺＥＢＯシミュレータを用いることで、同様の計算を実施できる。
いずれの場合でも、得られたＺＭＰの座標、およびロボット１の足の形状、および与えられたモーションに基づいて、ＺＭＰの位置が、両足を接地した状態で足の間にあるか、あるいは片足を接地した状態で、接地した足の内側にあるかどうかの条件を判定できる。条件を満たす場合、ロボット１は転倒せず、条件を満たさない場合、ロボット１は転倒する。
もしロボット１が与えられたモーションで転倒する場合、例えば重心位置がロボット１の足部におさまるようモータ角度を補正し、ロボット１の動作速度を低速とすることで、転倒を防止する。あるいは、実物のロボット１が力センサなどを備える場合、例えば、オペレーション空間制御（Ｏｐｅｒａｔｉｏｎ  Ｓｐａｃｅ  Ｃｏｎｔｒｏｌ）により、転倒しない条件を満たすＺＭＰの位置を得るように、ロボット１各部のモータ角度を補正することができる。
前記のモータ角度を補正する計算は、実際のロボット１に必要なセンサを備えている場合、および備えていない場合のいずれについても、シミュレータ上であれば実施可能である。したがって、あらかじめシミュレータを用いて前記のモータ角度補正を行い、その結果として得た一連のモータ動作命令を保存することにより、実際のロボット１が転倒しないような動作命令を生成することができる。
また、ＰＳ１２１は、自然言語によるテキストの発声命令を受けたとき、次のようにして、発声に対応する動作を生成することができる。このようなＰＳ１２１は、具体的には以下のように動作する。
まず、あらかじめＰＳ１２１、あるいはそれ以外の処理装置などを用いて、自然言語によるテキスト、およびテキストに対応する人のモーション情報、および、モーションの時間あたり移動量から計算可能なモーションの活発度や、モーションを行った人の性格を一連の数値で示す、モーション個性パラメータを、組になった学習情報として、サーバ装置３に送信する。なお、モーション情報は専用のセンサ装置を用いて取得したものではなくともよく、たとえば、人が映っている動画をオープンソースソフトウェアのＯｐｅｎＰｏｓｅでモーション情報に変換したものであってもよい。
サーバ装置３は、テキスト、人のモーション情報、モーション個性パラメータからなる、言語モーション学習データを、データベースとして格納する。ＰＳ１２１は、自然言語によるテキストの発声命令を受けたとき、そのテキスト、およびロボット１がその時点で表現したいモーション個性パラメータを、サーバ装置３に送信し、実行すべきモーションを要求する。
サーバ装置３は、ＰＳ１２１から前記の要求を受け、モーションを返送する。ここで、受信したテキストを、保持している言語モーション学習データと照合し、受信したテキストと、言語モーション学習データのテキストが一致する場合、その言語モーション学習データのモーションを取得し、ロボット１に返送することができる。このとき、人のモーションとして格納されているデータを、前記のＰＳ１２１が行うのと同様の方法により、返送すべきロボットが実行可能で、かつ転倒を防止するモーションに変換し、返送することができる。
または、サーバ装置３が受信したテキストと言語モーション学習データが一致していない場合、サーバ装置３は次のように動作させることができる。すなわち、言語モーション学習データに基づいて、テキスト、およびモーション個性パラメータを入力すると、時系列のモーション情報を出力するような、モーション生成器をサーバ装置３上に作成し、これを用いて、受信したテキストに基づくモーションを返送することができる。とくに、モーション個性パラメータを反映できることにより、テキスト上は同様の内容であっても、ロボットの感情に応じた異なるモーションを返送することができる。このようなモーション生成器を実現する方法として、例えばリカレントニューラルネットワークを用いたＳｅｑｕｅｎｃｅＴｏＳｅｑｕｅｎｃｅを用いることができる。
【０１０５】
また、ＰＳ１２１は、命令受信部１６１が受信した命令を実行し、ハード１１を動作させる。なお、かかる命令は問わない。かかる命令は、例えば、腕動作命令、脚動作命令、移動命令である。
【０１０６】
ＯＳ１２２は、アプリ１２３とＰＳ１２１との間の層のソフトウェアであり、いわゆるメモリ管理、タスク管理等を行う。ＯＳ１２２は、例えば、Ｌｉｎｕｘ（登録商標）、アンドロイド（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）である。ＯＳ１２２は、何でも良く、問わない。
【０１０７】
アプリ１２３は、１以上のハード１１のうちのいずれか１以上のハード１１を動作させるための命令を出力するプログラムである。アプリ１２３は、異なる複数の各ロボット１で動作可能である。アプリ１２３は、例えば、音楽に合わせてダンスを踊るアプリである。アプリ１２３は、例えば、目標とする地点まで自律移動するアプリである。
【０１０８】
アプリ１２３は、例えば、成長に関する１以上の属性値を取得し、当該１以上の属性値に応じて、他の属性値を変更するアプリである。成長に関する属性値は、例えば、年齢（動作開始からの期間）、友好度（起動回数、起動頻度、機能の利用頻度、機能の利用回数）、ユーザ情報の蓄積量等である。他の属性値は、脚１１１または腕１１２の動作の速度を示す値、である。
【０１０９】
また、１以上のアプリ１２３のうちの少なくとも一のアプリ１２３は、受け付けられた命令が同じ命令でも、格納部１２の１以上のロボット属性値または１以上のユーザ属性値に応じて、異なる処理を行うことは好適である。例えば、ユーザからダンスの実行の命令を受けた場合、ユーザの機能の利用頻度によって、異なるダンスを行うようになるなどである。
【０１１０】
また、１以上のアプリ１２３のうちの少なくとも一のアプリ１２３は、複数の機能を実現し、かつ前記複数の機能のうちの一部の機能のみ、受け付けられた命令が同じ命令でも、格納部１２の１以上のロボット属性値または１以上のユーザ属性値に応じて、異なる処理を行うことは好適である。例えば、ロボットの電池残量が減り、ロボットの属性値の一つが疲労を示している状態で、ユーザからの命令を受付けた際に、ロボットが疲れたような発言、動作を行うなどである。
【０１１１】
また、１以上のアプリ１２３のうちの少なくとも一のアプリ１２３は、人が身につけた２以上の各センサからの信号を受信し、当該信号を用いて、人の動きに対応する動きをロボットにさせるアプリであることは好適である。例えば、ユーザが挨拶をした際に、発話中に記録した映像から動作情報を取得し、その後、ロボットが挨拶をする場面で、ユーザが高頻度で行なっていた発話と動作を真似て行うようになる、または、対応する動作がない発話に関しても、似た場面で行われる発話に関しては、適切な動作を行うなどである
【０１１２】
また、アプリ１２３は、例えば、チャットを行うアプリである。かかる場合、アプリ１２３は、耳１１４が受け付けた音声に対して音声認識し、文字列を取得し、当該文字列の受け付けに対応する応答の文字列を取得し、当該応答の文字列を音声に変換し、口１１５から出力する（音声合成する）処理を行う。
【０１１３】
なお、アプリ１２３の動作内容は種々あり得、問わないことは言うまでもない。
【０１１４】
機種識別子格納部１２４には、ロボット１の機種を識別する機種識別子が格納される。機種識別子は、例えば、ＩＤであるが、機種の仕様（例えば、脚１１１の自由度属性値、および腕１１２の自由度属性値等の１以上の属性値）でも良い。
【０１１５】
自由度属性値格納部１２５には、脚１１１または腕１１２の自由度に関する１以上の自由度属性値が格納される。自由度属性値格納部１２５には、例えば、脚１１１または腕１１２を識別する識別子と対に、自由度属性値が格納される。
【０１１６】
重心属性値格納部１２６には、ロボット１の重心に関する重心属性値が格納される。重心属性値は、例えば、ロボット１の各部品の重心位置を特定する座標値である。重心位置を特定する座標値は、ロボット１の特定位置を原点とする３次元座標値（ｘ，ｙ，ｚ）である。重心属性値は、例えば、ロボット１の重心位置を特定する座標値である。重心位置を特定する座標値は、ロボット１の特定位置を原点とする３次元座標値（ｘ，ｙ，ｚ）である。
【０１１７】
受付部１３は、指示や情報等を受け付ける。指示や情報等とは、例えば、動作開始指示、動作命令、ダウンロード命令、登録指示である。動作開始指示は、ロボット１の動作の開始の指示（起動の指示と言っても良い。）である。動作命令は、特定のアプリ１２３を実行させる指示である。動作命令は、例えば、アプリ１２３を識別するアプリ識別子を有する。ダウンロード命令は、ＰＳ１２１またはアプリ１２３のダウンロードの指示である。ダウンロード命令は、例えば、機種識別子を有する。ダウンロード命令は、例えば、ＰＳ１２１を識別するＰＳ識別子、またはアプリを識別するアプリ識別子を有する。ダウンロード命令は、例えば、ＰＳ識別子と機種識別子とを有する。登録指示は、登録情報の登録の指示であり、端末識別子を含む。
【０１１８】
受付部１３は、ユーザから指示や情報等を受け付けても良いし、コントロール端末２から送信された指示や情報等を受信しても良い。受付部１３は、サーバ装置３から指示や情報等を受信しても良い。
【０１１９】
指示や情報等の入力手段は、タッチパネルやキーボードやマウスやメニュー画面によるもの等、何でも良い。受付部１３は、タッチパネルやキーボード等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェア等で実現され得る。
【０１２０】
アプリ実行部１４は、１以上のアプリ１２３を動作させる。アプリ実行部１４は、格納部１２のアプリ１２３を読み出し、当該アプリ１２３を実行する。
【０１２１】
アプリ実行部１４は、例えば、動作命令に従って、動作命令に対応するアプリ１２３を動作させる。
【０１２２】
アプリ実行部１４は、例えば、２以上の階層化された各記録媒体に蓄積されたデータまたはプログラムを用いて、１以上のアプリ１２３を動作させる。
【０１２３】
アプリ実行部１４は、例えば、１以上の属性値に応じて、異なる記録媒体からデータまたはプログラムを取得し、データまたはプログラムを用いて、１以上のアプリ１２３を動作させる。例えば、ロボットの属性値のうちの一つがユーザ情報設定中であった際に、タッチセンサなどから信号を受けた時、Lストレージから起動するアプリを特定し、アプリを起動する、または、ロボットが成長によって、性格の観点で新しい特性を獲得した際に、Cストレージから新しい特性におけるロボットの振る舞いを記述したプログラム群をダウンロードし、それらのアプリを起動するなどである。
【０１２４】
アプリ実行部１４は、例えば、動作開始指示の受け付けに応じて、ロボット１を起動する。
【０１２５】
送信部１５は、各種の情報や指示等を送信する。各種の情報や指示等とは、例えば、後述する問合情報、後述するダウンロード命令、後述する登録情報である。送信部１５は、例えば、受付部１３が受け付けた指示や情報等を送信する。
【０１２６】
問合情報送信部１５１は、問合情報をサーバ装置３に送信する。問合情報送信部１５１は、例えば、アプリから出力された命令に対応するＰＳ１２１が格納部１２に存在するか否かを判断し、ＰＳ１２１が存在しない、と判断した場合に、当該命令に関する命令情報と格納部１２の機種識別子とを有する問合情報を構成し、サーバ装置３に送信する。
【０１２７】
問合情報送信部１５１は、例えば、動作命令の受け付けに応じて、動作命令に対応するＰＳ１２１が格納部１２に存在するか否かを判断し、ＰＳ１２１が存在しない、と判断した場合に、当該命令に関する命令情報と格納部１２の機種識別子とを有する問合情報を構成し、サーバ装置３に送信する。
【０１２８】
なお、命令情報は、命令を識別する方法であり、例えば、命令の識別子（ＩＤ）、命令名、関数名、メソッド名等である。
【０１２９】
ダウンロード命令送信部１５２は、ダウンロード命令を送信する。ダウンロード命令送信部１５２は、例えば、受付部１３が受け付けたダウンロード命令をサーバ装置３に送信する。ダウンロード命令送信部１５２は、例えば、アプリから出力された命令に対応するＰＳ１２１が格納部１２に存在しない、と判断した場合に、当該命令に関する命令情報（例えば、命令の識別子）と格納部１２の機種識別子とを有するダウンロード命令を構成し、サーバ装置３に送信する。なお、ダウンロード命令は、機種識別子のみでも良い。  登録情報送信部１５３は、登録情報をサーバ装置３に送信する。登録情報送信部１５３は、例えば、受付部１３が受け付けた登録指示が有する端末識別子と、格納部１２のロボット識別子とを有する登録情報を構成し、サーバ装置３に送信する。登録情報は、機種識別子を有しても良い。
【０１３０】
受信部１６は、各種の情報またはプログラム等を受信する。各種の情報またはプログラム等とは、例えば、ＰＳ１２１、アプリ１２３、問合情報、動作命令である。
【０１３１】
命令受信部１６１は、問合情報の送信に応じて、ハード１１を動作させる命令を受信する。命令受信部１６１は、例えば、サーバ装置３、またはコントロール端末２から命令を受信する。なお、ハード１１を動作させる命令は、例えば、プログラム、関数名、メソッド名等であり、例えば、ＰＳ１２１でも良い。
【０１３２】
ＰＳ受信部１６２は、ダウンロード命令の送信に応じて、サーバ装置３からダウンロード命令に対応する１または２以上のＰＳ１２１を受信し、格納部１２に蓄積する。ＰＳ受信部１６２は、例えば、ダウンロード命令が有する機種識別子に対応する１または２以上のＰＳ１２１を受信し、格納部１２に蓄積する。ＰＳ受信部１６２は、例えば、ダウンロード命令が有する機種識別子と命令情報とに対応するＰＳ１２１を受信し、格納部１２に蓄積する。
【０１３３】
登録情報送信部１５３により登録情報がサーバ装置３に送信され、当該登録情報がサーバ装置３に登録された後に、動作命令受信部１６３は、登録情報が有する端末識別子に対応するコントロール端末２から送信された動作命令を受信する。
【０１３４】
コントロール端末２は、ロボット１を動作させる。コントロール端末２は、ロボット１を操作するための端末である。
【０１３５】
コントロール端末２を構成する端末格納部２１には、各種の情報が格納され得る。各種の情報は、例えば、ユーザの１以上の属性値、端末識別子である。ユーザの属性値を、適宜、ユーザ属性値と言う。
【０１３６】
端末受付部２２は、各種の指示や情報を受け付ける。各種の指示や情報は、例えば、登録指示、動作命令である。動作命令は、例えば、脚動作命令、腕動作命令、移動命令である。
【０１３７】
各種の指示や情報の入力手段は、タッチパネルやキーボードやマウスやメニュー画面によるもの等、何でも良い。端末受付部２２は、タッチパネルやキーボード等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェア等で実現され得る。
【０１３８】
端末処理部２３は、各種の処理を行う。各種の処理は、例えば、端末受付部２２が受け付けた指示や情報を、送信する構造の指示や情報にする処理である。また、各種の処理は、例えば、端末受信部２５が受信した情報を出力する構造の情報にする処理である。
【０１３９】
端末処理部２３は、例えば、端末受付部２２が受け付けた登録指示に応じて、端末識別子を端末格納部２１から読み出し、当該端末識別子を有する登録指示を構成する。
【０１４０】
端末処理部２３は、例えば、端末受付部２２が受け付けた動作命令に応じて、ユーザの１以上の属性値を端末格納部２１から読み出し、当該１以上の属性値を有する動作命令を構成する。
【０１４１】
端末送信部２４は、各種の指示や情報を送信する。各種の指示や情報は、例えば、登録指示、動作命令である。動作命令は、例えば、ユーザの１以上の属性値を有しても良い。端末送信部２４は、例えば、ロボット１またはサーバ装置３に、各種の指示や情報を送信する。
【０１４２】
端末受信部２５は、各種の情報を受信する。各種の情報は、例えば、登録情報の登録完了の旨を示す情報である。
【０１４３】
端末出力部２６は、各種の情報を出力する。各種の情報は、例えば、登録情報の登録完了の旨を示す情報である。
【０１４４】
サーバ装置３を構成するサーバ格納部３１には、ハードを動作させる１以上の命令が格納され得る。命令は、プログラムである。命令は、ＰＳ１２１でも良い。１以上の各命令は、機種識別子と命令情報とに対応付いている。サーバ格納部３１には、例えば、機種識別子と対に１以上のＰＳ１２１が格納され得る。サーバ格納部３１には、例えば、１以上の登録情報も格納され得る。
【０１４５】
サーバ受付部３２は、各種の指示や情報等を受け付ける。各種の指示や情報等は、例えば、機種識別子と命令情報と命令の組である。
【０１４６】
各種の指示や情報等の入力手段は、キーボードやマウスやメニュー画面によるもの等、何でも良い。サーバ受付部３２は、キーボード等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェア等で実現され得る。
【０１４７】
サーバ処理部３３は、各種の処理を行う。各種の処理は、例えば、サーバ受付部３２が受け付けた情報等をサーバ格納部３１に蓄積する処理である。各種の処理は、例えば、サーバ受信部３５が受信した登録情報をサーバ格納部３１に蓄積する処理である。
【０１４８】
各種の処理は、例えば、サーバ受信部３５が受信した問合情報が有する命令情報と機種識別子と対になる命令をサーバ格納部３１から取得する処理である。
【０１４９】
各種の処理は、例えば、サーバ受信部３５が受信したダウンロード命令が有する機種識別子と対になる１以上のＰＳ１２１をサーバ格納部３１から取得する処理である。
【０１５０】
例えば、サーバ受信部３５がコントロール端末２から端末識別子と動作命令を受信した場合、サーバ処理部３３は、当該端末識別子と対になるロボット識別子を取得し、当該ロボット識別子で識別されるロボット１に動作命令を送信する。なお、例えば、サーバ受信部３５がコントロール端末２から端末識別子と動作命令を受信した場合、サーバ処理部３３は、当該端末識別子が管理されていると判断した場合のみ、当該端末識別子と対になるロボット識別子を取得し、当該ロボット識別子で識別されるロボットの操作の許可を示す情報を取得しても良い。
【０１５１】
サーバ送信部３４は、各種の情報を送信する。サーバ送信部３４は、例えば、サーバ処理部３３が取得したロボット識別子で識別されるロボットの操作の許可を示す情報を、コントロール端末２に送信する。
【０１５２】
サーバ受信部３５は、各種の情報や指示を受信する。各種の情報や指示は、例えば、登録情報、問合情報、ダウンロード命令、端末識別子と動作命令である。
【０１５３】
Ｌストレージ端末４を構成するＬストレージ４１には、各種の情報が格納され得る。各種の情報とは、例えば、ユーザの音声、ロボットが撮影した映像、一つ以上のユーザの属性値、一つ以上のロボットの属性値、である。
【０１５４】
Ｌ処理部４２は、データまたはプログラムの要求をロボット１から受信し、当該要求に対応するデータまたはプログラムをＬストレージ４１から読み出し、ロボット１に送信する。
【０１５５】
Ｃストレージサーバ５を構成するＣストレージ５１には、各種の情報が格納され得る。各種の情報とは、例えば、アプリ１２３のアプリ情報、ロボットの利用情報、ロボットで利用される、画像、音声、動作情報、動作命令情報、である。
【０１５６】
Ｃ処理部５２は、データまたはプログラムの要求をロボット１から受信し、当該要求に対応するデータまたはプログラムをＣストレージ５１から読み出し、ロボット１に送信する。
【０１５７】
なお、ロボット１は、２以上の階層化された記録媒体を利用可能である。つまり、アプリ実行部１４は、２以上の階層化された各記録媒体に蓄積されたデータまたはプログラムを用いて、１以上のアプリを動作させることができることは好適である。
【０１５８】
また、２以上の階層化された記録媒体は、例えば、ロボットの内部の記録媒体であるＲメモリ、ロボット１と通信可能な装置の記録媒体であるＬストレージ４１、およびクラウド上の記録媒体であるＣストレージ５１を含むことは好適である。
【０１５９】
格納部１２、機種識別子格納部１２４、自由度属性値格納部１２５、重心属性値格納部１２６、端末格納部２１、サーバ格納部３１、Ｌストレージ４１、およびＣストレージ５１は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。
【０１６０】
格納部１２に情報等が記憶される過程は問わない。例えば、記録媒体を介して情報等が格納部１２で記憶されるようになってもよく、通信回線等を介して送信された情報等が格納部１２で記憶されるようになってもよく、あるいは、入力デバイスを介して入力された情報等が格納部１２で記憶されるようになってもよい。
【０１６１】
ＰＳ１２１、ＯＳ１２２、およびアプリ１２３は、プログラムである。
【０１６２】
アプリ実行部１４、端末処理部２３、サーバ処理部３３、Ｌ処理部４２、およびＣ処理部５２は、通常、ＭＰＵやメモリ等から実現され得る。アプリ実行部１４等の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【０１６３】
送信部１５、問合情報送信部１５１、ダウンロード命令送信部１５２、登録情報送信部１５３、端末送信部２４、およびサーバ送信部３４は、通常、無線または有線の通信手段で実現されるが、放送手段で実現されても良い。
【０１６４】
受信部１６、命令受信部１６１、ＰＳ受信部１６２、動作命令受信部１６３、端末受信部２５、およびサーバ受信部３５は、通常、無線または有線の通信手段で実現されるが、放送を受信する手段で実現されても良い。
【０１６５】
端末出力部２６は、ディスプレイやスピーカー等の出力デバイスを含むと考えても含まないと考えても良い。端末出力部２６は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
【０１６６】
次に、ロボットシステムＡの動作について説明する。まず、ロボット１の動作例について、図４のフローチャートを用いて説明する。
【０１６７】
（ステップＳ４０１）受付部１３は、動作開始指示を受け付けたか否かを判断する。動作開始指示を受け付けた場合はステップＳ４０２に行き、動作開始指示を受け付けなかった場合はステップＳ４０３に行く。
【０１６８】
（ステップＳ４０２）アプリ実行部１４は、ロボット１を起動する。ステップＳ４０１に戻る。
【０１６９】
（ステップＳ４０３）受付部１３は、動作命令を受け付けたか否かを判断する。動作命令を受け付けた場合はステップＳ４０４に行き、動作命令を受け付けなかった場合はステップＳ４１１に行く。
【０１７０】
（ステップＳ４０４）アプリ実行部１４は、動作命令に対応するアプリ１２３を実行する。そして、アプリ１２３内において、通常、１以上のＰＳ１２１を選択しようとする。
【０１７１】
（ステップＳ４０５）アプリ実行部１４は、アプリ１２３内において使用されるＰＳ１２１の選択ができたか否かを判断する。ＰＳ１２１の選択ができた場合はステップＳ４０６に行き、ＰＳ１２１の選択ができなかった場合はステップＳ４０７に行く。なお、ＰＳ１２１の選択ができた場合とは、アプリ１２３内において使用されるＰＳ１２１が格納部１２に存在する場合である。
【０１７２】
（ステップＳ４０６）アプリ実行部１４は、選択されたＰＳ１２１を実行し、動作させる。ステップＳ４０１に戻る。
【０１７３】
（ステップＳ４０７）アプリ実行部１４は、ＰＳ１２１を識別する情報、および格納部１２の機種識別子を取得し、当該情報を有する問合情報を構成する。
【０１７４】
（ステップＳ４０８）問合情報送信部１５１は、ステップＳ４０７で構成された問合情報をサーバ装置３に送信する。
【０１７５】
（ステップＳ４０９）命令受信部１６１は、問合情報の送信に応じて、ハード１１を動作させる命令（ここでは、ＰＳ１２１）を受信したか否かを判断する。ＰＳ１２１を受信した場合はステップＳ４１０に行き、受信しなかった場合はステップＳ４０９に戻る。
【０１７６】
（ステップＳ４１０）アプリ実行部１４は、ステップＳ４０９で受信された命令（ここでは、ＰＳ１２１）を実行する。ステップＳ４０１に戻る。
【０１７７】
（ステップＳ４１１）受付部１３は、ダウンロード命令を受け付けたか否かを判断する。ダウンロード命令を受け付けた場合はステップＳ４１２に行き、ダウンロード命令を受け付けなかった場合はステップＳ４１６に行く。
【０１７８】
（ステップＳ４１２）ダウンロード命令送信部１５２は、格納部１２の機種識別子を取得し、当該機種識別子を有するダウンロード命令を構成する。
【０１７９】
（ステップＳ４１３）ダウンロード命令送信部１５２は、ステップＳ４１２で構成したダウンロード命令をサーバ装置３に送信する。
【０１８０】
（ステップＳ４１４）ＰＳ受信部１６２は、ダウンロード命令に対応する１以上のＰＳ１２１をサーバ装置３から受信したか否かを判断する。１以上のＰＳ１２１を受信した場合はステップＳ４１５に行き、受信しなかった場合はステップＳ４１４に戻る。
【０１８１】
（ステップＳ４１５）ＰＳ受信部１６２は、ステップＳ４１４で受信された１以上のＰＳ１２１を格納部１２に蓄積する。ステップＳ４０１に戻る。
【０１８２】
（ステップＳ４１６）受付部１３は、登録指示を受け付けたか否かを判断する。登録指示を受け付けた場合はステップＳ４１７に行き、登録指示を受け付けなかった場合はステップＳ４０１に戻る。
【０１８３】
（ステップＳ４１７）登録情報送信部１５３は、登録指示が有する端末識別子と、格納部１２のロボット識別子とを有する登録情報を構成する。
【０１８４】
（ステップＳ４１８）登録情報送信部１５３は、ステップＳ４１７で構成した登録情報をサーバ装置３に送信する。ステップＳ４０１に戻る。
【０１８５】
なお、図４のフローチャートにおいて、登録情報の送信に応じて、登録情報が登録された旨の情報を受信しても良い。
【０１８６】
また、図４のフローチャートのステップＳ４０３において、受付部１３が端末識別子を有する動作命令をコントロール端末２から受信した場合、当該端末識別子とロボット識別子との対が登録された登録情報であるか否かをサーバ装置３に問合せ、登録された登録情報である場合のみ、アプリ実行部１４は、当該動作命令に従って、当該動作命令に対応するアプリを動作させても良い。
【０１８７】
さらに、図４のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
【０１８８】
次に、コントロール端末２の動作例について、図５のフローチャートを用いて説明する。
【０１８９】
（ステップＳ５０１）端末受付部２２は、登録指示を受け付けたか否かを判断する。登録指示を受け付けた場合はステップＳ５０２に行き、登録指示を受け付けなかった場合はステップＳ５０４に行く。
【０１９０】
（ステップＳ５０２）端末処理部２３は、端末格納部２１の端末識別子を読み出し、当該端末識別子を有する登録指示を構成する。
【０１９１】
（ステップＳ５０３）端末送信部２４は、ステップＳ５０２で構成された登録指示をロボット１に送信する。ステップＳ５０１に戻る。なお、ロボット１への送信は、Ｂｌｕｅｔｏｏｔｈ（登録商標）等の近距離無線通信による送信が好適であるが、通信手段は問わない。
【０１９２】
（ステップＳ５０４）端末受付部２２は、動作命令を受け付けたか否かを判断する。動作命令を受け付けた場合はステップＳ５０５き、登録指示を受け付けなかった場合はステップＳ５０１に戻る。なお、受け付けられる動作命令は、通常、アプリ１２３を識別する識別子、またはＰＳ１２１を識別する識別子、または命令を識別する識別子を有する。
【０１９３】
（ステップＳ５０５）端末処理部２３は、送信する動作命令を構成する。送信する動作命令は、通常、アプリ１２３を識別する識別子、またはＰＳ１２１を識別する識別子、または命令を識別する識別子を有する。また、送信する動作命令は、例えば、端末格納部２１の端末識別子を有する。
【０１９４】
（ステップＳ５０６）端末送信部２４は、ステップＳ５０５で構成された動作命令をロボット１に送信する。ステップＳ５０１に戻る。
【０１９５】
なお、図５のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
【０１９６】
次に、サーバ装置３の動作例について、図６のフローチャートを用いて説明する。
【０１９７】
（ステップＳ６０１）サーバ受信部３５は、登録情報を受信したか否かを判断する。登録情報を受信した場合はステップＳ６０２に行き、登録情報を受信しなかった場合はステップＳ６０３に行く。
【０１９８】
（ステップＳ６０２）サーバ処理部３３は、ステップＳ６０１で受信された登録情報をサーバ格納部３１に蓄積する。ステップＳ６０１に戻る。
【０１９９】
（ステップＳ６０３）サーバ受信部３５は、問合情報をロボット１から受信したか否かを判断する。問合情報を受信した場合はステップＳ６０４に行き、問合情報を受信しなかった場合はステップＳ６０６に行く。
【０２００】
（ステップＳ６０４）サーバ処理部３３は、ステップＳ６０３で受信された問合情報が有する命令情報と機種識別子と対になる命令をサーバ格納部３１から取得する。なお、命令は、例えば、ＰＳ１２１である。
【０２０１】
（ステップＳ６０５）サーバ送信部３４は、ステップＳ６０４で取得された命令をロボット１に送信する。ステップＳ６０１に戻る。
【０２０２】
（ステップＳ６０６）サーバ受信部３５は、ダウンロード命令をロボット１から受信したか否かを判断する。ダウンロード命令を受信した場合はステップＳ６０７に行き、ダウンロード命令を受信しなかった場合はステップＳ６０９に行く。
【０２０３】
（ステップＳ６０７）サーバ処理部３３は、ステップＳ６０６で受信されたダウンロード命令が有する機種識別子と対になる１以上のＰＳ１２１をサーバ格納部３１から取得する。
【０２０４】
（ステップＳ６０８）サーバ送信部３４は、ステップＳ６０７で取得された１以上のＰＳ１２１をロボット１に送信する。ステップＳ６０１に戻る。
【０２０５】
（ステップＳ６０９）サーバ受信部３５は、端末識別子と動作命令とを受信したか否かを判断する。かかる情報を受信した場合はステップＳ６１０に行き、受信しなかった場合はステップＳ６０１に戻る。
【０２０６】
（ステップＳ６１０）サーバ処理部３３は、ステップＳ６０９で受信された端末識別子と対になるロボット識別子をサーバ格納部３１の１以上の登録情報から取得する。
【０２０７】
（ステップＳ６１１）サーバ送信部３４は、ステップＳ６１０で取得したロボット識別子で識別されるロボット１に、ステップＳ６０９で受信された動作命令を送信する。なお、サーバ送信部３４は、ステップＳ６１０で取得したロボット識別子で識別されるロボット１に、ステップＳ６０９で受信された動作命令と対になるプログラム（例えば、命令、ＰＳ１２１）を送信しても良い。ステップＳ６０１に戻る。
【０２０８】
なお、図６のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
【０２０９】
以上、本実施の形態によれば、ハードウェアの差異を吸収するソフトウェアであるＰＳをロボットに設けることにより、一つのアプリケーションが異なる種類のロボットで動作可能となる。
【０２１０】
また、本実施の形態によれば、ＰＳとＯＳとをロボットに設けることにより、一つのアプリケーションが異なる種類のロボットで動作可能となる。
【０２１１】
また、本実施の形態によれば、脚または腕の自由度が異なる複数のロボットで、脚または腕を曲げる動作をさせる同一のアプリケーションが動作可能となる。
【０２１２】
また、本実施の形態によれば、重心が異なる複数のロボットで、ロボットを移動させる同一のアプリケーションを動作させた場合でも、ロボットが転倒せずに移動できる。
【０２１３】
また、本実施の形態によれば、複数の各部位に与えるトルクを合算することにより動作の制御が可能になる。
【０２１４】
また、本実施の形態によれば、処理能力が低いロボット１でも、サーバ装置との連携により、適切に処理が行える。
【０２１５】
また、本実施の形態によれば、プログラムであるＰＳ１２１を容易にロボット１内に格納できる。そのため、例えば、ＰＳ１２１のバージョンアップに容易に対応できる。
【０２１６】
また、本実施の形態によれば、登録されたコントロール端末２を用いて、ロボット１を制御できる。
【０２１７】
また、本実施の形態によれば、階層化された２以上の記録媒体に蓄積されたデータまたはプログラムを用いて、ロボット１を動作させることができる。
【０２１８】
また、本実施の形態によれば、ロボット１の属性値に応じて、異なる記録媒体からデータまたはプログラムを取得し、動作できる。
【０２１９】
また、本実施の形態によれば、ロボット１の成長に応じて、ロボット１の属性値を自動変更できる。
【０２２０】
また、本実施の形態によれば、ロボット１の属性値またはユーザの属性値に応じた適切な処理が行える。
【０２２１】
さらに、本実施の形態によれば、人の動きに対応する動作ができるロボット１を提供できる。
【０２２２】
なお、本実施の形態におけるロボット１等の処理の一部、コントロール端末２の処理、サーバ装置３の処理は、ソフトウェアで実現しても良い。そして、このソフトウェアをソフトウェアダウンロード等により配布しても良い。また、このソフトウェアをＣＤ−ＲＯＭなどの記録媒体に記録して流布しても良い。なお、このことは、本明細書における他の実施の形態においても該当する。
【０２２３】
また、図７は、本明細書で述べたプログラムを実行して、上述した種々の実施の形態のサーバ装置３等を実現するコンピュータの外観を示す。上述の実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムで実現され得る。図７は、このコンピュータシステム３００の概観図であり、図８は、システム３００のブロック図である。
【０２２４】
図７において、コンピュータシステム３００は、ＣＤ−ＲＯＭドライブ３０１２を含むコンピュータ３０１と、キーボード３０２と、マウス３０３と、モニタ３０４とを含む。
【０２２５】
図８において、コンピュータ３０１は、ＣＤ−ＲＯＭドライブ３０１２に加えて、ＭＰＵ３０１３と、ＭＰＵ３０１３、ＣＤ−ＲＯＭドライブ３０１２に接続されたバス３０１４と、ブートアッププログラム等のプログラムを記憶するためのＲＯＭ３０１５と、ＭＰＵ３０１３に接続され、アプリケーションプログラムの命令を一時的に記憶するとともに一時記憶空間を提供するためのＲＡＭ３０１６と、アプリケーションプログラム、システムプログラム、及びデータを記憶するためのハードディスク３０１７とを含む。ここでは、図示しないが、コンピュータ３０１は、さらに、ＬＡＮへの接続を提供するネットワークカードを含んでも良い。
【０２２６】
コンピュータシステム３００に、上述した実施の形態のサーバ装置３等の機能を実行させるプログラムは、ＣＤ−ＲＯＭ３１０１に記憶されて、ＣＤ−ＲＯＭドライブ３０１２に挿入され、さらにハードディスク３０１７に転送されても良い。これに代えて、プログラムは、図示しないネットワークを介してコンピュータ３０１に送信され、ハードディスク３０１７に記憶されても良い。プログラムは実行の際にＲＡＭ３０１６にロードされる。プログラムは、ＣＤ−ＲＯＭ３１０１またはネットワークから直接、ロードされても良い。
【０２２７】
プログラムは、コンピュータ３０１に、上述した実施の形態のサーバ装置３等の機能を実行させるオペレーティングシステム（ＯＳ）、またはサードパーティープログラム等は、必ずしも含まなくても良い。プログラムは、制御された態様で適切な機能（モジュール）を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいれば良い。コンピュータシステム３００がどのように動作するかは周知であり、詳細な説明は省略する。
【０２２８】
なお、上記プログラムにおいて、情報を送信するステップや、情報を受信するステップなどでは、ハードウェアによって行われる処理、例えば、送信ステップにおけるモデムやインターフェースカードなどで行われる処理（ハードウェアでしか行われない処理）は含まれない。
【０２２９】
また、上記プログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
【０２３０】
また、上記各実施の形態において、一の装置に存在する２以上の通信手段（端末情報送信部、端末情報受信部など）は、物理的に一の媒体で実現されても良いことは言うまでもない。
【０２３１】
また、上記各実施の形態において、各処理（各機能）は、単一の装置（システム）によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
【０２３２】
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【０２３３】
以上のように、本発明にかかるロボットは、ハードウェアの差異を吸収するソフトウェアであるＰＳをロボットに設けることにより、一つのアプリケーションが異なる種類のロボットで動作可能となるという効果を有し、人型ロボット等として有用である。
【符号の説明】
【０２３４】
１  ロボット
２  コントロール端末
３  サーバ装置
４  Ｌストレージ端末
５  Ｃストレージサーバ
１１  ハード
１２  格納部
１３  受付部
１４  アプリ実行部
１５  送信部
１６  受信部
２１  端末格納部
２２  端末受付部
２３  端末処理部
２４  端末送信部
２５  端末受信部
２６  端末出力部
３１  サーバ格納部
３２  サーバ受付部
３３  サーバ処理部
３４  サーバ送信部
３５  サーバ受信部
４１  Ｌストレージ
４２  Ｌ処理部
５１  Ｃストレージ
５２  Ｃ処理部
１１１  脚
１１２  腕
１１３  目
１１４  耳
１１５  口
１２１  ＰＳ
１２２  ＯＳ
１２３  アプリ
１２４  機種識別子格納部
１２５  自由度属性値格納部
１２６  重心属性値格納部
１５１  問合情報送信部
１５２  ダウンロード命令送信部
１５３  登録情報送信部
１６１  命令受信部
１６２  ＰＳ受信部
１６３  動作命令受信部
【図１】
2020069006.tif 000020
【図２】
2020069006.tif 000021
【図３】
2020069006.tif 000022
【図４】
2020069006.tif 000023
【図５】
2020069006.tif 000024
【図６】
2020069006.tif 000025
【図７】
2020069006.tif 000026
【図８】
2020069006.tif 000027
【図９】
2020069006.tif 000028
【図１０】
2020069006.tif 000029