(57)【要約】【課題】最適な待機位置を求めることで、平均の待ち時間を短くすることができる家事支援ロボットアームの移動制御を提供する。【解決手段】人検出手段４０２と、物品検出手段４０３と、検出履歴データベース４０４と、作業履歴データベース４０６と、属性管理データベース４０７と、物品から作業が行われる可能性のある候補位置を求める作業候補位置決定手段４０８と、前記候補位置において、次に作業が行われる可能性を求める作業確率算出手段４０９と、前記候補位置において、次の作業が行われると想定したときの、作業確率を考慮した待ち時間の最大値を最小化する待機位置を求めるアーム位置算出手段４１０を備える。【選択図】図４
2008296308.tif 000002
【特許請求の範囲】
【請求項１】
キッチンルームにおける作業場所において、調理作業を支援するロボットアームの移動を制御する移動制御システムであって、
前記キッチンルーム内に存在する人の位置を検出する人検出手段と、
前記キッチンルーム内に存在する物品のIDと物品の位置とを検出する物品検出手段と、
前記人の位置と前記物品のIDと物品の位置とを検出した結果を蓄積する検出履歴データベースと、
前記ロボットアームを用いた作業ごとに、当該作業に必要な物品の組み合わせの情報と、前記ロボットアームを用いた作業ごとに、過去に作業が行なわれた作業回数と含む情報を蓄積する作業履歴データベースと、
人と物品とロボットアームの属性情報を蓄積する属性管理データベースと、
前記作業場所に存在する物品が、前記物品組み合わせ情報に含まれている場合には、その場所を作業が行われる可能性のある候補位置と決定する作業候補位置決定手段と、
前記作業履歴データベースに蓄積された、前記候補位置におけるロボットアームを用いた作業回数に基づいて、前記候補位置ごとに、前記ロボットアームを用いた作業が行われる確率を求める作業確率算出手段と、
前記人の移動速度と、前記ロボットアームの移動速度と蓄積する移動速度蓄積手段と、
前記人の移動速度と、前記ロボットアームの移動速度と、前記作業確率とを用いて、前記ロボットアームの待機位置を求めるアーム位置算出手段と、
前記待機位置へ移動させるロボットアーム移動制御手段と、
を備えたことを特徴とする移動制御システム。
【請求項２】
前記作業候補位置決定手段は、人の位置を作業が行われる可能性のある候補位置に含めるようにしたことを特徴とする請求項１に記載の家事支援ロボットアームの移動制御システム。
【請求項３】
作業する位置や作業開始の指示を入力する入出力手段と、
前記入出力手段により作業開始の指示が入力されてロボットアームを用いた作業が行われたとき、その作業に利用された物品を取得し、前記作業履歴データベースを更新する作業履歴更新手段を、
さらに備えたことを特徴とする請求項１又は２に記載の家事支援ロボットアームの移動制御システム。
【請求項４】
人が把持している物品を検知する把持物品検出手段を、
さらに備え、
前記作業候補位置決定手段は、前記把持物品と、キッチンルームに置かれた物品を合わせて、作業が行われる可能性のある候補位置を求める
ことを特徴とする請求項１から３のいずれかひとつに記載の家事支援ロボットアームの移動制御システム。
【請求項５】
前記作業候補位置決定手段は、キッチンルーム内の作業場所に置かれた、作業に使用される物品と、前記物品以外の、ユーザがその作業場所に到着したときに、その場所からユーザの手が届く範囲内に存在する物品と、を合わせて、作業が行われる可能性のある候補位置を求める
ことを特徴とする請求項１から４のいずれかひとつに記載の家事支援ロボットアームの移動制御システム。
【請求項６】
前記作業候補位置決定手段は、複数の候補位置同士の距離が、ロボットアームのサイズから求めた作業可能範囲の２倍の距離より小さい場合、まとめて１つの候補位置とする
ことを特徴とする請求項１から５のいずれかひとつに記載の家事支援ロボットアームの移動制御システム。
【請求項７】
調理作業の手順を個別の作業に分割して、その個別作業より前に行われるべき別の個別作業を登録することにより示した、調理手順情報を登録する調理手順データベースと、
調理作業の内、どの個別の作業が完了しているかを管理する作業進捗管理手段を、
さらに備え、
前記作業確率算出手段は、前記作業候補位置決定手段により求められた候補位置において行われ個別作業について、これより前に行われるべき別の個別作業の全てが行われてはいないとき、前記候補位置の作業確率を０にする
ことを特徴とする請求項１から６のいずれかひとつに記載の家事支援ロボットアームの移動制御システム。
【請求項８】
前記作業確率算出手段は、前記作業候補位置決定手段により求められた候補位置において行われ個別作業について、これより前に行われるべき別の個別作業の全てが行われているとき、前記候補位置の作業確率を高くし、これより前に行われるべき別の個別作業が無いとき、前記候補位置の作業確率を低くする
ことを特徴とする請求項１から７のいずれかひとつに記載の家事支援ロボットアームの移動制御システム。
【請求項９】
前記アーム位置算出手段は、キッチンルームに複数の人が存在するとき、作業を行う可能性の度合いを示す優先度の高い人に対してロボットアーム本体の位置を決定する
ことを特徴とする請求項１から８のいずれかひとつに記載の家事支援ロボットアームの移動制御システム。
【請求項１０】
前記入力手段により作業開始の指示が入力されてロボットアームを用いた作業が行われたことから、前記優先度を更新する属性管理手段を、
さらに備えたことを特徴とする請求項９に記載の家事支援ロボットアームの移動制御システム。
【請求項１１】
ロボットアーム本体の移動動作モードを、待機位置へ移動する待機移動モード、人を追跡する追跡移動モード、移動を行わない停止モード、のいずれかに切り替える動作モード切替手段を、
さらに備えたことを特徴とする請求項１から１０のいずれかひとつに記載の家事支援ロボットアームの移動制御システム。
【請求項１２】
人の移動状態とロボットアームの作業状態を判定する状況判定手段を、
さらに備え、
前記動作モード切替手段は、前記状況判定結果と、人とロボットアームと前記候補位置の位置関係によって動作モードを切り替える
ことを特徴とする請求項１１に記載の家事支援ロボットアームの移動制御システム。
【請求項１３】
前記入力手段から入力された作業位置へ、ロボットアームの先端部を移動するように、移動指令を送信するアーム先端部移動制御手段を、
さらに備えたことを特徴とする請求項１から１２のいずれかひとつに記載の家事支援ロボットアームの移動制御システム。
【請求項１４】
前記アーム先端部移動制御手段は、前記優先度の高い人の身長に合わせてアーム先端部を移動する
ことを特徴とする請求項１３に記載の家事支援ロボットアームの移動制御システム。
【請求項１５】
キッチンルームにおける調理作業を支援するロボットアームにおいて、
キッチンルーム内で作業する人を監視するステップと、
キッチンルーム内で人が取り扱う物品を監視するステップと、
人と物品の検出結果を蓄積する検出履歴データベースと、
ロボットアームを用いた作業に必要な物品の情報を蓄積する作業履歴データベースと、
人と物品とロボットアームの属性情報を蓄積する属性管理データベースと、
キッチンルームに置かれた物品から作業が行われる可能性のある候補位置を求めるステップと、
前記候補位置において、次に作業が行われる可能性を求めるステップと、
前記候補位置において、次の作業が行われると想定したときの、作業確率を考慮した待ち時間の最大値を最小化する待機位置を求めるステップと、
前記待機位置へ移動するようにロボットアーム本体に移動指令を送信するステップを、
備えたことを特徴とする家事支援ロボットアームの移動制御方法。
【請求項１６】
キッチンルームにおける調理作業を支援するロボットアームにおいて、
キッチンルーム内で作業する人を監視し、
キッチンルーム内で人が取り扱う物品を監視し、
人と物品の検出結果を蓄積する検出履歴データベースと、
ロボットアームを用いた作業に必要な物品の情報を蓄積する作業履歴データベースと、
人と物品とロボットアームの属性情報を蓄積する属性管理データベースと、を利用し、
キッチンルームに置かれた物品から作業が行われる可能性のある候補位置を求め、
前記候補位置において、次に作業が行われる可能性を求め、
前記候補位置において、次の作業が行われると想定したときの、作業確率を考慮した待ち時間の最大値を最小化する待機位置を求め、
前記待機位置へ移動するようにロボットアーム本体に移動指令を送信する、
ことを特徴とする家事支援ロボットアームの移動制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キッチンルーム内において調理作業の支援を行うロボットアームについて、その移動を制御するシステムに関するものである。
【背景技術】
【０００２】
従来の移動制御システムとして、特許文献１に示すようなエレベータの運行を制御する装置がある。図３３は、前記特許文献1に記載された発明のシステム構成図である。
【０００３】
図３３において、１は乗りかご、２は駆動装置、３はホール呼び手段、４−１は時計手段、４−２は学習手段、４−３は学習データ記憶手段、４−４は配車階決定手段、４−５は運行制御手段、５は学習可否設定手段、６は配車可否設定手段、７は日属性情報設定手段を示している。
【０００４】
ホール呼び手段３で呼ばれた情報が学習手段４−２に伝達され、学習可否設定手段５の設定が学習可の場合に、学習データ記憶手段４−３の内容を更新することにより、ホール呼びの発生状況を収集する。また、配車階決定手段４−４は、配車可否設定手段６の設定が配車可の場合に、学習データ記憶手段４−３の内容により配車する階を決定する。
【０００５】
この学習可否設定手段５により例外的な需要の学習を回避し、規則的なホール呼びの発生が予測される場合に、ホール呼びが多く発生した階に対して事前に乗りかご１を配車し、待ち時間を短くする。
【特許文献１】特開平１０−２１８５０８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、前記特許文献1に記載された発明では、ホール呼びを予測して、その予測した階に事前に配車しておくことで待ち時間を短くするものであるので、予測が外れた場合には待ち時間が長くなってしまうという課題を有する。また、エレベータの運行制御ということで、ホール呼び前のユーザの位置や移動状況などは考慮されていない。
【０００７】
キッチンルーム内においては、ユーザが作業する場所まで移動してから作業を開始する。そこで、待ち時間は、ユーザが作業する場所に到着してからロボットアームが前記作業する場所に到着するまでの時間と定義する。このとき、ロボットアームがユーザと同じ速度で移動できるならば、ロボットアームが常にユーザの正面位置にいるように移動を制御すれば、待ち時間をゼロにすることができる。しかし実際には、ロボットアームの移動速度はユーザの移動速度より遅いことが考えられる。
【０００８】
ユーザの移動速度について。通常の歩行速度は約１２０［ｃｍ／ｓ］であるが、キッチンルーム内においては、屋内であり、横方向に移動することが多いことを考えると、これより低速であると考えられる。実際に、調理するシーンを想定して測定した結果から、ここではユーザの移動速度は約８０［ｃｍ／ｓ］と想定する。
【０００９】
一方、ロボットアームの移動速度について。家庭内に置いては、工業用ロボットとは異なり、人と接する可能性が大きいので、安全面から移動速度を制限する必要がある。現在、家庭内で作業するロボットについての安全基準はまだ策定されていない。よって、人と接する機器である自動ドアの安全ガイドライン（「自動ドア安全ガイドライン」、全国自動ドア協会）を参考にすると、病院や公共施設などの高齢者や子供が利用する場所においては自動ドアの閉じ速度は２５［ｃｍ／ｓ］以下を目安に設定するよう記されていることから、ここではロボットアームの移動速度は約２５［ｃｍ／ｓ］と想定する。
【００１０】
このように、ロボットアームの移動速度がユーザの移動速度より遅いと、複数の作業を並行して行っているとき、次にユーザが作業する可能性がある場所が複数ある場合、ユーザの移動先によって待ち時間が発生する。つまり、ユーザが作業する可能性がある場所Ａで待ち時間が発生しないように、ロボットアームを単純にＡの近くに事前に待機しておくと、Ａから離れた、ユーザが作業する可能性がある別の場所Ｂでは、待ち時間が長くなってしまう。
【００１１】
キッチンルームの横幅を一般的なシステムキッチンのサイズより３００ｃｍとし、上記で想定したロボットアームの平均移動速度２５［ｃｍ／ｓ］とする。待ち時間が最も長くなるケース、すなわち、ユーザとロボットアームが一方の端に位置し、反対の端で作業をしようとすると、ユーザは到着するまでに、３００／８０［秒］を要し、ロボットアームは３００／２５［秒］を要することになり、待ち時間は８．２５［秒］となる。
【００１２】
また、一回の待ち時間はそれほど長くなくても、キッチンルームにおいてロボットアームを利用する作業は何度か繰り返し行われる可能性が高いので、特に、近年増えている共働き家庭の調理作業者にとっては、より不満を感じることになると考えられる。
【００１３】
また、何度か繰り返し行われるロボットアームを利用する作業は、そのときによって流し台での拭き掃除であったり、ガス台でのかき混ぜであったりと様々な場所で、様々な状況で行われるので、ある場合には待ち時間が短くても、他の場合には待ち時間が非常に長くなってしまうことも発生し得る。そこで、どんな場合にも平均的に待ち時間を短くできる移動制御システムが求められる。
【００１４】
本発明は、前記従来の課題を解決するもので、ユーザの現在位置、ユーザとロボットアーム本体の移動速度、家事支援作業を行う場所とその場所で作業が行われる確率から最適な待機位置を求めることができる移動制御システムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
前記従来の課題を解決するために、本発明の家事支援ロボットアームの移動制御システムは、以下のように構成する。
【００１６】
キッチンルームにおける作業場所において、調理作業を支援するロボットアームの移動を制御する移動制御システムであって、
前記キッチンルーム内に存在する人の位置を検出する人検出手段と、
前記キッチンルーム内に存在する物品のIDと物品の位置とを検出する物品検出手段と、
前記人の位置と前記物品のIDと物品の位置とを検出した結果を蓄積する検出履歴データベースと、
前記ロボットアームを用いた作業ごとに、当該作業に必要な物品の組み合わせの情報と、前記ロボットアームを用いた作業ごとに、過去に作業が行なわれた作業回数と含む情報を蓄積する作業履歴データベースと、
人と物品とロボットアームの属性情報を蓄積する属性管理データベースと、
前記作業場所に存在する物品が、前記物品組み合わせ情報に含まれている場合には、その場所を作業が行われる可能性のある候補位置と決定する作業候補位置決定手段と、
前記作業履歴データベースに蓄積された、前記候補位置におけるロボットアームを用いた作業回数に基づいて、前記候補位置ごとに、前記ロボットアームを用いた作業が行われる確率を求める作業確率算出手段と、
前記人の移動速度と、前記ロボットアームの移動速度と蓄積する移動速度蓄積手段と、
前記人の移動速度と、前記ロボットアームの移動速度と、前記作業確率とを用いて、前記ロボットアームの待機位置を求めるアーム位置算出手段と、
前記待機位置へ移動させるロボットアーム移動制御手段と、
を備えたことを特徴とする。
【００１７】
本構成によって、最適な待機位置を求めることができる。
【発明の効果】
【００１８】
本発明によれば、検出した物品の位置から作業の候補位置や作業確率を求め、さらに、アーム位置算出手段によって、検出した人の位置や人とロボットアームの移動速度から作業確率を考慮した、作業場所にユーザが到着してからロボットアームが到着するまでの待ち時間の最大値を最小化する待機位置を求めることができるようになることにより、どこで作業を行う場合でも待ち時間が極端に長くなることが無く、かつ、作業を行う可能性の高い所での待ち時間を短くできるので、貴重な時間を無駄にすることなくロボットアームによる支援作業を快適に行うことができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００２０】
《システム構成》
図１は、本発明のシステム構成の一例を示した図である。１００はキッチンルーム全体を表す。１０１はシステムキッチンであり、ガス台１０１−１、調理台１０１−２、シンク１０１−３、電子レンジ１０１−４、食器洗浄器１０１−５、収納棚１０１−６が配置されている。１０２はロボットアームであり、レール１０３上を左右に移動できるようになっている。１０４はセンサであり、この例では画像センサ（カメラ）が設置されている。１０５は調理作業に用いられる物品である。１０６は調理作業を行うユーザである。
【００２１】
図１においてロボットアーム１０２はシステムキッチン上の奥側を移動するように配置されているが、図２Ａの（ａ）に示すように上側に配置されていても、図２Ａの（ｂ）に示すように壁側に配置されていても、図２Ａの（ｃ）に示すようにシステムキッチン上の手前側に配置されていても良い。上側や壁側に配置すれば、システムキッチン上の物品が邪魔にならなくなる。また、手前側に設置すれば、電子レンジ１０１−４にも届くようになり、電子レンジ１０１−４を利用する作業も可能になる。
【００２２】
また、センサ１０４は画像センサに限らず、無線ＩＣタグセンサや床圧力センサなどを必要に応じて利用しても良い。各センサの具体的な動作内容については後述する。
【００２３】
《ロボットアームの機能》
ロボットアーム１０２は、ユーザと協調して調理作業の支援を行うものである。例えば、ロボットアーム１０２の先端部にレードルを装着して鍋の中身を自動的にかき混ぜる機能や、スポンジを装着して拭き掃除を行う機能や、重い鍋をユーザと一緒に持って搬送する機能、などが考えられる。図３に自動かき混ぜ機能のイメージ図を示す。３０１は、ロボットアーム１０２の先端部に装着したレードルである。
【００２４】
ロボットアーム１０２が前述のような機能を実施するとき、ツールを装着したり、物品を把持したりする必要があるが、これを全自動で行うのは容易ではない。そこで、このような作業はユーザが行うのが妥当であると考えられる。そのため、本発明における家事支援においては、何か作業を行わせるときにはユーザの目の前、または少なくとも手の届く範囲にロボットアーム１０２が存在することが必要となる。
【００２５】
《利用シーン》
このような環境において、ユーザが調理作業を行うとき、本発明は、ロボットアームを利用する作業を行う場所にユーザが到着してから、その場所にロボットアームが到着するまでの待ち時間の最大値を最小化する待機位置を求めることができるようになることにより、どこで作業を行う場合でも待ち時間が極端に長くなることが無く、かつ、作業を行う可能性の高い所での待ち時間を短くできる。このことは、キッチンルーム内で調理作業を繰り返し行っているユーザに対して有効である。
【００２６】
例えば、ユーザは毎日繰り返し調理作業を行い、献立が決まれば、ほぼ決まった手順で作業をこなしていく。複数の料理を並行して行うことも多いので、手順の決まった単純作業などをロボットアームに任せている間に、ユーザが別の調理作業を行うことで、効率的に作業を進めることができる。
【００２７】
しかし、ロボットアームは全自動ではないので、作業をロボットアームに任せるためには、ユーザが事前に場所を指示したり、機能を選択したり、作業のためのツールを装着したりしなければならない。さらに、この間、ユーザは自身の作業を行うことができない。
【００２８】
例えば、ロボットアームに拭き掃除の作業を行わせるとき、待ち時間が極端に長くなると汚れがこびり付いて落ちにくくなってしまう。また、待ち時間が極端に長くなると、自身の作業が行えない時間も長くなり、料理の味にも影響を与えてしまう。
【００２９】
また、複数の献立の組合せはそのときによって様々であるので、調理作業中の物品の位置などの状況も様々である。特定の状況において待ち時間が短くなる手法でも、他の状況において待ち時間が極端に長くなってしまうことが考えられる。
【００３０】
よって、どのような状況の時でも、どこで作業を行う場合でも、極端に待ち時間が長くなることが無く、平均的に待ち時間を短くすることができ、さらに、繰り返し頻繁に行われる作業に対しての待ち時間が短いものが好まれる。
【００３１】
（実施の形態１）
《基本の構成》
図４は、本発明の実施の形態１における機能ブロック図を示している。４０１は時刻取得手段。４０２は人検出手段。４０３は物品検出手段。４０４は人および物品の検出結果を蓄積する検出履歴データベース。４０５は制御手段。４０６はロボットアーム１０２による作業の情報を蓄積する作業履歴データベース。４０７は物品やロボットアームや人の属性情報を蓄積する属性管理データベース。４０８はロボットアーム１０２による作業が行われる可能性のある場所を求める作業候補位置決定手段。４０９は候補位置において次の作業がどの程度の割合で行われるかを求める作業確率算出手段、４１０はロボットアーム１０２の最適な待機位置を求めるアーム位置算出手段。４１１はアーム本体移動制御手段である。以下、それぞれの構成要素について説明する。
【００３２】
《時刻取得手段》
時刻取得手段４０１は、現在時刻を取得し、出力するものである。
【００３３】
《人検出手段》
人検出手段４０２は、キッチンルーム１００内で作業する人を監視するものである。人の位置を検出し、その座標を検出履歴データベース４０４に登録する。このとき前記時刻取得手段４０１から出力された時刻情報を付与する。また、複数の人がキッチンルーム内におり、それぞれの人を区別して作業する人を求めたい場合には、検出した人が誰であるかを識別し、そのＩＤも併せて検出履歴データベース４０４に登録する。
【００３４】
人検出手段４０２に用いられるセンサ１０４としては、例えば、画像センサ、超音波タグセンサ、床圧力センサなどが考えられる。以下、各センサの具体的な動作の例を説明する。
【００３５】
画像センサを用いる場合、図５Ａに示すように、人を検出したい領域５０１を撮影できるようにカメラ５０２を設置する。あらかじめ領域５０１内に人がいない状態の画像を背景画像５０３として保持しておく。人が領域５０１内に入ったときの画像５０４と前記背景画像との差を求めることにより差分画像５０５が得られる。差分画像５０５で抽出された斜線部の領域５０６の下端が検出された人の床面上の位置である。図５Ｂに処理画像の例を示している。また、あらかじめ人の顔画像を登録しておき、撮影した画像と比較する顔認識技術を利用することにより、その人が誰であるかを識別できる（例えば、特開２００５−３１６８８８号公報、特開２００６−１７８６５１号公報を参照）。キッチンルーム１００に入室するとき等、顔を正面から撮影できるときにこの識別処理を行い、以降は人の移動を追跡することで、キッチンルーム１００内のどこにいても識別することが可能である。
【００３６】
超音波タグセンサを用いる場合、図６に示すように、人を検出したい領域６０１の天井に複数の超音波受信機６０２を設置し、人に超音波発信器６０３を携帯させる。超音波発信器６０３が発信する超音波を、複数の超音波受信機６０２が受信し、前記超音波の到達時間の差により超音波発信器６０３の３次元位置を求めることができ、この位置を床面上に投影した２次元座標を人の位置とする。また、あらかじめ超音波発信器６０３に人のＩＤを登録しておくことにより、検出した人が誰であるかを識別できる。
【００３７】
床圧力センサを用いる場合、図７に示すように、人を検出したい領域７０１の床面に圧力感知素子７０２を敷き詰めておく。人が歩いたときの圧力が検知された圧力感知素子７０２から、人の位置を求めることができる。また、人が歩いた軌跡から歩行パターンを求め、その人が誰であるかを識別できる（例えば、「センシングフロアによる人の識別・追跡」、日本機械学会ロボティクス・メカトロニクス講演会‘０３講演論文集１Ａ１−１Ｆ−Ａ２を参照）。
【００３８】
なお、人検出手段４０２に複数のセンサを用い、位置検出と識別をそれぞれ別のセンサにより求め、この検出結果を組み合わせることも可能である。例えば、超音波タグセンサを用いると、超音波受信機を携帯しなければならないので、これが面倒なことがある。このとき、画像センサに比べて高精度に位置を検出できる床圧力センサにより位置を検出し、床圧力センサに比べて高精度に人を識別できる画像センサによりその人を識別するように組み合わせることができる。
【００３９】
《物品検出手段》
物品検出手段４０３は、キッチンルーム１００内で人が取り扱う物品を監視するものである。物品の位置を検出し、その座標を検出履歴データベース４０４に登録する。このとき前記時刻取得手段４０１から出力された時刻情報を付与する。また、検出した物品が何であるかを識別し、そのＩＤも併せて検出履歴データベース４０４に登録する。
【００４０】
物品検出手段４０３に用いられるセンサ１０４としては、例えば、画像センサ、無線ＩＣタグセンサ、重量センサなどが考えられる。以下、各センサの具体的な動作の例を説明する。
【００４１】
画像センサを用いる場合、前記人検出手段４０２と同様に、物品を検出したい領域を撮影できるようにカメラを設置し、背景差分処理により物品の位置を検出できる。また、あらかじめ取り扱う物品のテンプレート画像８０１を登録しておき、差分画像で抽出された領域とのマッチング処理により、その物品が何であるかを識別できる。図８にテンプレート画像の一例を示している。
【００４２】
無線ＩＣタグセンサを用いる場合、図９に示すように、物品を検出したい領域９０１が検出範囲となるように読み取りアンテナ９０２を設置し、物品には無線ＩＣタグ９０３を貼り付ける。読み取りアンテナ９０２の検出範囲内に無線ＩＣタグ９０３が貼り付けられた物品が置かれると、これを読み取ることで、物品の位置を検出することができる。ただし、読み取りアンテナ９０２の検出範囲内のどこにあるかまでは分からないので、検出位置の精度は読み取りアンテナ９０２の検出範囲のサイズに依存する。また、あらかじめ無線ＩＣタグ９０３に取り扱う物品のＩＤを登録しておくことにより、検出した物品が何であるかを識別できる。
【００４３】
また、通常の無線ＩＣタグセンサの耐久性は５０〜６０度程度であるので、読み取りアンテナ９０２の設置位置や無線ＩＣタグ９０３の貼付位置を５０〜６０度以上の高温にならない箇所にする必要がある。無線ＩＣタグ９０３については高温に耐えられるような加工を施すことも考えられる。
【００４４】
重量センサを用いる場合、図１０に示すように、物品を検出したい領域１００１内に重量検出センサ１００２を３カ所に設置する。物品が置かれると、各重量検出センサ１００２は、現在の重量値と物品が置かれる前の重量値との差を算出し、その重心位置を物品の位置とする。ただし、複数の物品を同時に置いた場合には、それぞれの物品を区別して位置を求めることはできない。
【００４５】
また、あらかじめ取り扱う物品の重量値を登録しておき、全ての重量検出センサ１００２の重量変化の合計値と比較することで、その物品が何であるかを識別できる。ただし、物品同士の重量値の差が、重量センサの検出精度以下の場合には、その区別はできないが、直前に操作された物品の情報や、これらの重量の合計値などから推定することができる。
【００４６】
なお、前記人検出手段４０２と同様に、物品検出手段４０３に複数のセンサを用い、位置検出と識別をそれぞれ別のセンサにより求め、この検出結果を組み合わせることも可能である。例えば、無線ＩＣタグセンサに比べて高精度に位置を検出できる画像センサ、または重量センサにより位置を検出し、画像センサや重量センサに比べて高精度に物品を識別できる無線ＩＣタグセンサによりその物品を識別するように組み合わせることができる。
【００４７】
また、物品の中でも、玉葱や人参などの食材については、包丁で切ることにより無線ＩＣタグを貼り付け続けることはできなくなり、外観や重量も変化するので画像センサや重量センサでも検出は困難になるので、特許文献４に示されるような方法によって検出しても良い。特願２００４−２８０８７３号公報には、加工した食材を容器に関連づけて管理する方法が示されているので、このような操作をする限りにおいては食材を検出することが可能となる。
【００４８】
《検出履歴データベース》
検出履歴データベース４０４は、前記人検出手段４０２が検出した人の位置やＩＤの情報を前記時刻取得手段４０１が出力した時刻情報と対応づけて蓄積するものである。また、同様に、前記物品検出手段４０３が検出した物品の位置やＩＤの情報を前記時刻取得手段４０１が出力した時刻情報と対応づけて蓄積する。図１１に蓄積される情報の例を示す。
【００４９】
蓄積のタイミングは、あらかじめ設定した一定時間（例えば１秒）の間隔で行う。さらに、位置があらかじめ設定した一定距離（例えば１０センチメートル）より大きく変化したときのみ蓄積するようにしても良い。
【００５０】
人検出履歴１１０１は、少なくとも人のＩＤ１１０２、人の位置１１０３（座標）、時刻１１０４の項目を持つ。ＩＤ１１０２は、人の名前を登録しておく。人検出手段４０２によって識別されなかった場合には、空欄にしておく。位置１１０３は、図５Ａに示したようなあらかじめ決めた座標系に従って、前記人検出手段４０２によって検出された座標を登録する。時刻１１０４は、前記人検出手段４０２が検出した時刻を登録する。
【００５１】
人の移動軌跡が分かるように、同じＩＤの情報を時刻の順に並べておくと良い。また、ＩＤ１１０２が登録されておらず空欄の場合は、全て同一人物の情報と考えることができる。また、人がキッチンルーム１００から外に移動して、前記人検出手段４０２が検出できなくなった場合、人検出履歴１１０１に、人がキッチンルーム１００内に存在していないことを登録する。例えば、位置１１０３の項目に座標＝（−１，−１）を登録することでこれを表現する。
【００５２】
物品検出履歴１１０５は、少なくとも物品のＩＤ１１０６、物品の位置１１０７（座標）、時刻１１０８の項目を持つ。ＩＤ１１０６は、物品の名前を登録しておく。位置１１０７は、図５Ａに示したようなあらかじめ決めた座標系に従って、前記物品検出手段４０３によって検出された座標を登録する。物品の場合、同じ２次元座標でも、例えば、調理台の上と収納棚の中のように異なる所にあることもあり得るので、これを区別できるように３次元座標の方が好ましい。時刻１１０８は、前記物品検出手段４０３が検出した時刻を登録する。
【００５３】
前記人検出履歴１１０１と同様に、物品の移動軌跡が分かるように、同じＩＤの情報を時刻の順に並べておくと良い。また、物品がキッチンルーム１００から外に持ち出されて、前記物品検出手段４０３が検出できなくなった場合、物品検出履歴１１０５に、物品がキッチンルーム１００内に存在していないことを登録する。例えば、位置１１０７の項目に座標＝（−１，−１，−１）を登録することでこれを表現する。
【００５４】
《制御手段》
制御手段４０５は、全ての手段に対してその動作を制御するものである。全体の処理フローは後述する。
【００５５】
《作業履歴データベース》
作業履歴データベース４０６は、ロボットアーム１０２を利用した作業を行うときに必要となる物品の情報を蓄積するものである。図１２に蓄積される情報の例を示す。
【００５６】
作業履歴１２０１は、少なくとも作業のＩＤ１２０２、物品リスト１２０３、作業場所１２０４、作業頻度１２０５の項目を持つ。ＩＤ１２０２は、作業の名称を登録しておく。物品リスト１２０３は、ロボットアーム１０２を利用した作業を行うときに必要となる物品を全て登録しておく。作業場所１２０４は、その作業を行うときの場所を登録する。例えば、代表して、その作業を行うときのロボットアーム１０２の座標を登録すれば良い。作業頻度１２０５は、その作業を行った回数をカウントして登録する。
【００５７】
一番最初は、ロボットアーム１０２が持つ機能から想定される物品リスト１２０３と作業場所１２０４を初期値として登録しておく。このとき、作業頻度１２０５には初期値として１を登録しておく。例えば、拭き掃除の作業に対して、物品リスト１２０３にはスポンジ、洗剤を登録し、作業場所１２０４としてシンクの位置を登録しておく。
【００５８】
《属性管理データベース》
属性管理データベース４０７は、人や物品やロボットアームの属性情報を蓄積するものである。図１３に蓄積される情報の例を示す。
【００５９】
人属性情報１３０１は、少なくとも人のＩＤ１３０２、人の移動速度１３０３の項目を持つ。ＩＤ１３０２は、人の名前を登録しておく。移動速度１３０３は、その人がキッチンルーム１００において調理作業を行うときの平均的な移動速度を登録する。この情報は、アーム位置算出手段４０９がアーム位置を算出するときに利用する。
【００６０】
また、複数の人がキッチンルーム内におり、それぞれの人を区別して作業する人を求めたい場合には、顔画像１３０４、超音波タグＩＤ１３０５、歩行パターン情報１３０６などの項目を持つ。顔画像１３０４は、人検出手段４０２が画像センサを用いた顔認識技術により人を識別するための画像を登録する。超音波タグＩＤ１３０５は、人検出手段４０２が超音波タグセンサにより人を識別するために超音波タグに登録しておくＩＤを登録する。歩行パターン情報１３０６は、人検出手段４０２が床圧力センサにより人を識別するために比較する、その人のパターンを表す特徴量を登録する。例えば、歩幅のサイズや歩行の周期などを登録する。
【００６１】
物品属性情報１３０７は、少なくとも物品のＩＤ１３０８の項目を持つ。ＩＤ１３０８は、物品の名前を登録しておく。また、物品検出手段４０３における物品の識別方法に応じて、テンプレート画像１３０９、無線ＩＣタグＩＤ１３１０、重量１３１１などの項目を持つ。テンプレート画像１３０９は、物品検出手段４０３が画像センサを用いたマッチング処理により物品を識別するための画像を登録する。無線ＩＣタグＩＤ１３１０は、物品検出手段４０３が無線ＩＣタグセンサにより物品を識別するために無線ＩＣタグに登録しておくＩＤを登録する。重量１３１１は、物品検出手段４０３が重量センサにより物品を識別するために比較する、その物品の重さを登録する。
【００６２】
ロボットアーム属性情報１３１２は、少なくともロボットアームのＩＤ１３１３、ロボットアームの移動速度１３１４の項目を持つ。ＩＤ１３１３はロボットアーム１０２の識別番号を登録する。移動速度１３１４は、ロボットアーム１０２の作業時の通常の移動速度を登録する。ここで、このロボットアームは家庭で動作するものであるため、安全を考慮した速度に設定されているべきである。
【００６３】
《作業候補位置決定手段》
作業候補位置決定手段４０８は、キッチンルーム１００に置かれた物品の位置情報などから、ロボットアーム１０２による作業が行われる可能性のある場所を求めるものである。
【００６４】
検出履歴データベース４０４から物品の位置を取得し、作業履歴データベース４０６を参照して、作業履歴１２０１の中から、物品リスト１２０３に登録された物品の全てが作業場所１２０４の近くに存在しているものを抽出し、これを候補位置として出力する。具体的な抽出方法は後述する。
【００６５】
また、前記候補位置に加えて、検出履歴データベース４０４から人の位置を取得してこれを候補位置として出力しても良い。これにより、例えば、人の現在位置において収納棚１０１−６から物品を取り出して作業を開始する、という場合にも対応できるようになる。つまり、収納棚１０１−６から取り出された物品が調理台の上に移動されたことが検出されると、物品が作業場所に揃ったと判断される。
【００６６】
《候補位置決定のフロー》
図１４に作業候補位置決定手段４０８の処理フローを示す。
【００６７】
まず、ステップＳ１４０１で、検出履歴データベース４０４の物品検出履歴１１０５から物品の最新位置、つまり時刻１１０８が一番最近のものである位置１１０７を順次読み出す。この物品をＡとし、物品Ａの最新位置をＢとし、次のステップＳ１４０２へ進む。
【００６８】
ステップＳ１４０２で、作業履歴データベース４０６を参照し、物品リスト１２０３に前記物品Ａが登録されている作業履歴１２０１を検索する。全ての作業履歴１２０１の物品リスト１２０３に前記物品Ａが登録されていなければ、ステップＳ１４０１へ進み、次の物品の読み出し処理を行う。物品リスト１２０３に前記物品Ａが登録されている作業履歴１２０１が存在したら、この作業履歴をＣとし、物品リストをＤとし、次のステップＳ１４０３へ進む。もし、物品リスト１２０３に物品Ａが登録されている作業履歴１２０１が複数存在したら、以下のステップＳ１４０３からステップＳ１４０９までの処理を繰り返す。
【００６９】
ステップＳ１４０３で、前記作業履歴Ｃの作業場所１２０４を読み出す。この作業場所をＥとし、次のステップＳ１４０４へ進む。
【００７０】
ステップＳ１４０４で、前記物品Ａの最新位置Ｂと前記作業場所Ｅの距離を計算する。ここで距離の計算は、X座標方向の差により求められる距離とし、以降においても特に記述が無い場合は同様に計算するものとする。この距離があらかじめ設定したしきい値Ｔ１より大きければ、ステップＳ１４０１へ進み、次の物品の読み出し処理を行う。Ｔ１より小さければ、次のステップＳ１４０５へ進む。しきい値Ｔ１は、使用するロボットアーム１０２のサイズやキッチンの奥行きサイズから予め決定し、例えば、Ｔ１＝１５ｃｍとする。また、ロボットアーム１０２を利用した支援作業を実際に行ったときの、ロボットアーム１０２から、作業に使用した物品までの距離を蓄積しておき、この距離の最大値とするように適宜調整しても良い。
【００７１】
ステップＳ１４０５で、前記物品リストＤから前記物品Ａ以外の物品を順次読み出す。この物品をＦとして、次のステップＳ１４０６へ進む。
【００７２】
ステップＳ１４０６で、検出履歴データベース４０４の物品検出履歴１１０５から物品Ｆを検索し、その最新位置を読み出す。この位置をＧとし、次のステップＳ１４０７へ進む。
【００７３】
ステップＳ１４０７で、前記物品Ｆの最新位置Ｇと前記作業場所Ｅの距離を計算し、あらかじめ設定したしきい値Ｔ１より大きければ、ステップＳ１４０１へ進み、次の物品の読み出し処理を行う。Ｔ１より小さければ、次のステップＳ１４０８へ進む。
【００７４】
ステップＳ１４０８で、前記物品リストＤから全ての物品を読み出して処理したかを調べ、まだ残っていればステップＳ１４０５へ進み、次の物品の読み出し処理を行う。読み出しを完了していれば、次のステップＳ１４０９へ進む。
【００７５】
ステップＳ１４０９で、前記作業場所Ｅを作業候補位置とし、次のステップＳ１４１０へ進む。
【００７６】
ステップＳ１４１０で、検出履歴データベース４０４の物品検出履歴１１０５から全ての物品を読み出して処理したかを調べ、まだ残っていれば、ステップＳ１４０１へ進み、次の物品の読み出し処理を行う。読み出しを完了していれば、処理を終了する。
【００７７】
《作業確率算出手段》
作業確率算出手段４０９は、前記作業候補位置決定手段４０８から出力された各候補位置において、次の作業がどの程度の割合で行われるかを求めるものである。
【００７８】
作業候補位置決定手段４０８から出力された各候補位置に対して、作業履歴データベース４０６を参照して、該当の作業履歴１２０１から作業頻度１２０５を取得する。この頻度の割合をそれぞれの候補位置の作業確率とする。
【００７９】
また、候補位置が人の位置の場合、過去に人の位置でロボットアーム１０２を利用した作業を行った頻度や、前記作業履歴データベース４０６から取得された候補位置の作業頻度１２０５などを参考に、人の位置の作業頻度を決める。例えば、作業履歴データベース４０６から取得された候補位置の作業頻度１２０５の最大値、または最小値、または平均値などを採用する。具体的には、過去に人の位置でロボットアーム１０２を利用した作業を行った頻度が、前記候補位置の作業頻度１２０５の最大値より大きければ、人の位置の作業頻度を最大値とし、前記候補位置の作業頻度１２０５の最小値より小さければ、人の位置の作業頻度を最小値とし、それ以外であれば平均値とする。
【００８０】
物品の位置から決定された候補位置と、人の位置が一致した場合、その位置の作業確率は１００％とし、他の位置の作業確率を０％とする。
【００８１】
《作業確率算出の例》
図１５に作業確率算出の例を示す。
【００８２】
図１５の（ａ）はキッチンルーム１００の一部分の状況の例を示した図で、図１５の（ｂ）は作業履歴データベース４０６に登録されている作業履歴１２０１の例を示した図である。
【００８３】
図１５の（ａ）において、１５０１は位置Ｐ１に置かれた物品Ａ１、１５０２は位置Ｐ２に置かれた物品Ａ２、１５０３は位置Ｐ３にいる人Ｍ１である。図１５の（ｂ）において１５０４、１５０５はそれぞれ作業のＩＤ１２０２がＳ１、Ｓ２である作業履歴１２０１である。
【００８４】
このような状況の時、候補位置はＰ１とＰ２の２カ所となり、作業頻度１２０５はそれぞれ「６」と「４」である。よって、各候補位置の作業確率は、Ｐ１では６０％、Ｐ２では４０％となる。また、人の位置も候補位置に加えるようにした場合、人Ｍ１がいる位置Ｐ３の作業頻度は、例えば、平均値を採用すると「５」である。よって、各候補位置の作業確率は、Ｐ１では４０％、Ｐ２では２７％、Ｐ３では３３％となる。
【００８５】
《アーム位置算出手段》
アーム位置算出手段４１０は、前記作業候補位置決定手段４０８から出力された候補位置で次の作業が行われると想定した場合の、ロボットアーム１０２の最適な待機位置を求めるものである。
【００８６】
検出履歴データベース４０４から人の位置１１０３を取得し、属性管理データベース４０７から人の移動速度１３０３とロボットアーム１０２の移動速度１３１４を取得し、さらに、作業候補位置決定手段４０８から出力された各候補位置と、作業確率算出手段４０９から出力された各候補位置の作業確率から、最適な待機位置を求める。
【００８７】
ここで、待ち時間を、人が作業場所に到着してからロボットアーム１０２が作業場所に到着するまでの時間と定義すると、最適な待機位置の基本的な考え方は、作業確率が均一であるとき、作業候補位置決定手段４０８から出力された各候補位置での待ち時間の最大値を最小化する位置である。ただし、作業確率が異なる場合には、これに対応して待機位置を調整する。例えば、非常に作業確率が低い候補位置が遠く離れた所であった場合、単純に待ち時間の最大値を最小化する待機位置では、他の作業確率が高い候補位置の待ち時間が長くなってしまう。
【００８８】
《待機位置算出の例》
図１６に待機位置算出の例を示す。図１６は検出履歴データベース４０４に登録されている人検出履歴１１０１の例１６０１と、属性管理データベース４０７に登録されている人属性情報１３０１の例１６０２と、ロボットアーム属性情報１３１２の例を１６０３示している。
【００８９】
図１６より、人の位置はＰＭ１、人の移動速度はＶＭ１、ロボットアーム１０２の移動速度はＶＲ１であることを取得する。また、作業候補位置決定手段４０８から出力された候補位置の数をＮとし、各候補位置をＰＳｉ（ｉ＝１〜Ｎ）、各候補位置の作業確率をＫｉ（ｉ＝１〜Ｎ）とする。
【００９０】
このとき、人が候補位置ＰＳｉに到着するまでの時間ＴＭｉは以下の通り。
【００９１】
【数１】
2008296308.tif 000003
【００９２】
また、ロボットアーム１０２の位置をＸとしたときに、ロボットアーム１０２が候補位置ＰＳｉに到着するまでの時間ＴＲｉは以下の通り。
【００９３】
【数２】
2008296308.tif 000004
【００９４】
ただし、人とロボットアーム１０２は移動開始から停止まで登録されている移動速度で一定に移動すると仮定している。
【００９５】
待ち時間は、人が到着してからロボットアーム１０２が到着するまでの時間なので、候補位置ＰＳｉにおける待ち時間Ｗｉは以下の通り。
【００９６】
【数３】
2008296308.tif 000005
【００９７】
ここで、各候補位置における作業確率を考慮し、作業確率の高い候補位置での待ち時間をなるべく短くするように調整するため、候補位置ＰＳｉにおける作業確率を考慮した待ち時間ＷＫｉを以下のように定義する。
【００９８】
【数４】
2008296308.tif 000006
【００９９】
これらより、ロボットアーム１０２の最適な待機位置ＴＸを、以下のように求める。ロボットアーム１０２の位置をＸとしたときの、各候補位置ＰＳｉにおける作業確率を考慮した待ち時間ＷＫｉの最大値をＦ（Ｘ）とすると、
【０１００】
【数５】
2008296308.tif 000007
【０１０１】
となり、ＴＸはこれを最小化するＸとする。つまり、
【０１０２】
【数６】
2008296308.tif 000008
【０１０３】
となる。
【０１０４】
《アーム本体移動制御手段》
アーム本体移動制御手段４１１は、ロボットアーム１０２本体の位置を管理しており、前記アーム位置算出手段４１０から出力された待機位置へ移動するように、ロボットアーム１０２に移動指令を出力するものである。このときの移動速度は、前記属性管理データベース４０７のロボットアーム属性情報１３１２に登録された移動速度１３１４である。
【０１０５】
《全体処理フロー》
図１７Ａに全体の処理フローを示す。全体の処理の制御は制御手段４０５が行う。
【０１０６】
まず、ステップＳ１７０１で、キッチンルーム１００内の物品の検出を行う。これは物品検出手段４０３が行う。検出結果を検出履歴データベース４０４の物品検出履歴１１０５に登録したら、次のステップＳ１７０２へ進む。
【０１０７】
ステップＳ１７０２で、キッチンルーム１００内の人の検出を行う。これは人検出手段４０２が行う。検出結果を検出履歴データベース４０４の人検出履歴１１０１に登録したら、次のステップＳ１７０３へ進む。
【０１０８】
ステップＳ１７０３で、人がキッチンルーム１００内にいるかどうかを調べる。これは、検出履歴データベース４０４に登録されている人検出履歴１１０１を参照し、その位置１１０３がキッチンルーム１００内か否かにより判定する。キッチンルーム１００内にいなければステップＳ１７０９へ進み、いればステップＳ１７０４へ進む。
【０１０９】
ステップＳ１７０４で、作業候補位置を決定する。これは作業候補位置決定手段４０８が行う。次のステップＳ１７０５へ進む。
【０１１０】
ステップＳ１７０５で、作業候補位置があるかどうかを調べる。作業候補位置が何もなければステップＳ１７０９へ進み、１つ以上あればステップＳ１７０６へ進む。
【０１１１】
ステップＳ１７０６で、各作業候補位置の作業確率を計算する。これは作業確率算出手段４０９が行う。次のステップＳ１７０７へ進む。
【０１１２】
ステップＳ１７０７で、ロボットアーム１０２の最適な待機位置を求める。これはアーム位置算出手段４１０が行う。ステップＳ１７０８へ進む。
【０１１３】
ステップＳ１７０８で、ロボットアーム１０２を最適な待機位置へ移動する。これはアーム本体移動制御手段４１１が行う。ステップＳ１７１０へ進む。
【０１１４】
ステップＳ１７０９で、ロボットアーム１０２を定位置へ移動する。これはアーム本体移動制御手段４１１が行う。定位置はあらかじめ設定しておく。通常、キッチンルーム１００の中央に設定しておけば良い。次のステップＳ１７１０へ進む。
【０１１５】
ステップＳ１７１０で、ロボットアーム１０２の動作を停止するかどうかを判断する。これは、後述する入出力手段などによりユーザが停止したいという意思を表明したときに、停止の判断をする。停止するならば全ての処理を終了し、停止しないならばステップＳ１７０１へ進み、処理を繰り返す。
【０１１６】
《全体処理フローの具体例》
次に、具体例に基づいて全体の処理フローを説明する。図１７Ｂ（ａ）に示すように、ガス台１７１１に玉葱１７１２が入れられたフライパン１７１３とレードル１７１４が置かれており、シンク１７１５にスポンジ１７１６と洗剤１７１７が置かれており、人（花子）１７１８は調理台の前にいる。図１７Ｃはデータベースの抜粋であり、人検出履歴１１０１と物品検出履歴１１０５に、前記人と物品の位置を示している。また、作業履歴１２０１と人属性情報１３０１とロボットアーム属性情報１３１２の関連する情報を抜粋して示している。
【０１１７】
ステップＳ１７０１で、キッチンルーム１００内の物品を検出する。その結果、フライパン１７１３の位置が（１５，４０，８０）、玉葱１７１２の位置が（１５，４０，８０）、レードル１７１４の位置が（１５，３０，８０）、スポンジ１７１６の位置が（２４０，２５，８０）、洗剤１７１７の位置が（２４０，３５，８０）であることが得られる。
【０１１８】
ステップＳ１７０２で、キッチンルーム１００内の人を検出する。その結果、花子１７１８の位置が（１１０，７０）であることが得られる。
【０１１９】
ステップＳ１７０３で、人がキッチンルーム１００内にいるかどうかを調べる。前記花子の位置から花子１７１８がキッチンルーム１００内にいることが分かるので、ステップＳ１７０４へ進む。
【０１２０】
ステップＳ１７０４で、作業候補位置を決定する。まず、物品検出履歴１１０５から、フライパン１７１３という物品とその位置（１５，４０，８０）を読み出す。作業履歴１２０１から、前記フライパン１７１３が登録されている「かき混ぜ」という作業を読み出す。前記物品の位置と、登録されている作業場所（２０，０，８０）とのＸ座標方向の距離を計算し、あらかじめ設定したしきい値、例えばＴ１＝１０より小さいことを得る。前記「かき混ぜ」という作業の物品リストからフライパン１７１３以外の物品であるレードル１７１４と玉葱１７１２の位置を物品検出履歴１１０５から読み出す。前記レードル１７１４の位置（１５，３０，８０）と玉葱１７１２の位置（１５，４０，８０）についても、登録されている作業場所（２０，０，８０）とのＸ座標方向の距離がしきい値より小さいことを得る。前記「かき混ぜ」という作業の物品リストに登録されている全ての物品の位置が条件を満たすことが確認できたので、「かき混ぜ」という作業の作業場所（２０，０，８０）を作業候補位置とする。
【０１２１】
同様に、「拭き掃除」という作業の作業場所（２４０，０，８０）も作業候補位置とする。さらに、人の位置（１１０，７０）から、人の正面となる同じＸ座標の位置（１１０，０，８０）も作業候補位置とする。
【０１２２】
ステップＳ１７０５で、作業候補位置があるのでステップＳ１７０６へ進む。
【０１２３】
ステップＳ１７０６で、作業確率を計算する。前記ステップＳ１７０４で求めた作業候補位置に対して、作業履歴１２０１を参照して作業頻度１２０５を求める。「かき混ぜ」作業候補位置の作業頻度は６、「拭き掃除」作業候補位置の作業頻度は２である。人の位置の作業頻度は、例えば、前記作業候補位置の作業頻度の最小値を採用すると２である。求めた作業頻度から確率を計算することにより、「かき混ぜ」作業候補位置の作業確率は６０％、「拭き掃除」作業候補位置の作業確率は２０％、人の位置の作業確率は２０％となる。
【０１２４】
ステップＳ１７０７で、最適な待機位置を求める。ここでは、人とロボットアーム１０２の移動はＸ座標方向のみを考える。人属性情報１３０１から人の移動速度は８０ｃｍ／ｓであることより、人が「かき混ぜ」作業候補位置に到着するまでの時間は（（１１０−２０）／８０）秒、「拭き掃除」作業候補位置に到着するまでの時間は（（２４０−１１０）／８０）秒であることが求められる。ロボットアーム属性情報１３１２からロボットアーム１０２の移動速度は２５ｃｍ／ｓであることより、ロボットアーム１０２の位置をＸとすると、ロボットアーム１０２が「かき混ぜ」作業候補位置に到着するまでの時間は（｜Ｘ−２０｜／２５）秒、「拭き掃除」作業候補位置に到着するまでの時間は（｜Ｘ−２４０｜／２５）秒、人の位置に到着するまでの時間は（｜Ｘ−１１０｜／２５）秒であることが求められる。これより、「かき混ぜ」作業候補位置における待ち時間は（（｜Ｘ−２０｜／２５）−（９０／８０））秒、「拭き掃除」作業候補位置における待ち時間は（（｜Ｘ−２４０｜／２５）−（１３０／８０））秒、人の位置における待ち時間は（｜Ｘ−１１０｜／２５）秒であることが求められる。さらに、それぞれの作業確率を考慮すると、「かき混ぜ」作業候補位置における作業確率を考慮した待ち時間は（６／１０）＊（（｜Ｘ−２０｜／２５）−（９０／８０））秒、「拭き掃除」作業候補位置における作業確率を考慮した待ち時間は（２／１０）＊（（｜Ｘ−２４０｜／２５）−（１３０／８０））秒、人の位置における作業確率を考慮した待ち時間は（２／１０）＊（｜Ｘ−１１０｜／２５）秒であることが求められる。
【０１２５】
つまり、「かき混ぜ」作業候補位置における作業確率を考慮した待ち時間Ｙ１［秒］は、Ｘ≧２０のとき、
【０１２６】
【数７】
2008296308.tif 000009
【０１２７】
となり、Ｘ＜２０のとき、
【０１２８】
【数８】
2008296308.tif 000010
【０１２９】
となる。ただし、Ｙ１＜０となるところでは、Ｙ１＝０とする。
【０１３０】
同様に、「拭き掃除」作業候補位置における作業確率を考慮した待ち時間Ｙ２［秒］は、Ｘ≧２４０のとき、
【０１３１】
【数９】
2008296308.tif 000011
【０１３２】
となり、Ｘ＜２４０のとき、
【０１３３】
【数１０】
2008296308.tif 000012
【０１３４】
となる。ただし、Ｙ２＜０となるところでは、Ｙ２＝０とする。
【０１３５】
同様に、人の位置における作業確率を考慮した待ち時間Ｙ３［秒］は、Ｘ≧１１０のとき、
【０１３６】
【数１１】
2008296308.tif 000013
【０１３７】
となり、Ｘ＜１１０のとき、
【０１３８】
【数１２】
2008296308.tif 000014
【０１３９】
となる。
【０１４０】
これらより、Ｘの各値において待ち時間が最大となる作業候補位置を求めると、Ｘ≧（１３７５／１６）のときには、「かき混ぜ」作業候補位置における作業確率を考慮した待ち時間が３カ所の内で最大となり、Ｘ＜（１３７５／１６）のときには「拭き掃除」作業候補位置における作業確率を考慮した待ち時間が３カ所の内で最大となる。ここで、（１３７５／１６）は（数７）と（数１０）の交点より算出される値である。そして、Ｘ＝（１３７５／１６）のときに、これらを最小化する。よって、最適な待機位置は（１３７５／１６，０，８０）となる。
【０１４１】
ステップＳ１７０８で、ロボットアームを移動する。図１７Ｂ（ｂ）に移動結果を示す。このとき、「かき混ぜ」作業候補位置における待ち時間は約１．５秒、「拭き掃除」作業候補位置における待ち時間は約４．５秒、人の位置における待ち時間は約１秒となる。
【０１４２】
もし、従来例に従って最も可能性の高い「かき混ぜ」作業候補位置（Ｘ＝２０）を待機位置とすると、「かき混ぜ」作業候補位置における待ち時間は０秒、「拭き掃除」作業候補位置における待ち時間は約７秒、人の位置における待ち時間は約３．５秒となる。
【０１４３】
また、常に真ん中の位置（Ｘ＝１５０）を待機位置とすると、「かき混ぜ」作業候補位置における待ち時間は約４秒、「拭き掃除」作業候補位置における待ち時間は約２秒、人の位置における待ち時間は約１．５秒となる。
【０１４４】
また、人の正面位置（Ｘ＝１１０）を待機位置とすると、「かき混ぜ」作業候補位置における待ち時間は約２．５秒、「拭き掃除」作業候補位置における待ち時間は約３．５秒、人の位置における待ち時間は０秒となる。
【０１４５】
ここで、人の位置が（５０，７０）であったとき、前記同様に本発明により最適な待機位置を求めると（１０７５／１６，０，８０）となり、「かき混ぜ」作業候補位置における待ち時間は約１．５秒、「拭き掃除」作業候補位置における待ち時間は約４．５秒、人の位置における待ち時間は約０．７秒となる。
【０１４６】
前記同様に、従来例に従って最も可能性の高い「かき混ぜ」作業候補位置（Ｘ＝２０）を待機位置とすると、「かき混ぜ」作業候補位置における待ち時間は０秒、「拭き掃除」作業候補位置における待ち時間は約６．５秒、人の位置における待ち時間は約１．２秒となる。
【０１４７】
また、常に真ん中の位置（Ｘ＝１５０）を待機位置とすると、「かき混ぜ」作業候補位置における待ち時間は約４．８秒、「拭き掃除」作業候補位置における待ち時間は約１．２秒、人の位置における待ち時間は約４秒となる。
【０１４８】
また、人の正面位置（Ｘ＝５０）を待機位置とすると、「かき混ぜ」作業候補位置における待ち時間は約０．８秒、「拭き掃除」作業候補位置における待ち時間は約６秒、人の位置における待ち時間は０秒となる。
【０１４９】
さらに、人の位置が（２００，７０）であったとき、前記同様に本発明により最適な待機位置を求めると（１８２５／１６，０，８０）となり、「かき混ぜ」作業候補位置における待ち時間は約１．５秒、「拭き掃除」作業候補位置における待ち時間は約４．５秒、人の位置における待ち時間は約３．５秒となる。
【０１５０】
前記同様に、従来例に従って最も可能性の高い「かき混ぜ」作業候補位置（Ｘ＝２０）を待機位置とすると、「かき混ぜ」作業候補位置における待ち時間は０秒、「拭き掃除」作業候補位置における待ち時間は約８．３秒、人の位置における待ち時間は約７．２秒となる。
【０１５１】
また、常に真ん中の位置（Ｘ＝１５０）を待機位置とすると、「かき混ぜ」作業候補位置における待ち時間は約３秒、「拭き掃除」作業候補位置における待ち時間は約３秒、人の位置における待ち時間は約２秒となる。
【０１５２】
また、人の正面位置（Ｘ＝２００）を待機位置とすると、「かき混ぜ」作業候補位置における待ち時間は約５秒、「拭き掃除」作業候補位置における待ち時間は約１秒、人の位置における待ち時間は０秒となる。
【０１５３】
図１７Ｄに、前記３つの例における、それぞれのロボットアーム１０２の位置と作業候補位置での待ち時間の算出結果をまとめた表を示す。（ａ）は人の位置が（１１０，７０）の場合、（ｂ）は人の位置が（５０，７０）の場合、（ｃ）は人の位置が（２００，７０）の場合である。
【０１５４】
前記結果より、最も可能性の高い「かき混ぜ」作業候補位置を待機位置とすると、作業の可能性が低い位置ではあるが、「拭き掃除」作業候補位置における待ち時間が極端に長くなってしまうことがある。常に真ん中の位置、または、人の正面位置を待機位置とすると、待ち時間が極端に長くなってしまうことは起こらないが、作業の可能性が高い位置での待ち時間が必ずしも短くならないことがある。
【０１５５】
《作用と効果》
以上のように、作業候補位置決定手段によって、検出した物品の位置から作業の候補位置や作業確率を求め、さらに、アーム位置算出手段によって、検出した人の位置や人とロボットアームの移動速度から作業確率を考慮した待ち時間の最大値を最小化する待機位置を求めることができるようになる。これにより、どこで作業を行う場合でも待ち時間が極端に長くなることが無く、かつ、作業を行う可能性の高い所での待ち時間を短くできるので、貴重な時間を無駄にすることなく作業を行うことができる。
【０１５６】
（実施の形態２）
《作業履歴を更新する》
図１８は本発明の実施の形態２における機能ブロック図を示している。１８０１はユーザ１０６からの指示を入力する入出力手段。１８０３は作業履歴データベース４０６の更新を行う作業履歴更新手段である。以下、それぞれの構成要素について説明する。
【０１５７】
《入出力手段》
入出力手段１８０１は、ユーザ１０６からの指示を入力したり、システムの状態などをユーザ１０６に提示したりするものである。
【０１５８】
入力する指示の内容として、ロボットアーム１０２を用いた作業の開始や終了や完了の指示、ロボットアーム１０２を用いた作業の具体的な機能、すなわち自動かき混ぜ機能や拭き掃除などの中からどの機能を選択するかの指定や、作業を行う場所の指示、ロボットアーム１０２の動作の開始や終了の指示などがある。また、データベースの手動による更新を行うこともできる。
【０１５９】
出力する内容として、ロボットアーム１０２を用いた作業の具体的な機能の選択肢表示や、現在のシステムの状態（例えば、ロボットアーム１０２が作業中であるか、移動中であるか）や、データベースの内容、などを表示する。
【０１６０】
入出力手段１８０１の具体例として、キーボード、ポインティングデバイス、タッチパネル、マイク、モニタ、スピーカなどが考えられる。
【０１６１】
また、センサ１０４に接続し、これを用いて指示を入力しても良い。例えば、無線ＩＣタグセンサを用いる場合、１枚の無線ＩＣタグに具体的な１つの指示を対応付けて登録しておき、これを読み取りアンテナにかざすことで指示することができる。指示が複数の場合には、それぞれ対応した複数枚のタグを順にかざすことで指示を与える。画像センサを用いる場合、複数のカメラを利用することで３次元位置が特定できるので、作業を行いたい場所に手を出して、背景差分処理により抽出された領域の中から、さらに肌色部分を抽出することで、手の位置を特定し、作業を行う場所の指示とすることができる。なお、通常の作業を行っている場合と指示を与える場合とを区別するために、音声により場所の指示を与えていることを『今から指示します』などと教えるなどのように、他の手段と組み合わせる必要がある。
【０１６２】
また、時刻取得手段４０１に接続し、指定時間が経過した後にあらかじめ指定した指示を与えることもできる。
【０１６３】
《作業履歴更新手段》
作業履歴更新手段１８０３は、ロボットアーム１０２により作業が行われたとき、その作業に用いられた物品の情報を、検出履歴データベース４０４を参照して取得し、作業履歴データベース４０６の更新を行うものである。
【０１６４】
前記入出力手段１８０１より作業開始の指示が入力されたことによりロボットアーム１０２の作業が行われたことを検知し、作業場所周辺にある物品を、検出履歴データベース４０４を参照して取得する。作業履歴データベース４０６に登録された作業履歴１２０１の中から、物品リスト１２０３を参照し、前記取得した物品と同じ物品が揃っていたら作業頻度１２０５を１だけ加算し、揃っていなければ新たな作業履歴１２０１のデータを作成する。
【０１６５】
《作業履歴更新のフロー》
図２０Ａに作業履歴更新手段１８０３の処理フローを示す。システム全体の処理フロー中での処理タイミングについては後述する。
【０１６６】
まずステップＳ２００１で、入出力手段１８０１よりロボットアーム１０２の作業場所の指示を取得する。次のステップＳ２００２へ進む。
【０１６７】
ステップＳ２００２で、入出力手段１８０１よりユーザが選択したロボットアーム１０２の機能を取得する。次のステップＳ２００３へ進む。
【０１６８】
ステップＳ２００３で、入力出手段１８０１よりロボットアーム１０２の作業開始の指示を取得する。次のステップＳ２００４へ進む。
【０１６９】
ステップＳ２００４で、ロボットアーム１０２の作業に用いられた物品を抽出する。これは、検出履歴データベース４０４を参照し、物品検出履歴１１０５の中から、物品の最新位置と、前記作業場所の距離があらかじめ設定したしきい値Ｔ２より小さいものを抽出する。しきい値Ｔ２は、ロボットアーム１０２を利用した支援作業を行うときの、ロボットアーム１０２から、作業に使用する物品までの距離から勘案して設定する。基本的には、前記作業候補位置決定手段４０８の処理フローにおいて示したしきい値Ｔ１と等しく設定すれば良い。また、入出力手段１８０１により、人が、新たに物品を追加指定したり、余計な物品を削除しても良い。次のステップＳ２００５へ進む。
【０１７０】
ステップＳ２００５で、作業履歴データベース４０６の作業履歴１２０１から物品リスト１２０３を順次読み出す。次のステップＳ２００６へ進む。
【０１７１】
ステップＳ２００６で、ステップＳ２００４において抽出した物品と、読み出した物品リストとを比較する。等しければ、作業履歴データベース４０６に登録されている作業履歴１２０１と同じ作業が行われたと判断し、ステップＳ２００７へ進む。異なればステップＳ２００８へ進む。
【０１７２】
ステップＳ２００７で、該当の作業履歴１２０１に登録されている作業頻度１２０５を１だけ加算し、このフローを終了する。
【０１７３】
ステップＳ２００８で、作業履歴データベース４０６の作業履歴１２０１から全ての物品リスト１２０３を読み出したかを調べる。まだ残っていればステップＳ２００５へ進み、次の読み出し処理を行う。読み出しを完了していれば、次のステップＳ２００９へ進む。
【０１７４】
ステップＳ２００９で、今回のロボットアーム１０２による作業は、作業履歴データベース４０６に登録されているどの作業履歴１２０１とも異なる、新たな作業と判断し、新たな作業履歴１２０１を作成する。ＩＤ１２０２は、デフォルト値として現在時刻を登録し、必要に応じて入出力手段１８０１により人が分かりやすく変更しても良い。物品リスト１２０３は、ステップＳ２００４において抽出した物品を登録する。作業場所１２０４は、ステップＳ２００１で指示された作業場所を登録する。作業頻度１２０５はデフォルト値として１を登録する。これでこのフローを終了する。
【０１７５】
《作業履歴更新のフローの具体例》
次に、具体例に基づいて作業履歴更新手段の処理フローを説明する。図２０Ｂに、関連するデータベースの抜粋を示している。人検出履歴１１０１に人の位置が示されており、物品検出履歴１１０５にキッチンルーム１００内の物品の位置が示されており、作業履歴１２０１に、現在登録されている作業が示されている。
【０１７６】
人がシンクの拭き掃除作業をロボットアーム１０２に実施させるために、まず入出力手段１８０１により作業場所、ここではロボットアーム１０２の位置として（２４０，０，８０）を指示する。ステップＳ２００１で、この指示を取得する。
【０１７７】
次に、人が「拭き掃除」という機能を入出力手段１８０１により与える。ステップＳ２００２で、この機能を取得する。
【０１７８】
次に、人が洗剤を染み込ませたスポンジをロボットアーム１０２に装着し、入出力手段１８０１により作業開始の指示を与える。ステップＳ２００３で、この指示を取得する。
【０１７９】
ステップＳ２００４で、検出履歴データベース４０４の物品検出履歴１１０５を参照して、作業場所（２４０，０，８０）からのＸ座標方向の距離が、あらかじめ設定したしきい値、例えばＴ２＝１０、より小さい物品を抽出する。ここではスポンジと洗剤が得られる。もし、付近にロボットアーム１０２を利用した作業と関係ない物品、例えばコップなどがあったら、自動的に抽出されるので、入出力手段１８０１によりこれを削除することもできる。
【０１８０】
ステップＳ２００５で、作業履歴データベース４０６の作業履歴１２０１から物品リスト（フライパンとレードルと玉葱）を読み出す。
【０１８１】
ステップＳ２００６で、ステップＳ２００４において抽出した物品（スポンジと洗剤）と比較し、等しくないのでステップＳ２００８へ進む。
【０１８２】
ステップＳ２００８で、図２０Ｂに示した作業履歴データベース４０６から全ての作業履歴１２０１を読み出したので、ステップＳ２００９へ進む。
【０１８３】
ステップＳ２００９で、今回のロボットアーム１０２を利用した作業を、作業履歴データベース４０６の新たな作業履歴１２０１として登録する。ここでは、ＩＤを「拭き掃除」として登録した。新たに作業履歴１２０１が登録されて更新された作業履歴データベース４０６を図２０Ｃ（ａ）に示す。
【０１８４】
さらに、作業履歴データベース４０６の作業履歴１２０１が図２０Ｃ（ａ）のとき、同様に、シンクの拭き掃除作業をロボットアーム１０２に実施させる。
【０１８５】
ステップＳ２００５で、作業履歴データベース４０６の作業履歴１２０１から物品リスト（スポンジと洗剤）が読み出される。
【０１８６】
ステップＳ２００６で、ステップＳ２００４において抽出した物品と等しいので、ステップＳ２００７へ進む。
【０１８７】
ステップＳ２００７で、拭き掃除の作業頻度１２０５を１加算して、２に更新する。更新された作業履歴データベース４０６を図２０Ｃ（ｂ）に示す。
【０１８８】
《作用と効果》
以上のように、作業履歴更新手段によって、実際に作業が行われたことから作業履歴データベース４０６を更新することができる。これにより、実際の利用実績から作業確率を算出できるようになり、アーム位置算出手段における待機位置を高精度に算出できる効果が得られる。
【０１８９】
（実施の形態３）
《候補位置を求める》
図２３は本発明の実施の形態３における機能ブロック図を示している。２３０１は、人が持っている物品を検知する把持物品検出手段である。４０８−２３は、作業履歴データベース４０６の作業履歴１２０１に登録された物品リスト１２０３のすべての物品が揃っていなくても、作業場所となる可能性の高い場所であれば候補位置とするように拡張した作業候補位置決定手段である。以下、それぞれの構成要素について説明する。
【０１９０】
《把持物品検出手段》
把持物品検出手段２３０１は、人の手に、無線ＩＣタグセンサの小型の読み取りアンテナを装着し、物品に無線ＩＣタグを貼り付けることにより、人が持っている物品を検出する。検出したら、検出履歴データベース４０４の物品検出履歴１１０５の該当物品の位置１１０７に把持している人のＩＤを登録する。このときの物品検出履歴１１０５の例を図２４Ａに示す。
【０１９１】
《作業候補位置決定手段》
作業候補位置決定手段４０８−２３は、キッチンルーム１００に置かれた物品の位置情報などから、ロボットアーム１０２による作業が行われる可能性のある場所を求めるもので、作業履歴データベース４０６の作業履歴１２０１に登録された物品リスト１２０３のすべての物品が揃っていなくても、作業場所となる可能性の高い場所であれば候補位置とするように拡張したものである。即ち、物品リスト１２０３の中で揃っていない物品を人が持っていれば、人が到着したらときには作業が可能になるので、この場所も候補位置に追加する。また、物品リスト１２０３の中で揃っていない物品が、その付近の棚の中にあれば、人が到着し、棚の中から取り出すことにより作業が可能になるので、この場所も候補位置に追加する。
【０１９２】
また、以上のように求めた複数の候補位置が互いに近かった場合、そのどちらにもロボットアーム１０２が届くような位置が存在するならば、２つの候補位置を１つにまとめても良い。このために、図２４Ｂに示すように、属性管理データベース４０７のロボットアーム属性情報１３１２に、アームサイズ２５０１を追加し、ロボットアーム１０２の作業可能範囲を判断する。実際には、アーム本体の位置からアームサイズ分だけ離れたところで作業できるわけではないので、アームサイズより小さい値をあらかじめ設定する。例えば、アームサイズにあらかじめ設定した一定値（例えば、０．２）を乗じた距離を作業可能範囲とする。このとき、２つの候補位置の距離が前記作業可能範囲の２倍より小さければ、前記２つの候補位置を１つにまとめることができる。
【０１９３】
例えば、新たな候補位置の決め方は、該当の候補位置の中点とし、新たな候補位置における作業確率は、該当の候補位置の作業確率を加算したものとする。そして、元の候補位置は削除する。
【０１９４】
《作業候補位置決定の具体例》
次に、具体例に基づいて作業候補位置決定手段について説明する。図２５Ａに示すように、ガス台に玉葱が入れられたフライパンが置かれており、シンクにスポンジと洗剤が置かれており、人はレードルを持って調理台の前にいる。図２５Ｂは作業履歴データベース４０６の抜粋であり、登録された作業履歴１２０１を示している。
【０１９５】
このとき、作業場所（２０，０，８０）には物品リストに登録されている物品のうち、レードルが揃っていないので、この場所は候補位置と判定されない。しかし、把持物品検出手段２３０１が、人が持っているレードルを検出すると、これを合わせて作業場所（２０，０，８０）の物品リストが揃うので、この場所も候補位置と判定することにする。また、レードルがガス台付近の引き出しに入れられていた場合も、同様に、この場所を候補位置と判定することにする。
【０１９６】
また、図２５Ｃに示すような、作業履歴データベース４０６に登録された作業履歴１２０１を考える。それぞれの作業履歴１２０１の物品リストに登録された物品が、全て作業場所に揃っているとき、候補位置は、かき混ぜ１の候補位置Ｐ１（２０，０，８０）と、かき混ぜ２の候補位置Ｐ２（５０，０，８０）と、拭き掃除の候補位置Ｐ３（２４０，０，８０）である。
【０１９７】
それぞれの候補位置の作業確率は、Ｐ１の作業確率は（５／（５＋３＋２））＝５０％、Ｐ２の作業確率は（３／（５＋３＋２））＝３０％、Ｐの作業確率は（２／（５＋３＋２））＝２０％となる。
【０１９８】
ここで、アームサイズを図２４Ｂより９０ｃｍとし、あらかじめ設定した一定値（０．３）を乗じた距離を作業可能範囲とすると、９０＊０．２＊２＝３６ｃｍ以内の距離に存在する候補位置同士を１つにまとめることができる。よって、前記候補位置Ｐ１とＰ２を１つにまとめることができる。
【０１９９】
新たな候補位置Ｐ４は、Ｐ１とＰ２の中点（３５，０，８０）となり、Ｐ４の作業確率は５０＋３０＝８０％となる。
【０２００】
《作用と効果》
以上のように、作業候補位置決定手段によって、把持物品検出手段により求められた人の把持物品や、棚の中の物品などから、調理台の上に物品が揃っていなくても作業場所となる可能性が高い候補位置を求めることができる。これにより、候補位置をより正確に求めることができるようになる。また、複数の候補位置をまとめることができ、候補位置をより効率的に求めることができるようになる。
【０２０１】
（実施の形態４）
《作業確率を求める》
図２６は、本発明の実施の形態４における機能ブロック図を示している。２６０１は、調理作業の手順を登録した調理手順データベースである。２６０２は、現在調理作業が前記調理手順データベース２６０１の中で現在行っている作業と、既に完了した作業を管理する、作業進捗管理手段である。４０９−２６は、現在の進捗状況と、作業手順データベースを参照して、複数の候補位置の中から、手順に拘わらずいつでも単独で行う作業の候補位置の確率を低くしたり、作業の可能性の無い候補位置を削除したりするように拡張した作業確率算出手段である。以下、それぞれの構成要素について説明する。
【０２０２】
《調理手順データベース》
調理手順データベース２６０１は、調理作業の手順を登録するものである。調理作業を細かい単位で見た個別の作業に分割する。個別の作業を、その作業に用いた物品リストによって表す。手順は、その個別作業の前に行われるべき別の個別作業を登録することによって示す。ただし、一番最初に行われる作業や、単独で行われる作業の場合には何も登録しない。図２７に登録される情報の例を示す。
【０２０３】
調理手順情報２７０１は、少なくとも個別作業のＩＤ２７０２、物品リスト２７０３、事前作業２７０４、作業実施のチェック２７０５の項目を持つ。ＩＤ２７０２は、作業の名称を登録しておく。物品リスト２７０３は、この個別作業を行うときに必要となる物品を全て登録しておく。
【０２０４】
事前作業２７０４は、この個別作業を行うとき事前に行われているべき個別作業のＩＤ２７０２を全て登録しておく。この例では、かき混ぜ作業を行うには、事前に玉葱を切る作業と人参を切る作業が行われていなければならないことを示している。玉葱を切るや、人参を切るは、一番最初に行われる作業であり、この以前に行っておくべき作業は無いので、事前作業２７０４は空欄とする。また、拭き掃除は、事前にも事後にも他の作業が必要ではないので、同様に事前作業２７０４は空欄とする。
【０２０５】
ここで、玉葱や人参などの食材は、特許文献４に示されるような方法によって検出し、履歴を管理する。
【０２０６】
作業実施のチェック２７０５は、この個別作業が行われたかどうかを登録する。作業進捗管理手段２６０２により作業が行われたとされたらチェック２７０５の項目に１を登録する。まだ行われていない作業のチェック２７０５の項目には０が登録されている。また、事前にも事後にも他の作業が必要ではない作業に対しては、チェック２７０５の項目は空欄とする。
【０２０７】
また、必要に応じて対応する作業履歴２７０６の項目を持つ。この個別作業がロボットアーム１０２を用いる作業である場合、物品リスト２７０３が、作業履歴データベース４０６の作業履歴１２０１に登録された物品リスト１２０３と同じであるものを登録しておく。ロボットアーム１０２を用いる作業でない場合は、空欄とする。
【０２０８】
《作業進捗管理手段》
作業進捗管理手段２６０２は、キッチンルーム１００に置かれた物品の位置情報などから、現在行っている作業と、既に完了した作業を求めるものである。検出履歴データベース４０４から物品の位置を取得し、調理手順データベース２６０１を参照して、調理手順情報２７０１の中から、物品リスト２７０３に登録された物品の全てが人の近くに存在しているものを抽出し、これを現在行っている作業とする。具体的な抽出方法は、前記作業候補位置決定手段４０８の処理フローにて示した方法と同様に行えば良い。そして、人または物品が移動したことを検出したら、この作業が完了したと判定して、チェック２７０５の項目に１を登録する。チェック２７０５の項目を参照することにより、この作業が既に完了したかどうかを確認できる。
【０２０９】
《作業確率算出手段》
作業確率算出手段４０９−２６は、作業確率を、作業の進捗状況を基に更新するように拡張したものである。
【０２１０】
前記作業進捗管理手段２６０２によって作業実施をチェックされた、前記調理手順データベース２６０１を参照する。一方、前記作業候補位置決定手段４０８によって求められた複数の候補位置を取得する。前記候補位置を求めるときに参照した、作業履歴データベース４０６の作業履歴１２０１に登録された物品リスト１２０３から、対応する調理手順情報２７０１を求める。
【０２１１】
ここで、得られた調理手順情報２７０１の事前作業２７０４が全て行われていなければ、この作業が行われる可能性は無いので、この候補位置の作業確率を０とする。その結果、この候補位置は削除される。
【０２１２】
また、得られた調理手順情報２７０１の事前作業２７０４が全て行われている候補位置と、事前作業２７０４が登録されていない候補位置が存在した場合、前者の候補位置の作業確率を高くし、後者の候補位置の作業確率を低くする。これは、事前の作業が必要ではなく、いつでも作業が行われるかもしれない作業より、事前の作業が完了して準備が整った状態にある作業の方が、実施される可能性が高いと判断できるためである。
【０２１３】
《確率算出のフロー》
図２８Ａに作業確率算出手段４０９−２６の処理フローを示す。システム全体の処理フロー中での処理タイミングについては後述する。
【０２１４】
まず、ステップＳ２８０１で、前記作業候補位置決定手段４０８によって求められた候補位置を順次取得する。次のステップＳ２８１３へ進む。
【０２１５】
ステップＳ２８１３で、前記候補位置は人の位置かどうかを調べる。人の位置であれば、ステップＳ２８１１へ進み、この候補位置の作業確率は変化しないこととする。そうでなければ、ステップＳ２８０２へ進む。
【０２１６】
ステップＳ２８０２で、前記候補位置に対応する作業履歴１２０１を取得する。これは、候補位置に存在する物品と、作業履歴データベース４０６の作業履歴１２０１に登録された物品リスト１２０３を比較することで得られる。次のステップＳ２８０３へ進む。
【０２１７】
ステップＳ２８０３で、前記作業履歴に対応する調理手順情報２７０１を取得する。これは、調理手順データベース２６０１の調理手順情報２７０１に登録された、対応する作業履歴２７０６の項目を参照することで得られる。次のステップＳ２８０４へ進む。
【０２１８】
ステップＳ２８０４で、前記調理手順情報２７０１に登録された事前作業２７０４を順次抽出する。次のステップＳ２８０５へ進む。
【０２１９】
ステップＳ２８０５で、前記事前作業が空欄であるかどうかを調べる。空欄であれば、次のステップＳ２８１０へ進む。事前作業が存在すれば次のステップＳ２８０６へ進む。
【０２２０】
ステップＳ２８０６で、前記事前作業に登録されていた作業が既に行われたかどうかを調べる。これは、対応する調理手順情報２７０１の作業実施のチェック２７０５の項目を確認することで得られる。１が登録されていれば行われた、０が登録されていれば行われていない。行われていなければ、この作業を行う準備ができていないということであるので、次のステップＳ２８０９へ進む。行われていれば、次のステップＳ２８０７へ進む。
【０２２１】
ステップＳ２８０７で、全ての事前作業を参照したかどうかを調べる。参照していれば、全ての事前作業は行われており、この作業を行う準備が整った状態にあるので、次のステップＳ２８０８へ進む。まだ全てを参照していなければ、ステップＳ２８０４へ進み、次の事前作業を参照する。
【０２２２】
ステップＳ２８０８で、全ての事前作業は行われており、この作業を行う準備が整った状態にあるので、この候補位置の確率を高くするように指定する。次のステップＳ２８１１へ進む。
【０２２３】
ステップＳ２８０９で、全ての事前作業が行われてはおらず、この作業を行う準備ができていないので、この候補位置の確率を０にするように指定する。次のステップＳ２８１１へ進む。
【０２２４】
ステップＳ２８１０で、事前の作業が必要ではなく、いつでも作業が行われるかもしれない作業であるので、この候補位置の確率を低くするように指定する。次のステップＳ２８１１へ進む。
【０２２５】
ステップＳ２８１１で、全ての候補位置を参照したかどうかを調べる。参照していれば、次のステップＳ１７１２へ進む。まだ全てを参照していなければ、ステップＳ２８０１へ進み、次の候補位置を取得する。
【０２２６】
ステップＳ２８１２で、各候補位置に指定された、「高くする」「低くする」「０にする」の情報を利用して作業確率を再計算する。まず、前記作業確率算出手段４０９に示した方法により各候補位置の作業確率を算出する。次に、「０にする」に指定された候補位置の作業確率を０にする。残った候補位置に対して、「高くする」に指定された候補位置の作業確率は、前記算出した作業確率より高くなるようにし、「低くする」に指定された候補位置の作業確率は、前記算出した作業確率より低くなるようにする。具体的には、例えば、「高くする」に指定された候補位置の作業確率は１割贈、「低くする」に指定された候補位置の作業確率は１割減とする。求めた結果を正規化して、再計算された作業確率とし、このフローを終了する。
【０２２７】
《作業進捗管理と確率算出のフローの具体例》
次に、具体例に基づいて作業進捗管理と確率算出の処理フローを説明する。図２８Ｂに、関連するデータベースの抜粋を示している。人検出履歴１１０１に人の位置が示されており、物品検出履歴１１０５にキッチンルーム１００内の物品の位置が示されており、作業履歴１２０１に、現在登録されている作業が示されており、調理手順情報２７０１に、現在登録されている調理手順が示されている。ここで、玉葱はまだ切られていない状態で前記物品検出履歴１１０５に登録された位置に置かれているものとする。
【０２２８】
作業進捗管理手段２６０２は、検出履歴データベース４０４と調理手順データベース２６０１から作業の進捗を確認する。人の近くには、調理手順情報２７０１の物品リストに登録されている物品の全てが存在してはいないので、完了した作業は現時点では無いことが分かる。
【０２２９】
そこで、作業確率算出のステップＳ２８０１で、作業候補位置決定手段４０８により求められる作業候補位置を取得する。図２８Ｂより、かき混ぜ作業候補位置Ｐ１（９０，０，８０）と拭き掃除作業候補位置Ｐ２（２４０，０，８０）と人の位置より求められるＰ３（１７０，０，８０）の３カ所であることが得られる。まず、候補位置Ｐ１から順番に処理する。
【０２３０】
ステップＳ２８１３で、候補位置Ｐ１は人の位置ではないので、ステップＳ２８０２へ進む。
【０２３１】
前記候補位置Ｐ１に対して、ステップＳ２８０２で、対応する作業履歴１２０１を取得する。図２８ＢのＩＤ＝「かき混ぜ」が得られる。
【０２３２】
前記作業履歴１２０１に対して、ステップＳ２８０３で、対応する調理手順情報２７０１を取得する。図２８ＢのＩＤ＝「かき混ぜ」が得られる。
【０２３３】
ステップＳ２８０４で、前記ＩＤ＝「かき混ぜ」である調理手順情報２７０１の事前作業を読み出す。
【０２３４】
ステップＳ２８０５で、前記調理手順情報２７０１の事前作業は「玉葱を切る」であり、空欄ではないので、Ｓ２８０６へ進む。
【０２３５】
ステップＳ２８０６で、ＩＤ＝「玉葱を切る」である調理手順情報２７０１のチェックの項目の値は「０」なので、作業はまだ行われてはいないので、ステップＳ２８０９へ進む。
【０２３６】
ステップＳ２８０９で、候補位置Ｐ１における作業確率を０にする。
【０２３７】
ステップＳ２８１１で、まだすべての候補位置を参照していないので、ステップＳ２８０１へ進んで処理を繰り返す。
【０２３８】
ステップＳ２８０１で、次に候補位置Ｐ２についての処理を行う。以降、前記同様に処理し、ステップＳ２８０５で、事前作業は空欄であるので、ステップＳ２８１０へ進む。
【０２３９】
ステップＳ２８１０で、候補位置Ｐ２における作業確率を低くする。
【０２４０】
同様に繰り返し、ステップＳ２８０１で、候補位置Ｐ３についての処理を行う。
【０２４１】
ステップＳ２８１３で、候補位置Ｐ３は人の位置なので、作業確率は変化しないこととし、ステップＳ２８１１へ進む。
【０２４２】
ステップＳ２８１１で、すべての候補位置を参照したので、ステップＳ２８１２へ進む。
【０２４３】
ステップＳ２８１２で、作業確率を算出する。ここで、人の位置の作業頻度は前記作業候補位置の最小値を採用すると２である。よって、それぞれの作業候補位置の作業確率の初期値は、６０％、２０％、２０％となる。作業進捗に応じてそれぞれの作業候補位置に指定された作業確率再計算のための情報より、候補位置Ｐ１の作業確率は０となる。候補位置Ｐ２の作業確率は、「低くする」を、例えば、１割減らすことにすると、当初２０％であった作業確率を１８％に更新する。候補位置Ｐ３の作業確率は変化せず２０％となる。正規化すると、最終的に、候補位置Ｐ２は約４７％、候補位置Ｐ３は約５３％となり、Ｐ１は候補位置ではなくなる。
【０２４４】
さらに、人が移動して、包丁で玉葱を切り、玉葱をフライパンの中に入れると、作業進捗管理手段２６０２は、調理手順データベース２６０１に登録されたＩＤ＝「玉葱を切る」である調理手順情報２７０１に該当する作業が完了したと判定し、チェックの項目を１に更新する。図２８Ｃに更新されたデータベースの情報を示している。そして、前記同様に作業確率算出の処理を行う。
【０２４５】
候補位置Ｐ１について、同様に処理していき、ステップＳ２８０６で、ＩＤ＝「玉葱を切る」である調理手順情報２７０１のチェックの項目の値は「１」なので、ステップＳ２８０７へ進む。
【０２４６】
ステップＳ２８０７で、ＩＤ＝「かき混ぜ」である調理手順情報２７０１の事前作業は「玉葱を切る」のみであるので、すべての事前作業を参照したので、ステップＳ２８０８へ進む。
【０２４７】
ステップＳ２８０８で、候補位置Ｐ１における作業確率を高くする。
【０２４８】
以降、同様に候補位置Ｐ２における作業確率を低くする、候補位置Ｐ３の作業確率は変化しない、ことが得られる。
【０２４９】
ステップＳ２８１２で、候補位置Ｐ１の作業確率は、「高くする」を、例えば、１割増やすことにすると、当初６０％であった作業確率を６６％に更新する。候補位置Ｐ２の作業確率は、「低くする」を、例えば、１割減らすことにすると、当初２０％であった作業確率を１８％に更新する。候補位置Ｐ３の作業確率は変化せず２０％となる。正規化すると、最終的に、候補位置Ｐ１は約６３％、候補位置Ｐ２は約１７％、候補位置Ｐ３は約１９％となる。
【０２５０】
《作用と効果》
以上のように、調理手順データベースに登録された調理の手順と、作業進捗管理手段によって求められる作業の進捗状況から、作業確率算出手段によってロボットアームによる作業の可能性を詳細に求めることができる。これにより、作業の可能性の無い候補位置を削除することができるなど、候補位置をより正確に絞り込むことができるようになり、アーム位置算出手段における待機位置を高精度に算出できる効果が得られる。
【０２５１】
（実施の形態５）
《ユーザが複数人の場合》
図２９は、本発明の実施の形態５における機能ブロック図を示している。属性管理データベース４０７の人属性情報１３０１に優先度３００１と身長３００２を追加する。優先度は、作業を行う可能性の度合いを示すものであり、この値が大きいほど、優先的にロボットアーム１０２を用いた作業を行いやすいように、ロボットアーム１０２の動作モード切替手段２１０２が考慮される。図３０に新たな項目を追加した人属性情報の例を示す。２９０１は、前記優先度を更新する属性管理手段である。４０８−２９は、キッチンルーム１００に複数の人が存在するとき、前記優先度が高い人に対して候補位置を決定するように拡張した作業候補位置決定手段である。以下、それぞれの構成要素について説明する。
【０２５２】
《属性管理手段》
属性管理手段２９０１は、前記入出力手段１８０１より作業開始の指示が入力されたことによりロボットアーム１０２により作業が行われたことを検知したとき、その作業を行った人の情報を検出履歴データベース４０４を参照して取得し、属性管理データベース４０７の人属性情報１３０１に登録されている優先度３００１の更新を行うものである。例えば、優先度３００１は作業の実施回数によって決定し、作業が行われたとき１だけ加算する。
【０２５３】
《作業候補位置決定手段》
作業候補位置決定手段４０８−２９は、キッチンルーム１００に置かれた物品の位置情報などから、ロボットアーム１０２による作業が行われる可能性のある場所に加え、検出履歴データベース４０４から人の位置を取得してこれを候補位置として出力するもので、複数の人が存在するとき、前記優先度３００１が高い人に対して、その位置を候補位置とするものである。また、前記優先度３００１があらかじめ設定した一定値より高い人の位置すべてを候補位置としても良い。また、前記優先度３００１が低い人に対しても、その位置を候補位置として、ただし、作業確率を低く設定するようにしても良い。
【０２５４】
《作用と効果》
以上のように、優先度を定義し、属性管理手段によって作業の実施回数に応じて更新することにより、作業候補位置決定手段が候補位置を適切に決定することができる。これにより、キッチンルーム１００に複数人が存在する場合にも、誰が作業を行うかを適切に判定し、ロボットアーム１０２の移動を制御することができるようになる。
【０２５５】
（実施の形態６）
《移動のモードを切り替える》
図２１は本発明の実施の形態６における機能ブロック図を示している。２１０１は、人が移動しているか、静止して作業をしているか、ロボットアーム１０２が作業中であるか否か、などの行動の状況を判定する状況判定手段。２１０２は、状況に応じてアーム本体の移動動作を切り替える動作モード切替手段である。４１１−２１は、移動動作モードに従って移動制御を変更するように拡張したアーム本体移動制御手段である。以下、それぞれの構成要素について説明する。
【０２５６】
《状況判定手段》
状況判定手段２１０１は、人やロボットアーム１０２の行動状況を判定するものである。人の行動状況とは、移動しているか静止しているかである。この場合、頭部や手先の動きは移動には含まない。ロボットアーム１０２の状況とは、作業中であるか否かである。これらは、検出履歴データベース４０４に登録された人検出履歴１１０１や、入出力手段１８０１から入力される指示、などから判定する。具体的な判定方法は後述する。
【０２５７】
まず、人の移動状態の判定について説明する。これは検出履歴データベース４０４に登録された人検出履歴１１０１を参照する。最新の位置１１０３とその１つ前の時刻１１０４の位置１１０３が異なれば、移動していると判定し、等しければ静止していると判定する。人検出履歴１１０１が、あらかじめ設定した一定距離より大きく変化したときのみ蓄積している場合、人検出履歴１１０１の最新の時刻１１０４と現在時刻とが異なれば、移動していると判定し、等しければ静止していると判定する。
【０２５８】
静止していた時の位置から、あらかじめ設定した一定距離（例えば３０センチメートル）より大きく移動したときのみ、移動したと判定結果を出力するようにしても良い。また、あらかじめ設定した一定時間（例えば５秒）より長く静止したときのみ、静止したと判定結果を出力するようにしても良い。
【０２５９】
ロボットアーム１０２の作業状態の判定について説明する。入出力手段１８０１から作業の開始指示が入力されたら作業中であると判定し、作業の完了指示が入力されたら作業中ではないと判定する。
【０２６０】
《動作モード切替手段》
動作モード切替手段２１０２は、アーム本体の移動動作を切り替えるものである。移動動作のモードは、前記アーム位置算出手段４１０により求められた待機位置へ移動する待機移動モードと、人の移動を追跡する追跡移動モードと、移動を行わない停止モードである。移動動作のモードは、入出力手段１８０１により人が指示して切り替える。または、状況判定手段２１０１により判定された状況に応じて切り替える。詳細は後述する。
【０２６１】
《アーム本体移動制御手段》
アーム本体移動制御手段４１１−２１は、動作モード切替手段２１０２により切り替えられた移動動作モードに従い、移動制御を変更する。待機移動モードの時には、前記アーム位置算出手段４１０から出力された待機位置へ移動するように、ロボットアーム１０２に移動指令を出力する。追跡移動モードの時には、前記検出履歴データベース４０４の人検出履歴１１０１に登録された人の位置１１０３へ移動するように、ロボットアーム１０２に移動指令を出力する。停止モードの時には、ロボットアーム１０２に移動しないように指令を出力する。ただし、ロボットアーム１０２を用いての移動しながらの作業、例えば、搬送機能の作業を行っているときにはこの限りではない。
【０２６２】
《動作モード切替のフロー》
図２２Ａに動作モード切替手段２１０２の処理フローを示す。システム全体の処理フロー中での処理タイミングについては後述する。
【０２６３】
まず、ステップＳ２２０１で、前記状況判定手段２１０１より状況の判定結果を取得する。ステップＳ２２０２へ進む。
【０２６４】
ステップＳ２２０２で、前記判定結果からロボットアーム１０２が作業中であるか否かを得る。作業中であれば、ロボットアーム１０２の本体の移動を行わないように、ステップＳ２２１０へ進み、停止モードに切り替えるようにする。また、作業中でなければステップＳ２２０３へ進む。
【０２６５】
ステップＳ２２０３で、前記判定結果から人が移動しているか、静止しているかを得る。移動していればステップＳ２２０６へ進み、静止していればステップＳ２２０４へ進む。
【０２６６】
ステップＳ２２０４で、検出履歴データベース４０４の人検出履歴１１０１に登録されている人の最新位置を取得し、前記作業候補位置決定手段４０８で決定された候補位置を取得する。人の位置と、候補位置が一致するかどうかを調べる。一致するならば、次のステップＳ２２０５へ進む。また、一致しなければ、この場所ですぐに作業を開始する可能性は低いので、次の作業に備えるために、ステップＳ２２０８へ進み、待機モードに切り替えるようにする。
【０２６７】
ステップＳ２２０５で、検出履歴データベース４０４の人検出履歴１１０１を参照して、人が現在の位置にどのくらいの時間だけ静止し続けているかを調べる。静止継続時間があらかじめ設定した一定時間（例えば３０秒）より長ければ、この場所で作業を開始する意志が無いと判定し、次の作業に備えるために、ステップＳ２２０８へ進み、待機モードに切り替えるようにする。また、短ければ、まだこれから作業を開始する可能性があるので、ステップＳ２２０９へ進み、追跡モードに切り替えるようにする。
【０２６８】
ステップＳ２２０６で、検出履歴データベース４０４の人検出履歴１１０１を参照し、人の移動方向を求める。これは、最新の位置１１０３とその１つ前の時刻１１０４の位置１１０３とを比較することで得られる。そして、求めた人の移動方向の先に、ロボットアーム１０２が存在するか否かを調べる。存在するならば、人がロボットアーム１０２に近づいてくるので、その場で待っていれば良いので、ステップＳ２２１０へ進み、停止モードに切り替えるようにする。また、人の移動方向と反対側にロボットアーム１０２が存在するならば、次のステップＳ２２０７へ進む。
【０２６９】
ステップＳ２２０７で、前記作業候補位置決定手段４０８で決定された候補位置を参照し、前記人の移動方向の先に、候補位置のいずれかが存在するか否かを調べる。存在するならば、その候補位置にて作業を開始する可能性があるので、ステップＳ２２０９へ進み、追跡モードに切り替えるようにする。また、存在しないならば、人の移動方向の先で作業を開始する可能性は低いので、ステップＳ２２１０へ進み、停止モードに切り替えるようにする。
【０２７０】
ステップＳ２２０８で、移動動作モードを待機モードに切り替え、このフローを終了する。
【０２７１】
ステップＳ２２０９で、移動動作モードを追跡モードに切り替え、このフローを終了する。
【０２７２】
ステップＳ２２１０で、移動動作モードを停止モードに切り替え、このフローを終了する。
【０２７３】
《動作モード切替のフローの具体例》
次に、具体例に基づいて動作モード切替手段の処理フローを説明する。
【０２７４】
入出力手段１８０１によりロボットアーム１０２に対して作業開始の指示が与えられていたら、ロボットアーム１０２の作業状態は作業中であると判定され、ステップＳ２２０２からステップＳ２２１０へ進み、停止モードに切り替える。以降、入出力手段１８０１によりロボットアーム１０２に対して作業完了の指示が与えられるまで停止モードを継続する。
【０２７５】
入出力手段１８０１によりロボットアーム１０２に対して作業完了の指示が与えられたら、ロボットアーム１０２は作業中ではないので、ステップＳ２２０２からステップＳ２２０３へ進む。
【０２７６】
ステップＳ２２０３で、人が移動しているかどうかを調べる。図２２Ｂにキッチンルーム１００内の人とロボットアーム１０２と候補位置の関係を示す。図２２Ｂ（ａ）は、Ｐ１とＰ２が候補位置で、ＲＡがロボットアーム１０２の位置で、ＰＭが人の位置で矢印方向に移動している状態にあることを示している。この場合、人は移動しているので、ステップＳ２２０６へ進む。
【０２７７】
ステップＳ２２０６で、ロボットアーム１０２の位置ＲＡは、人の移動方向にあるので、ステップＳ２２１０へ進む。このときは、停止モードに切り替える。
【０２７８】
また、図２２Ｂ（ｂ）は、図２２Ｂ（ａ）の状態から、人がロボットアーム１０２の位置ＲＡを通り過ぎた後の状態を示している。この場合も、人は移動しているので、ステップＳ２２０６へ進む。
【０２７９】
ステップＳ２２０６で、ロボットアーム１０２の位置ＲＡは、人の移動方向に無いので、ステップＳ２２０７へ進む。
【０２８０】
ステップＳ２２０７で、人の移動方向に、候補位置Ｐ１があるので、ステップＳ２２０９へ進む。このときは、追跡移動モードに切り替え、ロボットアーム１０２は人の移動を追跡するように移動する。ここで、図２２Ｂ（ｃ）に示すように、図の左側の候補位置Ｐ１が無い場合には、人の移動方向に候補位置が無いので、ステップＳ２２１０へ進む。このときは、停止モードに切り替える。
【０２８１】
また、図２２Ｂ（ｄ）は、図２２Ｂ（ｃ）の状態から、人が移動を止めた状態を示している。この場合は、ステップＳ２２０３で、人は移動していないので、ステップＳ２２０４へ進む。
【０２８２】
ステップＳ２２０４で、人の位置も候補位置とするとステップＳ２２０５へ進む。
【０２８３】
ステップＳ２２０５で、人が移動を止めて一定時間（例えば３０秒）が経過するまでは、ステップＳ２２０９へ進み、移動追跡モードに切り替え、ロボットアーム１０２は人の位置へ移動する。人の位置まで到着したら、そこで停止する。また、一定時間が経過したら、ステップＳ２２０８へ進み、待機移動モードに切り替え、前記アーム位置算出手段４１０により求められる待機位置へ移動する。これは、一定時間が経過したら、この場所でこれから作業を開始する意志がないと判定し、次の作業に備えるためである。
【０２８４】
《作用と効果》
以上のように、状況判定手段によって、人やロボットアームの行動状況を判定し、動作モード切替手段によって、前記行動状況や人・物品の位置関係などからロボットアーム本体の移動動作のモードを切り替えることができる。これにより、ロボットアーム本体の無駄な移動を低減でき、適切に移動できるようになる。
【０２８５】
（実施の形態７）
《アーム先端部を制御する》
図３１は本発明の実施の形態７における機能ブロック図を示している。３１０１は、アーム先端部移動制御手段である。以下、構成要素について説明する。
【０２８６】
《アーム先端部移動制御手段》
アーム先端部移動制御手段３１０１は、前記入出力手段１８０１から作業を行う場所の指示が与えられた場合、ロボットアーム１０２にアーム先端部をその場所へ移動する指令を出力するものである。また、ロボットアーム１０２の本体が移動するときには、アーム先端部をあらかじめ設定した定位置に移動する。図２Ｂに示した２０１がアームの先端部である。アーム先端部２０１は関節部２０２を動かすことにより指定の位置に移動させることができる。前記定位置は、アーム本体の移動時に他の物品などに接触しないように考慮したものであり、例えば、２０３に示した位置である。
【０２８７】
制御手段４０５は、アーム本体が移動しているときにはアーム先端部は移動しないように制御し、アーム先端部が移動しているときにはアーム本体は移動しないように制御する。ただし、ロボットアーム１０２を用いての作業、例えば、搬送機能の作業を行っているときにはこの限りではない。
【０２８８】
また、前記属性管理データベース４０７の人属性情報１３０１に登録されている身長３００２を参照して、作業する人に合わせた位置にアーム先端部を移動するようにすることができる。
【０２８９】
《指示とアーム移動のフロー》
図１９Ａに作業を始めるときの入出力手段による指示と、それに対するロボットアームの移動の処理フローを示す。これら全体の動作は制御手段４０５が制御している。ロボットアーム１０２を用いた作業を始めるには、通常、ユーザが場所を指定し、アーム先端部が移動し、ユーザが機能を選択して作業の準備をし、作業を開始する、という流れになる。この流れに沿ってフローを説明する。
【０２９０】
まず、ステップ１９０１で、入出力手段１８０１が、アーム先端部が作業する場所の指示を受け付ける。次のステップＳ１９０２へ進む。
【０２９１】
ステップＳ１９０２で、ロボットアーム１０２本体が作業するための場所にいるかどうかを調べる。いなければステップＳ１９０６へ進み、いればステップＳ１９０３へ進む。
【０２９２】
ステップＳ１９０３で、アーム先端部を前記指示された場所へ移動する。これはアーム先端部移動制御手段３１０１が行う。次のステップＳ１９０４へ進む。
【０２９３】
ステップＳ１９０４で、入出力手段１８０１が、ロボットアーム１０２が行う機能の指示を受け付ける。次のステップＳ１９０５へ進む。
【０２９４】
ステップＳ１９０５で、入出力手段１８０１が、ロボットアーム１０２の作業開始の指示を受け付ける。ロボットアーム１０２が作業を始めたら、このフローを終了する。
【０２９５】
ステップＳ１９０６で、アーム本体を作業する場所に移動する。これはアーム本体移動制御手段４１１が行う。ステップＳ１９０２へ進み、以下同様に繰り返す。
【０２９６】
次に、図１９Ｂに作業を終えるときの入出力手段による指示と、それに対するロボットアームの移動の処理フローを示す。これら全体の動作は制御手段４０５が制御している。ロボットアーム１０２を用いた作業を終えるには、作業を終了し、ユーザが片付け作業をし、アーム先端部が定位置に移動する、という流れになる。この流れに沿ってフローを説明する。
【０２９７】
まず、ステップＳ１９０７で、入出力手段１８０１が、ロボットアーム１０２の作業終了の指示を受け付ける。次のステップＳ１９０８へ進む。
【０２９８】
ステップＳ１９０８で、アーム先端部の移動を停止する。次のステップＳ１９０９へ進む。
【０２９９】
ステップＳ１９０９で、ユーザの片付け作業が終わったかどうかを調べる。この片付け作業とは、例えば、かき混ぜ機能の後で、使用していたレードルを取り外す作業のことである。この判定も、入出力手段１８０１により行っても良い。片付け作業が終了していなければステップＳ１９０８へ進み、以下同様に繰り返し、終了していればステップＳ１９１０へ進む。
【０３００】
ステップＳ１９１０で、入出力手段１８０１が、ロボットアーム１０２の作業完了の指示を受け付ける。作業完了とは、前記片付け作業までが終わったことを意味する。次のステップＳ１９１１へ進む。
【０３０１】
ステップＳ１９１１で、アーム先端部を定位置へ移動する。これはアーム先端部移動制御手段３１０１が行う。アーム先端部が定位置に移動したら、このフローを終了する。
【０３０２】
《作用と効果》
以上のように、アーム先端部移動制御手段によって、人が指示した場所にロボットアーム１０２の先端部を移動することができる。これにより、ロボットアーム１０２本体が人の目の前に到着した後、アーム先端部にレードルを装着する等の準備作業を、便利に行うことができるようになる。
【０３０３】
《全体処理のフロー》
図３２Ａ、図３２Ｂ、図３２Ｃ、図３２Ｄに、ここまでに示した各構成要素を含んだ全体の処理フローを示す。ただし、各構成要素の詳細や具体例は前記各処理の説明に記載している。全体の処理の制御は制御手段４０５が行う。
【０３０４】
ステップＳ３２０１で、キッチンルーム１００内の物品の検出を行う。これは物品検出手段４０３が行う。検出結果を検出履歴データベース４０４の物品検出履歴１１０５に登録したら、次のステップＳ３２０２へ進む。
【０３０５】
ステップＳ３２０２で、キッチンルーム１００内の人の検出を行う。これは人検出手段４０２が行う。検出結果を検出履歴データベース４０４の人検出履歴１１０１に登録したら、次のステップＳ３２０３へ進む。
【０３０６】
ステップＳ３２０３で、人がキッチンルーム１００内にいるかどうかを調べる。これは、検出履歴データベース４０４に登録されている人検出履歴１１０１を参照し、その位置１１０３がキッチンルーム１００内か否かにより判定する。キッチンルーム１００内にいなければステップＳ３２１６へ進み、いればステップＳ３２０４へ進む。
【０３０７】
ステップＳ３２０４で、人の把持物品を検出する。これは把持物品検出手段２３０１が行う。検出結果を検出履歴データベース４０４の物品検出履歴１１０５に登録したら、次のステップＳ３２０５へ進む。
【０３０８】
ステップＳ３２０５で、入出力手段１８０１によって指示が入力されたかどうかを調べる。入力されていなければステップＳ３２０６へ進む。入力されていれば、ステップＳ３２０７へ進む。
【０３０９】
ステップＳ３２０６で、現在は作業モード、つまり、ロボットアーム１０２が作業中であるかどうかを調べる。作業モードであればステップＳ３２０１へ進み、処理を繰り返す。作業モードでなければステップＳ３２１０へ進む。
【０３１０】
ステップＳ３２０７で、入出力手段１８０１によって入力された指示を取得し、ステップＳ３２０８へ進む。
【０３１１】
ステップＳ３２０８で、前記指示内容を調べる。指示が「作業の完了」または「システムのメンテナンス」であれば、ステップＳ３２０９へ進む。そうでなければステップＳ３２１１へ進む。
【０３１２】
ステップＳ３２０９は、以下のステップＳ３２２１からステップＳ３２２４のステップからなる。
【０３１３】
ステップＳ３２２１で、前記指示内容を調べ、指示が「作業の完了」であれば、ステップＳ３２２２へ進む。そうでなければステップＳ３２２３へ進む。
【０３１４】
ステップＳ３２２２で、アーム先端部移動制御手段１８０２によりロボットアーム１０２の先端部をあらかじめ設定した定位置へ移動する。次のステップＳ３２１０へ進む。
【０３１５】
ステップＳ３２２３で、前記指示内容は「システムのメンテナンス」であることが分かるので、ステップＳ３２２４で、入出力手段１８０１によってデータベースの内容の更新などを行う。次のステップＳ３２１０へ進む。
【０３１６】
ステップＳ３２１０は、以下のステップＳ３２３１からステップＳ３２４１のステップからなる。
【０３１７】
ステップＳ３２３１で、前記状況判定手段２１０１によって人やロボットアーム１０２の行動状況を判定し、ステップＳ３２３２へ進む。
【０３１８】
ステップＳ３２３２で、前記動作モード切替手段２１０２で、ロボットアーム１０２の本体の移動動作を切り替える。詳細は、前記動作モード切替手段の説明の通り。次のステップＳ３２３３へ進む。
【０３１９】
ステップＳ３２３３で、現在のモードを調べ、待機移動モードであればステップＳ３２３４へ進み、追跡移動モードであればステップＳ３２４０へ進み、停止モードであればステップＳ３２４１へ進む。
【０３２０】
ステップＳ３２３４で、前記作業候補位置決定手段４０８によって作業候補位置を求める。詳細は、前記作業候補位置決定手段４０８の説明の通り。次のステップＳ３２３５へ進む。
【０３２１】
ステップＳ３２３５で、前記作業候補位置決定手段４０８によって求められた作業候補位置が１カ所以上存在するかを調べる。存在すればステップＳ３２３６へ進み、存在しなければステップＳ３２４０へ進む。
【０３２２】
ステップＳ３２３６で、前記作業進捗管理手段２６０２によって現在行っている作業や既に完了した作業を求める。詳細は、前記作業進捗管理手段２６０２の説明の通り。次のステップＳ３２３７へ進む。
【０３２３】
ステップＳ３２３７で、前記作業確率算出手段４０９によって、前記各作業候補位置における作業確率を算出する。詳細は、前記作業確率算出手段４０９の説明の通り。次のステップＳ３２３８へ進む。
【０３２４】
ステップＳ３２３８で、前記アーム位置算出手段４１０によって、ロボットアーム１０２の最適な待機位置を求める。詳細は、前記アーム位置算出手段４１０の説明の通り。次のステップＳ３２３９へ進む。
【０３２５】
ステップＳ３２３９で、前記アーム本体移動制御手段４１１によって、ロボットアーム１０２本体を前記待機位置へ移動する。次のステップＳ３２１４へ進む。
【０３２６】
ステップＳ３２４０で、前記アーム本体移動制御手段４１１によって、ロボットアーム１０２本体を人の位置へ移動する。次のステップＳ３２１４へ進む。
【０３２７】
ステップＳ３２４１で、前記アーム本体移動制御手段４１１によって、ロボットアーム１０２本体移動を停止する。次のステップＳ３２１４へ進む。
【０３２８】
ステップＳ３２１１で、前記指示内容を調べる。指示が「作業の場所」または「機能の選択」または「作業の開始」または「作業の終了」であれば、ステップＳ３２１２へ進む。そうでなければステップＳ３２１５へ進む。
【０３２９】
ステップＳ３２１２は、以下のステップＳ３２５１からステップＳ３２６０のステップからなる。
【０３３０】
ステップＳ３２５１で、前記指示内容を調べる。指示が「作業の場所」であれば、ステップＳ３２５２へ進む。そうでなければステップＳ３２５４へ進む。
【０３３１】
ステップＳ３２５２で、前記アーム本体移動制御手段４１１によって、ロボットアーム１０２本体を前記指示の作業場所へ移動する。次のステップＳ３２５３へ進む。
【０３３２】
ステップＳ３２５３で、前記アーム先端部移動制御手段１８０２によって、ロボットアーム１０２の先端部を前記指示の作業場所へ移動する。次のステップＳ３２１３へ進む。
【０３３３】
ステップＳ３２５４で、前記指示内容を調べる。指示が「機能の選択」であれば、ステップＳ３２５５へ進む。そうでなければステップＳ３２５６へ進む。
【０３３４】
ステップＳ３２５５で、前記指示で選択された機能を取得する。次のステップＳ３２１３へ進む。
【０３３５】
ステップＳ３２５６で、前記指示内容を調べる。指示が「作業の開始」であれば、ステップＳ３２５７へ進む。そうでなければステップＳ３２５９へ進む。
【０３３６】
ステップＳ３２５７で、前記指示で選択された機能の作業を開始し、ステップＳ３２５８へ進む。
【０３３７】
ステップＳ３２５８で、前記作業履歴更新手段１８０３によって作業履歴データベース４０６を更新し、前記属性管理手段２９０１によって属性管理データベース４０７を更新する。詳細は、前記作業履歴更新手段１８０３と前記属性管理手段２９０１の説明の通り。次のステップＳ３２１３へ進む。
【０３３８】
ステップＳ３２５９で、前記指示内容は「作業の終了」であることが分かるので、ステップＳ３２６０で、ロボットアーム１０２が実行していた機能を終了する。次のステップＳ３２１３へ進む。
【０３３９】
ステップＳ３２１３で、作業モードに切り替え、ステップＳ３２１４へ進む。
【０３４０】
ステップＳ３２１４で、最初のステップＳ３２０１に戻り、処理を繰り返す。
【０３４１】
ステップＳ３２１５で、前記指示内容を調べ、指示が「ロボットアームの動作停止」であれば、ステップＳ３２１６へ進み、そうでなければステップＳ３２１４へ進む。
【０３４２】
ステップＳ３２１６で、前記アーム本体移動制御手段４１１によって、ロボットアーム１０２本体をあらかじめ設定した定位置へ移動し、終了する。
【産業上の利用可能性】
【０３４３】
本発明にかかる家事支援ロボットアームの移動制御システムは、検出した物品の位置から作業の候補位置や作業確率を求め、さらに、アーム位置算出手段によって、検出した人の位置や人とロボットアームの移動速度から作業確率を考慮した待ち時間の最大値を最小化する待機位置を求めることができるようになることにより、どこで作業を行う場合でも待ち時間が極端に長くなることが無く、かつ、作業を行う可能性の高い所での待ち時間を短くできるので、貴重な時間を無駄にすることなく作業を行うことができるという効果を有し、家庭内において家事の支援を行うロボットアームの移動を制御するシステム等として有用である。また、家庭内に限らず、飲食店の厨房等における作業支援ロボットアームの移動制御システムの用途にも応用できる。
【図面の簡単な説明】
【０３４４】
【図１】本発明のシステム構成の一例を示す図
【図２Ａ】本発明のロボットアームの配置の一例を示す断面図
【図２Ｂ】本発明のロボットアームの先端部を説明する図
【図３】本発明のロボットアームによる自動かき混ぜ機能のイメージを表す図
【図４】本発明の実施の形態１における機能ブロック図
【図５Ａ】本発明の実施の形態１における人検出手段における画像センサの説明図
【図５Ｂ】本発明の実施の形態１における人検出手段における処理画像の例を示す図
【図６】本発明の実施の形態１における人検出手段における超音波センサの説明図
【図７】本発明の実施の形態１における人検出手段における床圧力センサの説明図
【図８】本発明の実施の形態１における物品検出手段におけるテンプレート画像の例を示す図
【図９】本発明の実施の形態１における物品検出手段における無線ＩＣタグセンサの説明図
【図１０】本発明の実施の形態１における実施の形態１における物品検出手段における重量センサの説明図
【図１１】本発明の実施の形態１における実施の形態１における検出履歴データベースに蓄積される情報の例を示す図
【図１２】本発明の実施の形態１における作業履歴データベースに蓄積される情報の例を示す図
【図１３】本発明の実施の形態１における属性情報データベースに蓄積される情報の例を示す図
【図１４】本発明の実施の形態１における作業候補位置決定手段の処理フローを説明する図
【図１５】本発明の実施の形態１における作業確率算出手段における処理の例を示す図
【図１６】本発明の実施の形態１におけるアーム位置算出手段における処理の例を示す図
【図１７Ａ】本発明の実施の形態１における制御手段が行う全体の処理のフローを説明する図
【図１７Ｂ】本発明の実施の形態１の具体例における人や物品の様子を示す図
【図１７Ｃ】本発明の実施の形態１の具体例におけるデータベースの抜粋を示す図
【図１７Ｄ】本発明の実施の形態１具体例における待ち時間の計算結果を示す図
【図１８】本発明の実施の形態２における機能ブロック図
【図１９Ａ】本発明の実施の形態７におけるロボットアームの作業を始めるときの処理フローを説明する図
【図１９Ｂ】本発明の実施の形態７におけるロボットアームの作業を終えるときの処理フローを説明する図
【図２０Ａ】本発明の実施の形態２における作業履歴更新手段の処理フローを説明する図
【図２０Ｂ】本発明の実施の形態２の具体例におけるデータベースの抜粋を示す図
【図２０Ｃ】本発明の実施の形態２の具体例におけるデータベースの抜粋を示す図
【図２１】本発明の実施の形態６における機能ブロック図
【図２２Ａ】本発明の実施の形態６における動作モード切替手段の処理フローを説明する図
【図２２Ｂ】本発明の実施の形態６の具体例におけるキッチンルーム内の様子を示す図
【図２３】本発明の実施の形態３における機能ブロック図
【図２４Ａ】本発明の実施の形態３における物品検出履歴の例を示す図
【図２４Ｂ】本発明の実施の形態３におけるロボットアーム属性情報の例を示す図
【図２５Ａ】本発明の実施の形態３の具体例におけるキッチンルーム内の様子を示す図
【図２５Ｂ】本発明の実施の形態３の具体例におけるデータベースの抜粋を示す図
【図２５Ｃ】本発明の実施の形態３の具体例におけるデータベースの抜粋を示す図
【図２６】本発明の実施の形態４における機能ブロック図
【図２７】本発明の実施の形態４における調理手順データベースに蓄積される情報の例を示す図
【図２８Ａ】本発明の実施の形態４における作業確率算出手段の処理フローを説明する図
【図２８Ｂ】本発明の実施の形態４の具体例におけるデータベースの抜粋を示す図
【図２８Ｃ】本発明の実施の形態４の具体例におけるデータベースの抜粋を示す図
【図２９】本発明の実施の形態５における機能ブロック図
【図３０】本発明の実施の形態５における人属性情報の例を示す図
【図３１】本発明の実施の形態７における機能ブロック図
【図３２Ａ】本発明の全体の処理のフローを説明する図
【図３２Ｂ】本発明の全体の処理のフローを説明する図
【図３２Ｃ】本発明の全体の処理のフローを説明する図
【図３２Ｄ】本発明の全体の処理のフローを説明する図
【図３３】従来の移動制御システムの構成図
【符号の説明】
【０３４５】
１００    キッチンルーム
１０１    システムキッチン
１０２    家事支援ロボットアーム
１０３    レール
１０４    センサ
１０５    物品
１０６    ユーザ
４０１    時刻取得手段
４０２    人検出手段
４０３    物品検出手段
４０４    検出履歴データベース
４０５    制御手段
４０６    作業履歴データベース
４０７    属性管理データベース
４０８    作業候補位置決定手段
４０９    作業確率算出手段
４１０    アーム位置算出手段
４１１    アーム本体移動制御手段
１８０１    入出力手段
１８０３    作業履歴更新手段
２１０１    状況判定手段
２１０２    動作モード切替手段
２３０１    把持物品検出手段
２６０１    調理手順データベース
２６０２    作業進捗管理手段
２９０１    属性管理手段
３１０１    アーム先端部移動制御手段
【図１】
2008296308.tif 000015
【図２Ａ】
2008296308.tif 000016
【図２Ｂ】
2008296308.tif 000017
【図３】
2008296308.tif 000018
【図４】
2008296308.tif 000019
【図５Ａ】
2008296308.tif 000020
【図５Ｂ】
2008296308.tif 000021
【図６】
2008296308.tif 000022
【図７】
2008296308.tif 000023
【図８】
2008296308.tif 000024
【図９】
2008296308.tif 000025
【図１０】
2008296308.tif 000026
【図１１】
2008296308.tif 000027
【図１２】
2008296308.tif 000028
【図１３】
2008296308.tif 000029
【図１４】
2008296308.tif 000030
【図１５】
2008296308.tif 000031
【図１６】
2008296308.tif 000032
【図１７Ａ】
2008296308.tif 000033
【図１７Ｂ】
2008296308.tif 000034
【図１７Ｃ】
2008296308.tif 000035
【図１７Ｄ】
2008296308.tif 000036
【図１８】
2008296308.tif 000037
【図１９Ａ】
2008296308.tif 000038
【図１９Ｂ】
2008296308.tif 000039
【図２０Ａ】
2008296308.tif 000040
【図２０Ｂ】
2008296308.tif 000041
【図２０Ｃ】
2008296308.tif 000042
【図２１】
2008296308.tif 000043
【図２２Ａ】
2008296308.tif 000044
【図２２Ｂ】
2008296308.tif 000045
【図２３】
2008296308.tif 000046
【図２４Ａ】
2008296308.tif 000047
【図２４Ｂ】
2008296308.tif 000048
【図２５Ａ】
2008296308.tif 000049
【図２５Ｂ】
2008296308.tif 000050
【図２５Ｃ】
2008296308.tif 000051
【図２６】
2008296308.tif 000052
【図２７】
2008296308.tif 000053
【図２８Ａ】
2008296308.tif 000054
【図２８Ｂ】
2008296308.tif 000055
【図２８Ｃ】
2008296308.tif 000056
【図２９】
2008296308.tif 000057
【図３０】
2008296308.tif 000058
【図３１】
2008296308.tif 000059
【図３２Ａ】
2008296308.tif 000060
【図３２Ｂ】
2008296308.tif 000061
【図３２Ｃ】
2008296308.tif 000062
【図３２Ｄ】
2008296308.tif 000063
【図３３】
2008296308.tif 000064