(57)【要約】【課題】ロボットの動作の多様性を高める。【解決手段】ロボット１００は、複数の所定動作の各々を実行可能に構成されたロボットである。ロボット１００は、取得部１１１と、設定部１１２と、選択部１１３と、動作制御部１１４と、を備える。取得部１１１は、複数の所定動作の各々の実際の実行頻度を表す実行頻度パラメータを取得する。選択部１１３は、取得された実行頻度パラメータに応じて複数の所定動作からの自機に実行させる実行用動作の選択を、実行頻度がより低い所定動作が実行用動作として選択されやすくなるように、行う。動作制御部１１４は、選択された実行用動作を自機に実行させる。【選択図】図２
2020089929.tif 000002
【特許請求の範囲】
【請求項１】
複数の所定動作の各々を実行可能に構成されたロボットであって、
前記複数の所定動作の各々の実際の実行頻度を表す実行頻度パラメータを取得する取得手段と、
前記取得された実行頻度パラメータに応じて、前記複数の所定動作からの自機に実行させる実行用動作の選択を、実行頻度がより低い所定動作が前記実行用動作としてより選択されやすくなるように、行う選択手段と、
前記実行用動作として選択された所定動作を自機に実行させる動作制御手段と、
を備えることを特徴とするロボット。
【請求項２】
前記取得手段は、前記実行頻度パラメータとして、前記複数の所定動作の各々が実行されていない状態の継続時間を取得することを特徴とする、請求項１に記載のロボット。
【請求項３】
前記取得手段は、前記実行頻度パラメータとして、前記複数の所定動作の各々が実行された回数である実行回数を取得することを特徴とする、請求項１に記載のロボット。
【請求項４】
前記選択手段は、前記複数の所定動作に対応する複数の選択用パラメータの間の比較結果に基づいて、前記複数の所定動作から前記実行用動作を選択し、
前記複数の所定動作の各々の実行頻度パラメータに基づいて、前記複数の所定動作からの前記実行用動作の選択を、実行頻度がより低い所定動作が前記実行用動作として選択されやすくなるように、前記複数の選択用パラメータの各々を設定する設定手段をさらに備えることを特徴とする、請求項１から３のいずれか１項に記載のロボット。
【請求項５】
前記動作制御手段は、現在実行中の前記実行用動作としての所定動作に対応する実行頻度パラメータと、前記複数の所定動作のうちの、前記実行用動作としての所定動作以外の他の所定動作に対応する実行頻度パラメータとの比較結果に応じて、前記実行用動作としての前記所定動作の実行頻度がより低い場合に、現在実行中の前記所定動作を、中断せずに完了させるように前記自機に実行させることを特徴とする、請求項１から４のいずれか１項に記載のロボット。
【請求項６】
複数の所定動作の各々を実行可能に構成されたロボットの制御方法であって、
前記複数の所定動作の各々の実際の実行頻度を表す実行頻度パラメータを取得する取得ステップと、
前記取得ステップで取得された実行頻度パラメータに応じて、前記複数の所定動作からの前記ロボットに実行させる実行用動作の選択を、実行頻度がより低い所定動作が前記実行用動作としてより選択されやすくなるように、行う選択ステップと、
前記選択ステップで前記実行用動作として選択された所定動作を前記ロボットに実行させる動作制御ステップと、
を含むロボットの制御方法。
【請求項７】
複数の所定動作の各々を実行可能に構成されたロボットを制御するための制御装置のコンピュータに、
前記複数の所定動作の各々の実際の実行頻度を表す実行頻度パラメータを取得する取得ステップ、
前記取得ステップで取得された実行頻度パラメータに応じて、前記複数の所定動作からの前記ロボットに実行させる実行用動作の選択を、実行頻度がより低い所定動作が前記実行用動作としてより選択されやすくなるように、行う選択ステップ、及び、
前記選択ステップで前記実行用動作として選択された所定動作を前記ロボットに実行させる動作制御ステップ、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット、ロボットの制御方法及びプログラムに関する。
【背景技術】
【０００２】
従来、複数の所定動作の各々を実行可能に構成されたロボットとして、例えば、特許文献１に開示されたものが知られている。このロボットでは、自機の複数の所定動作を制御するためのプログラムが設定されており、確率オートマトンを用い、複数の所定動作の各々に対応して予め設定された遷移確率に基づいて、複数の所定動作の中から１つの動作を選択し、選択した動作を自機に実行させる。また、このロボットでは、圧力センサや視覚センサ等のセンサによって「叩かれた」、「怒られた」といった外部入力信号を検出し、この外部入力信号に基づいて、ロボットの感情パラメータが設定され、設定された感情パラメータに基づいて、上記の遷移確率を変更することもできる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１４９２７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載のロボットにおける動作制御のような、従来のロボット制御においては、ロボットの動作の種類を選択するのに用いられる遷移確率が予め決められていることが多い。また、この遷移確率が変更可能になっている場合でも感情パラメータ等に基づいて変更されるだけであるため、ロボットの複数の所定動作のうち、遷移確率が小さい一部の実行頻度が極めて低くなり、それにより、ロボットの動作の多様性が低下してしまうおそれがあった。
【０００５】
本発明は、上記実情に鑑みてなされたものであり、ロボットの動作の多様性を高めることを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明のロボットは、
複数の所定動作の各々を実行可能に構成されたロボットであって、
前記複数の所定動作の各々の実際の実行頻度を表す実行頻度パラメータを取得する取得手段と、
前記取得された実行頻度パラメータに応じて、前記複数の所定動作からの自機に実行させる実行用動作の選択を、実行頻度がより低い所定動作が前記実行用動作としてより選択されやすくなるように、行う選択手段と、
前記実行用動作として選択された所定動作を自機に実行させる動作制御手段と、
を備えることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、ロボットの動作の多様性を高めることができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態１に係るロボットの外観を示す図である。
【図２】実施形態１に係るロボットの機能構成を示す図である。
【図３】実施形態１に係るロボットの記憶部に記憶される行動要求値テーブルの一例を示す図である。
【図４】行動要求値の変化の一例を示す図である。
【図５】実施形態１に係る動作制御処理のフローチャートである。
【図６】変形例１に係る行動原理値更新スレッドのフローチャートである。
【図７】変形例１に係る行動要求値更新スレッドのフローチャートである。
【図８】変形例１に係る動作制御スレッドのフローチャートである。
【図９】変形例２に係るロボットの記憶部に記憶される行動要求値テーブルの一例を示す図である。
【図１０】変形例２に係る動作制御処理のフローチャートである。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について、図表を参照して説明する。なお、図中同一又は相当部分には同一符号を付す。
【００１０】
（実施形態１）
本発明の実施形態１に係るロボット１００は、ウロウロする、キョロキョロする、ウトウトする等、複数の所定動作の各々を自律的に実行することができる電子ペット型のロボットである。図１に示すように、ロボット１００は、例えば、かわいらしい動物の形状をしており、頭部１０には鼻１１、耳１２、口１３、目１４を、胴体２０には前足２１、後ろ足２２、尻尾２３を、それぞれ備える。そして、頭部１０と胴体２０とは、破線で示される首関節１５によって相互に連結されている。
【００１１】
首関節１５は、複数のモータを含む。後述する制御部１１０がこれら複数のモータを制御することにより、ロボット１００の頭部１０を上下方向の軸、左右方向の軸及び前後方向の軸を中心に回転させることができる。これにより、ロボット１００は、例えばうなずきの動作をすることができる。
【００１２】
そして、図示しないが、ロボット１００は、頭部１０の顔の表情を変えたり、前足２１や後ろ足２２や尻尾２３を動かしたりするための駆動機構を備えており、制御部１１０がこの駆動機構を制御することによって感情を表現することができる。例えば、ロボット１００は、顔を笑顔にしたり、前足２１や後ろ足２２をバタバタと前後左右に動かしたり、尻尾２３を振ったりして、喜んでいることを表現できる。
【００１３】
また、図２に示すように、ロボット１００は、機能構成として、制御部１１０、記憶部１２０、画像入力部１３１、音声入力部１３２、センサ部１３３、音出力部１３４、感情表現部１３５、駆動部１３６、を備える。
【００１４】
制御部１１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等で構成される。制御部１１０は、記憶部１２０に記憶されたプログラムを実行することにより、後述する取得部１１１、設定部１１２、選択部１１３及び動作制御部１１４として機能する。また、制御部１１０は、時計機能及びタイマー機能を備え、現在時刻や経過時間を取得することができる。
【００１５】
記憶部１２０は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等で構成され、制御部１１０のＣＰＵが実行するプログラム、各種データ等を記憶する。また、記憶部１２０は、図３に示すような行動要求値テーブル１２１を記憶する。行動要求値テーブル１２１の詳細については後述する。
【００１６】
画像入力部１３１は、頭部１０の前面の中央部の鼻１１の位置に設けられている撮像装置（カメラ）である。画像入力部１３１は、ロボット１００の正面の画像データを取得して制御部１１０に入力する。
【００１７】
音声入力部１３２は、頭部１０の左右の耳１２の位置に複数設けられたマイクからなっており、アレーマイクを構成する。音声入力部１３２は、ロボット１００の周囲にいるユーザが発話した音声を音声データとして取得して制御部１１０に入力する。
【００１８】
センサ部１３３は、人感センサ、温度センサ、触覚センサ等の各種センサを含む。ロボット１００は、頭部１０の目１４の位置に人感センサや温度センサを備え、周囲の環境の情報を取得することができる。また、頭部１０及び胴体２０の表面の様々な位置に触覚センサを備え、ユーザに撫でられたことや、叩かれたことや、抱かれたこと等を検出することができる。
【００１９】
音出力部１３４は、頭部１０の口１３の位置に設けられたスピーカであり、制御部１１０から制御されて音声や鳴き声等を出力する。
【００２０】
感情表現部１３５は、モータ等からなる駆動機構を備え、頭部１０の顔の表情を変化させたり、前足２１や後ろ足２２や尻尾２３を動かしたりすることにより、ロボット１００の感情を表現する。
【００２１】
駆動部１３６は、４つの車輪（ホイール）と駆動モータとを含む。４つの車輪のうち、２つが前輪として胴体２０の前側に、残り２つが後輪として胴体２０の後ろ側に、それぞれ配置されている。前足２１に前輪、後ろ足２２に後輪が配置されていても良いし、前足２１や後ろ足２２とは別の位置に（例えば胴体２０の下側に直接）４つの車輪が配置されていても良い。車輪としては、例えば、オムニホイール、メカナムホイール等を使用しても良い。駆動部１３６が制御部１１０に制御されて車輪を回転させると、ロボット１００は移動する。また、駆動部１３６は、首関節１５を動かすモータを含み、ロボット１００は、制御部１１０で駆動部１３６を制御することにより、頷く動作をしたり、キョロキョロと周囲を見回す動作をしたり、ウトウトする動作をしたりすることができる。
【００２２】
また、図示しないが、ロボット１００は、例えば胴体２０の背中に相当する位置に操作ボタンが設けられていても良い。操作ボタンは、ロボット１００を操作するための各種ボタンであり、電源ボタンや、スピーカの音量調節ボタン等を含む。
【００２３】
次に、制御部１１０が実現する各機能について説明する。制御部１１０は、前述したように、記憶部１２０に記憶されたプログラムを実行することにより、取得部１１１、設定部１１２、選択部１１３及び動作制御部１１４として機能する。また、制御部１１０は、マルチスレッド機能に対応しており、複数のスレッド（異なる処理の流れ）を並行して実行することができる。
【００２４】
取得部１１１は、ロボット１００が実行する複数の所定動作の各々の実際の実行頻度を表す実行頻度パラメータを取得する。ここで、所定動作とは、外部刺激（センサ部１３３が備える触覚センサで検出される、「撫でられた」、「叩かれた」、「抱かれた」等の刺激）がロボット１００に作用していない場合にロボット１００が行う各種の動作であり、例えば、「ウロウロする」、「キョロキョロする」、「鳴く」、「しょんぼりする」、「泣く」、「ウトウトする」、「寝る」等である。また、実行頻度パラメータは、各所定動作それぞれについての実際の実行頻度を表すパラメータであり、例えば、当該所定動作が実行された時間（実行時間：この実行時間が短いことは実行頻度が低いことを表す）、実行された回数（実行回数：この実行回数が小さいことは実行頻度が低いことを表す）、当該所定動作が実行されていない状態の継続時間（この継続時間が長いことは実行頻度が低いことを表す）等である。取得部１１１は、取得手段として機能する。
【００２５】
設定部１１２は、複数の所定動作の中からロボット１００に実行させる動作（以下「実行用動作」という）を選択する際に用いる選択用パラメータを、取得部１１１が取得した実行頻度パラメータに基づいて設定する。その際、設定部１１２は、実行頻度パラメータによって表される実行頻度がより低い所定動作が選択部１１３によって実行用動作として選択されやすくなるように、選択用パラメータを設定する。ここで、選択用パラメータは、各所定動作それぞれについて、当該所定動作を選択する際の基準にするパラメータである。選択用パラメータとしては、様々なパラメータを考えることができるが、本実施形態では、後述する行動要求値を選択用パラメータとして用いる。設定部１１２は、設定手段として機能する。
【００２６】
選択部１１３は、設定部１１２が設定した選択用パラメータに基づいて、複数の所定動作の中からロボット１００の実行用動作を選択する。選択用パラメータは実行頻度パラメータに基づいて設定されるので、選択部１１３は、取得部１１１が取得した実行頻度パラメータに応じて、複数の所定動作の中から実行用動作を選択していることになる。選択部１１３は、選択手段として機能する。
【００２７】
動作制御部１１４は、音出力部１３４や感情表現部１３５や駆動部１３６を制御することによって、選択部１１３が選択した実行用動作（所定動作）をロボット１００に実行させる。動作制御部１１４は、動作制御手段として機能する。
【００２８】
次に、記憶部１２０が記憶する行動要求値テーブル１２１について図３を参照して説明する。ロボット１００が実行可能な複数の所定動作（「ウロウロする」、「キョロキョロする」等）は、図３に示すように、複数の行動原理（「退屈」、「寂しい」、「眠い」等）のいずれかに属するように割り当てられている。そして、各所定動作の行動要求値（その所定動作を行わせる要求の強さを示す値）は、図３に示すように、その所定動作が属する行動原理の行動原理値（時間やその行動原理の動作が実行されたか否か等に基づいて変化する値）によって、様々な値が設定されている。このような、各行動原理についての行動原理値毎に各所定動作の行動要求値が定められたテーブルが、行動要求値テーブル１２１である。ロボット１００においては、予めこれらの行動要求値のデフォルト値が行動要求値テーブル１２１に設定されている。
【００２９】
ロボット１００の実行用動作を選択する際には、選択部１１３が、行動要求値テーブル１２１を参照して、その時点の各行動原理の行動原理値に基づいて、各所定動作の行動要求値を求め、行動要求値が最も高い所定動作を実行用動作として選択する。そして、選択部１１３が選択した実行用動作としての所定動作が実行されるように、動作制御部１１４が音出力部１３４、感情表現部１３５及び駆動部１３６を制御することにより、ロボット１００は、その所定動作（実行用動作）を実行する。なお、行動原理値は、例えば、所定の時間毎に所定の値（例えば１）が加算され、当該行動原理値が対応する行動原理に属する所定動作が実行されると、所定の値（例えば１）が減算される。
【００３０】
例えば、今、図３に示す行動要求値テーブルにおいて、行動原理「退屈」の行動原理値が−２で、行動原理「寂しい」の行動原理値が−１で、行動原理「眠い」の行動原理値が１であるとする。この場合、行動原理「退屈」の所定動作としては「ウロウロする」（行動要求値２０）が選択され、行動原理「寂しい」の所定動作としては「しょんぼりする」（行動要求値２０）が選択され、行動原理「眠い」の所定動作としては「ウトウトする」（行動要求値４０）が選択される。そして、選択部１１３は、選択したこれらの３つの所定動作のうち、行動要求値が最も高い所定動作である「ウトウトする」を最終的に実行用動作として選択し、ロボット１００は、「ウトウトする」動作を行うことになる。
【００３１】
ロボット１００は、「ウトウトする」動作を行うと、「ウトウトする」の属する行動原理である「眠い」の行動原理値を小さくする（例えば１を減算して０にする）。そして、実行されなかった所定動作の属する行動原理である「退屈」や「寂しい」の行動原理値を大きくする（例えば１を加算して、「退屈」の行動原理値を−１に、「寂しい」の行動原理値を０にする）。すると、次の選択時には、行動原理「退屈」の所定動作としては「鳴く」（行動要求値５０）が選択され、行動原理「寂しい」の所定動作としては「しょんぼりする」（行動要求値３０）が選択され、行動原理「眠い」の所定動作としては「ウトウトする」（行動要求値２０）が選択される。したがって、今度は、選択部１１３は、選択したこれらの３つの所定動作のうち、行動要求値が最も高い所定動作「鳴く」を最終的に実行用動作として選択し、ロボット１００は、「鳴く」動作を行うことになる。
【００３２】
なお、最も高い行動要求値を持つ所定動作が複数存在した場合には、選択部１１３は、その複数の所定動作の中からランダムに１つの所定動作を実行用動作として選択する。
【００３３】
ロボット１００は、行動要求値テーブル１２１と適宜増減させる行動原理値とを用いることによって上述のように、様々な行動原理に属する所定動作を実行することができる。しかし、同じ行動原理に属する複数の所定動作に関しては、実行頻度にムラが生じる可能性がある。例えば、行動原理「退屈」に属する所定動作のうち、「ウロウロする」が選択されるのは、「退屈」の行動原理値が−２の時だけである。また、ユーザが新規の所定動作を追加する場合には当該所定動作の行動要求値を任意の値に設定することができるので、この場合も、当該所定動作の実行頻度が極端に高くなったり低くなったりする可能性がある。
【００３４】
そこで、設定部１１２は、実行されなかった所定動作の行動要求値を動的に増加させていく。そして、行動要求値を増加させた結果、最終的に当該所定動作が実行されたら、設定部１１２は、実行された当該所定動作の行動要求値を元に（デフォルト値に）戻すようにする。
【００３５】
図４を参照して具体例を説明する。まず、行動原理「退屈」の行動原理値が−１であるとすると、選択部１１３は、行動原理「退屈」の所定動作として行動要求値が最も高い「鳴く」（行動要求値は５０）を選択する。ここでは、他の行動原理に属する行動要求値が５０未満であるとする。すると、最終的に選択部１１３は、所定動作として「鳴く」を選択し、動作制御部１１４により「鳴く」動作が行われる。すると、設定部１１２は、「鳴く」以外（「ウロウロする」と「キョロキョロする」）の行動要求値を所定の値（例えば１０）だけ増加させる。また、行動原理「退屈」に属する所定動作である「鳴く」動作が行われたので、行動原理「退屈」の行動原理値は減少する（ここでは、−２になったとする）。
【００３６】
すると、行動原理「退屈」に属する行動要求値は、図４の真ん中の表のようになる（ここでは、値が変化した所定動作「ウロウロする」と所定動作「キョロキョロする」の行動要求値を太字で示している）。行動原理値が−２であるとすると、選択部１１３は、行動原理「退屈」の所定動作として行動要求値が最も高い所定動作「ウロウロする」（行動要求値は３０）を選択する。ここでは、他の行動原理に属する行動要求値が３０未満であるとする。すると、最終的に選択部１１３は、実行用動作として所定動作「ウロウロする」を選択し、動作制御部１１４により所定動作「ウロウロする」が行われる。すると、設定部１１２は、「ウロウロする」以外の所定動作（「キョロキョロする」と「鳴く」）の行動要求値を所定の値（例えば１０）だけ増加させるとともに、所定動作「ウロウロする」の行動要求値をデフォルト値に戻す。また、行動原理「退屈」に属する所定動作「ウロウロする」が行われたので、行動原理「退屈」の行動原理値は減少する（ここでは、−３になったとする）。
【００３７】
すると、行動原理「退屈」に属する行動要求値は、図４の下の表のようになる（ここでは、値が変化した所定動作「キョロキョロする」と所定動作「鳴く」の行動要求値を太字で示している）。行動原理値が−３であるとすると、選択部１１３は、行動原理「退屈」の所定動作として行動要求値が最も高い所定動作「キョロキョロする」（行動要求値は３０）を選択する。ここでは、他の行動原理に属する行動要求値が３０未満であるとする。すると、最終的に選択部１１３は、実行用動作として所定動作「キョロキョロする」を選択し、動作制御部１１４により「キョロキョロする」動作が行われる。
【００３８】
このように、行動要求値テーブル１２１に設定された値のままでは、実行頻度が極端に低い所定動作があったとしても、設定部１１２が動的にこの所定動作の行動要求値を増加させることによって、いずれはこの所定動作の行動要求値が最も高くなり、その結果、この所定動作が実行用動作として選択部１１３に選択されるようになる。また、実行頻度が極端に高い所定動作があったとしても、この所定動作の行動要求値が、実行されなかった所定動作の行動要求値よりもいずれは小さくなり、この実行頻度の高かった所定動作が実行用動作として選択部１１３に選択されない状況が発生するようになる。したがって、このように、行動要求値を動的に変化させることによって、同じ行動原理に属する複数の所定動作に関しても、動作の多様性を高くすることができる。
【００３９】
では、このように、ロボット１００の動作の多様性を高める動作制御処理について、図５を参照して説明する。この処理は、ロボット１００が起動すると実行が開始される。また、各行動原理の行動原理値はロボット１００が起動した時に（例えば０に）初期化されるものとする。
【００４０】
まず、制御部１１０は、タイマーの値Ｔを０にリセットする（ステップＳ１０１）。そして、制御部１１０は、センサ部１３３が備える触覚センサによる検出値に基づいて、外部刺激（撫でられた、叩かれた、抱かれた等）の有無を判定する（ステップＳ１０２）。
【００４１】
外部刺激があったら（ステップＳ１０２；Ｙｅｓ）、動作制御部１１４は、外部刺激に応じた動作（上述の所定動作には含まれない動作）を実行するように音出力部１３４、感情表現部１３５及び駆動部１３６を制御し（ステップＳ１０３）、ステップＳ１０１に戻る。ステップＳ１０３で動作制御部１１４によって制御される動作は、上述の所定動作ではない動作であり、具体例としては、撫でられたら感情表現部１３５によりロボット１００の顔を笑顔にする、叩かれたら感情表現部１３５によりロボット１００の顔を驚いた表情にして音出力部１３４により「キャン」と鳴かせる、等が挙げられる。
【００４２】
外部刺激がなかったら（ステップＳ１０２；Ｎｏ）、制御部１１０は、タイマーＴにより所定時間（例えば１分間）が経過したか否かを判定する（ステップＳ１０４）。所定時間が経過していなければ（ステップＳ１０４；Ｎｏ）、ステップＳ１０２に戻る。
【００４３】
所定時間が経過していたら（ステップＳ１０４；Ｙｅｓ）、取得部１１１は、各々の所定動作の実際の実行頻度を表す実行頻度パラメータを取得する（ステップＳ１０５）。実行頻度パラメータとしては、例えば、各所定動作について、最後に該所定動作が行われた後の経過時間（該所定動作が実行されていない状態の継続時間：この継続時間が長ければ実行頻度が低いことを表す）や、各所定動作の実行回数（例えば基準時刻（例えばロボット１００の起動時刻）からの各所定動作の累積実行回数：この実行回数が小さければ実行頻度が低いことを表す）や、各所定動作の実行時間（例えば基準時刻（例えばロボット１００の起動時刻）からの各所定動作の累積実行時間：この実行時間が短ければ実行頻度が低いことを表す）等が挙げられる。なお、実行頻度パラメータとして、単純に各々の所定動作の実際の実行の有無（実行されていれば実行頻度が高く、実行されていなければ実行頻度が低いことを表す）を用いてもよい。以下では、簡単のため、実際の実行の有無を実行頻度パラメータとした場合で説明する。
【００４４】
そして、設定部１１２は、取得部１１１が取得した各所定動作の実行頻度パラメータに応じて、その行動原理に属する所定動作の全ての実行頻度が基準値未満である（所定動作が全て実行されていない）行動原理の行動原理値を所定の値（例えば１）だけ増加させる（ステップＳ１０６）。なお、行動要求値テーブル１２１のサイズに基づいて、行動原理値には上限が存在するため、上限に達した行動原理値については、ステップＳ１０６では増加させずに上限の値のままにする。
【００４５】
次に、設定部１１２は、取得部１１１が取得した各所定動作の実行頻度パラメータに応じて、実行頻度が基準値以上である（例えば、一定時間又は一定回数実行された）所定動作が属する行動原理の行動原理値を所定の値（例えば１）だけ減少させる（ステップＳ１０７）。なお、行動要求値テーブル１２１のサイズに基づいて、行動原理値には下限が存在するため、下限に達した行動原理値については、ステップＳ１０７では減少させずに下限の値のままにする。なお、ステップＳ１０６では、取得部１１１が取得した各所定動作の実行頻度パラメータによらずに、全ての行動原理の行動原理値を所定の値（例えば１）だけ増加させても良いが、この場合、ステップＳ１０７では、実行頻度が基準値以上である所定動作が属する行動原理の行動原理値をステップＳ１０６での増加分を打ち消してさらに減少させる値（例えば２）だけ減少させる必要がある。
【００４６】
そして、選択部１１３は、行動要求値が最大の所定動作を実行用動作として選択する（ステップＳ１０８）。もし、行動要求値が最大の所定動作が複数存在する場合は、選択部１１３は、行動要求値が最大の所定動作の中からランダムに１つの所定動作を実行用動作として選択する。ステップＳ１０８は、選択ステップとも呼ばれる。
【００４７】
そして、動作制御部１１４は、選択部１１３によって選択された実行用動作を実行するように、音出力部１３４、感情表現部１３５及び駆動部１３６を制御する（ステップＳ１０９）。ステップＳ１０９は、動作制御ステップとも呼ばれる。
【００４８】
次に、設定部１１２は、ステップＳ１０８で選択部１１３により実行用動作として選択された所定動作が属する行動原理に属する所定動作のうち、選択部１１３により実行用動作として選択されなかった（実行されなかった）所定動作の行動要求値を、所定の値（例えば１０）だけ増加させる（ステップＳ１１０）。行動要求値については特に上限を設けずに増加させて良い。そして、設定部１１２は、ステップＳ１０８で選択部１１３により実行用動作として選択された（実行された）所定動作の行動要求値を、デフォルト値（最初に行動要求値テーブル１２１に設定されている値）に戻し（ステップＳ１１１）、ステップＳ１０１に戻る。ステップＳ１１０及びステップＳ１１１は、設定ステップとも呼ばれる。
【００４９】
なお、ステップＳ１１０及びステップＳ１１１においては、上記の処理の代わりに、取得部１１１が、ロボット１００の所定動作の実際の実行状態の情報（各所定動作が実行されていない状態の継続時間、各所定動作の実行時間、各所定動作の実行回数等の情報のうちの少なくとも１つ）を実行頻度パラメータとして取得し、取得した実行頻度パラメータに応じて行動要求値を増加させたり、デフォルト値に戻したりしても良い。例えば、実行されていない状態の継続時間が継続基準時間を超えたら当該所定動作の行動要求値を増加させ、実行時間が実行基準時間を超えるか実行回数が実行基準回数を超えたら、当該所定動作の行動要求値をデフォルト値に戻す。この場合の処理において、取得部１１１が実行頻度パラメータを取得するステップは、取得ステップとも呼ばれる。
【００５０】
以上の動作制御処理を行うことにより、ロボット１００は、実行されていない状態の継続時間が継続基準時間を超えた所定動作の行動要求値を増加させることで、実行頻度が低い所定動作を実行用動作として選択されやすくすることができる。その結果、ロボット１００は、上述のように、様々な行動原理の所定動作を実行することができるようになり、動作の多様性を高めることができる。そして、ユーザは、新規に所定動作を追加したい場合は、追加したい所定動作を、行動要求値テーブル１２１の関連する行動原理の下に割り当てて、行動要求値を任意の値に設定するだけで、ロボット１００は、その追加された所定動作を確実に実行するようになる。つまり、ユーザは、行動要求値テーブル１２１に元々設定されていた値を変更する必要なく、容易に新規の所定動作を追加することができる。
【００５１】
なお、上述の動作制御処理（図５）では、ステップＳ１０９で、選択部１１３により実行用動作として選択された所定動作の実行を開始してから終了するまで行ってから、ステップＳ１１０に遷移することを想定している。しかし、ステップＳ１０９で、実行用動作としての所定動作の実行を開始したら、終了を待たずにすぐにステップＳ１１０に遷移してもよい。この場合は、ステップＳ１０２で外部刺激を検出したら、ステップＳ１０９で実行開始していた所定動作の動作途中でも、当該動作を終了して、ステップＳ１０３での動作を開始するようにする。
【００５２】
ステップＳ１０９で実行開始していた実行用動作としての所定動作が途中で終了した場合は、ステップＳ１１１の処理は実行されないようにしてもよいし、所定動作の動作時間によってステップＳ１１１の処理を実行するか否かを決定してもよい。例えば、所定動作が本来の動作時間の半分以下しか行われずに実行終了（中断）した場合はステップＳ１１１の処理は実行せず、本来の動作時間の半分を超えた時間行われた場合はステップＳ１１１の処理を実行するようにしてもよい。また、設定部１１２は、所定動作の本来の実行時間と中断されるまでの時間との比で、行動要求値を現在の値とデフォルト値とを内分した値に設定するようにしてもよい。
【００５３】
（変形例１）
実施形態１では、所定動作を実行する毎に行動原理値を所定の値だけ増加させていたが、所定動作の実行タイミングとは別個に、一定周期（例えば１分）毎に行動原理値を所定の値だけ増加させるようにしても良い。各々の所定動作の間で実行時間に差がある場合には、このように一定周期で行動原理値を更新することによって、行動原理値の更新頻度を安定化させることができる。また、行動原理毎に行動原理値を増加させる量や周期を変更したい場合にもそのような対応が可能になる。このような変形例１について説明する。
【００５４】
変形例１では、ロボット１００は、動作制御において、後述する複数のスレッドを並行動作させる。１つ目のスレッドは、行動原理値を更新する行動原理値更新スレッドである。２つ目のスレッドは、行動要求値を更新する行動要求値更新スレッドである。３つ目のスレッドは、周期的に更新されている行動原理値や行動要求値を参照して、多様な動作制御を行う動作制御スレッドである。これらのスレッドは全て、ロボット１００が起動すると並行して実行が開始される。
【００５５】
まず、行動原理値を更新する行動原理値更新スレッドについて、図６を参照して説明する。ロボット１００は、全ての行動原理について共通の周期で行動原理値を更新する場合は行動原理値更新スレッドを１つだけ起動すれば良い。この場合、その１つの行動原理値更新スレッドが全ての行動原理の行動原理値の更新を担当する。また、異なる周期で更新したい行動原理値が存在する場合には、更新周期の種類の数だけ、行動原理値更新スレッドを起動する。この場合、各行動原理値更新スレッドは、その行動原理値更新スレッドが持つ周期で更新される行動原理の行動原理値の更新を担当する。行動原理値１つ１つに対して、１つの行動原理値更新スレッドを起動しても良い。この場合、各行動原理値更新スレッドは対応する行動原理値の更新を担当する。
【００５６】
行動原理値更新スレッドが起動すると、まず設定部１１２は、その行動原理値更新スレッドが更新を担当する行動原理値を初期化する（ステップＳ２０１）。次に制御部１１０は、所定時間経過するのを待つ（ステップＳ２０２）。この所定時間は、その行動原理値更新スレッドが更新を担当する行動原理値を更新する周期に対応して設定されるが、例えば１分間である。
【００５７】
次に、取得部１１１は、この行動原理値更新スレッドが更新を担当する行動原理に属する各所定動作の実行頻度パラメータを取得する（ステップＳ２０３）。ここでは、取得部１１１は、実行頻度パラメータとして、ステップＳ２０２で待った所定時間の間の各所定動作の実行の有無を取得する。そして、設定部１１２は、取得部１１１が取得した各所定動作の実行頻度パラメータに基づいて、ステップＳ２０２で待った所定時間の間に、その行動原理値更新スレッドが更新を担当する行動原理に属する所定動作のいずれもが実行されていない場合に、更新を担当する行動原理値を所定の値（例えば１）だけ増加させる（ステップＳ２０４）。ただし、上限に達した行動原理値については、ステップＳ２０４では増加させずに上限の値のままにする。
【００５８】
次に、設定部１１２は、取得部１１１が取得した各所定動作の実行頻度パラメータに基づいて、ステップＳ２０２で待った所定時間の間に、その行動原理値更新スレッドが更新を担当する行動原理に属する所定動作が一定時間又は一定回数実行された場合に、更新を担当する行動原理値を所定の値（例えば１）だけ減少させ（ステップＳ２０５）、ステップＳ２０２に戻る。ただし、下限に達した行動原理値については、ステップＳ２０５では減少させずに下限の値のままにする。
【００５９】
以上説明した行動原理値更新スレッドにより、各行動原理値は所定の周期で、所定の値で更新され続けることになる。次に、行動要求値を更新する行動要求値更新スレッドについて、図７を参照して説明する。基本的には、ロボット１００は、起動時に、行動要求値更新スレッドを１つ起動する。この場合、その１つの行動要求値更新スレッドが行動要求値テーブル１２１に記憶されている全ての所定動作の行動要求値の更新を担当する。しかし、行動原理値更新スレッドと同様に、更新周期の異なる行動要求値を数種類用意する場合には、更新周期の種類の数だけ、行動要求値更新スレッドを起動する。この場合、各行動要求値更新スレッドは、行動要求値テーブル１２１に記憶されている行動要求値のうち、その行動要求値更新スレッドが持つ周期で更新される所定動作の行動要求値の更新を担当する。
【００６０】
行動要求値更新スレッドが起動すると、まず制御部１１０は、所定時間経過するのを待つ（ステップＳ３０１）。この所定時間は、その行動要求値更新スレッドが更新を担当する行動要求値を更新する周期に対応して設定されるが、例えば１分間である。
【００６１】
次に、取得部１１１は、各々の所定動作の実行頻度パラメータを取得する（ステップＳ３０２）。なお、上述したように、実行頻度パラメータとしては、色々な値を用いることができるが、以下では、簡単のため、実際の実行の有無を実行頻度パラメータとすることとする。つまり、ステップＳ３０２で、取得部１１１は、実行頻度パラメータとして、ステップＳ３０１で待った所定時間の間の各所定動作の実行の有無を取得する。そして、設定部１１２は、取得部１１１が取得した各所定動作の実行頻度パラメータに基づいて、行動要求値テーブル１２１に記憶されている行動要求値について、ステップＳ３０１で待った所定時間の間に、一度も実行されなかった所定動作（複数の行動要求値更新スレッドが起動している場合には、その行動要求値更新スレッドが更新を担当している所定動作）の行動要求値を、所定の値（例えば１）だけ増加させる（ステップＳ３０３）。
【００６２】
次に、設定部１１２は、取得部１１１が取得した各所定動作の実行頻度パラメータに基づいて、行動要求値テーブル１２１に記憶されている行動要求値について、ステップＳ３０１で待った所定時間の間に、その行動要求値更新スレッドが更新を担当する所定動作が一定時間（例えば実行基準時間を超える時間）又は一定回数（例えば実行基準回数を超える回数）実行された場合に、その所定動作の行動要求値をデフォルト値に戻し（ステップＳ３０４）、ステップＳ３０１に戻る。
【００６３】
なお、開始した所定動作の実行を途中で中断するのは望ましくない場合もあるため、後述する動作制御スレッド（図８）では、行動要求値に所定の重みを乗算する処理をしているが、より確実に中断しないようにするために、ステップＳ３０３では、現在実行中の所定動作（実行を最後まで完了していない所定動作）の行動要求値も所定の値だけ増加させ、ステップＳ３０４では、現在実行中の所定動作（実行を最後まで完了していない所定動作）については、当該所定動作の行動要求値をデフォルト値に戻さないようにしてもよい。
【００６４】
また、上記「所定動作の実行を途中で中断しないようにするための処理」は、実行頻度がより低い所定行動（例えば、行動要求値テーブル１２１において、他の所定行動よりも行動要求値が大きくなる行動原理値の数が、行動原理値の総数の半分未満である所定行動）に限って行われるようにし、実行頻度がより高い所定行動（例えば、行動要求値テーブル１２１において、他の所定行動よりも行動要求値が大きくなる行動原理値の数が、行動原理値の総数の半分以上である所定行動）については、行われないようにしてもよい。
【００６５】
以上説明した行動要求値更新スレッドにより、各行動要求値は所定の周期で更新され続けることになる。次に、これら周期的に更新されている行動原理値や行動要求値を参照して、多様な動作制御を行う動作制御スレッドについて、図８を参照して説明する。
【００６６】
まず、制御部１１０は、タイマーＴの値を０にリセットする（ステップＳ４０１）。そして、制御部１１０は、センサ部１３３が備える触覚センサによる検出値に基づいて、外部刺激（撫でられた、叩かれた、抱かれた等）の有無を判定する（ステップＳ４０２）。
【００６７】
外部刺激があったら（ステップＳ４０２；Ｙｅｓ）、制御部１１０は、外部刺激に応じた動作（上述の所定動作には含まれない動作）を次の動作候補に設定し（ステップＳ４０３）、ステップＳ４０７に進む。
【００６８】
外部刺激がなかったら（ステップＳ４０２；Ｎｏ）、制御部１１０は、タイマーＴにより所定時間（例えば１分間）が経過したか否かを判定する（ステップＳ４０４）。所定時間が経過していなければ（ステップＳ４０４；Ｎｏ）、ステップＳ４０２に戻る。
【００６９】
所定時間が経過していたら（ステップＳ４０４；Ｙｅｓ）、選択部１１３は、行動要求値テーブル１２１を参照して、最大の行動要求値を抽出して変数Ｍに代入し、最大の行動要求値を持つ所定動作を次の実行用動作としての動作候補に設定する（ステップＳ４０５）。そして、選択部１１３は、現在実行中の所定動作の行動要求値の値に所定の重み（例えば１．２）を乗算した値より変数Ｍの方が大きいか又は現在実行中の所定動作が終了するか否かを判定する（ステップＳ４０６）。所定の重みを乗算するのは、一度実行を開始した所定動作については、動作終了までできるだけ継続した方が良いと考えられるからである。しかし、重みを設定せず（重みを１にして）、最大の行動要求値の所定動作にすぐに切り替わるようにしても良い。なお、各所定動作には予めそれぞれ動作時間が設定されており、所定動作を開始した時刻と現在時刻との差から、現在実行中の所定動作が終了するか否かの判定が可能である。
【００７０】
現在実行中の所定動作の行動要求値の値に所定の重みを乗算した値が変数Ｍの値以上であり、かつ現在実行中の所定動作が終了しない場合は（ステップＳ４０６；Ｎｏ）、ステップＳ４０１に戻る。
【００７１】
現在実行中の所定動作の行動要求値の値に所定の重みを乗算した値より変数Ｍの方が大きいか又は現在実行中の所定動作が終了する場合は（ステップＳ４０６；Ｙｅｓ）、動作制御部１１４は、現在実行中の動作（所定動作又は外部刺激に応じた動作）を終了させる（ステップＳ４０７）。そして、動作制御部１１４は、音出力部１３４、感情表現部１３５及び駆動部１３６を制御して、ステップＳ４０５又はステップＳ４０３で「次の動作候補」として設定された動作（所定動作又は外部刺激に応じた動作）の実行を開始する（ステップＳ４０８）。そして、ステップＳ４０１に戻る。
【００７２】
なお、煩雑になるため上記の説明では省略したが、動作制御スレッドが開始された直後等、何の動作も行われていない場合は、ステップＳ４０５の次に、ステップＳ４０６及びステップＳ４０７をスキップして、ステップＳ４０８に進む。または、動作制御スレッドが開始されると、特別なイニシャル動作（制御部１１０が内部的に動作と認識するだけで、ユーザからは動作と認識できないものであってもよい）が開始されることにしてもよい。
【００７３】
以上説明した動作制御スレッドにより、変形例１に係るロボット１００は、現在実行中の所定動作が終了するまではできるだけその動作を継続しつつ、より大きな行動要求値の所定動作が抽出された場合には、動作内容を行動要求値が最大の所定動作の実行に切り替える。そして、変形例１においても、ロボット１００は様々な行動原理の所定動作を実行することができるが、行動原理値更新スレッド、行動要求値更新スレッド及び動作制御スレッドが並行して動くことにより、変形例１に係るロボット１００では、行動原理値の更新周期、行動要求値の更新周期及び所定動作の切り替え周期を全て独立に設定可能になる。これにより、各所定動作の出現タイミングのバリエーションの自由度を向上させることができる。また、変形例１においても、ユーザは、新規の所定動作を追加したい場合、行動要求値テーブル１２１に元々設定されていた値を変更する必要なく、容易に新規の所定動作を追加することができる。
【００７４】
なお、上述の動作制御スレッド（図８）のステップＳ４０６では、現在実行中の所定動作の行動要求値に乗算する所定の重みとして、１．２という定数を例示したが、この重みについても動的に変化させてもよい。例えば、現在実行中の所定動作について、その日初めて当該所定動作を実行している場合は重みを２．０とし、時間の経過に応じて当該重みの値を１．８、１．５、１．２のように下げていく（例えば１分経過する毎に０．１ずつ下げていき、最終的に１．０にする）ことが考えられる。またその日の既に実行したことがある所定動作の場合は重みを１．２とし、時間の経過に応じて当該重みの値を１．０まで下げていくことが考えられる。
【００７５】
また、所定動作の種類に応じて重みの値や、重みの値の変化のさせ方を変えてもよい。例えば、ある所定動作については、常に重みなし（重みの値は常に１．０）とし、別のある所定動作については、常に重み２．０（最初から２．０で、時間が経過しても２．０のまま）とする等としてもよい。
【００７６】
また、実行頻度がより低い所定行動（例えば、行動要求値テーブル１２１において、他の所定行動よりも行動要求値が大きくなる行動原理値の数が、行動原理値の総数の半分未満である所定行動）に限って重み（この重みの値を実行頻度が低いほど大きな値にしてもよい）を乗算し、実行頻度がより高い所定行動（例えば、行動要求値テーブル１２１において、他の所定行動よりも行動要求値が大きくなる行動原理値の数が、行動原理値の総数の半分以上である所定行動）については、重みなし（重みの値は１．０）とするようにしてもよい。
【００７７】
（変形例２）
上述の実施形態１や変形例１では、全ての行動原理を対等に扱っていたが、周囲の環境（静か、騒がしい、寒い、暑い、ユーザが見つめてくれた、ユーザが撫でてくれた、ユーザが話しかけてくれた等）や、ロボット１００の内部状態（バッテリー残存量、発熱量等）に応じて、所定動作の選択対象となる行動原理を絞り込むようにしてもよい。
【００７８】
例えば、図９に示すように、行動要求値テーブル１２１として、ユーザにかまってもらえない場合の行動原理「退屈」、バッテリー残量が基準値を下回った場合の行動原理「空腹」、周囲の温度又はロボット１００の発熱量が基準値を上回った場合の行動原理「暑い」、ユーザにかまってもらえた場合の行動原理「楽しい」等を定義して、それぞれの行動原理に応じた所定動作を行動要求値と共に設定することができる。このような変形例２について説明する。
【００７９】
変形例２では、ロボット１００は、周囲の環境やロボット１００の内部状態に基づいて、行動原理を選択し、選択した行動原理の中で最も行動要求値が高い所定動作を選択して実行する。このための動作制御処理について、図１０を参照して説明する。この動作制御処理は、ロボット１００が起動すると実行が開始される。なお、変形例２では、センサ部１３３は、周囲環境の情報を取得するためのセンサ（人感センサ、触覚センサ、温度センサ、湿度センサ等）だけでなく、ロボット１００の内部状態（バッテリー残存量、発熱量等）を取得するためのセンサも含んでいる。また、各行動原理の行動原理値はロボット１００が起動した時に初期化されるものとする。
【００８０】
まず、制御部１１０は、画像入力部１３１、音声入力部１３２、センサ部１３３から、周囲環境やロボットの内部状態を取得する（ステップＳ５０１）。
【００８１】
次に、制御部１１０は、取得した周囲環境及び内部状態に基づき、行動原理を選択する（ステップＳ５０２）。例えば、ユーザがロボット１００を無視している状態がしばらく続いている場合等は、行動原理「退屈」が選択される。また、ユーザがロボット１００を見つめたり、抱いたりした場合等は、行動原理「楽しい」が選択される。周囲環境や内部状態によっては、複数の行動原理が選択される場合もある。例えば、ユーザがロボット１００を無視し続けていて、ロボット１００のバッテリー残存量が２０％以下になり、周囲の温度が３０度以上になっている場合は、行動原理「退屈」、行動原理「空腹」、行動原理「暑い」という３つの行動原理が選択される。
【００８２】
次に、選択部１１３は、ステップＳ５０２で選択された行動原理に含まれる所定動作の中で、行動要求値が最大の所定動作を実行用動作として選択する（ステップＳ５０３）。もし、行動要求値が最大の所定動作が複数存在する場合は、選択部１１３は、行動要求値が最大の所定動作の中からランダムに１つの所定動作を実行用動作として選択する。
【００８３】
次に、動作制御部１１４は、ステップＳ５０３で選択部１１３が実行用動作として選択した所定動作を実行するように、音出力部１３４、感情表現部１３５及び駆動部１３６を制御する（ステップＳ５０４）。
【００８４】
次に、設定部１１２は、ステップＳ５０３で選択部１１３が実行用動作として選択した所定動作の属する行動原理に属する所定動作のうち、選択部１１３が選択した所定動作以外の所定動作（実行されなかった所定動作）の行動要求値を所定の値（例えば１０）だけ増加させる（ステップＳ５０５）。そして、設定部１１２は、ステップＳ５０３で選択部１１３が選択した所定動作（実行用動作）の行動要求値をデフォルト値（最初に行動要求値テーブル１２１に設定されている値）に戻す（ステップＳ５０６）。なお、ステップＳ５０５やステップＳ５０６においては、取得部１１１が、ロボット１００の所定動作の実際の実行状態の情報（各所定動作が実行されていない状態の継続時間並びに、各所定動作の実行時間及び実行回数等の情報）を実行頻度パラメータとして取得し、実行頻度パラメータに基づいて行動要求値を増加させたり、デフォルト値に戻したりしても良い。
【００８５】
そして、設定部１１２は、ステップＳ５０２で選択された行動原理の中で、ステップＳ５０３で選択部１１３が選択した所定動作が含まれる行動原理以外の行動原理の行動原理値を所定の値（例えば１）だけ増加させる（ステップＳ５０７）。なお、上限に達した行動原理値については、ステップＳ５０７では増加させずに上限の値のままにする。
【００８６】
次に、設定部１１２は、ステップＳ５０２で選択された行動原理の中で、ステップＳ５０３で選択部１１３が選択した所定動作が含まれる行動原理の行動原理値を所定の値（例えば１）だけ減少させ（ステップＳ５０８）、ステップＳ５０１に戻る。なお、下限に達した行動原理値については、ステップＳ５０８では減少させずに下限の値のままにする。
【００８７】
なお、ステップＳ５０７やステップＳ５０８においては、取得部１１１がロボット１００の所定動作の実際の実行状態の情報（各所定動作の実行時間及び実行回数、並びに各所定動作が実行されていない状態の継続時間等の情報）を実行頻度パラメータとして取得し、ステップＳ５０２で選択された行動原理の中で、実行頻度パラメータに基づいて行動原理値を増減（例えば、一定時間又は一定回数実行された所定動作が属する行動原理の行動原理値を所定の値（例えば１）だけ減少させ、それ以外の行動原理値を所定の値（例えば１）だけ増加）させても良い。
【００８８】
以上の動作制御処理を行うことにより、ロボット１００は、上述のように、その時の周囲環境や内部状態に合った行動原理の中から、様々な所定動作を実行することができるようになる。そして、ユーザは、行動要求値テーブル１２１に元々設定されていた値を変更する必要なく、容易に新規の所定動作を追加することができる。
【００８９】
（変形例３）
上述の実施形態１や各変形例では、行動要求値テーブル１２１のデフォルト値は、予め設定されているものに固定されていた。また、ユーザが所定動作を追加する場合、行動要求値のデフォルト値とともに行動要求値テーブル１２１に追加した。そして、行動要求値のデフォルト値はロボット１００が動作している最中に変更されることはなかった。ロボット１００の所定動作のうち、ユーザに好まれる動作はユーザによって異なるが、所定動作を実行した後のユーザの反応により、行動要求値のデフォルト値を変更できるようにすると、ユーザに好まれる動作を出現しやすくすることができる。このような変形例３について説明する。
【００９０】
変形例３では、ロボット１００は、選択部１１３に選択された所定動作を動作制御部１１４によって実行した後、制御部１１０が、当該所定動作の実行中における画像入力部１３１、音声入力部１３２、センサ部１３３からの入力に基づいて、ユーザの当該所定動作に対する反応を取得する。この反応が好意的な反応であれば、設定部１１２は、行動要求値テーブル１２１において、当該所定動作の行動要求値のデフォルト値を所定の値（例えば１０）だけ増加させる。また、この反応が反感を示すものであれば、設定部１１２は、行動要求値テーブル１２１において、当該所定動作の行動要求値のデフォルト値を所定の値（例えば１０）だけ減少させる。
【００９１】
変形例３では、このように、行動要求値テーブル１２１のデフォルト値をユーザの反応に応じて変化させることにより、ロボット１００は、ユーザに好感を持たれる所定動作を行う確率を増加させることができ、また、ユーザに反感を持たれる所定動作を行う確率を減少させることができる。また、デフォルト値を変更する以外の処理は、上述の実施形態や各変形例と同様に行うことができるので、これにより、様々な所定動作を実行することができる。したがって、変形例３に係るロボット１００は、ユーザに好感を持たれる所定動作を行う確率を高めつつ、様々な所定動作を実行することにより、ユーザに好感を持たれる所定動作の実行頻度の向上（ユーザに反感を持たれる所定動作の実行頻度の低下）と、動作の多様性の向上とを両立させることができる。
【００９２】
（その他の変形例）
なお、以上説明した実施形態１や各変形例は、上述の内容に限られるものではなく、様々な変更が可能である。例えば、上述の実施形態１や各変形例では、ロボット１００が行う各々の所定動作は、行動要求値テーブル１２１において、行動原理毎に分けられた小テーブル内に定義されているが、これに限られない。例えば、行動要求値テーブル１２１は、行動原理無しで（小テーブルに分けることなく）、すべての所定動作の行動要求値が定義された１つのテーブルであっても良い。
【００９３】
また、上述の各実施形態のうち、各々の所定動作の実行頻度に応じて行動要求値を変更する処理は、ある程度データがたまらないと適格な実行頻度を取得できないため、所定期間（例えば１時間：また、時間ではなく、例えば、各所定動作の実行回数を全ての所定動作若しくは実行回数が上位のいくつか（例えば１０）の所定動作について平均した値が基準実行回数（例えば５回）を超えるまでとしてもよい）の間は、デフォルトの行動要求値をそのまま用い、所定期間経過後は実行頻度に応じて、最も低い実行頻度の所定動作を選択して実行し、それに伴って、当該所定動作の実行頻度をリセットするようにしてもよい。
【００９４】
また、所定動作の選択においては、常に行動要求値に応じて選択しなければいけないわけではなく、例えばランダムに所定動作を選択してもよいし、各々の所定動作に（行動要求値とは別に）設定された確率に応じて選択してもよいし、所定の順番で選択してもよい。
【００９５】
また、上述の実施形態及び変形例では、ロボット１００が画像入力部１３１、音声入力部１３２、センサ部１３３、音出力部１３４、感情表現部１３５、駆動部１３６を備えるものとして説明した。しかし、ロボット１００が周囲環境等を取得する必要がない場合（周囲環境等の情報が無くても、所定動作を実行可能な場合）は、画像入力部１３１、音声入力部１３２、センサ部１３３のいずれか又は全てを備えなくても良い。
【００９６】
また、ロボット１００が所定動作を行う上で音を出力する必要が無い場合は、音出力部１３４を備えなくても良い。そして、ロボット１００が所定動作を行う上で、顔の表情を変化させたり、前足２１や後ろ足２２や尻尾２３を動かしたりすることにより、感情を表現する必要が無い場合は、感情表現部１３５を備えなくても良い。また、ロボット１００が所定動作を行う上で、移動したり、頷いたり、キョロキョロしたり、ウトウトしたりといった動作をする必要が無い場合は、駆動部１３６を備えなくても良い。
【００９７】
同様に、ロボット１００は、必ずしもかわいらしい動物の形状をしている必要はなく、頭部１０と胴体２０とが首関節１５で接続されている構造になっている必要もない。さらに言えば、ロボット１００は、鼻１１、耳１２、口１３、目１４、前足２１、後ろ足２２、尻尾２３のいずれか又は全てを備えなくても良いし、逆に、図示しないが、腕、翼等を備えていても良い。要するに、ロボット１００の外観に特に制限はない。
【００９８】
また、ロボット１００は、画像入力部１３１や音声入力部１３２によって、ユーザ識別を行って、行動要求値テーブル１２１を識別したユーザ毎に複数記憶するようにしても良い。このようにすると、上述の変形例３において、行動要求値テーブル１２１のデフォルト値がユーザ毎にそのユーザに適した値に設定されることになり、どのユーザがロボット１００と接したとしても、ロボット１００は接したユーザが好意的に感じる所定動作を行う確率を高めつつ、様々な所定動作を行うことが可能になる。
【００９９】
なお、ロボット１００の各機能は、通常のＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等のコンピュータによっても実施することができる。具体的には、上記実施形態では、ロボット１００が行う動作制御処理等のプログラムが、記憶部１２０のＲＯＭに予め記憶されているものとして説明した。しかし、プログラムを、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ＭＯ（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌ  Ｄｉｓｃ）、メモリカード、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリ等のコンピュータ読み取り可能な記録媒体に格納して配布し、そのプログラムをコンピュータに読み込んでインストールすることにより、上述の各機能を実現することができるコンピュータを構成してもよい。
【０１００】
また、ロボット１００とは別に通常のＰＣ等のコンピュータをロボット１００を制御するための制御装置として用意して、当該制御装置により、制御部１１０や記憶部１２０の機能を実現させてもよい。この場合、ロボット１００と当該制御装置とを、無線又は有線で接続することにより、当該制御装置は、ロボット１００の画像入力部１３１、音声入力部１３２、センサ部１３３からの入力データを受信可能にし、また、ロボット１００の音出力部１３４、感情表現部１３５、駆動部１３６を制御可能にする。
【０１０１】
以上、本発明の好ましい実施形態について説明したが、本発明は係る特定の実施形態に限定されるものではなく、本発明には、特許請求の範囲に記載された発明とその均等の範囲が含まれる。以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
【０１０２】
（付記１）
複数の所定動作の各々を実行可能に構成されたロボットであって、
前記複数の所定動作の各々の実際の実行頻度を表す実行頻度パラメータを取得する取得手段と、
前記取得された実行頻度パラメータに応じて、前記複数の所定動作からの自機に実行させる実行用動作の選択を、実行頻度がより低い所定動作が前記実行用動作としてより選択されやすくなるように、行う選択手段と、
前記実行用動作として選択された所定動作を自機に実行させる動作制御手段と、
を備えることを特徴とするロボット。
【０１０３】
（付記２）
前記取得手段は、前記実行頻度パラメータとして、前記複数の所定動作の各々が実行されていない状態の継続時間を取得することを特徴とする、付記１に記載のロボット。
【０１０４】
（付記３）
前記取得手段は、前記実行頻度パラメータとして、前記複数の所定動作の各々が実行された回数である実行回数を取得することを特徴とする、付記１に記載のロボット。
【０１０５】
（付記４）
前記選択手段は、前記複数の所定動作に対応する複数の選択用パラメータの間の比較結果に基づいて、前記複数の所定動作から前記実行用動作を選択し、
前記複数の所定動作の各々の実行頻度パラメータに基づいて、前記複数の所定動作からの前記実行用動作の選択を、実行頻度がより低い所定動作が前記実行用動作として選択されやすくなるように、前記複数の選択用パラメータの各々を設定する設定手段をさらに備えることを特徴とする、付記１から３のいずれか１つに記載のロボット。
【０１０６】
（付記５）
前記動作制御手段は、現在実行中の前記実行用動作としての所定動作に対応する実行頻度パラメータと、前記複数の所定動作のうちの、前記実行用動作としての所定動作以外の他の所定動作に対応する実行頻度パラメータとの比較結果に応じて、前記実行用動作としての前記所定動作の実行頻度がより低い場合に、現在実行中の前記所定動作を、中断せずに完了させるように前記自機に実行させることを特徴とする、付記１から４のいずれか１つに記載のロボット。
【０１０７】
（付記６）
複数の所定動作の各々を実行可能に構成されたロボットの制御方法であって、
前記複数の所定動作の各々の実際の実行頻度を表す実行頻度パラメータを取得する取得ステップと、
前記取得ステップで取得された実行頻度パラメータに応じて、前記複数の所定動作からの前記ロボットに実行させる実行用動作の選択を、実行頻度がより低い所定動作が前記実行用動作としてより選択されやすくなるように、行う選択ステップと、
前記選択ステップで前記実行用動作として選択された所定動作を前記ロボットに実行させる動作制御ステップと、
を含むロボットの制御方法。
【０１０８】
（付記７）
複数の所定動作の各々を実行可能に構成されたロボットを制御するための制御装置のコンピュータに、
前記複数の所定動作の各々の実際の実行頻度を表す実行頻度パラメータを取得する取得ステップ、
前記取得ステップで取得された実行頻度パラメータに応じて、前記複数の所定動作からの前記ロボットに実行させる実行用動作の選択を、実行頻度がより低い所定動作が前記実行用動作としてより選択されやすくなるように、行う選択ステップ、及び、
前記選択ステップで前記実行用動作として選択された所定動作を前記ロボットに実行させる動作制御ステップ、
を実行させるためのプログラム。
【符号の説明】
【０１０９】
１０…頭部、１１…鼻、１２…耳、１３…口、１４…目、１５…首関節、２０…胴体、２１…前足、２２…後ろ足、２３…尻尾、１００…ロボット、１１０…制御部、１１１…取得部、１１２…設定部、１１３…選択部、１１４…動作制御部、１２０…記憶部、１２１…行動要求値テーブル、１３１…画像入力部、１３２…音声入力部、１３３…センサ部、１３４…音出力部、１３５…感情表現部、１３６…駆動部
【図１】
2020089929.tif 000003
【図２】
2020089929.tif 000004
【図３】
2020089929.tif 000005
【図４】
2020089929.tif 000006
【図５】
2020089929.tif 000007
【図６】
2020089929.tif 000008
【図７】
2020089929.tif 000009
【図８】
2020089929.tif 000010
【図９】
2020089929.tif 000011
【図１０】
2020089929.tif 000012