IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電気株式会社の特許一覧

特許7687389動作計画装置、動作計画方法及びプログラム
<>
  • 特許-動作計画装置、動作計画方法及びプログラム 図1
  • 特許-動作計画装置、動作計画方法及びプログラム 図2
  • 特許-動作計画装置、動作計画方法及びプログラム 図3
  • 特許-動作計画装置、動作計画方法及びプログラム 図4
  • 特許-動作計画装置、動作計画方法及びプログラム 図5
  • 特許-動作計画装置、動作計画方法及びプログラム 図6
  • 特許-動作計画装置、動作計画方法及びプログラム 図7
  • 特許-動作計画装置、動作計画方法及びプログラム 図8
  • 特許-動作計画装置、動作計画方法及びプログラム 図9
  • 特許-動作計画装置、動作計画方法及びプログラム 図10
  • 特許-動作計画装置、動作計画方法及びプログラム 図11
  • 特許-動作計画装置、動作計画方法及びプログラム 図12
  • 特許-動作計画装置、動作計画方法及びプログラム 図13
  • 特許-動作計画装置、動作計画方法及びプログラム 図14
  • 特許-動作計画装置、動作計画方法及びプログラム 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-05-26
(45)【発行日】2025-06-03
(54)【発明の名称】動作計画装置、動作計画方法及びプログラム
(51)【国際特許分類】
   B25J 5/00 20060101AFI20250527BHJP
   B25J 13/00 20060101ALI20250527BHJP
   B25J 13/06 20060101ALI20250527BHJP
