(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024082536
(43)【公開日】2024-06-20
(54)【発明の名称】動作制御装置、動作制御方法及びプログラム
(51)【国際特許分類】
A63H 11/00 20060101AFI20240613BHJP
【FI】
A63H11/00 Z
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022196457
(22)【出願日】2022-12-08
(71)【出願人】
【識別番号】000001443
【氏名又は名称】カシオ計算機株式会社
(74)【代理人】
【識別番号】100095407
【弁理士】
【氏名又は名称】木村 満
(72)【発明者】
【氏名】黛 幸輝
(72)【発明者】
【氏名】市川 英里奈
(72)【発明者】
【氏名】長谷川 浩一
(72)【発明者】
【氏名】浦野 美由紀
【テーマコード(参考)】
2C150
【Fターム(参考)】
2C150AA05
2C150CA02
2C150DA23
2C150DF04
2C150DF33
2C150ED42
(57)【要約】
【課題】疑似的な感情に基づいた動作制御の内容の設定を容易にする。
【解決手段】動作制御装置100は、被制御装置の動作を制御する動作制御装置100であって、疑似的な感情に対応させて予め設定された設定済み制御データと、疑似的な感情に応じてランダムに生成したランダム制御データと、を用いて被制御装置の動作を制御する、制御部110を備える、ことを特徴とする。
【選択図】
図4
【特許請求の範囲】
【請求項1】
被制御装置の動作を制御する制御部を備えた動作制御装置であって、
前記制御部は、
疑似的な感情に対応させて予め設定された設定済み制御データと、前記疑似的な感情に応じてランダムに生成したランダム制御データと、を用いて前記被制御装置の動作を制御する、
ことを特徴とする動作制御装置。
【請求項2】
前記制御部は、
前記予め設定された設定済み制御データと、前記疑似的な感情に応じてランダムに生成したランダム制御データと、を合成して動作制御データを生成し、
前記動作制御データを用いて前記被制御装置の動作を制御する、
ことを特徴とする請求項1に記載の動作制御装置。
【請求項3】
前記制御部は、
前記ランダム制御データを生成するための設定パラメータを前記疑似的な感情に基づいて設定する、
ことを特徴とする請求項1に記載の動作制御装置。
【請求項4】
前記制御部は、
前記疑似的な感情と前記設定パラメータとを対応付ける3Dマップを予め記憶部に記憶しており、
前記3Dマップにより前記設定パラメータを取得して設定する、
ことを特徴とする請求項3に記載の動作制御装置。
【請求項5】
前記制御部は、
前記設定済み制御データの合成の割合と前記ランダム制御データの合成の割合の少なくとも一つを前記被制御装置の疑似的な成長日数に応じて変化させる、
ことを特徴とする請求項2に記載の動作制御装置。
【請求項6】
前記制御部は、更に
前記被制御装置に作用する外部刺激を取得し、
前記取得された外部刺激に応じて前記疑似的な感情を変化させる、
ことを特徴とする請求項1に記載の動作制御装置。
【請求項7】
前記設定済み制御データは前記被制御装置が定期的に実行する動作を制御する制御データを含む、
ことを特徴とする請求項1に記載の動作制御装置。
【請求項8】
前記制御部は、
パーリンノイズを用いて前記ランダム制御データを生成する、
ことを特徴とする請求項1から7のいずれか1項に記載の動作制御装置。
【請求項9】
被制御装置の動作を制御する動作制御装置の制御部が、
疑似的な感情に対応させて予め設定された設定済み制御データと、前記疑似的な感情に応じてランダムに生成したランダム制御データと、を用いて前記被制御装置の動作を制御する、
ことを特徴とする動作制御方法。
【請求項10】
被制御装置の動作を制御する動作制御装置のコンピュータに、
疑似的な感情に対応させて予め設定された設定済み制御データと、前記疑似的な感情に応じてランダムに生成したランダム制御データと、を用いて前記被制御装置の動作を制御する、
処理を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、動作制御装置、動作制御方法及びプログラムに関する。
【背景技術】
【0002】
従来のロボットとして、例えば特許文献1に開示されたものが知られている。この従来のロボットは、犬型のロボットであって、胴体部、頭部、及び脚部等を備えており、胴体部に対して頭部や脚部を駆動することによって、種々の生物的な動作を実行可能である。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記の特許文献1に開示されたロボットは、脚部等の動作制御の内容をユーザから教示されることにより学習することができる。しかしながらロボットに疑似的な感情を持たせている場合、そのような疑似的な感情を表現する動作制御の内容を設定させることは困難である。
【0005】
本発明はこのような事情に鑑みてなされたものであって、疑似的な感情に基づいた動作制御の内容の設定を容易にすることができるようにする。
【課題を解決するための手段】
【0006】
前記目的を達成するため、本発明に係る動作制御装置の一様態は、
被制御装置の動作を制御する制御部を備えた動作制御装置であって、
前記制御部は、
疑似的な感情に対応させて予め設定された設定済み制御データと、前記疑似的な感情に応じてランダムに生成したランダム制御データと、を用いて前記被制御装置の動作を制御する
ことを特徴とする。
【発明の効果】
【0007】
本発明によれば、疑似的な感情に基づいた動作制御の内容の設定を容易にすることができる。
【図面の簡単な説明】
【0008】
【
図1】実施形態1に係るロボットの外観を示す図である。
【
図2】実施形態1に係るロボットの側面から見た断面図である。
【
図3】実施形態1に係るロボットの筐体を説明するための図である。
【
図4】実施形態1に係るロボットの機能構成を示すブロック図である。
【
図5】実施形態1に係る感情マップの一例を説明するための図である。
【
図6】実施形態1に係る制御内容テーブルの一例を説明するための図である。
【
図7】実施形態1に係る動作制御処理のフローチャートである。
【
図8】実施形態1に係る自発動作処理のフローチャートである。
【
図9】実施形態1に係る上下激しさパラメータを設定するための3Dマップの一例を示す図である。
【
図10】実施形態1に係る左右激しさパラメータを設定するための3Dマップの一例を示す図である。
【
図11】実施形態1に係る上下振幅パラメータを設定するための3Dマップの一例を示す図である。
【
図12】実施形態1に係る左右振幅パラメータを設定するための3Dマップの一例を示す図である。
【
図13】実施形態1に係るオフセットパラメータを設定するための3Dマップの一例を示す図である。
【
図14】実施形態1に係る特定動作パラメータが設定される領域を説明するための図である。
【
図15】実施形態1に係るピクピク動作合成処理のフローチャートである。
【
図16】実施形態1に係るピクピク動作合成処理で生成された動作制御データの波形の一例を示す図である。
【
図17】実施形態1に係る毛繕い動作合成処理のフローチャートである。
【
図18】実施形態1に係る毛繕い動作合成処理で生成された動作制御データの波形の一例を示す図である。
【
図19】実施形態1に係る喜びジャンプ動作合成処理のフローチャートである。
【
図20】実施形態1に係る喜びジャンプ動作合成処理で合成されるジャンプモーション波形の一例を示す図である。
【
図21】実施形態1に係る喜びジャンプ動作合成処理で生成された動作制御データの波形の一例を示す図である。
【
図22】実施形態2に係る感情合成動作処理のフローチャートである。
【
図23】実施形態3において成長日数に応じて動作制御データのランダム波形の合成率が変化していく様子の一例を示す図である。
【
図24】変形例に係る動作制御装置及びロボットの機能構成を示すブロック図である。
【発明を実施するための形態】
【0009】
以下、本発明の実施形態について、図面を参照して説明する。なお、図中同一又は相当部分には同一符号を付す。
【0010】
(実施形態1)
実施形態1に係る動作制御装置を
図1に示すロボット200に適用した実施形態について、図面を参照して説明する。
図1に示すように、実施形態に係るロボット200は、小型の動物を模したペットロボットであり、目を模した装飾部品202及びふさふさの毛203を備えた外装201に覆われている。また、外装201の中には、ロボット200の筐体207が収納されている。
図2に示すように、ロボット200の筐体207は、頭部204、連結部205及び胴体部206で構成され、頭部204と胴体部206とが連結部205で連結されている。
【0011】
胴体部206は、
図2に示すように、胴体部206の前端部にひねりモータ221が備えられており、頭部204が連結部205を介して胴体部206の前端部に連結されている。そして、連結部205には、上下モータ222が備えられている。なお、
図2では、ひねりモータ221は胴体部206に備えられているが、連結部205に備えられていてもよいし、頭部204に備えられていてもよい。
【0012】
連結部205は、連結部205を通り胴体部206の前後方向に延びる第1回転軸を中心として(ひねりモータ221により)回転自在に、胴体部206と頭部204とを連結している。ひねりモータ221は、頭部204を、胴体部206に対して、第1回転軸を中心として時計回り(右回り)に正転角度範囲内で回転(正転)させたり、反時計回り(左回り)に逆転角度範囲内で回転(逆転)させたりする。なお、この説明における時計回りは、胴体部206から頭部204の方向を見た時の時計回りである。右方(右回り)又は左方(左回り)にひねり回転させる角度の最大値は任意であるが、
図3に示すように、頭部204を右方へも左方へもひねっていない状態における頭部204の角度をひねり基準角度という。
【0013】
また、連結部205は、連結部205を通り胴体部206の幅方向に延びる第2回転軸を中心として(上下モータ222により)回転自在に、胴体部206と頭部204とを連結する。上下モータ222は、頭部204を、第2回転軸を中心として上方に正転角度範囲内で回転(正転)させたり、下方に逆転角度範囲内で回転(逆転)させたりする。上方又は下方に回転させる角度の最大値は任意であるが、
図3に示すように、頭部204を上方にも下方にも回転させていない状態における頭部204の角度を上下基準角度という。なお、
図2では、第1回転軸と第2回転軸とが互いに直交している例が示されているが、第1及び第2回転軸は互いに直交していなくてもよい。
【0014】
また、ロボット200は、
図2に示すように、頭部204にタッチセンサ211を備え、ユーザが頭部204を撫でたり叩いたりしたことを、タッチセンサ211により検出することができる。また、胴体部206にもタッチセンサ211を備え、ユーザが胴体部206を撫でたり叩いたりしたことも、タッチセンサ211により検出することができる。
【0015】
また、ロボット200は、胴体部206に加速度センサ212を備え、ロボット200の姿勢(向き)の検出や、ユーザによって持ち上げられたり、向きを変えられたり、投げられたりしたことを検出することができる。また、ロボット200は、胴体部206にジャイロセンサ214を備え、ロボット200が振動したり転がったり回転したりしていることを検出することができる。
【0016】
また、ロボット200は、胴体部206にマイクロフォン213を備え、外部の音を検出することができる。さらに、ロボット200は、胴体部206にスピーカ231を備え、スピーカ231を用いてロボット200の鳴き声(効果音)を発することができる。
【0017】
なお、本実施形態では加速度センサ212、ジャイロセンサ214、マイクロフォン213及びスピーカ231は胴体部206に備えられているが、これらの全て又は一部が頭部204に備えられていてもよい。また、胴体部206に備えられた加速度センサ212、ジャイロセンサ214、マイクロフォン213及びスピーカ231に加えて、これらの全て又は一部を頭部204にも備えるようにしてもよい。また、タッチセンサ211は、頭部204及び胴体部206にそれぞれ備えられているが、頭部204又は胴体部206のいずれか片方のみに備えられていてもよい。またこれらはいずれも複数備えられていてもよい。
【0018】
次に、ロボット200の機能構成について説明する。ロボット200は、
図4に示すように、動作制御装置100と、外部刺激検出部210と、駆動部220と、音声出力部230と、操作入力部240と、を備える。そして、動作制御装置100は、制御部110と、記憶部120と、を備える。
図4では、動作制御装置100と、外部刺激検出部210、駆動部220、音声出力部230及び操作入力部240とが、バスラインBLを介して接続されているが、これは一例である。動作制御装置100と、外部刺激検出部210、駆動部220、音声出力部230及び操作入力部240とは、USB(Universal Serial Bus)ケーブル等の有線インタフェースや、Bluetooth(登録商標)等の無線インタフェースで接続されていてもよい。また、制御部110と記憶部120とは、バスラインBLを介して接続されていてもよい。
【0019】
動作制御装置100は、制御部110及び記憶部120により、ロボット200の動作を制御する。なお、ロボット200は、動作制御装置100によって制御される装置なので、被制御装置とも呼ばれる。
【0020】
制御部110は、例えば、CPU(Central Processing Unit)等で構成され、記憶部120に記憶されたプログラムにより、後述する各種処理を実行する。なお、制御部110は、複数の処理を並行して実行するマルチスレッド機能に対応しているため、後述する各種処理を並行に実行することができる。また、制御部110は、クロック機能やタイマー機能も備えており、日時等を計時することができる。
【0021】
また、制御部110は、後述する自発動作処理において、パーリンノイズを用いたランダム波形生成器として機能する。このランダム波形生成器は、振幅がランダムで周波数が入力パラメータに基づいて定められる波形(ランダム波形)を生成する。
【0022】
記憶部120は、ROM(Read Only Memory)、フラッシュメモリ、RAM(Random Access Memory)等で構成される。ROMには、制御部110のCPUが実行するプログラム及びプログラムを実行する上で予め必要なデータが、記憶されている。フラッシュメモリは書き込み可能な不揮発性のメモリであり、電源オフ後も保存させておきたいデータが記憶される。RAMには、プログラム実行中に作成されたり変更されたりするデータが記憶される。記憶部120は、例えば後述する感情データ121、感情変化データ122、成長日数データ123、制御内容テーブル124等を記憶する。
【0023】
外部刺激検出部210は、前述したタッチセンサ211、加速度センサ212、ジャイロセンサ214、及びマイクロフォン213を備える。制御部110は、外部刺激検出部210が備える各種センサが検出した検出値(外部刺激データ)を、ロボット200に作用する外部刺激を表す信号として取得する。なお、外部刺激検出部210は、タッチセンサ211、加速度センサ212、ジャイロセンサ214、マイクロフォン213以外のセンサを備えてもよい。外部刺激検出部210が備えるセンサの種類を増やすことにより、制御部110が取得できる外部刺激の種類を増やすことができる。
【0024】
タッチセンサ211は、何らかの物体が接触したことを検出する。タッチセンサ211は、例えば圧力センサや静電容量センサにより構成される。制御部110は、タッチセンサ211からの検出値に基づいて、接触強度や接触時間を取得し、これらの値に基づいて、ユーザによってロボット200が撫でられていることや、叩かれたりしていること等の外部刺激を検出することができる(例えば特開2019-217122号公報を参照)。なお、制御部110は、これらの外部刺激をタッチセンサ211以外のセンサで検出してもよい(例えば特許第6575637号公報を参照)。
【0025】
加速度センサ212は、ロボット200の胴体部206の前後方向(X軸方向)、幅(左右)方向(Y軸方向)及び上下方向(Z軸方向)から成る3軸方向の加速度を検出する。加速度センサ212は、ロボット200が静止しているときには重力加速度を検出するので、制御部110は、加速度センサ212が検出した重力加速度に基づいて、ロボット200の現在の姿勢を検出することができる。また、例えばユーザがロボット200を持ち上げたり投げたりした場合には、加速度センサ212は、重力加速度に加えてロボット200の移動に伴う加速度を検出する。したがって、制御部110は、加速度センサ212が検出した検出値から重力加速度の成分を除去することにより、ロボット200の動きを検出することができる。
【0026】
ジャイロセンサ214は、ロボット200の3軸の角速度を検出する。3軸の角速度から、制御部110は、ロボット200の回転の状態を判定できる。また、3軸の角速度の最大値から、制御部110は、ロボット200の振動の状態を判定することができる。
【0027】
マイクロフォン213は、ロボット200の周囲の音を検出する。制御部110は、マイクロフォン213が検出した音の成分に基づき、例えばユーザがロボット200に呼びかけていることや、手を叩いていること等を検出することができる。
【0028】
駆動部220は、ひねりモータ221及び上下モータ222を備える。駆動部220は、制御部110によって駆動される。その結果、ロボット200は、例えば頭部204を持ち上げたり(第2回転軸を中心として上方に回転させたり)、横にひねったり(第1回転軸を中心として右方又は左方にひねり回転させたり)するような動作を表現することができる。これらの動作を表現するために駆動部220を駆動するためのモーションデータは、後述する制御内容テーブル124に記録されている。
【0029】
音声出力部230は、スピーカ231を備え、制御部110が音のデータを音声出力部230に入力することにより、スピーカ231から音が出力される。例えば、制御部110がロボット200の鳴き声のデータを音声出力部230に入力することにより、ロボット200は疑似的な鳴き声を発する。この鳴き声のデータは効果音データとして、後述する制御内容テーブル124に記録されている。
【0030】
操作入力部240は、例えば、操作ボタン、ボリュームつまみ等から構成される。操作入力部240は、例えば、電源のオン/オフ、出力音のボリューム調整等のユーザ操作を受け付けるためのインタフェースである。
【0031】
次に、動作制御装置100の記憶部120に記憶されるデータのうち、本実施形態に特徴的なデータである、感情データ121、感情変化データ122、成長日数データ123、制御内容テーブル124について、順に説明する。
【0032】
感情データ121は、ロボット200に疑似的な感情を持たせるためのデータであり、感情マップ300上の座標を示すデータ(X,Y)である。感情マップ300は
図5に示すように、X軸311として安心度(不安度)の軸、Y軸312として興奮度(無気力度)の軸を持つ2次元の座標系で表される。感情マップ上の原点310(0,0)が通常時の感情を表す。そして、X座標の値(X値)が正でその絶対値が大きくなるほど安心度が高く、Y座標の値(Y値)が正でその絶対値が大きくなるほど興奮度が高い感情を表す。また、X値が負でその絶対値が大きくなるほど不安度が高く、Y値が負でその絶対値が大きくなるほど無気力度が高い感情を表す。なお、
図5では感情マップ300が2次元の座標系で表されているが、感情マップ300の次元数は任意である。
【0033】
本実施形態においては、感情マップ300の初期値としてのサイズは、
図5の枠301に示すように、X値もY値も最大値が100、最小値が-100となっている。そして、第1期間の間、ロボット200の疑似的な成長日数が1日増える度に、感情マップ300の最大値、最小値ともに2ずつ拡大されていく。ここで第1期間とは、ロボット200が疑似的に成長する期間であり、ロボット200の疑似的な生誕から例えば50日の期間である。なお、ロボット200の疑似的な生誕とは、ロボット200の工場出荷後のユーザによる初回の起動時である。成長日数が25日になると、
図5の枠302に示すように、X値もY値も最大値が150、最小値が-150となる。そして、第1期間(この例では50日)すると、それにより、ロボット200の疑似的な成長が完了したとして、
図5の枠303に示すように、X値もY値も最大値が200、最小値が-200となって、感情マップ300のサイズが固定される。
【0034】
図5に示すように、感情マップ300上での感情データ121の値(X,Y)は、喜怒哀楽に対応している。すなわち、(200,200)に近づくほど喜の感情が強くなり、(-200,200)に近づくほど怒の感情が強くなり、(-200,-200)に近づくほど哀の感情が強くなり、(200,-200)に近づくほど楽の感情が強くなる。
【0035】
感情変化データ122は、感情データ121のX値及びY値の各々を増減させる変化量を設定するデータである。本実施形態では、感情データ121のXに対応する感情変化データ122として、X値を増加させるDXPと、X値を減少させるDXMとがあり、感情データ121のY値に対応する感情変化データ122として、Y値を増加させるDYPと、Y値を減少させるDYMとがある。すなわち、感情変化データ122は、以下の4つの変数からなり、ロボット200の疑似的な感情を変化させる度合いを示すデータである。
DXP:安心し易さ(感情マップでのX値のプラス方向への変化し易さ)
DXM:不安になり易さ(感情マップでのX値のマイナス方向への変化し易さ)
DYP:興奮し易さ(感情マップでのY値のプラス方向への変化し易さ)
DYM:無気力になり易さ(感情マップでのY値のマイナス方向への変化し易さ)
【0036】
本実施形態では、一例として、これらの変数の初期値をいずれも10とし、後述する動作制御処理中の感情変化データ122を学習する処理により、最大20まで増加するものとしている。この学習処理により、感情変化データ122、すなわち感情の変化度合が変化するので、ロボット200は、ユーザによるロボット200との接し方に応じて、様々な性格を持つことになる。つまり、ロボット200の性格は、ユーザの接し方により、個々に異なって形成されることになる。
【0037】
そこで、本実施形態では、各感情変化データ122から10を減算することにより、各性格データ(性格値)を導出する。すなわち、安心し易さを示すDXPから10引いた値を性格値(陽気)とし、不安になり易さを示すDXMから10引いた値を性格値(シャイ)とし、興奮し易さを示すDYPから10引いた値を性格値(活発)とし、無気力になり易さを示すDYMから10引いた値を性格値(甘えん坊)とする。
【0038】
成長日数データ123は、初期値が1であり、1日経過する度に1ずつ加算されていく。成長日数データ123により、ロボット200の疑似的な成長日数(疑似的な生誕からの日数)が表されることになる。ここでは、成長日数データ123で表される成長日数の期間を、第2期間と呼ぶことにする。
【0039】
制御内容テーブル124には、
図6に示すように、制御条件と制御データとが対応して記憶されている。制御部110は、制御条件(例えば、何らかの外部刺激が検出された)が満たされると、対応する制御データ(駆動部220で動作を表現するためのモーションデータ及び、音声出力部230から効果音を出力するための効果音データ)に基づき、駆動部220及び音声出力部230を制御する。
【0040】
モーションデータは、駆動部220の上下モータ222及びひねりモータ221の時間経過毎の回転角度を示すシーケンスデータである。
図6では、このシーケンスデータを時間(step)毎の回転角度(度)の値を示すグラフの波形で表している(本実施形態では1stepは0.1秒に対応する)。例えば、体を撫でられたら、最初(0秒時)は上下モータ222の回転角度(上下角度)及びひねりモータ221の回転角度(左右角度)を0度(上下基準角度及びひねり基準角度)にし、0.5秒時に上下モータ222の回転角度が60度になるように頭部204を上げ、1秒時にひねりモータ221の回転角度が60度になるように頭部204をひねり、というように制御部110は駆動部220を制御する。
【0041】
また、効果音データは、
図6では、わかりやすく示すために、各効果音データを説明する文が記載されているが、実際にはこれらの文で説明されている効果音データ自身(例えばサンプリングされた音のデータ)が、効果音データとして制御内容テーブル124に格納されている。
【0042】
なお、
図6に示す制御内容テーブル124では、制御条件毎に制御データが決められているが、感情(感情マップ300上の座標で表される)に応じて制御データを変化させてもよい。
【0043】
次に、
図7に示すフローチャートを参照しながら、動作制御装置100の制御部110が実行する動作制御処理について説明する。動作制御処理は、動作制御装置100が、外部刺激検出部210からの検出値等に基づいてロボット200の動きや鳴き声を制御するとともに、定期的にロボット200の感情に基づく動きを自動生成してロボット200を制御する処理である。ユーザがロボット200の電源を入れると、動作制御処理が開始される。
【0044】
まず、制御部110は、感情データ121、感情変化データ122、成長日数データ123等の各種データを初期化する(ステップS101)。なお、ロボット200の起動の2回目以降は、ステップS101において、ロボット200の電源が前回切られた時点での各値を設定するようにしてもよい。これは、前回電源を切る操作が行われた時に制御部110が各データの値を記憶部120の不揮発メモリ(フラッシュメモリ等)に保存し、その後、電源が入れられた時に、当該保存した値を各データの値に設定することで実現可能である。
【0045】
次に、制御部110は、外部刺激検出部210が検出した外部刺激を取得する(ステップS102)。そして制御部110は、制御内容テーブル124に規定されている制御条件のうち、ステップS102で取得した外部刺激により満たされるものがあるか否かを判定する(ステップS103)。
【0046】
制御内容テーブル124に規定されている制御条件のいずれかが、取得した外部刺激により満たされると判定した場合(ステップS103;Yes)、制御部110は、ステップS102で取得した外部刺激に応じて感情変化データ122を取得する(ステップS104)。例えば、外部刺激として頭部204が撫でられたことを検出すると、ロボット200は疑似的な安心感を得るので、制御部110は、感情データ121のX値に加算する感情変化データ122としてDXPを取得する。
【0047】
そして、制御部110は、ステップS104で取得された感情変化データ122に応じて感情データ121を設定する(ステップS105)。例えば、ステップS104で感情変化データ122としてDXPが取得されていたなら、制御部110は、感情データ121のX値に感情変化データ122のDXPを加算する。ただし、感情変化データ122を加算すると感情データ121の値(X値、Y値)が感情マップ300の最大値を超える場合には、感情データ121の値は感情マップ300の最大値に設定される。また、感情変化データ122を減算すると感情データ121の値が感情マップ300の最小値未満になる場合には、感情データ121の値は感情マップ300の最小値に設定される。
【0048】
ステップS104及びステップS105において、外部刺激の各々に対して、どのような感情変化データ122が取得されて、感情データ121が設定されるかは任意に設定可能であるが、ここでは、以下に一例を示す。
【0049】
頭部204を撫でられる(安心する):X=X+DXP
頭部204を叩かれる(不安になる):X=X-DXM
(これらの外部刺激は頭部204のタッチセンサ211で検出可能)
胴体部206を撫でられる(興奮する):Y=Y+DYP
胴体部206を叩かれる(無気力になる):Y=Y-DYM
(これらの外部刺激は胴体部206のタッチセンサ211で検出可能)
頭を上にして抱かれる(喜ぶ):X=X+DXP、及びY=Y+DYP
頭を下にして宙づりにされる(悲しむ):X=X-DXM、及びY=Y-DYM
(これらの外部刺激はタッチセンサ211、加速度センサ212及びジャイロセンサ214で検出可能)
優しい声で呼びかけられる(平穏になる):X=X+DXP、及びY=Y-DYM
大きな声で怒鳴られる(イライラする):X=X-DXM、及びY=Y+DYP
(これらの外部刺激はマイクロフォン213で検出可能)
【0050】
次に、制御部110は、制御内容テーブル124を参照して、ステップS102で取得した外部刺激により満たされる制御条件に対応した制御データを取得する(ステップS106)。
【0051】
そして、制御部110は、ステップS106で取得した制御データとステップS105で設定された感情データ121とに基づく動作を実行し(ステップS107)、ステップS110に進む。ただし、
図6に示す制御内容テーブル124のように、制御データが感情データ121によって変化しない場合には、ステップS107では、制御部110は、単純にステップS106で取得した制御データに基づいて駆動部220及び音声出力部230を制御することになる。
【0052】
一方、ステップS103で、取得した外部刺激により制御内容テーブル124に規定されている制御条件のいずれもが満たされないと判定した場合(ステップS103;No)、制御部110は、呼吸動作等の自発的な動作を行うか否かを判定する(ステップS108)。自発的な動作を行うか否かの判定方法は任意だが、本実施形態では、自発動作周期(例えば2秒)毎にステップS108での判定がYesになるものとする。
【0053】
自発的な動作を行わないと判定した場合(ステップS108;No)、制御部110はステップS110に進む。自発的な動作を行うと判定した場合(ステップS108;Yes)、制御部110は、自発動作処理を実行し(ステップS109)、ステップS110に進む。自発動作処理は、呼吸動作や感情表現動作(感情データ121に基づいて生成された動作)を行う処理だが、詳細は後述する。
【0054】
ステップS110では、制御部110は、クロック機能により、日付が変わったか否かを判定する。日付が変わっていないと判定した場合(ステップS110;No)、制御部110はステップS102に戻る。
【0055】
日付が変わったと判定した場合(ステップS110;Yes)、制御部110は、第1期間中であるか否かを判定する(ステップS111)。第1期間を、ロボット200の疑似的な生誕(例えば購入後のユーザによる初回の起動時)から例えば50日の期間とすると、制御部110は、成長日数データ123が50以下なら第1期間中であると判定する。第1期間中でないと判定した場合(ステップS111;No)、制御部110は、ステップS114に進む。
【0056】
第1期間中と判定した場合(ステップS111;Yes)、制御部110は、感情変化データ122の学習を行う(ステップS112)。感情変化データ122の学習とは、具体的には、その日のステップS105において、感情データ121のX値が1度でも感情マップ300の最大値に設定されたなら感情変化データ122のDXPに1を加算し、感情データ121のY値が1度でも感情マップ300の最大値に設定されたなら感情変化データ122のDYPに1を加算し、感情データ121のX値が1度でも感情マップ300の最小値に設定されたなら感情変化データ122のDXMに1を加算し、感情データ121のY値が1度でも感情マップ300の最小値に設定されたなら感情変化データ122のDYMに1を加算することによって、感情変化データ122を更新する処理のことである。
【0057】
ただし、感情変化データ122の各値が大きくなりすぎると、感情データ121の1回の変化量が大きくなりすぎるので、感情変化データ122の各値は例えば20を最大値とし、それ以下に制限する。また、ここでは、感情変化データ122のいずれに対しても1を加算することとしたが、加算する値は1に限定されない。例えば、感情データ121の各値が感情マップ300の最大値又は最小値に設定された回数をカウントして、その回数が多い場合には、感情変化データ122に加算する数値を増やすようにしてもよい。
【0058】
次に、制御部110は感情マップ300を拡大する(ステップS113)。感情マップ300の拡大とは、具体的には、制御部110が感情マップ300を最大値、最小値ともに、2だけ拡大する処理である。ただし、この拡大する数値「2」はあくまでも一例であり、3以上拡大してもよいし、1だけ拡大してもよい。また感情マップ300の軸毎、また最大値と最小値とで、拡大する数値が異なっていてもよい。
【0059】
また、
図7では、感情変化データ122の学習及び感情マップ300の拡大は、制御部110がステップS110で日付が変わったのを判定してから行われるものとしているが、基準時刻(例えば午後9時)になったことを判定してから行われるようにしてもよい。また、ステップS110での判定は、実際の日付で判定するのではなく、ロボット200が電源オンになっている時間を制御部110のタイマー機能で累計した値に基づいて判定してもよい。例えば、電源オンの累計時間が24の倍数の時間になる毎に、ロボット200が1日成長したとみなして、感情変化データ122の学習及び感情マップ300の拡大が行われるようにしてもよい。
【0060】
次に、制御部110は、成長日数データ123に1を加算し(ステップS114)、感情データ121をX値、Y値ともに0に初期化して(ステップS115)、ステップS102に戻る。なお、ロボット200が前日の疑似的な感情を翌日にも持ち越した方が良い場合には、制御部110は、ステップS115の処理を行わずにステップS102に戻る。
【0061】
次に、上述の動作制御処理のステップS109において実行される自発動作処理について、
図8を参照して説明する。
【0062】
まず、制御部110は、現在のタイミングが感情表出タイミングであるか否かを判定する(ステップS201)。感情表出タイミングをどのように設定するかは任意だが、本実施形態では、感情表出周期(例えば3分)毎にステップS201での判定がYesになるものとする。
【0063】
ステップS201で、感情表出タイミングでないと判定した場合(ステップS201;No)、制御部110は、呼吸動作を実行し(ステップS202)、自発動作処理を終了する。なお、呼吸動作の具体的な制御内容は、ロボット200が呼吸しているように見えるように駆動部220を制御するシーケンスデータとして(制御内容テーブル124に記録されているモーションデータと同様に)、記憶部120に予め記憶されている。
【0064】
感情表出タイミングであると判定した場合(ステップS201;Yes)、制御部110は、感情データ121を取得する(ステップS203)。そして、感情データ121に基づいて、波形生成用の波形設定パラメータを取得する(ステップS204)。
【0065】
波形設定パラメータは、ひねりモータ221の回転角度(左右角度)及び上下モータ222の回転角度(上下角度)を時間(step)に応じてどのように変化させるかを示す波形(
図6にモーションデータとして示されているような波形)を設定するためのパラメータである。つまり、波形設定パラメータには、上下角度の波形を設定するための上下波形設定パラメータと、左右角度の波形を設定するための左右波形設定パラメータとが存在する。また、本実施形態においては、これらの波形設定パラメータとは別に、感情に応じて表出される生物的な動作を行うか否かを表す特定動作パラメータも存在する。
【0066】
上下波形設定パラメータも左右波形設定パラメータも、それぞれ、波形の不規則さ(N)、波形の激しさ(激しさパラメータ)、波形の振幅(振幅パラメータ)を設定するパラメータを持つ。また上下波形設定パラメータについては、波形のオフセットを設定するオフセットパラメータも持つ。
【0067】
波形の不規則さを設定するパラメータであるNは、パーリンノイズを用いるランダム波形生成器によって、ランダム波形をいくつ生成するかを決めるためのパラメータである。パーリンノイズを用いて生成したランダム波形は周波数が一定だが、本実施形態では、制御部110が、周波数の異なるランダム波形をN個生成し、そのN個のランダム波形を合成(単純に加算)することにより、振幅だけでなく、周波数もランダムに変化するランダム波形を取得する。Nをいくつにするかは任意であるが、制御部110は、Nとして、例えば5を取得する。Nをより大きな値に設定すると、それに応じて生成されるランダム波形の不規則さも増大する。
【0068】
波形の激しさを設定する激しさパラメータは、ランダム波形生成器の入力パラメータであり、パーリンノイズを用いてランダム波形を生成する際の周波数を設定する。激しさパラメータは、
図9の上下波形用の3D(Dimension)マップ及び
図10の左右波形用の3Dマップに示すように、感情データ121の値に対応する設定値が3Dマップとして予め与えられている。制御部110は、現在の感情データ121の座標値(X,Y)に対応する3Dマップ上の各値を取得することにより、上下激しさパラメータ及び左右激しさパラメータをそれぞれ取得できる。例えば、感情データ121の現在の値が(X=-150,Y=-150)であるなら、
図9の点P1(X=-150,Y=-150,Z=20)に対応するので、上下激しさパラメータとして20が取得される。
図9及び
図10に示すように、これらは基本的には興奮度が高くなるほど激しさが大きくなるように設定されている。
【0069】
波形の振幅を設定する振幅パラメータは、N個のランダム波形を合成した後の波形の振幅を設定するパラメータである。振幅パラメータも、
図11の上下波形用の3Dマップ及び
図12の左右波形用の3Dマップに示すように、感情データ121の値に対応する設定値が3Dマップとして予め与えられている。制御部110は、現在の感情データ121の座標値(X,Y)に対応する3Dマップ上の各値を取得することにより、上下振幅パラメータ及び左右振幅パラメータをそれぞれ取得できる。例えば、感情データ121の現在の値が(X=-150,Y=-150)であるなら、
図11の点P2(X=-150,Y=-150,Z=0.3)に対応するので、上下振幅パラメータとして0.3が取得される。
図11に示すように、基本的には喜びの感情が大きいほど上下の振幅が大きくなり、
図12に示すように、例えば平穏の感情が大きいほど左右の振幅が大きくなるように、それぞれ設定されている。
【0070】
波形のオフセットを設定するオフセットパラメータは、N個のランダム波形を合成した後の波形の原点の位置を調整するパラメータである。これは、感情が例えば陽気の場合には頭部204を上に向け、悲しい場合には頭部204を下に向けるためのパラメータである。したがって、オフセットパラメータは上下波形用のみが存在し、左右波形用のオフセットパラメータは存在しない。オフセットパラメータは、
図13の3Dマップに示すように、感情データ121の値に対応する設定値が3Dマップとして予め与えられている。制御部110は、現在の感情データ121の座標値(X,Y)に対応する3Dマップ上の値を取得することにより、オフセットパラメータを取得できる。
図13に示すように、基本的には喜びの感情が大きいほどオフセットが大きくなるように設定されている。
【0071】
特定動作パラメータは、感情に応じて表出される生物的な動作を行うか否かを示すフラグであり、本実施形態ではピクピク動作生成フラグ、毛繕い動作生成フラグ、喜びジャンプ動作生成フラグの3つのフラグが特定動作パラメータである。これらは感情データ121の値の範囲がある特定の領域に含まれるときに1(ON)になり、それ以外のときは0(OFF)になるフラグ変数である。具体的には、
図14に示す感情マップ300において、感情データ121の値が領域321に含まれるときにピクピク動作生成フラグが1になり、領域322に含まれるときに毛繕い動作生成フラグが1になり、領域322に含まれるときに喜びジャンプ動作生成フラグが1になる。
【0072】
図8に戻り、ステップS204で設定パラメータを取得した制御部110は、取得した激しさパラメータをN個に増やす(ステップS205)。具体的には、制御部110は、ステップS204で取得した激しさパラメータの値を乱数で1~2倍の大きさに揺らがせることにより、N個の激しさパラメータに増やす。
【0073】
そして、制御部110は、ステップS205でN個に増やした激しさパラメータのそれぞれをランダム波形生成器に入力することにより、N個のランダム波形を生成する(ステップS206)。ここで、各ランダム波形は100step分(10秒分)の長さの波形を生成するものとする。そして、制御部110は、N個のランダム波形を単純に加算することによって合成波形を取得する(ステップS207)。
【0074】
そして、制御部110は、ステップS207で取得した合成波形を、ステップS204で取得した波形設定パラメータに基づいて整形する(ステップS208)。より詳細には、合成波形の振幅を振幅パラメータに基づいて調整し、合成波形の原点の位置をオフセットパラメータに基づいて上下方向に調整し、波形端の値を滑らかに0に戻す処理を行う。
【0075】
具体的には、振幅パラメータに基づく調整として、制御部110は、合成波形の値に振幅パラメータを乗算する。また原点の位置の上下方向の調整として、制御部110は、合成波形の値にオフセットパラメータを加算する。そして、波形端の値を滑らかに0に戻す処理として、制御部110は、合成波形が例えばstep(0)からstep(100)までの波形で、波形端の領域を設定する値をx(例えば10)とすると、step(0)からstep(x)までのstep(i)では、波形の値vにi/xを乗算することで波形端の波形値を滑らかに0に近づける。また、step(100-x)からstep(100)までの領域においても同様にして波形端の値を滑らかに0に近づける。
【0076】
なお、ステップS208で制御部110が整形した波形は、N個のランダム波形から生成された波形であり、後述するステップS210で駆動部220を制御する波形なので、ランダム制御波形とも呼ばれる。そして、ランダム制御波形で表されるシーケンスデータは、ランダム制御データとも呼ばれる。したがって、ステップS208で制御部110は、合成波形を整形することによって、ランダム制御データを取得する。
【0077】
次に、制御部110は、ステップS208で取得したランダム制御データに生物的動作を合成して動作制御データを取得する(ステップS209)。ただし、このステップは特定動作パラメータのいずれかのフラグが1(ON)である場合に実行されるものであり、特定動作パラメータが全て0(OFF)の場合には、制御部110はランダム制御データをそのまま動作制御データとして取得してステップS210に進む。生物的動作を合成する処理の詳細については後述する。
【0078】
そして、制御部110は、ステップS209で取得した動作制御データに基づいてひねりモータ221及び上下モータ222を駆動し(ステップS210)、自発動作処理を終了する。
【0079】
上述の自発動作処理により、ロボット200は、現在の感情を表出する動作を定期的に行うが、この動作を制御するための動作制御データは、感情データ121の値に基づいて取得される波形設定パラメータから自動的に生成される。したがって、本実施形態では、疑似的な感情に基づいた動作制御の内容の設定を容易にすることができる。
【0080】
次に、自発動作処理のステップS209で行われる処理の具体例として、ピクピク動作合成処理、毛繕い動作合成処理、喜びジャンプ動作合成処理の3つの処理を順に説明する。
【0081】
最初にピクピク動作合成処理について、
図15を参照して説明する。この動作はロボット200の感情が「不安」の状態の時に、頭部204をピクピクと素早く上下させることで不安な感情を表出するものである。
【0082】
まず、制御部110は、ピクピクと頭部204を動かす回数xとして、2又は3を乱数で決定する(ステップS301)。そして、変数iに0を代入する(ステップS302)。
【0083】
次に、制御部110はiの値がx以下であるか否かを判定する(ステップS303)。iの値がx以下と判定した場合(ステップS303;Yes)、自発動作処理のステップS208までで生成されていたランダム制御データのうち、上下回転用の波形において、ランダムに1stepを選択し、そのstepにおける波形値からランダムに所定の値(例えば10以上20以下の値)減算したものを動作制御データとする(ステップS304)。ただし制御部110は、ランダムに選択したstepが、以前(iの値が1又は2少ない時点で)選択していたstepと重複していることが分かった場合には、重複しないstepを選択するまで選択し直してもよい。
【0084】
そして、制御部110は、変数iに1を加算し(ステップS305)、ステップS303に戻る。
【0085】
一方、ステップS303で変数iの値がxより大きいと判定した場合(ステップS303;No)、制御部110は、ピクピク動作合成処理を終了する。
【0086】
このピクピク動作合成処理により、上下回転用の動作制御データとして、例えば
図16に示すような波形で示される動作制御データが生成される。そして、制御部110が、このような波形で示される動作制御データに基づいて上下モータ222を駆動することにより、ロボット200は頭部204をピクピクさせる動作を行い、不安な感情を表出することができる。なお、ピクピク動作合成処理では制御部110は、上下回転用のランダム制御データに対してのみピクピク動作を合成し、左右回転用のランダム制御データに対しては何も行わずにそのまま動作制御データにするので、ひねりモータ221は自発動作処理(
図8)のステップS208で取得されたランダム制御データに基づいて駆動されることになる。
【0087】
次に、毛繕い動作合成処理について、
図17を参照して説明する。この動作はロボット200の感情が「安心」の状態の時に、毛繕いをしているかのような動作を行うことで安心している感情を表出するものである。
【0088】
まず、制御部110は、自発動作処理のステップS208までで生成されていたランダム制御データのうち、左右回転用の波形のstep(20)からstep(60)において、波形値の絶対値が最も大きいstep(ここではstep(z)とする)を取得する(ステップS311)。次に、制御部110は、左右回転用の波形のstep(z+1)からstep(80)までの波形値をstep(z)の波形値に固定する(ステップS312)。
【0089】
そして、制御部110は、step(80)からstep(100)にかけて波形端の値を滑らかに0に戻し(ステップS313)、得られた波形で示されるシーケンスデータを動作制御データとし、毛繕い動作合成処理を終了する。ステップS313の処理は、自発動作処理のステップS208において波形端の値を滑らかに0に戻す処理と同様である。
【0090】
この毛繕い動作合成処理により、左右回転用の動作制御データとして、例えば
図18に示すような波形で示される動作制御データが生成される。また、上下回転用のランダム制御データに対しては、制御部110は何も行わずそのまま上下回転用の動作制御データとする。したがって、制御部110が、このような動作制御データに基づいてひねりモータ221及び上下モータ222を駆動することにより、ロボット200は頭部204をできるだけひねった状態で固定しつつ、上下にランダムに頭部204を動かす。これにより、ロボット200は、あたかも安心して毛繕いをしているかのように見える。
【0091】
次に、喜びジャンプ動作合成処理について、
図19を参照して説明する。この動作はロボット200の感情が「喜び」の状態の時に、ジャンプするかのような動作をして喜びを表出するものである。
【0092】
まず、制御部110は、自発動作処理のステップS208までで生成されていたランダム制御データのうち、上下回転用の波形のstep(0)からstep(E)において、ランダムに1stepを選択する(ステップS321)。なおstep(E)のEの値については後述する。
【0093】
次に、制御部110は、選択したstepを始点として、ジャンプモーション波形を上下回転用の波形に重ねて足し合わせる(ステップS322)。ジャンプモーション波形とは、上下モータ222を駆動してロボット200をジャンプさせる動きを行わせるための上下回転用のシーケンスデータを波形で表したもので、例えば
図20に示すような波形である。ジャンプモーション波形の長さは任意であるがここでは30step分の長さを持つものとする。上述のEの値はランダム波形の長さ(例えば100step)からジャンプモーション波形の長さ(例えば30step)を引いた値であり、本実施形態では70となる。
【0094】
そして制御部110は、ランダム制御データの上下回転用の波形にジャンプモーション波形を重ねて足し合わせた終端以降でまだジャンプモーション波形の足し合わせが可能かを判定する(ステップS323)。具体的には、ジャンプモーション波形を重ねて足し合わせた終端が(
図21に示すように)step(x)で、ジャンプモーション波形の終端が(
図20に示すように)step(y)だった場合、(100-x)≧yなら、制御部110はジャンプモーション波形の足し合わせが可能と判定する。
【0095】
ジャンプモーション波形の足し合わせが可能と判定した場合(ステップS323;Yes)、制御部110は、ステップS322で足し合わせた終端(step(x))以降の上下回転用の波形のstep(E)までで、ランダムに1stepを選択する(ステップS324)。そして、制御部110は、選択したstepを始点として、ジャンプモーション波形を上下回転用の波形に足し合わせ(ステップS325)、得られた波形で示されるシーケンスデータを動作制御データとし、喜びジャンプ動作合成処理を終了する。
【0096】
一方、ステップS323でジャンプモーション波形の足し合わせが可能でないと判定した場合(ステップS323;No)、制御部110は、それまでに得られた波形で示されるシーケンスデータを動作制御データとし、喜びジャンプ動作合成処理を終了する。
【0097】
この喜びジャンプ動作合成処理により、上下回転用の動作制御データとして、例えば
図21に示すような波形で示される動作制御データが生成される。そして、制御部110が、このような波形で示される動作制御データに基づいて上下モータ222を駆動することにより、ロボット200はジャンプするような動作を行い、喜びの感情を表出することができる。なお、喜び動作合成処理では制御部110は、上下回転用のランダム制御データに対してのみジャンプモーション波形を合成し、左右回転用のランダム制御データに対しては何も行わずにそのまま動作制御データにするので、ひねりモータ221は自発動作処理(
図8)のステップS208で取得されたランダム制御データに基づいて駆動されることになる。
【0098】
以上、生物的動作の合成の例として3つの合成処理(ピクピク動作合成処理、毛繕い動作合成処理、喜びジャンプ動作合成処理)を説明したが、これらの合成処理は一例に過ぎず、他の生物的な動作をランダム制御データに合成してもよい。このように自発動作処理のステップS208で取得されたランダム制御データに生物的動作を合成することにより、予め設定されている生物的動作と感情データ121から生成された感情表現とを合成することができ、ユーザに対しロボット200の疑似的な感情をよりわかりやすく表出することができる。
【0099】
なお、上述のジャンプモーション波形は、ロボット200の疑似的な喜びの感情に対応させて予め設定されている波形であり、喜びジャンプ動作合成処理においてランダム制御波形と合成されて駆動部220を制御する波形なので、設定済み制御波形とも呼ばれる。そして、設定済み制御波形で表されるシーケンスデータは、設定済み制御データとも呼ばれる。また、ピクピク動作合成処理のステップS304の処理(波形の値を10~20減算する処理)、毛繕い動作合成処理のステップS312及びステップS313の処理(波形の値を所定期間固定してから0に戻す処理)も、動作制御データを生成するために予め設定されている処理なので、設定済み制御データの一種と考えることができる。
【0100】
自発動作処理において制御部110が生成するランダム制御波形は、ロボット200の疑似的な感情に応じた入力パラメータに基づいてパーリンノイズを用いて生成したランダム波形を合成して生成しているので、ロボット200の感情に応じた滑らかな波形となる。したがって、制御部110は、ロボット200の感情に応じた滑らかなモーションデータを生成することができる。また制御部110は、ランダム制御波形を用いてロボット200を制御することで、ロボット200の動作がワンパターン化するのを防ぐことができる。また、ランダム制御波形については、ランダム波形を合成して生成する以外に、ランダム波形を参照して任意の波形を加工したり、ランダム波形で任意の波形をフィルタリングしたりして生成してもよい。このようにすると、合成して生成する場合よりも処理負担が軽くなるケースがあるという利点がある。
【0101】
また、ランダム制御データの用い方については、設定済み制御データと合成するだけでなく、ランダム制御データを参照して設定済み制御データを加工してもよいし、ランダム制御データで設定済み制御データをフィルタリングしてもよい。ランダム制御データの用い方にこのようにバリエーションを設けることにより、ロボット200の動作をより多様化させることができる。
【0102】
また、実施形態1では、感情データ121に基づいて生成したランダム波形を合成するのは自発動作処理において定期的に行う動作に対してのみであり、外部刺激に基づく動作に対しては当該ランダム波形を合成しない。このため、ロボット200は、ランダム波形を用いた動作(定期的に実行)と、制御内容テーブル124で設定されている動作(外部刺激に応じて実行)とを、それぞれ実行するので、ユーザはそれぞれの動作の違い等を比較したり楽しんだりすることができる他、自発動作処理においてはより生物らしい動作を楽しむことができる
【0103】
(実施形態2)
実施形態1では、制御部110は、自発動作処理において、感情を表現するランダム制御波形を生成(及び合成)することで、ロボット200に定期的に感情を表出させることができる。しかし、感情を表現するランダム制御波形の生成及び合成は、自発動作処理以外で行ってもよい。そこで、外部刺激を受けた際の動作においても、感情を表現するランダム制御波形を生成及び合成する実施形態2について説明する。
【0104】
実施形態2に係るロボット200の機能構成や構造は、実施形態1と同様なので、説明を省略する。ただし、実施形態2に係る動作制御処理(
図7)においては、ステップS107の処理が、次に説明する感情合成動作処理に置き換わる。感情合成動作処理は、制御部110が、自発動作処理(
図8)と同様に感情を表出するためのランダム制御波形を生成し、元のモーションデータと合成してから駆動部220を制御する処理である。なお、元のモーションデータとは、制御内容テーブル124に予め設定されているモーションデータであり、設定済み制御データの一種である。
【0105】
感情合成動作処理について、
図22を参照して説明する。ただし、自発動作処理(
図8)と共通の処理が多いため、主に異なる点について説明する。
【0106】
まず、感情合成動作処理のステップS401からステップS406までの処理は、自発動作処理のステップS203からステップS208までの処理と同様なので、説明を省略する。
【0107】
ステップS407では、制御部110は、ステップS406で取得したランダム制御データに、動作制御処理(
図7)のステップS106で取得した制御データ(制御内容テーブル124に含まれるモーションデータ)を単純に加算することによって合成して動作制御データを取得する。
【0108】
そして、制御部110は、ステップS407で取得した動作制御データに基づいて、ひねりモータ221及び上下モータ222を駆動し(ステップS408)、感情合成動作処理を終了し、動作制御処理(
図7)のステップS110に進む。
【0109】
以上説明した感情合成動作処理により、制御部110は、感情データ121の値を反映させたランダム制御データを制御内容テーブル124の制御データに合成して、ロボット200の疑似的な感情に応じた動きをロボット200に行わせることができる。したがって、制御内容テーブル124の制御データの内容が感情データ121によって変化しない場合であっても、制御部110は、ロボット200の感情に応じた動きをロボット200に行わせることができる。
【0110】
また、制御部110が生成するランダム制御データは、パーリンノイズを用いて生成したランダム波形を合成して生成しているので、制御部110は、ロボット200の感情に応じて滑らかな動きを行わせる動作制御データを生成することができる。また合成されるランダム制御波形はランダムな波形なので、合成して生成される動作制御データは毎回変化し、ロボット200の動作がワンパターン化するのを防ぐことができる。
【0111】
(実施形態3)
上述の実施形態では、予め設定されている設定済み制御データ(制御内容テーブル124のモーションデータ、喜びジャンプ動作合成処理におけるジャンプモーション波形で示されるデータ等)とランダム波形生成器を用いて生成したランダム制御データとを単純に加算することによって動作制御データを生成していた。しかし、動作制御データを生成する際の設定済み制御データとランダム制御データとの合成は単純加算に限らない。
【0112】
ここでは、ロボット200の疑似的な成長日数が増えるのに応じて、動作制御データを合成する際のランダム制御データの重み(合成の割合)を下げる実施形態3について説明する。
【0113】
実施形態3に係るロボット200の機能構成や構造は、実施形態2と同様なので、説明を省略する。ただし、実施形態3に係る感情合成動作処理(
図22)のステップS407においては、制御部110は、単純加算ではなく、重み付け加算によって動作制御データを取得する。
【0114】
重み付け加算の際の重みの設定方法は任意であるが、本実施形態では、制御部110は、成長日数データ123の値が大きくなるにつれて、設定済み制御データの重みを上げてランダム制御データの重みを下げる。
【0115】
具体的には、設定済み制御データの重みをAで、ランダム制御データの重みをBで、成長日数データ123をDで、それぞれ表すとすると、例えば以下のように設定される。
D≦3なら、A=D×10(%)、B=(10-D)×10(%)
D≦15なら、A=22.5+D×2.5(%)、B=77.5-D×2.5(%)
D≧31なら、A=100(%)、B=0(%)
【0116】
このような重み付け加算によって設定済み制御データとランダム制御データとを合成することにより、ロボット200の動作を制御する動作制御データは例えば
図23に示すように、ロボット200が子供(成長日数データ123が子供閾値(例えば7)以下のとき)から大人(成長日数データ123が大人閾値(例えば30)以上のとき)に成長するにつれて、ランダム波形の合成率が(例えば100%から0%へと)低くなる。
【0117】
したがって、ロボット200の疑似的な成長に伴ってランダムさが減少して、動作が効率的になり、ロボット200は大人がよく見せるような、無駄のない動きをするようになる。逆にロボット200が幼いほど、ランダム波形の合成率が大きくなるため、滑らかではあるが無駄な動きが増え、ロボット200は幼い子供がよく見せるような、気が散っているかのような様子を見せる動きをするようになる。
【0118】
また、制御部110は、重み付け加算の代わりに、設定済み制御データとランダム制御データとを掛け合わせて合成してもよい。具体的には設定済み制御データの値を例えば-90以上90以下の範囲に正規化したものをf(t)、ランダム制御データの値を0以上2以下の範囲に正規化したものをg(t)で表すとすると、f(t)×g(t)の値を動作制御データの値とする。
【0119】
この場合、ランダム制御データの重みを大きくする場合(ロボット200が幼い場合)には、ランダム制御データの値を0以上2以下の範囲で振らし、(成長日数データ123が大きくなるにつれて)重みを小さくする場合には、ランダム制御データの値を1近辺の範囲で振らす。例えばランダム制御データの重みをB(%)とすると、制御部110は、ランダム制御データの値を、1-B/100以上、1+B/100以下の範囲になるように正規化してから設定済み制御データの値を掛け合わせることによって、動作制御データを生成する。
【0120】
このようにしても、ロボット200の疑似的な成長に伴ってランダムさが減少して、設定された動作に近い動きを行うようになる。そしてロボット200が幼いほど、ランダムさが増加して、設定された動作があまり反映されない動きを行うようになる。
【0121】
また、制御部110は、制御内容テーブル124の制御データのうち、モーションデータだけでなく、効果音データについても成長日数データ123に応じて変化させてもよい。例えば、成長日数データ123が子供閾値以下のときには、制御内容テーブル124の効果音データのピッチを上げてから出力することで高い鳴き声にし、成長日数データ123が大人閾値以上のときには、制御内容テーブル124の効果音データのピッチを下げてから出力することで低い鳴き声にしてもよい。また、子供閾値や大人閾値によらず、成長日数データ123が大きくなればなるほど出力する鳴き声のピッチを低くしてもよい。
【0122】
以上説明したように、実施形態3では、成長日数データ123に応じて動きのランダムさや鳴き声のピッチが変化するので、ロボット200は動きのランダムさや鳴き声によっても成長を表現できるようになる。
【0123】
(変形例)
なお、本発明は、上述の実施形態に限定されず、種々の変形及び応用が可能である。例えば、実施形態2において、自発動作処理では常に呼吸動作を行い(感情表出は行わず)、感情の表出は感情合成動作処理(
図22)でのみ行うようにしてもよい。
【0124】
また、上述の実施形態では、ロボット200に動作制御装置100が内蔵されている構成としたが、動作制御装置100はロボット200に内蔵されていなくてもよい。例えば、
図24に示すように、変形例に係る動作制御装置100が、ロボット200とは別個の装置(例えばサーバ)として構成され、動作制御装置100が通信部130を備え、ロボット200も制御部250及び通信部260を備えていてもよい。この場合、通信部130と通信部260とがお互いにデータを送受信できるように構成され、制御部110は、通信部130及び通信部260を介して、外部刺激検出部210が検出した外部刺激を取得したり、駆動部220や音声出力部230を制御したりする。
【0125】
上述の実施形態において、制御部110のCPUが実行する動作プログラムは、あらかじめ記憶部120のROM等に記憶されているものとして説明した。しかしながら、本発明は、これに限定されず、上述の各種処理を実行させるための動作プログラムを、既存の汎用コンピュータ等に実装することにより、上述の実施形態に係る動作制御装置100に相当する装置として機能させてもよい。
【0126】
このようなプログラムの提供方法は任意であり、例えば、コンピュータが読取可能な記録媒体(フレキシブルディスク、CD(Compact Disc)-ROM、DVD(Digital Versatile Disc)-ROM、MO(Magneto-Optical Disc)、メモリカード、USBメモリ等)に格納して配布してもよいし、インターネット等のネットワーク上のストレージにプログラムを格納しておき、これをダウンロードさせることにより提供してもよい。
【0127】
また、上述の処理をOS(Operating System)とアプリケーションプログラムとの分担、又は、OSとアプリケーションプログラムとの協働によって実行する場合には、アプリケーションプログラムのみを記録媒体やストレージに格納してもよい。また、搬送波にプログラムを重畳し、ネットワークを介して配信することも可能である。例えば、ネットワーク上の掲示板(Bulletin Board System:BBS)に上記プログラムを掲示し、ネットワークを介してプログラムを配信してもよい。そして、このプログラムを起動し、OSの制御下で、他のアプリケーションプログラムと同様に実行することにより、上記の処理を実行できるように構成してもよい。
【0128】
また、制御部110は、シングルプロセッサ、マルチプロセッサ、マルチコアプロセッサ等の任意のプロセッサ単体で構成されるものの他、これら任意のプロセッサと、ASIC(Application Specific Integrated Circuit)やFPGA(Field‐Programmable Gate Array)等の処理回路とが組み合わせられて構成されてもよい。
【0129】
本発明は、本発明の広義の精神と範囲とを逸脱することなく、様々な実施の形態及び変形が可能とされるものである。また、前述した実施の形態は、この発明を説明するためのものであり、本発明の範囲を限定するものではない。すなわち、本発明の範囲は、実施の形態ではなく、特許請求の範囲によって示される。そして、特許請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、この発明の範囲内とみなされる。
【符号の説明】
【0130】
100…動作制御装置、110,250…制御部、120…記憶部、121…感情データ、122…感情変化データ、123…成長日数データ、124…制御内容テーブル、130,260…通信部、200…ロボット、201…外装、202…装飾部品、203…毛、204…頭部、205…連結部、206…胴体部、207…筐体、210…外部刺激検出部、211…タッチセンサ、212…加速度センサ、213…マイクロフォン、214…ジャイロセンサ、220…駆動部、221…ひねりモータ、222…上下モータ、230…音声出力部、231…スピーカ、240…操作入力部、300…感情マップ、301,302,303…枠、310…原点、311…X軸、312…Y軸、321,322,323…領域、BL…バスライン