【FI】
B25J5/00 E
B25J5/00 A
B25J13/00 Z
B25J13/06
【請求項の数】 9
(21)【出願番号】P 2023522009
(86)(22)【出願日】2021-05-17
(86)【国際出願番号】 JP2021018620
(87)【国際公開番号】W WO2022244060
(87)【国際公開日】2022-11-24
【審査請求日】2023-11-10
【前置審査】
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100107331
【弁理士】
【氏名又は名称】中村 聡延
(72)【発明者】
【氏名】佐藤 峰斗
(72)【発明者】
【氏名】向後 卓磨
(72)【発明者】
【氏名】小川 雅嗣
【審査官】杉山 悟史
(56)【参考文献】
【文献】特開2020-011320(JP,A)
【文献】特開2006-000954(JP,A)
【文献】特許第6458052(JP,B2)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00 ~ 21/02
(57)【特許請求の範囲】
【請求項1】
対象物を扱うマニピュレータと自走式の本体とを有するロボットが作業する作業空間における状態を設定する状態設定手段と、
前記状態と、前記本体の移動及び前記マニピュレータの動作に関する制約条件と、前記ロボットのダイナミクスに基づく評価関数と、
に基づいて、前記本体の移動及び前記マニピュレータの動作に関する動作計画を決定する動作計画手段と、
を有し、
前記動作計画手段は、前記ロボットが作業を行うエリアとして指定された指定エリア内の基準点まで前記本体を移動させる第1動作計画を決定し、前記ロボットが前記基準点に到達後の前記状態と前記制約条件と前記評価関数とに基づく前記動作計画である第2動作計画を前記ロボットが前記基準点に到達後に決定する、
動作計画装置。
【請求項2】
前記動作計画手段は、前記対象物の位置に基づき、前記基準点を設定する、請求項に記載の動作計画装置。
【請求項3】
前記動作計画手段は、前記対象物の位置と、前記本体の移動誤差と、前記マニピュレータのリーチ範囲とに基づき、前記基準点を決定する、請求項に記載の動作計画装置。
【請求項4】
前記状態設定手段は、前記第1動作計画に基づき前記本体が前記基準点に到達した場合に、前記ロボット及び前記対象物が少なくとも存在する状態設定空間を決定し、当該状態設定空間内での前記状態を設定する、請求項1~3のいずれか一項に記載の動作計画装置。
【請求項5】
対象物を扱うマニピュレータと自走式の本体とを有するロボットが作業するエリアの指定を受け付けるエリア指定手段と、
前記エリア内の対象物に関する指定を受け付ける対象物指定手段と、
前記エリアの指定及び前記対象物に関する指定に基づき、前記本体の移動及び前記マニピュレータの動作に関する動作計画を決定する動作計画手段と、
を有し、
前記動作計画手段は、前記ロボットが作業を行うエリアとして指定された指定エリア内の基準点まで前記本体を移動させる第1動作計画を決定し、前記ロボットが前記基準点に到達後の前記動作計画である第2動作計画を前記ロボットが前記基準点に到達後に決定する、
動作計画装置。
【請求項6】
コンピュータが、
対象物を扱うマニピュレータと自走式の本体とを有するロボットが作業する作業空間における状態を設定し、
前記状態と、前記本体の移動及び前記マニピュレータの動作に関する制約条件と、前記ロボットのダイナミクスに基づく評価関数と、
に基づいて、前記本体の移動及び前記マニピュレータの動作に関する動作計画を決定し、
前記動作計画の決定では、前記ロボットが作業を行うエリアとして指定された指定エリア内の基準点まで前記本体を移動させる第1動作計画を決定し、前記ロボットが前記基準点に到達後の前記状態と前記制約条件と前記評価関数とに基づく前記動作計画である第2動作計画を前記ロボットが前記基準点に到達後に決定する、
動作計画方法。
【請求項7】
対象物を扱うマニピュレータと自走式の本体とを有するロボットが作業する作業空間における状態を設定し、
前記状態と、前記本体の移動及び前記マニピュレータの動作に関する制約条件と、前記ロボットのダイナミクスに基づく評価関数と、
に基づいて、前記本体の移動及び前記マニピュレータの動作に関する動作計画を決定する処理をコンピュータに実行させ、
前記動作計画の決定では、前記ロボットが作業を行うエリアとして指定された指定エリア内の基準点まで前記本体を移動させる第1動作計画を決定し、前記ロボットが前記基準点に到達後の前記状態と前記制約条件と前記評価関数とに基づく前記動作計画である第2動作計画を前記ロボットが前記基準点に到達後に決定する、プログラム。
【請求項8】
コンピュータが、
対象物を扱うマニピュレータと自走式の本体とを有するロボットが作業するエリアの指定を受け付け、
前記エリア内の対象物に関する指定を受け付け
前記エリアの指定及び前記対象物に関する指定に基づき、前記本体の移動及び前記マニピュレータの動作に関する動作計画を決定
前記動作計画の決定では、前記ロボットが作業を行うエリアとして指定された指定エリア内の基準点まで前記本体を移動させる第1動作計画を決定し、前記ロボットが前記基準点に到達後の前記動作計画である第2動作計画を前記ロボットが前記基準点に到達後に決定する、動作計画方法。
【請求項9】
対象物を扱うマニピュレータと自走式の本体とを有するロボットが作業するエリアの指定を受け付け、
前記エリア内の対象物に関する指定を受け付け
前記エリアの指定及び前記対象物に関する指定に基づき、前記本体の移動及び前記マニピュレータの動作に関する動作計画を決定する処理をコンピュータに実行させ
前記動作計画の決定では、前記ロボットが作業を行うエリアとして指定された指定エリア内の基準点まで前記本体を移動させる第1動作計画を決定し、前記ロボットが前記基準点に到達後の前記動作計画である第2動作計画を前記ロボットが前記基準点に到達後に決定する、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ロボットの動作計画を行う動作計画装置、動作計画方法及び記憶媒体の技術分野に関する。
【背景技術】
【0002】
移動型の作業ロボットが提案されている。例えば、特許文献1には、台車に設けられたロボットアームの動作軸と台車の動作軸とが協働して動作し、ロボットアームの各動作軸と台車の各動作軸を制御する制御ユニットが開示されている。
【先行技術文献】
【特許文献】
【0003】
【文献】特許第6458052号
【発明の概要】
【発明が解決しようとする課題】
【0004】
マニピュレータを有する移動型ロボットでは、ロボット本体の移動とマニピュレータの動作は互いに影響があり、これらを同時に計画することが難しい。一方、ロボット本体の移動とマニピュレータの動作の夫々を独立に計画した場合には、非効率な計画が算出される場合がある。
【0005】
本開示の目的の1つは、上述した課題を鑑み、マニピュレータを有する移動型のロボットの動作計画を好適に決定することが可能な動作計画装置、動作計画方法及び記憶媒体を提供することである。
【課題を解決するための手段】
【0006】
動作計画装置の一の態様は、
対象物を扱うマニピュレータと自走式の本体とを有するロボットが作業する作業空間における状態を設定する状態設定手段と、
前記状態と、前記本体の移動及び前記マニピュレータの動作に関する制約条件と、前記ロボットのダイナミクスに基づく評価関数と、
に基づいて、前記本体の移動及び前記マニピュレータの動作に関する動作計画を決定する動作計画手段と、
を有し、
前記動作計画手段は、前記ロボットが作業を行うエリアとして指定された指定エリア内の基準点まで前記本体を移動させる第1動作計画を決定し、前記ロボットが前記基準点に到達後の前記状態と前記制約条件と前記評価関数とに基づく前記動作計画である第2動作計画を前記ロボットが前記基準点に到達後に決定する、
動作計画装置である。
【0007】
動作計画装置の他の態様は、
対象物を扱うマニピュレータと自走式の本体とを有するロボットが作業するエリアの指定を受け付けるエリア指定手段と、
前記エリア内の対象物に関する指定を受け付ける対象物指定手段と、
前記エリアの指定及び前記対象物に関する指定に基づき、前記本体の移動及び前記マニピュレータの動作に関する動作計画を決定する動作計画手段と、
を有し、
前記動作計画手段は、前記ロボットが作業を行うエリアとして指定された指定エリア内の基準点まで前記本体を移動させる第1動作計画を決定し、前記ロボットが前記基準点に到達後の前記動作計画である第2動作計画を前記ロボットが前記基準点に到達後に決定する、
動作計画装置である。
【0008】
動作計画方法の一の態様は、
コンピュータが、
対象物を扱うマニピュレータと自走式の本体とを有するロボットが作業する作業空間における状態を設定し、
前記状態と、前記本体の移動及び前記マニピュレータの動作に関する制約条件と、前記ロボットのダイナミクスに基づく評価関数と、
に基づいて、前記本体の移動及び前記マニピュレータの動作に関する動作計画を決定し、
前記動作計画の決定では、前記ロボットが作業を行うエリアとして指定された指定エリア内の基準点まで前記本体を移動させる第1動作計画を決定し、前記ロボットが前記基準点に到達後の前記状態と前記制約条件と前記評価関数とに基づく前記動作計画である第2動作計画を前記ロボットが前記基準点に到達後に決定する、
動作計画方法。
【0009】
動作計画方法の他の態様は、
コンピュータが、
対象物を扱うマニピュレータと自走式の本体とを有するロボットが作業するエリアの指定を受け付け、
前記エリア内の対象物に関する指定を受け付け
前記エリアの指定及び前記対象物に関する指定に基づき、前記本体の移動及び前記マニピュレータの動作に関する動作計画を決定
前記動作計画の決定では、前記ロボットが作業を行うエリアとして指定された指定エリア内の基準点まで前記本体を移動させる第1動作計画を決定し、前記ロボットが前記基準点に到達後の前記動作計画である第2動作計画を前記ロボットが前記基準点に到達後に決定する、動作計画方法である。
【0010】
プログラムの一の態様は、
対象物を扱うマニピュレータと自走式の本体とを有するロボットが作業する作業空間における状態を設定し、
前記状態と、前記本体の移動及び前記マニピュレータの動作に関する制約条件と、前記ロボットのダイナミクスに基づく評価関数と、
に基づいて、前記本体の移動及び前記マニピュレータの動作に関する動作計画を決定する処理をコンピュータに実行させ、
前記動作計画の決定では、前記ロボットが作業を行うエリアとして指定された指定エリア内の基準点まで前記本体を移動させる第1動作計画を決定し、前記ロボットが前記基準点に到達後の前記状態と前記制約条件と前記評価関数とに基づく前記動作計画である第2動作計画を前記ロボットが前記基準点に到達後に決定する、プログラムである。
【0011】
プログラムの他の態様は、
対象物を扱うマニピュレータと自走式の本体とを有するロボットが作業するエリアの指定を受け付け、
前記エリア内の対象物に関する指定を受け付け
前記エリアの指定及び前記対象物に関する指定に基づき、前記本体の移動及び前記マニピュレータの動作に関する動作計画を決定する処理をコンピュータに実行させ
前記動作計画の決定では、前記ロボットが作業を行うエリアとして指定された指定エリア内の基準点まで前記本体を移動させる第1動作計画を決定し、前記ロボットが前記基準点に到達後の前記動作計画である第2動作計画を前記ロボットが前記基準点に到達後に決定する、プログラムである。
【発明の効果】
【0012】
マニピュレータを有する移動型のロボットの動作計画を好適に決定することができる。
【図面の簡単な説明】
【0013】
図1】第1実施形態におけるロボット制御システムの構成を示す。
図2】ロボットコントローラのハードウェア構成を示す。
図3】アプリケーション情報のデータ構造の一例を示す。
図4】ロボットコントローラの機能ブロックの一例である。
図5】動作計画部の機能ブロックの一例である。
図6】ロボットの作業空間を俯瞰的に表した概略図の一例である。
図7】基準点及びロボット経路を明示した図である。
図8】抽象状態設定空間の俯瞰図を示す。
図9】ロボット本体及びロボットハンドの軌道を概略的に示した図である。
図10】(A)安全性優先が設定された場合のロボット本体の動作期間と、マニピュレータの動作期間とを明示した図である。(B)作業時間長優先が設定された場合のロボット本体の動作期間と、マニピュレータの動作期間とを明示した図である。
図11】目的タスクを指定するタスク指定画面の第1表示例を示す。
図12】目的タスクを指定するタスク指定画面の第2表示例を示す。
図13】第1実施形態においてロボットコントローラ1が実行する処理の概要を示すフローチャートの一例である。
図14】第2実施形態における動作計画装置の概略構成図を示す。
図15】第2実施形態におけるフローチャートの一例である。
【発明を実施するための形態】
【0014】
以下、図面を参照しながら、動作計画装置、動作計画方法及び記憶媒体の実施形態について説明する。
【0015】
<第1実施形態>
(1)システム構成
図1は、第1実施形態に係るロボット制御システム100の構成を示す。ロボット制御システム100は、主に、ロボットコントローラ1と、指示装置2と、記憶装置4と、ロボット5と、センサ7と、を備える。
【0016】
ロボットコントローラ1は、ロボット5に実行させるタスク(「目的タスク」とも呼ぶ。)が指定された場合に、ロボット5が受付可能な単純なタスクのタイムステップ(時間刻み)毎のシーケンスに目的タスクを変換し、生成したシーケンスに基づきロボット5を制御する。
【0017】
また、ロボットコントローラ1は、指示装置2、記憶装置4、ロボット5、及びセンサ7と、通信網を介し、又は、無線若しくは有線による直接通信により、データ通信を行う。例えば、ロボットコントローラ1は、指示装置2から、目的タスクの指定に関する入力信号「S1」を受信する。また、ロボットコントローラ1は、指示装置2に対し、出力制御信号「S2」を送信することで、指示装置2に所定の表示又は音出力を実行させる。さらに、ロボットコントローラ1は、ロボット5の制御に関する制御信号「S3」をロボット5に送信する。また、ロボットコントローラ1は、センサ7からセンサ信号「S4」を受信する。
【0018】
指示装置2は、作業者によるロボット5に対する指示を受け付ける装置である。指示装置2は、ロボットコントローラ1から供給される出力制御信号S2に基づき所定の表示又は音出力を行ったり、作業者の入力に基づき生成した入力信号S1をロボットコントローラ1へ供給したりする。指示装置2は、入力部と表示部とを備えるタブレット端末であってもよく、据置型のパーソナルコンピュータであってもよい。
【0019】
記憶装置4は、アプリケーション情報記憶部41を有する。アプリケーション情報記憶部41は、ロボット5が実行すべきシーケンスである動作シーケンスを目的タスクから生成するために必要なアプリケーション情報を記憶する。アプリケーション情報の詳細は、図3を参照しながら後述する。記憶装置4は、ロボットコントローラ1に接続又は内蔵されたハードディスクなどの外部記憶装置であってもよく、フラッシュメモリなどの記憶媒体であってもよい。また、記憶装置4は、ロボットコントローラ1と通信網を介してデータ通信を行うサーバ装置であってもよい。この場合、記憶装置4は、複数のサーバ装置から構成されてもよい。
【0020】
ロボット5は、ロボットコントローラ1から供給される制御信号S3に基づき、目的タスクに関する作業を行う移動型(自走式)のロボットである。図1は、一例として、ロボット5が対象物(ワーク)6のピックアンドプレイスを行う様子を示している。ロボット5は、例えば、組み立て工場、食品工場などの各種工場、又は、物流の現場などで動作を行うロボットである。ロボット5は、移動を行うロボット本体50と、ロボットハンド(エンドエフェクタ)53を有するマニピュレータ(ここではロボットアーム)52とを有する。マニピュレータ52は、垂直多関節型ロボット、水平多関節型ロボット、又はその他の任意の種類のロボットであってもよい。以後において、マニピュレータ52は、ロボットアームと同義であるものとする。ロボット5は、ロボット5の状態を示す状態信号をロボットコントローラ1に供給してもよい。この状態信号は、ロボット5全体又は関節などの特定部位の状態(位置、角度等)を検出するセンサの出力信号であってもよく、ロボット5の制御部が生成したロボット5の動作シーケンスの進捗状態を示す信号であってもよい。
【0021】
なお、ロボット5は、ロボット本体50とマニピュレータ52とが一体化している必要はなく、ロボット本体50とマニピュレータ52とが別装置であってもよい。例えば、ロボット本体50に相当する移動型ロボットにマニピュレータ52が載置される構成であってもよい。
【0022】
センサ7は、目的タスクが実行される作業空間内の状態を検出するカメラ、測域センサ、ソナーまたはこれらの組み合わせとなる1又は複数のセンサである。本実施形態では、センサ7は、ロボット5の作業空間を撮像する少なくとも1台のカメラを含むものとする。センサ7は、生成したセンサ信号S4をロボットコントローラ1に供給する。センサ7は、作業空間内で移動する自走式又は飛行式のセンサ(ドローンを含む)であってもよい。また、センサ7は、ロボット5に設けられたセンサ、及び作業空間内の他の物体に設けられたセンサなどを含んでもよい。また、センサ7は、作業空間内の音を検出するセンサを含んでもよい。このように、センサ7は、作業空間内の状態を検出する種々のセンサであって、任意の場所に設けられたセンサを含んでもよい。
【0023】
なお、図1に示すロボット制御システム100の構成は一例であり、当該構成に種々の変更が行われてもよい。例えば、ロボット5は、複数台存在してもよく、夫々が独立して動作するマニピュレータ52を複数有してもよい。これらの場合であっても、ロボットコントローラ1は、目的タスクに基づき、ロボット5毎に(かつ、ロボット本体50及びマニピュレータ52の各々に対して)実行すべき動作シーケンスを生成し、当該動作シーケンスに基づく制御信号S3を、対象のロボット5に送信する。また、ロボット5は、作業空間内で動作する他のロボット、作業者又は工作機械と協働作業を行うものであってもよい。また、センサ7は、ロボット5の一部であってもよい。また、指示装置2は、ロボットコントローラ1と同一の装置として構成されてもよい。また、ロボットコントローラ1は、複数の装置から構成されてもよい。この場合、ロボットコントローラ1を構成する複数の装置は、予め割り当てられた処理を実行するために必要な情報の授受を、これらの複数の装置間において行う。また、ロボットコントローラ1とロボット5とは、一体に構成されてもよい。
【0024】
(2)ハードウェア構成
図2(A)は、ロボットコントローラ1のハードウェア構成を示す。ロボットコントローラ1は、ハードウェアとして、プロセッサ11と、メモリ12と、インターフェース13とを含む。プロセッサ11、メモリ12及びインターフェース13は、データバス10を介して接続されている。
【0025】
プロセッサ11は、メモリ12に記憶されているプログラムを実行することにより、ロボットコントローラ1の全体の制御を行うコントローラ(演算装置)として機能する。プロセッサ11は、例えば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、TPU(Tensor Processing Unit)などのプロセッサである。プロセッサ11は、複数のプロセッサから構成されてもよい。プロセッサ11は、コンピュータの一例である。
【0026】
メモリ12は、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリなどの各種の揮発性メモリ及び不揮発性メモリにより構成される。また、メモリ12には、ロボットコントローラ1が実行する処理を実行するためのプログラムが記憶される。なお、メモリ12が記憶する情報の一部は、ロボットコントローラ1と通信可能な1又は複数の外部記憶装置(例えば記憶装置4)により記憶されてもよく、ロボットコントローラ1に対して着脱自在な記憶媒体により記憶されてもよい。
【0027】
インターフェース13は、ロボットコントローラ1と他の装置とを電気的に接続するためのインターフェースである。これらのインターフェースは、他の装置とデータの送受信を無線により行うためのネットワークアダプタなどのワイアレスインタフェースであってもよく、他の装置とケーブル等により接続するためのハードウェアインターフェースであってもよい。
【0028】
なお、ロボットコントローラ1のハードウェア構成は、図2(A)に示す構成に限定されない。例えば、ロボットコントローラ1は、表示装置、入力装置又は音出力装置の少なくともいずれかと接続又は内蔵してもよい。また、ロボットコントローラ1は、指示装置2又は記憶装置4の少なくとも一方を含んで構成されてもよい。
【0029】
図2(B)は、指示装置2のハードウェア構成を示す。指示装置2は、ハードウェアとして、プロセッサ21と、メモリ22と、インターフェース23と、入力部24aと、表示部24bと、音出力部24cと、を含む。プロセッサ21、メモリ22及びインターフェース23は、データバス20を介して接続されている。また、インターフェース23には、入力部24aと表示部24bと音出力部24cとが接続されている。
【0030】
プロセッサ21は、メモリ22に記憶されているプログラムを実行することにより、所定の処理を実行する。プロセッサ21は、CPU、GPUなどのプロセッサである。プロセッサ21は、インターフェース23を介して入力部24aが生成した信号を受信することで、入力信号S1を生成し、インターフェース23を介してロボットコントローラ1に当該入力信号S1を送信する。また、プロセッサ21は、インターフェース23を介してロボットコントローラ1から受信した出力制御信号S2に基づき、表示部24b又は音出力部24cの少なくとも一方を、インターフェース23を介して制御する。
【0031】
メモリ22は、RAM、ROM、フラッシュメモリなどの各種の揮発性メモリ及び不揮発性メモリにより構成される。また、メモリ22には、指示装置2が実行する処理を実行するためのプログラムが記憶される。
【0032】
インターフェース23は、指示装置2と他の装置とを電気的に接続するためのインターフェースである。これらのインターフェースは、他の装置とデータの送受信を無線により行うためのネットワークアダプタなどのワイアレスインタフェースであってもよく、他の装置とケーブル等により接続するためのハードウェアインターフェースであってもよい。また、インターフェース23は、入力部24a、表示部24b及び音出力部24cのインターフェース動作を行う。入力部24aは、ユーザの入力を受け付けるインターフェースであり、例えば、タッチパネル、ボタン、キーボード、音声入力装置などが該当する。表示部24bは、例えば、ディスプレイ、プロジェクタ等であり、プロセッサ21の制御に基づき表示を行う。また、音出力部24cは、例えば、スピーカであり、プロセッサ21の制御に基づき音出力を行う。
【0033】
なお、指示装置2のハードウェア構成は、図2(B)に示す構成に限定されない。例えば、入力部24a、表示部24b又は音出力部24cの少なくともいずれかは、指示装置2と電気的に接続する別体の装置として構成されてもよい。また、指示装置2は、カメラなどの種々の装置と接続してもよく、これらを内蔵してもよい。
【0034】
(3)アプリケーション情報
次に、アプリケーション情報記憶部41が記憶するアプリケーション情報のデータ構造について説明する。
【0035】
図3は、アプリケーション情報のデータ構造の一例を示す。図3に示すように、アプリケーション情報は、抽象状態指定情報I1と、制約条件情報I2と、動作限界情報I3と、サブタスク情報I4と、抽象モデル情報I5と、物体モデル情報I6と、マップ(地図)情報I7と、を含む。
【0036】
抽象状態指定情報I1は、動作シーケンスの生成にあたり定義する必要がある抽象状態を指定する情報である。この抽象状態は、作業空間内における物体の抽象的な状態であって、後述する目標論理式において使用する命題として定められる。例えば、抽象状態指定情報I1は、目的タスクの種類毎に、定義する必要がある抽象状態を指定する。
【0037】
制約条件情報I2は、目的タスクを実行する際の制約条件を示す情報である。制約条件情報I2は、例えば、目的タスクがピックアンドプレイスの場合、障害物にロボット5が接触してはいけないという制約条件、ロボット5(マニピュレータ)同士が接触してはいけないという制約条件などを示す。なお、制約条件情報I2は、目的タスクの種類毎に夫々適した制約条件を記録した情報であってもよい。
【0038】
動作限界情報I3は、ロボットコントローラ1により制御が行われるロボット5の動作限界に関する情報を示す。動作限界情報I3は、例えば、ロボット5の速度、加速度、又は角速度の上限を規定する情報である。また、動作限界情報I3は、ロボット5の可動部位(ロボット本体50を含む)又は関節ごとに動作限界を規定する情報を含む。本実施形態では、動作限界情報I3は、マニピュレータ52のリーチ範囲に関する情報を含む。マニピュレータ52のリーチ範囲は、対象物6に対してマニピュレータ52が作業可能な範囲であって、ロボット5の基準位置からの最大距離により示されてもよく、ロボット5を基準とする座標系での領域により示されてもよい。
【0039】
サブタスク情報I4は、動作シーケンスの構成要素となるサブタスクの情報を示す。「サブタスク」は、ロボット5が受付可能な単位により目的タスクを分解したタスクであって、細分化されたロボット5の動作を指す。例えば、目的タスクがピックアンドプレイスの場合には、サブタスク情報I4は、マニピュレータ52の移動であるリーチングと、マニピュレータ52による把持であるグラスピングとをサブタスクとして規定する。また、ロボット本体50の移動に対応するサブタスクについても、サブタスク情報I4において少なくとも規定されている。サブタスク情報I4は、目的タスクの種類毎に使用可能なサブタスクの情報を示すものであってもよい。なお、サブタスク情報I4には、外部入力による動作指令が必要なサブタスクに関する情報が含まれてもよい。
【0040】
抽象モデル情報I5は、作業空間におけるダイナミクスを抽象化した抽象モデルに関する情報である。例えば、抽象モデルは、後述するように、現実のダイナミクスをハイブリッドシステムにより抽象化したモデルにより表されている。抽象モデル情報I5は、上述のハイブリッドシステムにおけるダイナミクスの切り替わりの条件を示す情報を含む。切り替わりの条件は、例えば、ロボット5により作業対象となる対象物6をロボット5が掴んで所定位置に移動させるピックアンドプレイスの場合、対象物6はロボット5により把持されなければ移動できないという条件などが該当する。抽象モデル情報I5は、目的タスクの種類毎に適した抽象モデルに関する情報を有している。
【0041】
物体モデル情報I6は、センサ7が生成したセンサ信号S4から認識すべき作業空間内の各物体の物体モデルに関する情報である。上述の各物体は、例えば、ロボット5、障害物、ロボット5が扱う工具その他の対象物、ロボット5以外の作業体などが該当する。物体モデル情報I6は、例えば、上述した各物体の種類、位置、姿勢、現在実行中の動作などをロボットコントローラ1が認識するために必要な情報と、各物体の3次元形状を認識するためのCAD(Computer Aided Design)データなどの3次元形状情報とを含んでいる。前者の情報は、ニューラルネットワークなどの機械学習における学習モデルを学習することで得られた推論器のパラメータを含む。この推論器は、例えば、画像が入力された場合に、当該画像において被写体となる物体の種類、位置、姿勢等を出力するように予め学習される。
【0042】
マップ情報I7は、ロボット5が存在する作業空間内のマップ(レイアウト)を示す情報である。マップ情報I7は、例えば、作業空間内において移動可能な範囲(通路)を示す情報、壁、設置物、階段などの固定物の位置(大きさ及び範囲を含む)、及び障害物を示す情報などを含んでいる。
【0043】
なお、アプリケーション情報記憶部41は、上述した情報の他、動作シーケンスの生成処理及び出力制御信号S2の生成処理に関する種々の情報を記憶してもよい。
【0044】
(4)処理概要
次に、ロボットコントローラ1の処理概要について説明する。概略的には、ロボットコントローラ1は、入力信号S1に基づき指定されたエリア(「指定エリア」とも呼ぶ。)までロボット本体50を移動させた後、ロボット本体50の移動に関する動作計画とマニピュレータ52の動作計画とを同時に実行する。これにより、ロボットコントローラ1は、効率的かつ確実に目的タスクをロボット5に遂行させる。
【0045】
図4は、ロボットコントローラ1の処理の概要を示す機能ブロックの一例である。ロボットコントローラ1のプロセッサ11は、機能的には、出力制御部15と、動作計画部16と、ロボット制御部17と、を有する。なお、図4では、各ブロック間で授受が行われるデータの一例が示されているが、これに限定されない。後述する他の機能ブロックの図においても同様である。
【0046】
出力制御部15は、マップ情報I7等に基づき、作業者が使用する指示装置2に所定の情報を表示又は音出力するための出力制御信号S2を生成し、インターフェース13を介して当該出力制御信号S2を指示装置2へ送信する。
【0047】
例えば、出力制御部15は、目的タスクの指定に関する入力画面(「タスク指定画面」とも呼ぶ。)を指示装置2に表示させるための出力制御信号S2を生成する。その後、出力制御部15は、タスク指定画面での入力操作により指示装置2が生成した入力信号S1を、指示装置2からインターフェース13を介して受信する。この場合、入力信号S1は、目的タスクを概略的に指定する情報(「タスク指定情報Ia」とも呼ぶ。)を含んでいる。タスク指定情報Iaは、例えば、ロボット5への概略命令に相当する情報であり、ロボット5の具体的な動作を規定する情報(例えば後述する制御入力の情報やサブタスクの情報)を含まない。本実施形態では、タスク指定情報Iaは、ロボット5が作業を行う空間としてユーザにより指定された指定エリアを表す情報と、ユーザが指定した対象物6(例えば把持対象物)に関する情報と、を少なくとも含んでいる。対象物6に関する情報は、対象物6となる物体の位置、対象物6となる各物体を運ぶ搬送先(ゴール地点)を示す情報を含んでもよい。
【0048】
また、好適には、タスク指定情報Iaは、目的タスクの実行における優先事項を指定する情報をさらに含んでもよい。ここで、優先事項は、安全性優先、作業時間長優先、消費電力優先などの、目的タスクの実行において重視すべき事項を示す。優先事項は、例えば、タスク指定画面において、ユーザにより選択される。指定エリア、対象物6、及び優先事項に関する指定方法の具体例については図11及び図12を参照して後述する。
【0049】
そして、出力制御部15は、指示装置2から供給される入力信号S1に基づくタスク指定情報Iaを、動作計画部16へ供給する。
【0050】
動作計画部16は、出力制御部15から供給されるタスク指定情報Iaと、センサ信号S4と、記憶装置4が記憶するアプリケーション情報とに基づき、ロボット5に実行させる動作シーケンスを生成する。動作シーケンスは、目的タスクを達成するためにロボット5が実行すべきサブタスクのシーケンス(サブタスクシーケンス)に相当し、ロボット5の一連の動作を規定する。本実施形態では、動作計画部16は、ロボット5をタスク指定情報Iaが示す指定エリアまで移動させる第1動作計画と、ロボット5が指定エリアに到着後からロボット5に目的タスクを完了させる第2動作計画とを夫々策定する。そして、動作計画部16は、第1動作計画に基づく第1動作シーケンス「Sr1」を生成し、第2動作計画に基づく第2動作シーケンス「Sr2」を生成する。そして、動作計画部16は、生成した第1動作シーケンスSr1と第2動作シーケンスSr2とを、ロボット制御部17に順次供給する。ここで、各動作シーケンスには、各サブタスクの実行順序及び実行タイミングを示す情報が含まれている。
【0051】
ロボット制御部17は、インターフェース13を介して制御信号S3をロボット5に供給することで、ロボット5の動作を制御する。ロボット制御部17は、動作シーケンスを動作計画部16から受信した場合、動作シーケンスを構成する各サブタスクを夫々定められた実行タイミング(タイムステップ)でロボット5が実行するための制御を行う。具体的には、ロボット制御部17は、制御信号S3をロボット5に送信することで、動作シーケンスを実現するためのロボット5の関節の位置制御又はトルク制御などを実行する。
【0052】
なお、ロボット制御部17に相当する機能を、ロボットコントローラ1に代えてロボット5が有してもよい。この場合、ロボット5は、動作計画部16が生成する動作シーケンスに基づく動作を実行する。また、ロボット制御部17は、ロボット本体50とマニピュレータ52とで別々に設けられてもよい。この場合、例えば、ロボット制御部17は、その一方がロボットコントローラ1内に存在し、他方がロボット5内に存在する構成であってもよい。
【0053】
ここで、出力制御部15、動作計画部16及びロボット制御部17の各構成要素は、例えば、プロセッサ11がプログラムを実行することによって実現できる。また、必要なプログラムを任意の不揮発性記憶媒体に記録しておき、必要に応じてインストールすることで、各構成要素を実現するようにしてもよい。なお、これらの各構成要素の少なくとも一部は、プログラムによるソフトウェアで実現することに限ることなく、ハードウェア、ファームウェア、及びソフトウェアのうちのいずれかの組合せ等により実現してもよい。また、これらの各構成要素の少なくとも一部は、例えばFPGA(Field-Programmable Gate Array)又はマイクロコントローラ等の、ユーザがプログラミング可能な集積回路を用いて実現してもよい。この場合、この集積回路を用いて、上記の各構成要素から構成されるプログラムを実現してもよい。また、各構成要素の少なくとも一部は、ASSP(Application Specific Standard Produce)、ASIC(Application Specific Integrated Circuit)又は量子コンピュータ制御チップにより構成されてもよい。このように、各構成要素は、種々のハードウェアにより実現されてもよい。以上のことは、後述する他の実施の形態においても同様である。さらに、これらの各構成要素は,例えば,クラウドコンピューティング技術などを用いて、複数のコンピュータの協働によって実現されてもよい。
【0054】
(5)動作計画部の詳細
次に、動作計画部16の詳細な処理について説明する。
【0055】
(5-1)機能ブロック
図5は、動作計画部16の機能的な構成を示す機能ブロックの一例である。動作計画部16は、機能的には、経路設定部30と、抽象状態設定部31と、目標論理式生成部32と、タイムステップ論理式生成部33と、抽象モデル生成部34と、制御入力生成部35と、サブタスクシーケンス生成部36と、を有する。
【0056】
経路設定部30は、第1動作計画において、タスク指定情報Iaが表す指定エリア内においてロボット5が到達すべき地点(「基準点」とも呼ぶ。)までのロボット5の経路を設定する。基準点は、第2動作シーケンスSr2を生成する第2動作計画におけるロボット5の動作開始位置として適切な位置となるように設定される。言い換えると、経路設定部30は、第2動作計画の策定に適したロボット5の動作開始位置となるように基準点を設定する。経路設定部30は、例えば、タスク指定情報Iaが示す指定エリア及び対象物6の位置と、ロボット5に設けられたセンサ7が出力するセンサ信号S4に基づき推定した自己位置と、動作限界情報I3が示すロボット5(詳しくはマニピュレータ52)のリーチ範囲とに基づき、基準点を設定する。さらに、経路設定部30は、自己位置推定により得た自己位置と基準点と、マップ情報I7とに基づき、自己位置から基準点までの経路(「ロボット経路」とも呼ぶ。)を決定する。なお、自己位置推定は、GPS受信機及び内界センサに基づくものであってもよく、カメラやその他の外界センサに基づくもの(SLAM(Simultaneous Localization and Mapping)などを含む)であってもよい。基準点及び経路の設定の具体例については後述する。経路設定部30は、設定したロボット経路を示す情報(「経路情報Irt」とも呼ぶ。)を、サブタスクシーケンス生成部36へ供給する。
【0057】
抽象状態設定部31は、第2動作計画を策定する場合において、センサ7から供給されるセンサ信号S4と、出力制御部15から供給されるタスク指定情報Iaと、抽象状態指定情報I1と、物体モデル情報I6と、に基づき、目的タスクに関連する物体等の抽象状態を設定する。この場合、抽象状態設定部31は、まず、抽象状態を設定する空間(「抽象状態設定空間」とも呼ぶ。)を決定し、当該抽象状態設定空間内において、目的タスクを実行する際に考慮する必要がある物体を認識し、当該物体に関する認識結果「Im」を生成する。なお、抽象状態設定空間は、指定エリア全体であってもよく、指定エリア内において、タスク指定情報Iaにおいて指定された対象物6の位置、搬送先の位置、及びロボット5を少なくとも含む矩形エリア等に設定されてもよい。そして、抽象状態設定部31は、認識結果Imに基づいて、目的タスクを実行する際に考慮する必要がある各抽象状態に対し、論理式で表すための命題を定義する。抽象状態設定部31は、設定した抽象状態を示す情報(「抽象状態設定情報IS」とも呼ぶ。)を、目標論理式生成部32に供給する。
【0058】
目標論理式生成部32は、第2動作計画を策定する場合において、抽象状態設定情報ISに基づき、タスク指定情報Iaが示す指定エリア内での目的タスクを、最終的な達成状態を表す時相論理の論理式(「目標論理式Ltag」とも呼ぶ。)に変換する。この場合、目標論理式生成部32は、アプリケーション情報記憶部41から制約条件情報I2を参照することで、指定エリア内での目的タスクの実行において満たすべき制約条件を、目標論理式Ltagに付加する。そして、目標論理式生成部32は、生成した目標論理式Ltagを、タイムステップ論理式生成部33に供給する。
【0059】
タイムステップ論理式生成部33は、第2動作計画を策定する場合において、目標論理式生成部32から供給された目標論理式Ltagを、各タイムステップでの状態を表した論理式(「タイムステップ論理式Lts」とも呼ぶ。)に変換する。そして、タイムステップ論理式生成部33は、生成したタイムステップ論理式Ltsを、制御入力生成部35に供給する。
【0060】
抽象モデル生成部34は、第2動作計画を策定する場合において、アプリケーション情報記憶部41が記憶する抽象モデル情報I5と、抽象状態設定部31から供給される認識結果Imとに基づき、抽象状態設定空間における現実のダイナミクスを抽象化した抽象モデル「Σ」を生成する。この場合、抽象モデル生成部34は、対象のダイナミクスを連続ダイナミクスと離散ダイナミクスとが混在したハイブリッドシステムとみなし、ハイブリッドシステムに基づく抽象モデルΣを生成する。抽象モデルΣの生成方法については後述する。抽象モデル生成部34は、生成した抽象モデルΣを、制御入力生成部35へ供給する。
【0061】
制御入力生成部35は、第2動作計画を策定する場合において、ロボット5へのタイムステップ毎の制御入力(即ち、ロボット5の軌道情報)を生成する。制御入力生成部35は、タイムステップ論理式生成部33から供給されるタイムステップ論理式Ltsと、抽象モデル生成部34から供給される抽象モデルΣとを満たし、評価関数(たとえば、ロボットによって消費されるエネルギー量を表す関数)を最適化するタイムステップ毎のロボット5への制御入力を決定する。この場合、評価関数は、抽象モデルΣが表すロボット5のダイナミクスを間接的又は直接的に考慮した関数となっている。そして、制御入力生成部35は、ロボット5へのタイムステップ毎の制御入力を示す情報(「制御入力情報Icn」とも呼ぶ。)を、サブタスクシーケンス生成部36へ供給する。
【0062】
サブタスクシーケンス生成部36は、第1動作計画を策定する場合において第1動作シーケンスSr1を生成し、第2動作計画を策定する場合において第2動作シーケンスSr2を生成する。サブタスクシーケンス生成部36は、第1動作計画の策定時に経路設定部30から経路情報Irtが供給された場合には、サブタスク情報I4に基づき、経路情報Irtが示すロボット経路に沿ったロボット5の移動を指示するサブタスクのシーケンスである第1動作シーケンスSr1を生成する。一方、サブタスクシーケンス生成部36は、第2動作計画の策定時には、制御入力生成部35から供給される制御入力情報Icnと、サブタスク情報I4とに基づき、ロボット本体50の移動及びマニピュレータ52の動作に関する第2動作シーケンスSr2を生成する。サブタスクシーケンス生成部36は、生成した動作シーケンスをロボット制御部17へ順次供給する。
【0063】
(5-2)経路設定部
経路設定部30が実行する処理について具体的に説明する。図6は、ロボット5の作業空間を俯瞰的に表した概略図の一例である。
【0064】
図6に示される例では、作業空間内には、ロボット5と、作業台54と、作業台54以外の他作業台54A~54Eとが存在しており、作業台54上には、物体61a(「対象物A」とも呼ぶ。)と、物体61b(「対象物B」とも呼ぶ。)が存在する。また、作業台54の横には、対象物A及び対象物Bの搬送先となる第2作業台63(「搬送先G」とも呼ぶ。)が存在している。さらに、説明便宜上、図6では、ロボット5に対してユーザが指定した概略命令を表す吹き出し56が明示されている。ここでの概略命令は、破線枠55を外縁とする「エリアI」を指定し、かつ、エリアI内の対象物A1個(即ち物体61a)と対象物B1個(即ち物体61b)を搬送先G(即ち台63)に搬送することを指示するものとなっている。
【0065】
なお搬送先Gは、同一のエリアI内にある場合に限らない。搬送先GがエリアI以外の他のエリア(「他エリア」とも呼ぶ。)に指定されている場合は、例えば、ロボットコントローラ1は、エリアIに存在する対象物を一度ロボット5に載置させてから他エリアにロボット5を移動させ、その後、他エリアの指定された搬送先Gに対象物をロボット5に載置させる動作計画を策定する。このようなロボット5の動作は、対象物を一度ロボット5に載置する第2動作計画に基づく動作が完了した後、再度、第1動作計画により該エリアに移動して、第2動作計画により搬送先に載置する動作のシーケンスを生成することで(即ち第1動作計画と第2動作計画とを交互に繰り返すことにより)実現できる。
【0066】
この場合、経路設定部30は、まず、指定エリアであるエリアI内においてロボット5が移動すべき基準点を設定する。この場合、例えば、経路設定部30は、エリアI内であって、ロボット5に近い対象物(ここでは対象物B)から所定距離離れた位置のうちロボット5に最も近い位置(又はロボット5が最も早く到達可能な位置)に基準点を設定する。ここで、上述の所定距離は、例えば、ロボット5(詳しくはマニピュレータ52)のリーチ範囲(又はその所定倍数)と、ロボット5の移動誤差とを加算した値に設定される。上述のロボット5の移動誤差は、詳しくは、自己位置推定を行う過程において取得される自己位置推定精度の誤差とロボット5の移動制御に関する誤差の合計であり、これらの誤差情報は、例えば、記憶装置4に予め記憶されてもよい。なお、自己位置推定の誤差情報として、自己位置推定時に得られる誤差情報を用いてもよい。
【0067】
このように、経路設定部30は、対象物の位置と、ロボット5の移動誤差と、ロボット5のリーチ範囲とに基づき基準点を決定する。これにより、経路設定部30は、第2動作計画でのロボット5の動作開始地点として適切な位置に基準点を定めることができる。
【0068】
ここで、適切な基準点の設定の必要性について補足説明する。一般に、基準点が対象物6に近すぎると、ロボット本体50の移動とマニピュレータ52の動作とを夫々規定した最適な第2動作シーケンスSr2を算出することができない。一方、基準点が対象物6から遠すぎると、第2動作シーケンスSr2を算出するための計算量が増加してしまう。以上を勘案し、経路設定部30は、対象物の位置と、ロボット5の移動誤差と、ロボット5のリーチ範囲とに基づき、第2動作計画においてロボット本体50の移動をなるべく少なくするような基準点を決定する。これにより、上述の計算量増加を防ぎつつ、ロボット5の移動とマニピュレータ52との動作計画を好適に策定することができる。
【0069】
また、経路設定部30は、ロボット5がマップ情報I7に記録された障害物(ここでは、他作業台54A~54E等)と衝突せずに基準点に最短の時間長にて到達可能な経路をロボット経路として決定する。この場合、経路設定部30は、任意の経路探索手法に基づきロボット経路を決定してもよい。
【0070】
図7は、経路設定部30が設定した基準点及びロボット経路を明示した図である。図7において、地点57は、基準点を示し、経路線58は、ロボット経路を示している。経路設定部30は、図7に示す基準点及びロボット経路を決定し、決定したロボット経路を示す経路情報Irtをサブタスクシーケンス生成部36へ供給する。その後、サブタスクシーケンス生成部36は、当該経路情報Irtに基づく第1動作シーケンスSr1を生成する。そして、ロボット制御部17は、第1動作シーケンスSr1に基づく制御信号S3をロボット5に供給することで、ロボット経路に沿って移動するようにロボット5を制御する。
【0071】
(5-3)抽象状態設定部
次に、抽象状態設定部31の処理について説明する。抽象状態設定部31は、第1動作シーケンスSr1に基づくロボット5の動作が完了した(即ちロボット5が基準点に到達した)と判定した場合に、抽象状態設定空間の設定、認識結果Imの生成及び抽象状態の設定を行う。この場合、例えば、抽象状態設定部31は、ロボット5又はロボット制御部17から第1動作シーケンスSr1の完了通知を受信した場合に、ロボット5が基準点に到達したと判定する。他の例では、抽象状態設定部31は、カメラ画像などのセンサ信号S4に基づき、ロボット5が基準点に到達したか否か判定してもよい。
【0072】
認識結果Imの生成では、抽象状態設定部31は、物体モデル情報I6を参照し、抽象状態設定空間の環境を認識する技術(画像処理技術、画像認識技術、音声認識技術、RFID(Radio Frequency Identifier)を用いる技術等)によりセンサ信号S4を解析する。これにより、抽象状態設定部31は、抽象状態設定空間内の物体の種類、位置、及び姿勢などの情報を、認識結果Imとして生成する。また、抽象状態設定空間内の物体は、例えば、ロボット5、ロボット5が取り扱う工具又は部品などの対象物、障害物及び他作業体(ロボット5以外に作業を行う人又はその他の物体)などである。
【0073】
次に、抽象状態設定部31は、認識結果Imと、アプリケーション情報記憶部41から取得した抽象状態指定情報I1とに基づき、抽象状態設定空間内の抽象状態を設定する。この場合、まず、抽象状態設定部31は、抽象状態指定情報I1を参照し、抽象状態設定空間内において設定すべき抽象状態を認識する。なお、抽象状態設定空間内において設定すべき抽象状態は、目的タスクの種類によって異なる。よって、目的タスクの種類毎に設定すべき抽象状態が抽象状態指定情報I1に規定されている場合には、抽象状態設定部31は、現在実行すべき目的タスクに対応する抽象状態指定情報I1を参照し、設定すべき抽象状態を認識する。
【0074】
図8は、抽象状態設定部31が設定した抽象状態設定空間59の俯瞰図を示す。図8に示す抽象状態設定空間59には、2つのマニピュレータ52a、52bがロボット本体50に取り付けられたロボット5と、2つの対象物61(対象物A及び対象物B)及び障害物62が存在する作業台54と、対象物61の搬送先である第2作業台63(搬送先G)とが存在している。
【0075】
この場合、まず、抽象状態設定部31は、作業台54の存在範囲、対象物A及び対象物Bの状態、障害物62の存在範囲、ロボット5の状態、搬送先Gの存在範囲等を認識する。そして、抽象状態設定部31は、例えば、設定した抽象状態設定空間59を基準とする座標系を用いて、認識した各要素の位置を表現する。例えば、この抽象状態設定空間59における座標系の基準は、前述した基準点、すなわち第2動作計画の開始点とすることもできる。
【0076】
ここでは、抽象状態設定部31は、対象物A及び対象物Bの各々の中心の位置ベクトル「x」、「x」を、対象物A及び対象物Bの位置として認識する。また、抽象状態設定部31は、対象物を把持するロボットハンド53aの位置ベクトル「xr1」と、ロボットハンド53bの位置ベクトル「xr2」とを、マニピュレータ52aとマニピュレータ52bの位置として認識する。さらに、抽象状態設定部31は、ロボット本体50の位置ベクトル「x」を、ロボット本体50の位置として認識する。この場合、位置ベクトルxr1及び位置ベクトルxr2は、ロボット本体50の位置ベクトルxを基準とした相対ベクトルであってもよい。この場合、抽象状態設定空間59の座標系におけるマニピュレータ52aの位置は「x+xr1」により表され、抽象状態設定空間59の座標系におけるマニピュレータ52bの位置は位置ベクトル「x+xr2」により表される。
【0077】
同様に、抽象状態設定部31は、対象物A及び対象物Bの姿勢、障害物62の存在範囲、搬送先Gの存在範囲等を認識する。なお、抽象状態設定部31は、例えば、障害物62を直方体とみなし、搬送先Gを矩形とみなす場合には、障害物62及び搬送先Gの各頂点の位置ベクトルを認識する。
【0078】
抽象状態設定部31が設定した抽象状態は、例えば、以下の抽象状態ベクトル「z」により表される。
=(x,xr1,xr2,x,x,…)
この抽象状態ベクトルには、マニピュレータ52a、52bの抽象状態に加え、ロボット本体50の抽象状態も含まれている。そのため、抽象状態ベクトルzは、拡大状態ベクトルとも呼ばれる。そして、このような抽象状態ベクトルzを用いた制御入力生成部35による最適化処理により、タイムステップごとのマニピュレータ52a、52b及びロボット本体50の軌道情報が好適に生成される。
【0079】
また、抽象状態設定部31は、抽象状態指定情報I1を参照することで、目的タスクにおいて定義すべき抽象状態を決定する。この場合、抽象状態設定部31は、抽象状態設定空間内に存在する物体に関する認識結果Im(例えば物体の種類毎の個数)と、抽象状態指定情報I1とに基づき、抽象状態を示す命題を定める。
【0080】
図8の例では、抽象状態設定部31は、認識結果Imにより特定される対象物A及び対象物Bに対し、夫々識別ラベル「1」、「2」を付す。また、抽象状態設定部31は、対象物「i」(i=1~2)が最終的に載置されるべき目標地点である搬送先G内に存在するという命題「g」を定義する。また、抽象状態設定部31は、障害物62に対して識別ラベル「O」を付し、対象物iが障害物Oに干渉しているという命題「o」を定義する。さらに、抽象状態設定部31は、マニピュレータ52同士が干渉するという命題「h」を定義する。また命題「h」には、マニピュレータ52とロボット本体50が干渉しないという条件を含めても良い。
なお、抽象状態設定部31は、対象物「i」が作業台54(初期状態で対象物及び障害物が存在するテーブル)内に存在するという命題「v」、作業台54及び搬送先G以外の作業外領域に対象物が存在するという命題「w」などをさらに定めてもよい。作業外領域は、例えば、対象物が作業台54から落下した場合に対象物が存在する領域(床面等)である。
【0081】
このように、抽象状態設定部31は、抽象状態指定情報I1を参照することで、定義すべき抽象状態を認識し、当該抽象状態を表す命題(上述の例ではg、o、h等)を、対象物61の数、マニピュレータ52の数、障害物62の数、ロボット5(マニピュレータ52)の数等に応じてそれぞれ定義する。そして、抽象状態設定部31は、抽象状態を表す命題を示す情報を、抽象状態設定情報ISとして目標論理式生成部32に供給する。
【0082】
(5-4)目標論理式生成部
まず、目標論理式生成部32は、タスク指定情報Iaが示す目的タスクを、時相論理を用いた論理式に変換する。
【0083】
例えば、図8の例において、「最終的に対象物(i=2)が搬送先Gに存在する」という目的タスクが与えられたとする。この場合、目標論理式生成部32は、目的タスクを線形論理式(LTL:Linear Temporal Logic)の「eventually」に相当する演算子「◇」と、抽象状態設定部31により定義された命題「g」と用いて、論理式「◇g」を生成する。また、目標論理式生成部32は、演算子「◇」以外の任意の時相論理の演算子(論理積「∧」、論理和「∨」、否定「¬」、論理包含「⇒」、always「□」、next「○」、until「U」等)を用いて論理式を表現してもよい。また、線形時相論理に限らず、MTL(Metric Temporal Logic)やSTL(Signal Temporal Logic)などの任意の時相論理を用いて論理式を表現してもよい。
【0084】
なお、タスク指定情報Iaは、自然言語により目的タスクを指定する情報であってもよい。自然言語で表されたタスクを論理式に変換する方法は、種々の技術が存在する。
【0085】
次に、目標論理式生成部32は、制約条件情報I2が示す制約条件を、目的タスクを示す論理式に付加することで、目標論理式Ltagを生成する。
【0086】
例えば、図8に示すピックアンドプレイスに対応する制約条件として、「マニピュレータ52同士が常に干渉しない」、「対象物iは障害物Oに常に干渉しない」の2つが制約条件情報I2に含まれていた場合、目標論理式生成部32は、これらの制約条件を論理式に変換する。具体的には、目標論理式生成部32は、図8の説明において抽象状態設定部31により定義された命題「o」及び命題「h」を用いて、上述の2つの制約条件を、夫々以下の論理式に変換する。
□¬h
□¬o
【0087】
よって、この場合、目標論理式生成部32は、「最終的に対象物(i=2)が搬送先Gに存在する」という目的タスクに対応する論理式「◇g」に、これらの制約条件の論理式を付加することで、以下の目標論理式Ltagを生成する。
(◇g)∧(□¬h)∧(∧□¬o
【0088】
なお、実際には、ピックアンドプレイスに対応する制約条件は、上述した2つに限られず、「マニピュレータ52が障害物Oに干渉しない」、「複数のマニピュレータ52が同じ対象物を掴まない」、「対象物同士が接触しない」などの制約条件が存在する。このような制約条件についても同様に、制約条件情報I2に記憶され、目標論理式Ltagに反映される。
【0089】
(5-5)タイムステップ論理式生成部
タイムステップ論理式生成部33は、目的タスクを完了するタイムステップ数(「目標タイムステップ数」とも呼ぶ。)を定め、目標タイムステップ数で目標論理式Ltagを満たすような各タイムステップでの状態を表す命題の組み合わせを定める。この組み合わせは、通常複数存在するため、タイムステップ論理式生成部33は、これらの組み合わせを論理和により結合した論理式を、タイムステップ論理式Ltsとして生成する。上述の組み合わせは、ロボット5に命令する動作のシーケンスを表す論理式の候補となり、以後では「候補φ」とも呼ぶ。
【0090】
ここで、図8の説明において例示した「最終的に対象物(i=2)が搬送先Gに存在する」という目的タスクが設定された場合のタイムステップ論理式生成部33の処理の具体例について説明する。
【0091】
この場合、以下の目標論理式Ltagが目標論理式生成部32からタイムステップ論理式生成部33へ供給される。
(◇g)∧(□¬h)∧(∧□¬o
この場合、タイムステップ論理式生成部33は、命題「g」をタイムステップの概念を含むように拡張した命題「gi,k」を用いる。ここで、命題「gi,k」は、「タイムステップkで対象物iが搬送先Gに存在する」という命題である。ここで、目標タイムステップ数を「3」とした場合、目標論理式Ltagは、以下のように書き換えられる。
(◇g2,3)∧(∧k=1,2,3□¬h)∧(∧i,k=1,2,3□¬oi,k
【0092】
また、◇g2,3は、以下の式に示すように書き換えることが可能である。
【0093】
【数1】
【0094】
このとき、上述した目標論理式Ltagは、以下に示す4つの候補「φ」~「φ」の論理和(φ∨φ∨φ∨φ)により表される。
【0095】
【数2】
【0096】
よって、タイムステップ論理式生成部33は、4つの候補φ~φの論理和をタイムステップ論理式Ltsとして定める。この場合、タイムステップ論理式Ltsは、4つの候補φ~φの少なくともいずれかが真となる場合に真となる。
【0097】
次に、目標タイムステップ数の設定方法について補足説明する。
【0098】
タイムステップ論理式生成部33は、例えば、指示装置2から供給される入力信号S1により指定された作業の見込み時間に基づき、目標タイムステップ数を決定する。この場合、タイムステップ論理式生成部33は、メモリ12又は記憶装置4に記憶された、1タイムステップ当たりの時間幅の情報に基づき、上述の見込み時間から目標タイムステップ数を算出する。他の例では、タイムステップ論理式生成部33は、目的タスクの種類毎に適した目標タイムステップ数を対応付けた情報を予めメモリ12又は記憶装置4に記憶しておき、当該情報を参照することで、実行すべき目的タスクの種類に応じた目標タイムステップ数を決定する。
【0099】
好適には、タイムステップ論理式生成部33は、目標タイムステップ数を所定の初期値に設定する。そして、タイムステップ論理式生成部33は、制御入力生成部35が制御入力を決定できるタイムステップ論理式Ltsが生成されるまで、目標タイムステップ数を徐々に増加させる。この場合、タイムステップ論理式生成部33は、設定した目標タイムステップ数により制御入力生成部35が最適化処理を行った結果、最適解を導くことができなかった場合、目標タイムステップ数を所定数(1以上の整数)だけ加算する。
【0100】
このとき、タイムステップ論理式生成部33は、目標タイムステップ数の初期値を、ユーザが見込む目的タスクの作業時間に相当するタイムステップ数よりも小さい値に設定するとよい。これにより、タイムステップ論理式生成部33は、不必要に大きな目標タイムステップ数を設定することを好適に抑制する。
【0101】
(5-6)抽象モデル生成部
抽象モデル生成部34は、抽象モデル情報I5と、認識結果Imとに基づき、抽象モデルΣを生成する。ここで、抽象モデル情報I5には、目的タスクの種類毎に、抽象モデルΣの生成に必要な情報が記録されている。例えば、目的タスクがピックアンドプレイスの場合には、対象物の位置や数、対象物を置く領域の位置、ロボット5の台数(又はマニピュレータ52の数)等を特定しない汎用的な形式の抽象モデルが抽象モデル情報I5に記録されている。また、抽象モデル情報I5には、ロボット本体50の移動に関する抽象モデルが抽象モデル情報I5に記録されている。そして、抽象モデル生成部34は、抽象モデル情報I5に記録された、ロボット5のダイナミクス(詳しくはロボット本体50の移動に関するダイナミクスとマニピュレータ52のダイナミクス)を含む汎用的な形式の抽象モデルに対し、認識結果Imを反映することで、抽象モデルΣを生成する。これにより、抽象モデルΣは、抽象状態設定空間内の物体の状態と、ロボット5のダイナミクスとが抽象的に表されたモデルとなる。抽象状態設定空間内の物体の状態は、ピックアンドプレイスの場合には、対象物の位置及び数、対象物を置く領域の位置、ロボット5(マニピュレータ52)の数等を示す。
【0102】
なお、他作業体が存在する場合、他作業体の抽象化されたダイナミクスに関する情報が抽象モデル情報I5に含まれてもよい。この場合、抽象モデルΣは、抽象状態設定空間内の物体の状態と、ロボット5のダイナミクスと、他作業体のダイナミクスとが抽象的に表されたモデルとなる。
【0103】
ここで、ロボット5による目的タスクの作業時においては、抽象状態設定空間内のダイナミクスが頻繁に切り替わる。例えば、ピックアンドプレイスでは、マニピュレータ52が対象物iを掴んでいる場合には、当該対象物iを動かすことができるが、マニピュレータ52が対象物iを掴んでない場合には、当該対象物iを動かすことができない。
【0104】
以上を勘案し、本実施形態においては、対象物iを掴むという動作を論理変数「δ」により抽象表現する。この場合、例えば、抽象モデル生成部34は、図8に示す抽象状態設定空間に対して設定すべき抽象モデルΣを、以下の式(1)により定めることができる。
【0105】
【数3】
【0106】
ここで、「u」は、ロボット本体50を制御するための制御入力を示し、「u」は、マニピュレータ52aを制御するための制御入力を示し、「u」は、マニピュレータ52bを制御するための制御入力を示す。また、「I」は単位行列を示し、「0」は零行例を示す。なお、制御入力は、ここでは、一例として速度を想定しているが、加速度であってもよい。また、「δj,i」は、マニピュレータj(「j=1」はマニピュレータ52a、「j=2」はマニピュレータ52bを表す)が対象物iを掴んでいる場合に「1」であり、その他の場合に「0」である論理変数である。また、「δ12,i」は、マニピュレータ1又はマニピュレータ2が対象物iを掴んでいる場合にロボット本体50が動くことにより対象物iが移動する場合に「1」となり、その他の場合に「0」となる論理変数である。また、「xr1」、「xr2」は、マニピュレータj(j=1、2)の位置ベクトル、「x」、「x」は、対象物i(i=1,2)の位置ベクトルを示す。なお、ここでは、マニピュレータ52の座標xr1,xr2や対象物iの座標x1,x2を抽象状態設定空間内の基準となる座標系で表しており、ロボット本体50が動くと(即ち「u」によって)、マニピュレータ52及びマニピュレータ52が把持している対象物iの位置も動くことになる。
【0107】
また、「h(x)」は、対象物を掴める程度に対象物の近傍にロボットハンド(即ち、マニピュレータ52の位置ベクトルxr1又はxr2)が存在する場合に「h(x)≧0」となる変数であり、論理変数δとの間で以下の関係を満たす。
δ=1 ⇔ h(x)≧0
この式では、対象物を掴める程度に対象物の近傍にロボットハンドが存在する場合には、ロボットハンドが対象物を掴んでいるとみなし、論理変数δを「1」に設定している。
【0108】
ここで、式(1)は、タイムステップkでの物体の状態とタイムステップk+1での物体の状態との関係を示した差分方程式である。そして、上記の式(1)では、把持の状態が離散値である論理変数により表わされ、物体の移動は連続値により表わされているため、式(1)はハイブリッドシステムを示している。
【0109】
式(1)では、ロボット5全体の詳細なダイナミクスではなく、対象物を実際に把持するロボット5の手先であるロボットハンドのダイナミクス及びロボット本体50のダイナミクスのみを考慮している。これにより、制御入力生成部35による最適化処理の計算量を好適に削減することができる。
【0110】
また、抽象モデル情報I5には、ダイナミクスが切り替わる動作(ピックアンドプレイスの場合には対象物iを掴むという動作)に対応する論理変数、及び、認識結果Imから式(1)の差分方程式を導出するための情報が記録されている。よって、抽象モデル生成部34は、対象物の位置や数、対象物を置く領域(図8では搬送先G)、ロボット5の台数等が変動する場合であっても、抽象モデル情報I5と認識結果Imとに基づき、対象の抽象状態設定空間の環境に即した抽象モデルΣを決定することができる。
【0111】
なお、抽象モデル生成部34は、式(1)に示されるモデルに代えて、混合論理動的(MLD:Mixed Logical Dynamical)システムまたはペトリネットやオートマトンなどを組み合わせたハイブリッドシステムのモデルを生成してもよい。
【0112】
(5-7)制御入力生成部
制御入力生成部35は、タイムステップ論理式生成部33から供給されるタイムステップ論理式Ltsと、抽象モデル生成部34から供給される抽象モデルΣとに基づき、最適となるタイムステップ毎のロボット5に対する制御入力を決定する。この場合、制御入力生成部35は、目的タスクに対する評価関数を定義し、抽象モデルΣ及びタイムステップ論理式Ltsを制約条件として評価関数を最小化する最適化問題を解く。評価関数は、例えば、目的タスクの種類毎に予め定められ、メモリ12又は記憶装置4に記憶されている。
【0113】
例えば、制御入力生成部35は、運ぶ対象となる対象物と当該対象物を運ぶ目標地点との距離「d」と制御入力「u」の大きさが最小となる(即ちロボット5が費やすエネルギーを最小化する)ように評価関数を定める。上述の距離dは、「最終的に対象物(i=2)が搬送先Gに存在する」という目的タスクの場合には、対象物(i=2)と搬送先Gとのタイムステップkでの距離に相当する。
【0114】
この場合、制御入力生成部35は、全タイムステップにおける距離dのノルムの2乗と制御入力uのノルムの2乗との和を評価関数として定める。そして、制御入力生成部35は、抽象モデルΣ及びタイムステップ論理式Lts(即ち候補φの論理和)を制約条件とする以下の式(2)に示す制約付き混合整数最適化問題を解く。
【0115】
【数4】
【0116】
ここで、「T」は、最適化の対象となるタイムステップ数であり、目標タイムステップ数であってもよく、後述するように、目標タイムステップ数よりも小さい所定数であってもよい。この場合、好適には、制御入力生成部35は、論理変数を連続値に近似する(連続緩和問題とする)。これにより、制御入力生成部35は、計算量を好適に低減することができる。なお、線形論理式(LTL)に代えてSTLを採用した場合には、非線形最適化問題として記述することが可能である。
【0117】
また、制御入力生成部35は、目標タイムステップ数が長い場合(例えば所定の閾値より大きい場合)、最適化に用いるタイムステップ数を、目標タイムステップ数より小さい値(例えば上述の閾値)に設定してもよい。この場合、制御入力生成部35は、例えば、所定のタイムステップ数が経過する毎に、上述の最適化問題を解くことで、逐次的に制御入力uを決定する。
【0118】
好適には、制御入力生成部35は、目的タスクの達成状態に対する中間状態に相当する所定のイベント毎に、上述の最適化問題を解き、使用すべき制御入力uを決定してもよい。この場合、制御入力生成部35は、次のイベント発生までのタイムステップ数を、最適化に用いるタイムステップ数に設定する。上述のイベントは、例えば、抽象状態設定空間におけるダイナミクスが切り替わる事象である。例えば、ピックアンドプレイスを目的タスクとした場合には、ロボット5が対象物を掴む、ロボット5が運ぶべき複数の対象物のうちの1つの対象物を目的地点へ運び終える、などがイベントとして定められる。イベントは、例えば、目的タスクの種類毎に予め定められており、目的タスクの種類毎にイベントを特定する情報が記憶装置4に記憶されている。
【0119】
図9は、制御入力生成部35が生成した制御入力情報Icnに基づくロボット本体50及びマニピュレータ52a、52bの軌道を概略的に示した図である。なお、図9では、マニピュレータ52aが対象物Aを把持し、マニピュレータ52bが対象物Bを把持する時点までのマニピュレータ52a、52bの軌道が示されている。点56a~56cは、ロボット本体50のタイムステップ毎の予測位置(即ちxの遷移)を示し、点58a~58eは、マニピュレータ52aのタイムステップ毎の予測位置(即ちxr1の遷移)を示し、点59a~59dは、マニピュレータ52bのタイムステップ毎の予測位置(即ちxr2の遷移)を示している。なお、マニピュレータ52a、52bの位置は、ロボットハンド53a、53bの位置により抽象的に表されている。
【0120】
ここで、点56a~56cに対応するタイムステップと、点58a~58eに対応するタイムステップと、点59a~59dに対応するタイムステップとは、互いに重複する期間でのタイムステップであってもよく、重複していなくともよい。これらの重複の有無については、ユーザが設定する、目的タスクの実行における優先事項(安全性優先、タクトタイム優先等)の設定に応じて定まる。優先事項の設定については、「(6)優先事項の設定に応じた制約条件及び評価関数の決定」のセクションで詳しく説明する。
【0121】
制御入力生成部35は、上述した最適化処理に基づき、タイムステップごとの抽象状態ベクトルz及び制御入力を決定することで、図9に示すようなロボット本体50及びマニピュレータ52a、52bの各軌道を特定することができる。
【0122】
(5-8)サブタスクシーケンス生成部
サブタスクシーケンス生成部36は、制御入力生成部35から供給される制御入力情報Icnと、アプリケーション情報記憶部41が記憶するサブタスク情報I4とに基づき、動作シーケンスSrを生成する。この場合、サブタスクシーケンス生成部36は、サブタスク情報I4を参照することで、ロボット5が受け付け可能なサブタスクを認識し、制御入力情報Icnが示すタイムステップ毎の制御入力をサブタスクに変換する。
【0123】
例えば、サブタスク情報I4には、ピックアンドプレイスを目的タスクとする場合にロボット5が受け付け可能なサブタスクとして、ロボット本体50の移動(ムービング)とロボットハンドの移動(リーチング)とロボットハンドの把持(グラスピング)の3つのサブタスクを示す関数が定義されている。この場合、ムービングを表す関数「Move」は、例えば、当該関数実行前のロボット5の初期状態、経路情報Irtが示す経路(又は当該関数実行後のロボット5の最終状態)、及び当該関数の実行に要する所要時間(又はロボット本体50の移動速度)をそれぞれ引数とする関数である。リーチングを表す関数「Reach」は、例えば、当該関数実行前のロボット5の初期状態、当該関数実行後のロボット5の最終状態、及び当該関数の実行に要する所要時間をそれぞれ引数とする関数である。また、グラスピングを表す関数「Grasp」は、例えば、当該関数実行前のロボット5の状態、及び当該関数実行前の把持対象の対象物の状態、論理変数δをそれぞれ引数とする関数である。ここで、関数「Grasp」は、論理変数δが「1」のときに掴む動作を行うこと表し、論理変数δが「0」のときに放す動作を行うこと表す。この場合、サブタスクシーケンス生成部36は、関数「Reach」を、制御入力情報Icnが示すタイムステップ毎の制御入力により定まるマニピュレータ52の軌道に基づき決定し、関数「Grasp」を、制御入力情報Icnが示すタイムステップ毎の論理変数δの遷移に基づき決定する。また、サブタスクシーケンス生成部36は、関数「Move」を、経路情報Irt又は制御入力情報Icnが示すタイムステップ毎の制御入力により定まるロボット本体50の軌道に基づき決定する。ここで、ロボット本体50を移動(ムービング)させる関数「Move」の引数、及び特性を調整するパラメータなどは、経路情報Irtに基づきロボット本体50を基準点まで移動させる際と、基準点到達以降に、制御入力情報Icnに基づきマニピュレータ52による移動(リーチング)や把持(グラスピング)と共にロボット本体50を移動(ムービング)させる際とで、異なっていても良い。即ち、第1動作シーケンスSr1の生成時に用いる関数「Move」の形式(引数・パラメータ等)は、第2動作シーケンスSr2の生成時に用いる関数「Move」の形式と異なっていてもよい。
【0124】
そして、サブタスクシーケンス生成部36は、経路設定部30から経路情報Irtが供給された場合には、関数「Move」により構成される第1動作シーケンスSr1を生成し、当該第1動作シーケンスSr1をロボット制御部17に供給する。また、サブタスクシーケンス生成部36は、制御入力情報Icnが制御入力生成部35から供給された場合には、関数「Move」と関数「Reach」と関数「Grasp」とにより構成される第2動作シーケンスSr2を生成し、当該第2動作シーケンスSr2をロボット制御部17に供給する。
【0125】
例えば、目的タスクが「最終的に対象物(i=2)が搬送先Gに存在する」の場合、サブタスクシーケンス生成部36は、第2動作計画において、対象物(i=2)に最も近いマニピュレータ52に対し、関数「Reach」、関数「Grasp」、関数「Reach」、関数「Grasp」のシーケンスを含む第2動作シーケンスSr2を生成する。この場合、対象物(i=2)に最も近いマニピュレータ52は、1回目の関数「Reach」により対象物(i=2)の位置まで移動し、1回目の関数「Grasp」により対象物(i=2)を把持し、2回目の関数「Reach」により搬送先Gまで移動し、2回目の関数「Grasp」により対象物(i=2)を搬送先Gに載置する。
【0126】
(6)優先事項の設定に応じた制約条件及び評価関数の決定
ロボットコントローラ1は、指示装置2から供給される入力信号S1に基づき、ユーザが指定した目的タスクの実行における優先事項の設定を認識し、優先事項の設定に応じた制約条件及び評価関数を決定する。ここで、設定される優先事項は、例えば、「安全性優先」、「作業時間長優先(タクトタイム優先)」、「消費電力優先」などが挙げられる。この場合、設定され得る各優先事項と、使用すべき制約条件又は評価関数の少なくとも一方とを対応付けた情報(「優先事項対応情報」とも呼ぶ。)がアプリケーション情報記憶部41等に記憶されており、ロボットコントローラ1は、当該優先事項対応情報と、タスク指定情報Iaが示す優先事項とに基づき、使用する制約条件又は/及び評価関数を決定する。
【0127】
図10(A)は、安全性優先が設定された場合のロボット本体50の動作期間を示す帯68Aと、マニピュレータ52の動作期間を示す帯68Bとを、第2動作シーケンスSr2の実行期間に相当するタイムステップ上で明示した図である。
【0128】
安全性優先が設定された場合、ロボットコントローラ1は、ロボット本体50とマニピュレータ52とを時間軸上で排他的に動作させる必要があると判定し、ロボット本体50の移動が完了した後でマニピュレータ52を動作させている。この場合、ロボットコントローラ1の目標論理式生成部32は、例えば、「ロボット本体50とマニピュレータ52とを同時に動作させない」ことを表す制約条件の式を生成し、生成した制約条件の式を目標論理式Ltagに加える。他の例では、制御入力生成部35は、「ロボット本体50の制御入力とマニピュレータ52への制御入力が同一タイムステップにおいて発生しない」という制約条件を別途追加して最適化処理を行う。これにより、ロボットコントローラ1は、ユーザが指定した安全性優先を考慮して第2動作シーケンスSr2を生成することができる。
【0129】
図10(B)は、作業時間長優先が設定された場合のロボット本体50の動作期間を示す帯68Cと、マニピュレータ52の動作期間を示す帯68D及び帯68Eとを、第2動作シーケンスSr2において定められたタイムステップ上で明示した図である。
【0130】
作業時間長優先が設定された場合、ロボットコントローラ1は、ロボット本体50とマニピュレータ52とを時間軸上で積極的に重複して動作させるような第2動作シーケンスSr2を生成する。この場合、制御入力生成部35は、例えば、式(2)に示される評価関数に代えて、タイムステップ数Tの最小化に寄与する項を少なくとも含む評価関数(例えば、min{T})を設定するとよい。言い換えると、制御入力生成部35は、タイムステップ数Tと正の相関(式(2)に代えて評価関数の最大化を行う場合には負の相関)を有する評価関数、すなわち、タイムステップに対してペナルティとなる項を追加で設定する。そのようなペナルティ項は、例えば、最初の対象物に到達するまでに要するタイムステップ数などとすることができる。これにより、制御入力生成部35は、ロボット本体50の動作とマニピュレータ52の動作とを並列的に実行し、作業時間長をなるべく短くするような第2動作シーケンスSr2を生成することができる。
【0131】
また、消費電力優先が設定された場合、制御入力生成部35は、例えば、式(2)に示される評価関数をそのまま使用する、又は当該評価関数において、uに関する項の重みを他の項(ここではdに関する項)よりも大きくするように設定する。または、制御入力生成部35は、制御入力uの値と消費電力の関係を表す評価関数を設定しても良い。その場合、上述の関係はロボットによって異なり、ロボット種類ごとに設定すべき評価関数を表す情報がアプリケーション情報として記憶装置4に保存されていても良い。
これにより、ロボットコントローラ1は、消費電力を優先した動作計画を策定することができる。他の優先事項についても同様に、ロボットコントローラ1は、優先事項対応情報に基づき設定すべき制約条件又は/及び評価関数を認識し、動作計画に反映することで、指定された優先事項を考慮した動作計画を策定することができる。
【0132】
このように、制御入力生成部35は、空間的制約に加えて、ユーザが指定した優先事項に基づき時間的制約を勘案してタイムステップごとのロボット5の軌道を決定することができる。
【0133】
(7)目的タスクに関する入力の受け付け
次に、タスク指定画面による目的タスクに関する入力の受け付け処理について説明する。以後では、出力制御部15の制御に基づき指示装置2が表示するタスク指定画面の各表示例について、図11及び図12を参照して説明する。
【0134】
図11は、目的タスクを指定するタスク指定画面の第1表示例を示す。出力制御部15は、出力制御信号S2を生成し、当該出力制御信号S2を指示装置2に送信することで、指示装置2に図11に示すタスク指定画面を表示するよう制御している。図11に示すタスク指定画面は、主に、エリア指定欄80と、対象物指定欄81と、優先事項指定欄82と、実行ボタン83と、中止ボタン84とを有する。
【0135】
出力制御部15は、エリア指定欄80において、ロボット5が作業を行う指定エリアを指定する入力を受け付ける。ここでは、指定エリアの候補となるエリアに対して記号(「A」、「B」、「C」等)が割り当てられており、出力制御部15は、指定エリアとするエリアの記号(ここでは「B」)を選択する入力をエリア指定欄80により受け付ける。なお、出力制御部15は、各記号とエリアとの対応を表す作業空間のマップ等を、別ウィンドウによりポップアップ表示してもよい。
【0136】
出力制御部15は、対象物指定欄81において、対象物(ワーク)の搬送先(ゴール地点)を指定する入力を受け付ける。ここでは、対象物は形状ごとに分類されており、出力制御部15は、分類された対象物ごとに搬送先を指定する入力を対象物指定欄81において受け付ける。図11の例では、出力制御部15は、対象物指定欄81において、立方体状の対象物2個を「搬送先2」に移動させ、かつ、直方体状の対象物3個を「搬送先1」に移動させ、円柱状の対象物1個を「搬送先1」に移動させ、円柱状の対象物1個を「搬送先2」に移動させる入力を受け付けている。
【0137】
また、出力制御部15は、優先事項指定欄82において、優先事項を選択する入力を受け付ける。ここでは、優先事項の複数の候補が優先事項指定欄82において列挙されており、出力制御部15は、その中から1つの優先事項(ここでは「安全性」)の選択を受け付ける。
【0138】
そして、出力制御部15は、実行ボタン83が選択されたことを検知した場合、エリア指定欄80、対象物指定欄81、及び優先事項指定欄82において指定された内容を示す入力信号S1を指示装置2から受信し、受信した入力信号S1に基づきタスク指定情報Iaを生成する。また、出力制御部15は、中止ボタン84が選択されたことを検知した場合、動作計画の策定を中止する。
【0139】
図12は、目的タスクを指定するタスク指定画面の第2表示例を示す。出力制御部15は、出力制御信号S2を生成し、当該出力制御信号S2を指示装置2に送信することで、指示装置2に図12に示すタスク指定画面を表示するよう制御している。図12に示すタスク指定画面は、主に、エリア指定欄80Aと、対象物指定欄81Aと、搬送先マーク表示欄81Bと、優先事項指定欄82Aと、実行ボタン83Aと、中止ボタン84Aとを有する。
【0140】
出力制御部15は、エリア指定欄80Aにおいて、マップ情報I7を参照することで、作業空間のマップ(地図)を表示する。ここでは、出力制御部15は、表示した作業空間を所定個数のエリア(ここでは6個のエリア)に分割し、各分割エリアを指定エリアとして選択可能に表示している。なお、出力制御部15は、マップ情報I7に基づく作業空間のCG(Computer Graphics)による地図を表示する代わりに、作業空間を撮影した実画像を地図として表示してもよい。
【0141】
また、出力制御部15は、エリア指定欄80Aにおいて指定されたエリアに存在する対象物(ワーク)の実画像又はCG画像を対象物指定欄81Aにおいて表示している。この場合、出力制御部15は、エリア指定欄80Aにおいて指定されたエリアを撮影したカメラが生成した画像等をセンサ信号S4として取得し、取得したセンサ信号S4に基づき指定エリア内の最新の対象物の状態を対象物指定欄81Aに表示している。そして、出力制御部15は、対象物指定欄81Aに表示した各対象物に対し、搬送先を指定するマークを付す入力を受け付ける。なお、搬送先を指定するマークは、搬送先マーク表示欄81Bに示されるように、実線のマークが「搬送先1」に対応し、点線のマークが「搬送先2」に対応している。
【0142】
また、出力制御部15は、優先事項指定欄82Aにおいて、優先事項を選択する入力を受け付ける。ここでは、優先事項の複数の候補が優先事項指定欄82において列挙されており、出力制御部15は、その中から1つの優先事項(ここでは「安全性」)の選択を受け付ける。
【0143】
そして、出力制御部15は、実行ボタン83が選択されたことを検知した場合、エリア指定欄80A、対象物指定欄81A、及び優先事項指定欄82Aにおいて指定された内容を示す入力信号S1を指示装置2から受信し、受信した入力信号S1に基づきタスク指定情報Iaを生成する。これにより、出力制御部15は、タスク指定情報Iaを好適に生成することができる。また、出力制御部15は、中止ボタン84が選択されたことを検知した場合、動作計画の策定を中止する。
【0144】
以上のように、第1表示例又は第2表示例に示されるタスク指定画面によれば、出力制御部15は、タスク指定情報Iaを生成するために必要なユーザ入力を受け付け、タスク指定情報Iaを好適に取得することができる。
【0145】
(8)処理フロー
図13は、第1実施形態においてロボットコントローラ1が実行する処理の概要を示すフローチャートの一例である。
【0146】
まず、ロボットコントローラ1は、タスク指定情報Iaを取得する(ステップS11)。この場合、例えば、出力制御部15は、図11又は図12に示されるようなタスク指定画面を指示装置2に表示させ、目的タスクの指定に関する入力信号S1を受信することで、タスク指定情報Iaを取得する。他の例では、タスク指定情報Iaが記憶装置4等に予め記憶されている場合には、ロボットコントローラ1は、当該記憶装置4等からタスク指定情報Iaを取得してもよい。
【0147】
次に、ロボットコントローラ1は、ステップS11で取得したタスク指定情報Iaが示す指定エリアに対する基準点を決定し、決定した基準点への経路であるロボット経路を決定する(ステップS12)。この場合、経路設定部30は、対象物6の位置、自己位置、マニピュレータ52のリーチ範囲等に基づき、基準点を設定し、基準点に到達するためのロボット経路を示す経路情報Irtを生成する。
【0148】
そして、ロボットコントローラ1は、ロボット経路に基づく第1動作シーケンスSr1によるロボット制御を行う(ステップS13)。この場合、ロボット制御部17は、経路情報Irtが示すロボット経路に従いロボット5が移動するための第1動作シーケンスSr1に基づく制御信号S3をロボット5へ順次供給し、生成された第1動作シーケンスSr1に従いロボット5が動作するように制御する。
【0149】
そして、ロボットコントローラ1は、ロボット5が基準点に到達したか否か判定する(ステップS14)。そして、ロボットコントローラ1は、ロボット5が基準点に到達していないと判定した場合(ステップS14;No)、ステップS13での第1動作シーケンスSr1に基づくロボット制御を継続する。
【0150】
一方、ロボットコントローラ1は、ロボット5が基準点に到達したと判定した場合(ステップS14;Yes)、ロボット本体50の移動及びマニピュレータ52の動作に関する第2動作シーケンスSr2を生成する(ステップS15)。この場合、抽象状態設定部31による抽象状態設定情報ISの生成、目標論理式生成部32による目標論理式Ltagの生成、タイムステップ論理式生成部33によるタイムステップ論理式Ltsの生成、抽象モデル生成部34による抽象モデルΣの生成、制御入力生成部35による制御入力情報Icnの生成、サブタスクシーケンス生成部36による第2動作シーケンスSr2の生成が順に実行される。
【0151】
次に、ロボットコントローラ1は、ステップS15で生成した第2動作シーケンスSr2によるロボット制御を行う(ステップS16)。この場合、ロボット制御部17は、第2動作シーケンスSr2に基づく制御信号S3をロボット5へ順次供給し、生成された第2動作シーケンスSr2に従いロボット5が動作するように制御する。
【0152】
そして、ロボットコントローラ1は、目的タスクが完了したか否か判定する(ステップS17)。この場合、例えば、ロボットコントローラ1のロボット制御部17は、第2動作シーケンスSr2に基づくロボット5への制御信号S3の出力が完了した(出力が無くなった)場合に、目的タスクが完了したと判定する。他の例では、ロボット制御部17は、対象物の状態が完了状態になったことをセンサ信号S4に基づき認識した場合に、目的タスクが完了したと判定する。そして、ロボットコントローラ1は、目的タスクが完了したと判定した場合(ステップS17;Yes)、フローチャートの処理を終了する。一方、目的タスクが完了していないと判定した場合(ステップS17;No)、ロボットコントローラ1は、ステップS16での第2動作シーケンスSr2に基づくロボット制御を継続する。
【0153】
(9)変形例
次に、第1実施形態の変形例について説明する。以下の変形例は任意に組み合わせて適用してもよい。
【0154】
(第1変形例)
ロボットコントローラ1は、指定エリア内の状態(対象物6の状態を含む)を観測できてい状況において第1動作シーケンスSr1の生成及び第1動作シーケンスSr1に基づくロボット5の制御を行ってもよい。
【0155】
この場合、ロボットコントローラ1は、指定エリアを示すタスク指定情報Iaを受信した場合に、タスク指定情報Iaが示す指定エリアの任意の地点を基準点を定め、当該基準点までのロボット経路を示す第1動作シーケンスSr1を生成することで、ロボット5を基準点まで移動させる。この場合、ロボットコントローラ1は、例えば、指定エリアのうち、ロボット5が到達するまでの所要時間が最も短い地点、又は、ロボット5の出発位置(現在位置)から最も近い地点を、基準点として設定する。
【0156】
そして、ロボットコントローラ1の抽象状態設定部31は、ロボット5が基準点に到達後、ロボット5に備えられたセンサ7が生成するセンサ信号S4に基づき、指定エリア内の物体に関する認識結果Imを生成する。その後、ロボットコントローラ1は、上述した実施形態に基づく処理を実行し、第2動作シーケンスSr2の生成及び第2動作シーケンスSr2に基づくロボット5の制御を行う。
【0157】
このように、ロボットコントローラ1は、指定エリア内の基準点に到達後に対象物等の状態を認識する場合であっても、目的タスクをロボット5に好適に実行させることができる。
【0158】
(第2変形例)
図5に示す動作計画部16のブロック構成は一例であり、種々の変更がなされてもよい。
【0159】
例えば、ロボット5に命令する動作のシーケンスの候補φの情報が記憶装置4に予め記憶され、動作計画部16は、当該情報に基づき、制御入力生成部35の最適化処理を実行する。これにより、動作計画部16は、最適な候補φの選定とロボット5の制御入力の決定を行う。この場合、動作計画部16は、動作シーケンスSrの生成において、抽象状態設定部31、目標論理式生成部32及びタイムステップ論理式生成部33に相当する機能を有しなくともよい。このように、図5に示す動作計画部16の一部の機能ブロックの実行結果に関する情報が予めアプリケーション情報記憶部41に記憶されていてもよい。
【0160】
他の例では、アプリケーション情報には、目的タスクに対応する動作シーケンスSrを設計するためのフローチャートなどの設計情報が予め含まれており、動作計画部16は、当該設計情報を参照することで、動作シーケンスを生成してもよい。なお、予め設計されたタスクシーケンスに基づきタスクを実行する具体例については、例えば特開2017-39170号に開示されている。
【0161】
(第3変形例)
経路設定部30が生成した経路情報Irtは、サブタスクシーケンス生成部36に供給される代わりに、他の処理ブロックに供給されてもよい。例えば、制御入力生成部35は、経路情報Irtを受信し、当該経路情報Irtが示すロボット経路に沿ったタイムステップごとの制御入力を生成し、当該制御入力を示す制御入力情報Icnをサブタスクシーケンス生成部36へ供給してもよい。この場合、サブタスクシーケンス生成部36は、制御入力情報Icnに基づき、第1動作シーケンスSr1を生成する。
【0162】
<第2実施形態>
図14は、第2実施形態における動作計画装置1Xの概略構成図を示す。動作計画装置1Xは、主に、状態設定手段31Xと、動作計画手段16Xとを有する。なお、動作計画装置1Xは、複数の装置から構成されてもよい。動作計画装置1Xは、例えば、第1実施形態におけるロボットコントローラ1とすることができる。
【0163】
状態設定手段31Xは、対象物を扱うマニピュレータを有する移動型のロボットが作業する作業空間における状態を設定する。状態設定手段31Xは、例えば、第1実施形態(変形例を含む、以下同じ。)における抽象状態設定部31とすることができる。
【0164】
動作計画手段16Xは、状態設定手段31Xが設定した状態と、ロボットの移動及びマニピュレータの動作に関する制約条件と、ロボットのダイナミクスに基づく評価関数と、に基づいて、ロボットの移動及びマニピュレータの動作に関する動作計画を決定する。動作計画手段16Xは、例えば、第1実施形態における動作計画部16(抽象状態設定部31を除く。)とすることができる。
【0165】
図15は、第2実施形態におけるフローチャートの一例である。状態設定手段31Xは、対象物を扱うマニピュレータを有する移動型のロボットが作業する作業空間における状態を設定する(ステップS21)。動作計画手段16Xは、状態設定手段31Xが設定した状態と、ロボットの移動及びマニピュレータの動作に関する制約条件と、ロボットのダイナミクスに基づく評価関数と、に基づいて、ロボットの移動及びマニピュレータの動作に関する動作計画を決定する(ステップS22)。
【0166】
第2実施形態によれば、動作計画装置1Xは、移動型ロボットの移動及び当該ロボットのマニピュレータの動作の両方を加味した最適な動作計画を策定することができる。
【0167】
なお、上述した各実施形態において、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(Non-Transitory Computer Readable Medium)を用いて格納され、コンピュータであるプロセッサ等に供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記憶媒体(Tangible Storage Medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記憶媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記憶媒体(例えば光磁気ディスク)、CD-ROM(Read Only Memory)、CD-R、CD-R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(Transitory Computer Readable Medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0168】
その他、上記の各実施形態の一部又は全部は、以下の付記のようにも記載され得るが以下には限られない。
【0169】
[付記1]
対象物を扱うマニピュレータを有する移動型のロボットが作業する作業空間における状態を設定する状態設定手段と、
前記状態と、前記ロボットの移動及び前記マニピュレータの動作に関する制約条件と、前記ロボットのダイナミクスに基づく評価関数と、
に基づいて、前記ロボットの移動及び前記マニピュレータの動作に関する動作計画を決定する動作計画手段と、
を有する動作計画装置。
[付記2]
前記動作計画手段は、前記ロボットが作業を行うエリアとして指定された指定エリア内の基準点まで前記ロボットを移動させる第1動作計画と、前記ロボットが前記基準点に到達後の前記状態と前記制約条件と前記評価関数とに基づく前記動作計画である第2動作計画とを夫々決定する、付記1に記載の動作計画装置。
[付記3]
前記動作計画手段は、前記対象物の位置に基づき、前記基準点を設定する、付記2に記載の動作計画装置。
[付記4]
前記動作計画手段は、前記対象物の位置と、前記ロボットの移動誤差と、前記マニピュレータのリーチ範囲とに基づき、前記基準点を決定する、付記3に記載の動作計画装置。
[付記15]
前記状態設定手段は、前記第1動作計画に基づき前記ロボットが前記基準点に到達した場合に、前記ロボット及び前記対象物が少なくとも存在する状態設定空間を決定し、当該状態設定空間内での前記状態を設定する、付記2~4のいずれか一項に記載の動作計画装置。
[付記6]
前記動作計画手段は、前記動作計画において優先すべき優先事項が指定された場合に、前記優先事項に基づき、前記制約条件又は前記評価関数の少なくとも一方を決定する、付記1~5のいずれか一項に記載の動作計画装置。
[付記7]
前記動作計画手段は、前記優先事項が作業時間長である場合、前記作業時間長と正又は負の相関を有する前記評価関数を設定する、付記6に記載の動作計画装置。
[付記8]
前記動作計画手段は、前記優先事項が安全性である場合、前記ロボットの移動と前記マニピュレータの動作とを排他的に実行することを規定する前記制約条件を設定する、付記6に記載の動作計画装置。
[付記9]
前記動作計画手段は、
前記状態に基づき、前記ロボットが実行すべきタスクを時相論理に基づく論理式に変換する論理式変換手段と、
前記論理式から、前記タスクを実行するためタイムステップ毎の状態を表す論理式であるタイムステップ論理式を生成するタイムステップ論理式生成手段と、
前記タイムステップ論理式に基づき、前記ロボットに実行させるサブタスクのシーケンスを、前記動作計画として生成するサブタスクシーケンス生成手段と、
を有する、付記1~8のいずれか一項に記載の動作計画装置。
[付記10]
対象物を扱うマニピュレータを有する移動型のロボットが作業するエリアの指定を受け付けるエリア指定手段と、
前記エリア内の対象物に関する指定を受け付ける対象物指定手段と、
前記エリアの指定及び前記対象物に関する指定に基づき、前記ロボットの移動及び前記マニピュレータの動作に関する動作計画を決定する動作計画手段と、
を有する動作計画装置。
[付記11]
前記動作計画手段は、前記エリア内の所定の基準点に前記ロボットを移動させる第1動作計画と、前記第1動作計画の前記ロボットによる実行後、前記ロボットの移動及び前記マニピュレータの動作に関する前記動作計画である第2動作計画と、を夫々決定する、付記10に記載の動作計画装置。
[付記12]
コンピュータが、
対象物を扱うマニピュレータを有する移動型のロボットが作業する作業空間における状態を設定し、
前記状態と、前記ロボットの移動及び前記マニピュレータの動作に関する制約条件と、前記ロボットのダイナミクスに基づく評価関数と、
に基づいて、前記ロボットの移動及び前記マニピュレータの動作に関する動作計画を決定する、
動作計画方法。
[付記13]
対象物を扱うマニピュレータを有する移動型のロボットが作業する作業空間における状態を設定し、
前記状態と、前記ロボットの移動及び前記マニピュレータの動作に関する制約条件と、前記ロボットのダイナミクスに基づく評価関数と、
に基づいて、前記ロボットの移動及び前記マニピュレータの動作に関する動作計画を決定する処理をコンピュータに実行させるプログラムが格納された記憶媒体。
[付記14]
コンピュータが、
対象物を扱うマニピュレータを有する移動型のロボットが作業するエリアの指定を受け付け、
前記エリア内の対象物に関する指定を受け付け、
前記エリアの指定及び前記対象物に関する指定に基づき、前記ロボットの移動及び前記マニピュレータの動作に関する動作計画を決定する、
動作計画方法。
[付記15]
対象物を扱うマニピュレータを有する移動型のロボットが作業するエリアの指定を受け付け、
前記エリア内の対象物に関する指定を受け付け、
前記エリアの指定及び前記対象物に関する指定に基づき、前記ロボットの移動及び前記マニピュレータの動作に関する動作計画を決定する処理をコンピュータに実行させるプログラムが格納された記憶媒体。
【0170】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。すなわち、本願発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。また、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。
【符号の説明】
【0171】
1 ロボットコントローラ
1X 動作計画装置
2 指示装置
4 記憶装置
5 ロボット
7 センサ
41 アプリケーション情報記憶部
100 ロボット制御システム
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15