(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-17
(45)【発行日】2023-03-28
(54)【発明の名称】生成方法、情報処理装置、プログラム、及び生成システム
(51)【国際特許分類】
B25J 9/22 20060101AFI20230320BHJP
G06F 16/903 20190101ALI20230320BHJP
【FI】
B25J9/22 A
G06F16/903
(21)【出願番号】P 2020199523
(22)【出願日】2020-12-01
【審査請求日】2020-12-01
【審判番号】
【審判請求日】2021-12-21
【早期審査対象出願】
(73)【特許権者】
【識別番号】517255566
【氏名又は名称】株式会社エクサウィザーズ
(72)【発明者】
【氏名】セロンロペス アルトゥーロ エドゥアルド
【合議体】
【審判長】刈間 宏信
【審判官】中里 翔平
【審判官】鈴木 貴雄
(56)【参考文献】
【文献】特開2006-350729(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00-21/02
A47J 44/00
(57)【特許請求の範囲】
【請求項1】
情報処理装置が実行する生成方法であって、
クエリで指定された目的を実現するためのコンポジションを予測する処理と、
予測した前記コンポジションに基づきアプリケーションを生成する処理と、
を含み、
前記アプリケーションはロボット用アプリケーションであり、
前記コンポジションは前記アプリケーションを実現するためのソフトウェアコンポーネントに関する情報を含
み、
前記アプリケーションの目的を入力とし、当該アプリケーションのコンポジションを出力するよう訓練された学習モデルを用いて、前記クエリで指定された目的を実現するためのコンポジションを予測する、
生成方法。
【請求項2】
前記コンポジションは、前記アプリケーションを実行するための一以上のコンテナに関する情報と、前記コンテナに含まれる一以上のモジュールに関する情報と、モジュール間の通信に関する情報と、を含む、
請求項1に記載の生成方法。
【請求項3】
前記クエリは、開発者から入力され、
入力されるクエリは、自然言語、または一以上のキーワードを含む、
請求項1又は請求項2に記載の生成方法。
【請求項4】
エージェントが、前記開発者が入力したクエリを受信し、前記クエリを前記学習モデルの入力とし、前記学習モデルが出力するコンポジションを取得し、前記コンポジションに基づきアプリケーションを生成し、生成したアプリケーションをロボットに送信する、
請求
項3に記載の生成方法。
【請求項5】
生成した前記アプリケーションをロボットに送信する、
請求項1から請求項4までのいずれか1項に記載の生成方法。
【請求項6】
クエリで指定された目的を実現するためのコンポジションを予測し、予測した前記コンポジションを用いてアプリケーションを生成する生成部、
を備え、
前記アプリケーションはロボット用アプリケーションであり、
前記コンポジションは前記アプリケーションを実現するためのソフトウェアコンポーネントに関する情報を含
み、
前記アプリケーションの目的を入力とし、当該アプリケーションのコンポジションを出力するよう訓練された学習モデルを用いて、前記クエリで指定された目的を実現するためのコンポジションを予測する、
情報処理装置。
【請求項7】
クエリで指定された目的を実現するためのコンポジションを予測する処理と、
予測した前記コンポジションを用いてアプリケーションを生成する処理と、
をコンピュータに実行させるためのプログラムであって、
前記アプリケーションはロボット用アプリケーションであり、
前記コンポジションは前記アプリケーションを実現するためのソフトウェアコンポーネントに関する情報を含
み、
前記アプリケーションの目的を入力とし、当該アプリケーションのコンポジションを出力するよう訓練された学習モデルを用いて、前記クエリで指定された目的を実現するためのコンポジションを予測する、
プログラム。
【請求項8】
開発者がクエリを入力する開発者端末と、
前記クエリで指定された目的の操作を実行するロボットと、
前記クエリを受け取り、前記目的の操作を実行するためのアプリケーションを前記ロボットに送信する情報処理装置と、
を備えた生成システムであって、
前記情報処理装置により、前記クエリで指定された目的を実現するためのコンポジションを予測する処理と、予測した前記コンポジションに基づき前記アプリケーションを生成する処理と、
を実行し、
前記アプリケーションはロボット用アプリケーションであり、
前記コンポジションは前記アプリケーションを実現するためのソフトウェアコンポーネントに関する情報を含
み、
前記アプリケーションの目的を入力とし、当該アプリケーションのコンポジションを出力するよう訓練された学習モデルを用いて、前記クエリで指定された目的を実現するためのコンポジションを予測する、
生成システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、生成方法、情報処理装置、プログラム、及び生成システムに関する。
【背景技術】
【0002】
少子高齢化等に起因する労働力不足を補うために、産業用ロボット(単に、ロボットともいう)の遠隔制御が期待されている。例えば、SIer(Systems Integrator;システムインテグレータ)が新規のロボット用アプリケーションを構築する際には、既存のアプリケーションを改変する等して対応する場合があるが、このような作業は高度なスキルが必要とされるうえ、SIerの人材不足もあり迅速な対応が困難となっている。
【先行技術文献】
【非特許文献】
【0003】
【文献】Bruyninckx H. “The BRICS Component Model: A Model-Based Development Paradigm For Complex Robotics Software Systems”, Proceedings of the 2013 symposium on applied computing, Coimbra, Portugal; 2013, pp. 1758-1764.
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記先行技術文献は、ロボット用アプリケーションを作成するうえで、コンポーネントベースの開発を開示しているが、人材不足や迅速な開発には対応できない。
【0005】
本発明は、上記の課題を鑑みてなされたものであり、迅速なロボット用アプリケーションの作成を支援することを目的とする。
【課題を解決するための手段】
【0006】
一実施形態にかかる生成方法は、情報処理装置が実行する生成方法であって、クエリで指定された目的を実現するためのコンポジションを予測する処理と、予測した前記コンポジションに基づきアプリケーションを生成する処理と、を含み、前記アプリケーションはロボット用アプリケーションであり、前記コンポジションは前記アプリケーションを実現するためのソフトウェアコンポーネントに関する情報を含み、前記アプリケーションの目的を入力とし、当該アプリケーションのコンポジションを出力するよう訓練された学習モデルを用いて、前記クエリで指定された目的を実現するためのコンポジションを予測する。
【発明の効果】
【0007】
一実施形態によれば、ロボット用アプリケーションの作成を支援することができる。
【図面の簡単な説明】
【0008】
【
図1】本実施形態に係る生成システムの構成の一例を示す図である。
【
図2】開発者端末のハードウェア構成の一例を示す図である。
【
図3】サーバ装置のハードウェア構成の一例を示す図である。
【
図4】開発者端末の機能構成の一例を示す図である。
【
図5】サーバ装置の機能構成の一例を示す図である。
【
図11】サーバ装置が実行する学習処理の一例を示すフローチャートである。
【
図12】サーバ装置が実行する生成処理の一例を示すフローチャートである。
【
図13】アプリケーションの生成処理の一例を示す図である。
【発明を実施するための形態】
【0009】
以下、本発明の各実施形態について、添付の図面を参照しながら説明する。なお、各実施形態に係る明細書及び図面の記載に関して、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省略する。
【0010】
[実施形態]
<システム概要>
まず、本実施形態に係る生成システムの概要について説明する。本実施形態に係る生成システムは、ロボット用アプリケーションを作成するためのシステムである。このロボット用アプリケーションは、単にアプリケーションともいう。
【0011】
本実施形態に係る生成システムは、例えば、工場、学校等の教育関連施設、テーマパーク、運動場、体育館、店舗、公園、自宅、介護施設、病院などの任意の施設、登山や洞窟探検などの野外の環境で利用できる。
【0012】
<システム構成>
図1は、本実施形態に係る生成システムの構成の一例を示す図である。
図1に示すように、本実施形態に係る生成システムは、ネットワークNを介して相互に通信可能に接続された、ロボット1と、開発者端末2と、サーバ装置3と、を備える。ネットワークNは、例えば、有線LAN(Local Area Network)、無線LAN、インターネット、公衆回線網、モバイルデータ通信網、又はこれらの組み合わせである。
【0013】
ロボット1は、開発者やサーバ装置3により遠隔制御される対象である。ロボット1は、開発者が開発者端末2において入力した命令(クエリ)や、サーバ装置3が送信したアプリケーションや指示にしたがって動作する。ロボット1は、開発者のいる場所とは異なる場所、例えば遠隔地の作業現場(作業空間)に設置されるものとしたが、これに限られない。
図1の例では、生成システムは、ロボット1を1つ備えるが、複数備えてもよい。
【0014】
サーバ装置3は、開発者が入力したクエリに基づきに基づき、ロボット1による操作を制御する情報処理装置(コンピュータ)の一例である。情報処理装置は、PC(Personal Computer)、スマートフォン、タブレット端末、サーバ装置、マイクロコンピュータ、又はこれらの組み合わせであってもよい。サーバ装置3について詳しくは後述する。また、サーバ装置3が仮想的に出現させるサービス提供主体(サービス・エンティティ)をエージェントと称し、本実施形態では学習モデルを備える構成として機能させる。すなわち、サーバ装置3はエージェントを備え、このエージェントが開発者とロボット1との間の通信を仲介する仲介者としての役割を果たす。例えば、エージェントは、開発者からのクエリを受信し、サーバ装置3の処理結果(例えば、アプリケーション)をロボット1に送信する。
図1の例では、生成システムは、サーバ装置3を1つ備えるが、複数備えてもよい。また、エージェントは、後述する学習モデルに対して情報の入出力を行うとともに、後述する教師データを用いて学習モデルを学習させる。
【0015】
開発者端末2は、開発者が、ロボット1に対して所望する操作、すなわち、ロボット1を動作させるアプリケーションの目的を入力するために利用する情報処理装置の一例である。開発者端末2は、アプリケーションの目的をクエリとして、ネットワークNを介してサーバ装置3に送信する。また、開発者は、例えば撮影装置によって撮影されるロボット1の操作を、開発者端末2の表示装置で表示して閲覧してもよい。開発者端末2は、PC、スマートフォン、又はタブレット端末であるが、これに限られない。開発者は、生成システムの管理者、生成システムが導入された施設の従業者、または、生成システムを導入した施設の利用者であるが、これに限られない。
図1の例では、生成システムは、開発者端末2を1つ備えるが、複数備えてもよい。
【0016】
<ハードウェア構成>
図2は、開発者端末2のハードウェア構成の一例を示す図である。
図2に示すように、開発者端末2は、バスB2を介して相互に接続された、プロセッサ201と、メモリ202と、ストレージ203と、通信I/F204と、入出力I/F205と、入力装置207と、出力装置208と、を備える。
【0017】
プロセッサ201は、ストレージ203に記憶されたプログラムをメモリ202に展開して実行することにより、開発者端末2の各構成を制御し、開発者端末2の機能を実現する。プロセッサ201が実行するプログラムは、OS(Operating System)及び生成プログラムを含むが、これに限られない。プロセッサ201が生成プログラムを実行することにより、本実施形態に係る生成方法が実現される。プロセッサ201は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)、ASIC(Application Specific Integrated Circuit)、DSP(Digital Signal Processor)、又はこれらの組み合わせである。
【0018】
メモリ202は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)、又はこれらの組み合わせである。ROMは、例えば、PROM(Programmable ROM)、EPROM(Erasable Programmable ROM)、EEPROM(Electrically Erasable Programmable ROM)、又はこれらの組み合わせである。RAMは、例えば、DRAM(Dynamic RAM)、SRAM(Static RAM)、MRAM(Magnetoresistive RAM)、又はこれらの組み合わせである。
【0019】
ストレージ203は、OS、生成プログラム、及び各種のデータを記憶する。ストレージ203は、例えば、フラッシュメモリ、HDD(Hard Disk Drive)、SSD(Solid State Drive)、SCM(Storage Class Memories)、又はこれらの組み合わせである。
【0020】
通信I/F204は、開発者端末2をネットワークNに接続するためのインタフェースである。通信I/F204は、例えば、Bluetooth(登録商標)、Wi-Fi(登録商標)、ZigBee(登録商標)、Ethernet(登録商標)、光通信(例えば、Fibre Channel)等に準拠したアダプタが挙げられる。
【0021】
入出力I/F205は、開発者端末2に入力装置207及び出力装置208を接続するためのインタフェースである。入力装置207は、例えば、マウス、キーボード、タッチパネル、マイク、スキャナ、カメラ、各種センサ、又はこれらの組み合わせである。出力装置は、例えば、ディスプレイ、プロジェクタ、プリンタ、スピーカ、バイブレータ、又はこれらの組み合わせである。
【0022】
なお、本実施形態において、生成プログラムは、開発者端末2の製造段階でメモリ202又はストレージ203に書き込まれてもよいし、ネットワークNを介して開発者端末2に提供されてもよいし、非一時的でコンピュータ読み取り可能な記録媒体を介して開発者端末2に提供されてもよい。
【0023】
次に、サーバ装置3のハードウェア構成について説明する。
図3は、サーバ装置3のハードウェア構成の一例を示す図である。
図3に示すように、サーバ装置3は、バスBを介して相互に接続された、プロセッサ301と、メモリ302と、ストレージ303と、通信I/F304と、入出力I/F305と、ドライブ装置306と、を備える。
【0024】
プロセッサ301は、ストレージ303に記憶されたプログラムをメモリ302に展開して実行することにより、サーバ装置3の各構成を制御し、サーバ装置3の機能を実現する。プロセッサ301が実行するプログラムは、OS及び生成プログラムを含むが、これに限られない。プロセッサ301が生成プログラムを実行することにより、本実施形態に係る遠隔制御方法が実現される。プロセッサ301は、例えば、CPU、MPU、GPU、ASIC、DSP、又はこれらの組み合わせである。
【0025】
メモリ302は、例えば、ROM、RAM、又はこれらの組み合わせである。ROMは、例えば、PROM、EPROM、EEPROM、又はこれらの組み合わせである。RAMは、例えば、DRAM、SRAM、MRAM、又はこれらの組み合わせである。
【0026】
ストレージ303は、OS、生成プログラム、及び各種のデータを記憶する。ストレージ303は、例えば、フラッシュメモリ、HDD、SSD、SCM、又はこれらの組み合わせである。
【0027】
通信I/F304は、サーバ装置3を、ネットワークNを介して、開発者端末2を含む外部装置に接続し、通信を制御するためのインタフェースである。例えば、通信I/F304としては、Bluetooth(登録商標)、Wi-Fi(登録商標)、ZigBee(登録商標)、Ethernet(登録商標)、光通信(例えば、Fibre Channel)等に準拠したアダプタが挙げられる。
【0028】
入出力I/F305は、サーバ装置3に入力装置307及び出力装置308を接続するためのインタフェースである。入力装置307は、例えば、マウス、キーボード、タッチパネル、マイク、スキャナ、カメラ、各種センサ、操作ボタン、又はこれらの組み合わせである。出力装置308は、例えば、ディスプレイ、プロジェクタ、プリンタ、スピーカ、バイブレータ、又はこれらの組み合わせである。
【0029】
ドライブ装置306は、ディスクメディア309のデータを読み書きする。ドライブ装置306は、例えば、磁気ディスクドライブ、光学ディスクドライブ、光磁気ディスクドライブ、又はこれらの組み合わせである。ディスクメディア309は、例えば、CD(Compact Disc)、DVD(Digital Versatile Disc)、FD(Floppy Disk)、MO(Magneto-Optical disk)、BD(Blu-ray(登録商標) Disc)、又はこれらの組み合わせである。
【0030】
なお、本実施形態において、生成プログラムは、サーバ装置3の製造段階でメモリ302又はストレージ303に書き込まれてもよいし、ネットワークNを介してサーバ装置3に提供されてもよいし、ディスクメディア309などの非一時的でコンピュータ読み取り可能な記録媒体を介してサーバ装置3に提供されてもよい。
【0031】
<機能構成>
図4は、開発者端末2の機能構成の一例を示す図である。
図4に示すように、開発者端末2は、通信部21と、記憶部22と、制御部23と、を備える。
【0032】
通信部21は、通信I/F204により実現される。通信部21は、ロボット1や開発者端末2との間でクエリやアプリケーションプログラム等の情報の送受信を行う。また、通信部21は、開発者端末2とサーバ装置3との間で、クエリ情報の送受信を行う。
【0033】
記憶部22は、メモリ202及びストレージ203により実現される。記憶部22は、クエリ情報を含む各種の情報を記憶する。ここで、クエリ情報について説明する。
【0034】
クエリ情報は、開発者が開発者端末2において入力したリクエスト等を記録した情報である。クエリ情報とは、アプリケーションの目的、すなわち、ロボットに対する操作(ロボットの挙動)を示す情報であり、例えば、「ロボットが家の地図を作製する」など、自然言語で入力されるものであってもよい。本実施形態に係るクエリ情報は、アプリケーションの目的を表現し得る1以上のキーワードを含む。このキーワードとは、人間が解読可能な文脈として表現されるものであり、例えば、アプリケーションの目的が上述の「ロボットが家の地図を作製する」ことである場合、キーワードは、「ロボット」、「家」、「地図」、「作製」等である。なお、記憶部22では、開発者が入力したリクエスト自体をクエリ情報として格納してもよいし、リクエストに含まれるキーワードをクエリ情報として格納してもよい。また、クエリ情報は、自然言語だけでなく、一以上のキーワードを含んでもよい。
【0035】
情報送受信部231は、ロボット1やサーバ装置3との間で情報を送受信する。具体的に、情報送受信部331は、開発者が入力したクエリ等の情報を通信部21を介してサーバ装置3に送信し、ロボット1やサーバ装置3から処理結果に関する情報を通信部21を介して受信する。情報送受信部231は、処理結果等の情報を記憶部22に保存してもよい。
【0036】
次に、サーバ装置3の機能構成について説明する。
図5は、サーバ装置3の機能構成の一例を示す図である。
図5に示すように、サーバ装置3は、通信部31と、記憶部32と、制御部33と、を備える。
【0037】
通信部31は、通信I/F304により実現される。通信部31は、ネットワークNを介して、ロボット1や開発者端末2との間で情報の送受信を行う。具体的に、通信部31は、開発者端末2からクエリ等の情報を受信する。また、通信部31は、ロボット1に対して生成したアプリケーションを送信する。
【0038】
記憶部32は、メモリ302及びストレージ303により実現される。記憶部32は、クエリ情報、アーキテクチャ情報、コンポジション情報、及び学習モデルを含む各種の情報を記憶する。ここで、クエリ情報、アーキテクチャ情報、コンポジション情報、及び学習モデルについて説明する。
【0039】
クエリ情報は、開発者が開発者端末2において入力したクエリを記録した情報である。クエリ情報については上述したためここでは説明を省略する。サーバ装置3の記憶部32に格納されるクエリ情報は、後述するサーバ装置3の情報送受信部331によって開発者端末2より受信されるものとするが、これに限られない。
【0040】
アーキテクチャ情報は、ソフトウェア開発において公知の「5つの関心の分離」パラダイム(5Cパラダイム)を、ロボットアプリケーションの開発向けにアップデートした情報である。本実施形態では、本システムの管理者等が予め当該システムのアーキテクチャ情報を設定するものとしたため、このアーキテクチャ情報はサーバ装置3の記憶部32に格納されるものとしたが、これに限られない。例えば、開発者がアーキテクチャ情報を設定し得る構成としてもよく、その場合には、開発者が開発者端末2を用いてアーキテクチャ情報を入力すると、サーバ装置3は、この入力されたアーキテクチャ情報を通信部31を介して受信し、記憶部32のアーキテクチャ情報に格納してもよい。また、このアーキテクチャ情報に格納される情報は管理者や開発者によって更新されてもよい。
【0041】
図6は、ロボットアプリケーションの開発に用いる5Cパラダイムの模式図である。この
図6を用いて、ロボットアプリケーションの開発に用いる5Cパラダイムの各要素について説明する。5Cパラダイムの5Cとは、“コミュニケーション”(Communication)、“コーディネーション”(Coordination)、“コンポジション”(Composition)、“コンピューテーション”(Computation)、及び“コンフィギュレーション”(Configuration)の各要素である。なお、これらの“コミュニケーション”、“コーディネーション”、“コンポジション”、“コンピューテーション”、及び“コンフィギュレーション”を要素(関心)ともいう。
【0042】
本実施形態に係るロボットアプリケーションは、当該アプリケーションの固有の目的を達成するために、これら5Cのうち必要な要素を組み合わせることにより生成される。そして、生成されたアプリケーションがビルドされ、ロボット1にディプロイされる。その結果、ロボット1は、開発者の入力したアプリケーションの目的を達成し得る操作を実行し得る。
【0043】
上述した記憶部32のアーキテクチャ情報に含まれる各要素について説明する。“コミュニケーション”は、各要素間の通信である。各要素間の通信とは、モジュール間の通信、クラウドサービスとモジュールとの間の通信、モジュールとロボット関連ハードウェアとの通信等である。
図6には、バス0を介した、クラウドサービスとモジュールとの間の通信、バスDを介した、モジュールとロボット関連ハードウェアとの通信を例示している。また、この“コミュニケーション”は、一例として、DDS(Data Distribution Service)、RPC(Remote Procedure Call;リモートプロシージャコール,遠隔手続き呼び出し)、REST API(RESTful API,REpresentational State Transfer)、TLS(Transport Layer Security;トランスポート・レイヤー・セキュリティ)暗号により実現される。なお、モジュールとは、後述するソフトウェアコンポーネントの一例であり、例えば、ロボットの逆運動学の技術を実装するために、ロボットの目的のポーズの算出を行う処理である。RPCやDDS等の“コミュニケーション”技術では、ロボットの逆運動学モジュールは別のモジュールに目的のポーズを送信する。
【0044】
“コーディネーション”は、各要素間の通信の整合性を維持したり調整したりする機能を備える。“コーディネーション”は、一例として、ステートマシンや、watchdogデーモンにより実現される。
【0045】
“コンポジション”は、ソフトウェアコンポーネントに関する情報や、ソフトウェアコンポーネント間での関係(例えば、要素の組み込みや承継)をグラフ化したものである。なお、本実施形態に係るソフトウェアコンポーネントとは、アプリケーションを構成する機能の単位であり、上述のモジュール、コンテナ、その他のハードウェアまたはソフトウェア要素を含む。この“コンポジション”の実装は、一例として、Docker Compose(ドッカー・コンポーズ)、Dockerコンテナ、Dockerイメージにより実現される。
【0046】
“コンピューテーション”は、各モジュールを実装する基盤やソフトウェアである。“コンピューテーション”は、一例として、ロボットミドルウェアモジュール(例えば、ROS1ノード,ROS2ノード)、AI(Artificial Intelligence)フレームワーク(例えば、テンソルフロー)、プロプライエタリ・コード、デバイスドライバ(例えば、カメラ用ドライバやモータードライバ)により実現される。なお、上述のROSは、Robot Operating System(ロボットオペレーティングシステム)の略称である。
【0047】
“コンフィギュレーション”は、各要素や要素間の設定に関する情報である。“コンフィギュレーション”は、一例として、ファイルシステム(例えば、XML,JSON,YAML)、コンフィギュレーションデーモンにより実現される。なお、XMLは、Extensible Markup Language(エクステンシブル・マークアップ・ランゲージ)の略称である。
【0048】
図6に例示したように、本実施形態に係るアプリケーションは、一以上のコンテナによって構成される。コンテナとは、例えば、一以上のモジュールやモジュール間通信によって構成され、所定の処理を実行するものである。上述したように、コンテナやモジュールはソフトウェアコンポーネントの一例であることから、コンポジションは、コンテナに関する情報や、(コンテナに含まれる)モジュールに関する情報や、モジュール間通信に関する情報を含む。また、コンポジションは、アプリケーションのコンフィギュレーション(各要素や要素間の設定に関する情報)、及びアプリケーションのコーディネーション(各要素間通信の整合性の維持または調整機能)に関する情報を含んでもよい。
【0049】
また、本実施形態に係るアプリケーションは、ソフトウェアコンポーネントによる実装、具体的には、同一コンテナ内のモジュール間通信や、バスを介して複数のコンテナを跨ったモジュール間通信等により実現される。そして、各モジュール内での実装、モジュール間通信、コンテナ単位での実装等により、アプリケーションを実現する。このようにしてアプリケーションを実現するうえでは、上述したアーキテクチャ情報で規定する各要素や、必要に応じて、クラウドサービス上でのストレージ、計算、リモート操作等を利用する。なお、
図6には、2つのコンテナと2つのバスのみを例示したが、これに限れられない。
【0050】
図7は、記憶部32に格納されるアーキテクチャ情報の一例を示す図である。
図7に例示するアーキテクチャ情報は、本実施形態において定義される5Cパラダイムに関する情報であり、情報項目として、「要素ID」、「要素名」、及び「技術」を含む。「要素ID」は、上述した5Cパラダイムの各要素を一意に特定するための識別子(Identifier;ID)である。「要素名」は、上述した5Cパラダイムの各要素の名称である。本実施形態のように、
図6に例示する5Cパラダイムを用いる場合、「要素名」は、「コミュニケーション関連技術」、「コーディネーション関連技術」、「コンポジション情報」、「コンピューテーション関連技術」、及び「コンフィギュレーション関連技術」であり、それぞれ、上述した5Cパラダイムの、“コミュニケーション”、“コーディネーション”、“コンポジション”、“コンピューテーション”、及び“コンフィギュレーション”に関する情報に相当する。また、「技術」は、各要素を実現するための技術である。
【0051】
例えば、
図7の1行目のコミュニケーション関連技術は、「要素ID」が“P001”、「要素名」が“コミュニケーション関連技術”、「技術」が“DDS、RPC、REST API、TLS暗号等”であることを示している。
【0052】
次に、記憶部32に格納されるコンポジション情報について説明する。
図8は、このコンポジション情報の一例を示す図である。
図8に例示するコンポジション情報は、コンポジションに関する情報であり、各アプリケーションを生成する際に必要なソフトウェアコンポーネントの関係、具体的には、モジュールやモジュール間の通信等や依存(関係)等を記述したものである。例えば、コンポジション情報はRDF/XMLで記載されてもよいし、モジュール間の関係がUML(Unified Modeling Language;統一モデリング言語)等で表現されてもよく、記述方法はこれらに限られない。なお、RDFは、Resource Description Framework(リソース・ディスクリプション・フレームワーク;資源記述の枠組み)の略称であり、UMLは、Unified Modeling Language(統一モデリング言語)の略称である。なお、本実施形態では、記憶部32に格納される対象となるコンポジションに関する情報をコンポジション情報といい、後述する予測されるコンポジションに関する情報を単にコンポジションというが、これに限られない。
【0053】
図8に例示するコンポジション情報は、情報項目として、「アプリケーションID」、及び「コンポジション情報」を含む。「アプリケーションID」は、各アプリケーションを一意に特定するための識別子である。「コンポジション情報」は、情報項目「アプリケーションID」で特定されるアプリケーションのコンポジション情報である。なお、「コンポジション情報」は、
図8に例示するように、コンポジション情報を特定するためのファイル名や当該ファイル名へのポインタを格納してもよいし、コンポジション情報に含まれる詳細情報を格納してもよい。
【0054】
例えば、
図8の1行目は、“アプリケーション1“で特定されるアプリケーションのコンポジション情報が“コンポジション1”であることを示している。
【0055】
次に、記憶部32に格納される学習モデルについて説明する。学習モデルは、アプリケーションの目的とコンポジションとの関係を学習しており、アプリケーションの目的に対して、コンポジションを出力するように予め機械学習された学習済みの学習モデルである。この学習モデルを単にモデルともいう。モデルの学習処理及び再学習処理は、例えば、サーバ装置3の後述する学習部332により行われるが、これに限られない。モデルの学習処理及び再学習処理は、サーバ装置3以外の他の装置で行われ、サーバ装置3に提供されてもよい。なお、記憶部32の学習モデルには、学習済みモデルに付随する重み等の情報も併せて格納される。
【0056】
また、このモデルは、例えば、DNN(Deep Neural Network)、RNN(Recurrent Neural Network)、CNN(Convolutional Neural Network)、LSTM(Long Short-Term Memory)等のニューラルネットワークであるが、これに限られない。モデルは、決定木、SVM(Support Vector Machine)等の学習モデルであってもよい。また、モデルの学習方法は、例えば、勾配降下法、確率的勾配降下法、又は誤差逆伝播法であるが、これに限られない。
【0057】
次に、サーバ装置3の機能説明に戻り、制御部33について説明する。制御部33は、プロセッサ301がプログラムを実行し、他のハードウェア構成と協働することにより実現される。制御部33は、サーバ装置3の動作全体を制御する。制御部33は、情報送受信部331と、学習部332と、生成部333と、を備える。
【0058】
情報送受信部331は、ロボット1や開発者端末3との間で情報を送受信する。具体的に、情報送受信部331は、開発者から受信したクエリ等の情報を通信部31を介して受信し、当該情報の処理結果(例えば、生成したアプリケーション)をロボット1に送信する。情報送受信部331は、処理結果等の情報を記憶部32に保存する。
【0059】
学習部332は、記憶部32の学習モデルに対して教師データを入力することにより、当該学習モデルを学習させる(訓練する)。
図9及び
図10は、学習部332による学習処理の一例を図示したものである。
図9及び
図10を用いて、学習部332による学習処理について説明する。なお、ここでは、N個のアプリケーション(アプリケーション1~N;ただしNは1以上の整数)を用いた学習を例示するが、説明のため、
図9は、アプリケーション1,2を用いた学習を例示し、
図10は、アプリケーション3~Nを用いた学習を例示する。
【0060】
図9は、
図6に例示する5Cパラダイムにしたがってアプリケーション1,2を図示したものである。具体的に、
図9の上の図は、アプリケーション1のソフトウェアコンポーネント(の構成)と、アプリケーション1のコンポジション情報(コンポジション1)との関係を例示している。アプリケーション1の目的は、ロボットが家の地図を作製することである。アプリケーション1は、ソフトウェアコンポーネントとして、3つのコンテナ(コンテナ1~3)を備え、各コンテナが1つ以上のモジュールを備える。例えば、コンテナ1は、3つのモジュール(モジュールA~C)を備え、モジュール間の2つの通信(モジュールAとBとの通信,モジュールAとCとの通信)により、当該コンテナ1が実現されている。コンポジション1は、このようなアプリケーション1の構成が記載されたものであり、例えば、RDF/XMLで記載されてもよい。コンポジション1には、一例として、アプリケーション1に含まれるコンテナ(コンテナ1~3)と、各コンテナとコンテナに含まれるモジュールの情報、モジュール間の通信関係等が含まれる。
【0061】
また、
図9の下の図は、アプリケーション2のソフトウェアコンポーネント(の構成)と、アプリケーション2のコンポジション情報(コンポジション2)との関係を例示している。アプリケーション2の目的は、ロボットがふぞろいなオブジェクトをピックアンドプレースすることである。アプリケーション2は、ソフトウェアコンポーネントとして、2つのコンテナ(コンテナ4,5)を備え、各コンテナが1つ以上のモジュールを備える。コンポジション2には、一例として、このようなアプリケーション2の構成が含まれる。
【0062】
この
図9に例示するように、学習部332は、アプリケーション1,2に関する、アプリケーションの目的とコンポジション1,2を記憶部32のコンポジション情報に格納する。そして、学習部332は、この記憶部32のコンポジション情報を教師データとして学習モデルをエージェントに提供し、学習モデルを深層学習させる。
【0063】
図10は、アプリケーション3~N用いた学習を例示すたる。なお、ここでは、説明のため、
図10にはアプリケーション3とアプリケーションNとを具体的に図示している。具体的に、
図10は、
図9と同様に、
図6に例示する5Cパラダイムにしたがってアプリケーション3,Nを図示したものである。アプリケーション3の目的は、ロボットが人間の環境を案内することである。アプリケーション3は、ソフトウェアコンポーネントとして、4つのコンテナ(コンテナ1,2,4,6)を備え、各コンテナが1つ以上のモジュールを備える。このようなアプリケーション3の構成がコンポジション3に記載されている。
【0064】
また、
図10に例示するアプリケーションNの目的はAAAであり、アプリケーションNは、ソフトウェアコンポーネントとして、1つのコンテナを備え、このコンテナは2つのモジュールを備える。このようなアプリケーションNの構成がコンポジションNに記載されている。
【0065】
上述のコンポジション3,Nは教師データである。
図10に例示するように、学習部332は、アプリケーション3,Nに関する、アプリケーションの目的とコンポジション3,Nとの組を記憶部32に格納する。そして、学習部332は、この記憶部32に格納されている情報を教師データとしてエージェントに提供し、学習モデルを深層学習させる。
【0066】
<サーバ装置3が実行する学習処理>
図11は、学習部332が実行する学習処理の一例を示すフローチャートである。学習部332による学習処理について
図11を用いて説明する。この
図11は、各アプリケーションに関する情報を教師データとして学習モデルを学習させる処理を例示している。
【0067】
(ステップS101)
サーバ装置3の学習部332は、教師データとなるアプリケーションについて、記憶部32に記憶されている当該アプリケーションのプログラムや仕様情報等(図示省略)を参照する。そして、学習部332は、教師データとなる各アプリケーションのソフトウェアコンポーネントを記憶部32のアーキテクチャ情報にしたがって、5Cパラダイム(
図6参照)で定義される各要素に分類する(ステップS101)。また、学習部332は、正規化された教師データとなる各アプリケーションのソフトウェアコンポーネントの情報を読み込む。そして、処理がステップS102に進む。
【0068】
(ステップS102)
サーバ装置3の学習部332は、教師データとなる各アプリケーションの目的となるキーワードを抽出する(ステップS102)。アプリケーションの目的は、図示しない記憶部32に格納されていてもよい。上述したように、例えば、アプリケーション1の目的はロボットが家の地図を作製することであるから、例えば、「ロボット」、「家」、「地図」、「作製」等のキーワードを抽出する。また、このキーワードの抽出方法は一例にすぎず、例えば、予めキーワードを選択肢として用意しておき、アプリケーションの目的から、公知の自然言語処理技術等を用いて意味(距離)が近いキーワードを抽出してもよい。そして、処理がステップS103に進む。
【0069】
(ステップS103)
サーバ装置3の学習部332は、記憶部32のコンポジション情報を読み込む(ステップS103)。なお、学習部332は、教師データとなる各アプリケーションのソフトウェアコンポーネントの定義を正規化した場合には、この正規化された定義や、ステップS102で読み込んだアプリケーションの目的を用いて、コンポジション情報を定義してもよい。そして、処理がステップS104に進む。
【0070】
(ステップS104)
サーバ装置3の学習部332は、ステップS103で読み込んだコンポジション情報を、コンピュータが学習処理を実行し得るデータ構造に変換(シリアライズ)する(ステップS104)。このデータ構造は、データベースの形態に限られない。そして、処理がステップS105に進む。
【0071】
(ステップS105)
サーバ装置3の学習部332は、ステップS104でシリアライズした情報を教師データとして用いて学習モデルの学習を行う(ステップS105)。そして処理が終了する。
【0072】
本実施形態では、このようにステップS101~S105に示す処理を経て学習部332により学習モデルの学習(訓練)を行う。すなわち、ステップS101~S105に示す処理を経ることにより、学習済みの学習モデルが生成される。
【0073】
<サーバ装置3が実行する生成処理>
次に、サーバ装置3の機能説明に戻り、制御部33の生成部333について説明する。生成部333は、開発者端末2から取得したクエリ等の情報に基づいてソフトウェアを生成する。生成部333による生成処理について
図12を用いて説明する。
図12は、サーバ装置3の生成部333が実行する生成処理の一例を示すフローチャートである。この
図12は、生成部333が、上述した
図11に例示した学習処理を経て生成された学習済みの学習モデルを用いて、開発者が所望するアプリケーションを作成する場合のアプリケーション生成処理を例示している。
【0074】
(ステップS201)
生成部333は、開発者端末2から受信したクエリが新規のクエリであるか否かを判断する(ステップS201)。ここで、生成部333は、記憶部32の学習モデルに含まれる教師データを参照し、当該クエリが新規であるか否かを判断してもよい。また、記憶部32に別途教師データを格納したり、これまで取り扱ったクエリをデータベース等の形態で記憶部32に格納しておいてもよく、この場合、生成部333は記憶部32の情報をもとに新規のクエリであるか否かを判断する。新規のクエリであると判断された場合(ステップS201:YES)、処理はステップS202に進む。一方、新規のクエリであると判断されなかった場合(ステップS201:NO)、処理はステップS209に進む。
【0075】
(ステップS202)
生成部333は、ステップS201にて受け取ったクエリをパースする(ステップS202)。上述したように、情報送受信部331が開発者から受け取ったクエリは、自然言語、または複数のキーワードから構成されるものであるから、学習済みの学習モデルに入力するために、当該クエリをコンピュータが処理可能な態様にパースする。処理はステップS203に進む。
【0076】
(ステップS203)
生成部333は、記憶部32の学習モデルから、当該学習モデルのノード間の重みに関する情報をロードする(ステップS203)。処理はステップS204に進む。
【0077】
(ステップS204)
生成部333は、ステップS201にて受信したクエリを学習済みモデルの入力とし、ステップS203にてロードした重みを用いて、学習済みモデルの出力を取得する。すなわち、生成部333は、コンポジションを予測する(ステップS204)。この予測されたコンポジションは、本システムの学習モデルによって予測されたものであるから、ユーザがサーバ装置3に対して送信した、所望するアプリケーションの目的を実現するコンポジションとして、本システムが提案したものであるといえる。また、生成部333は、図示しない外部出力に対して予測したコンポジションを出力してもよい。処理はステップS205に進む。
【0078】
(ステップS205)
生成部333は、ステップS204にて予測したコンポジションをパースする。そして、生成部333は、このパースしたコンポジション情報を記憶部32のコンポジション情報に格納する(ステップS205)。ステップS204にて予測したコンポジションは、実装可能な機械言語等で記載されているから、生成部333は、例えば、人間が解釈し得る態様にパースする。処理はステップS206に進む。
【0079】
(ステップS206)
生成部333は、ステップS205にてパースしたコンポジションを用いて、開発者から取得したクエリで指定されるアプリケーションのテンプレートを生成する(ステップS206)。このテンプレートは、当該アプリケーションの構造を定義するものである。処理はステップS207に進む。
【0080】
(ステップS207)
生成部333は、ステップS206にて生成したテンプレートで規定される、アプリケーションの実現に必要なソフトウェアコンポーネント(コンテナ,モジュール等)をダウンロードして取得する(ステップS207)。ここで、上述したように、教師データとなるアプリケーションのプログラムは記憶部32に記憶されていてもよい。また、上述のステップS101(
図11参照)に示す処理において、各アプリケーションに含まれるソフトウェアコンポーネントが分類されるため、分類されたソフトウェアコンポーネントは、それぞれ記憶部32に格納されているものとする(図示省略)。処理はステップS208に進む。
【0081】
(ステップS208)
生成部333は、ステップS206にて生成したテンプレートに基づき、ステップS207にて取得したソフトウェアコンポーネントを用いて、アセンブリを作成する。これらの処理は、IDE(Integrated Development Environment;統合開発環境)等を用いて行ってもよい。そして、生成部333は、作成したアセンブリをマウントし実行する(ステップS208)。そして、処理は終了する。
【0082】
上述したステップS201~208に示す処理を経て、生成部333は、開発者から取得したクエリで指定されるアプリケーションを生成する。
【0083】
(ステップS209)
生成部333は、コンポジションを記憶部32のコンポジション情報に保存する(ステップS209)。
【0084】
(ステップS210)
学習部332は、ステップS209にて保存したコンポジションを用いて学習モデルの学習や再学習を行う(ステップS210)。なお、学習部332は、当該学習モデルの重み等に関する情報については、この学習が終了した後、記憶部32の学習モデルに記憶する。そして、処理は終了する。
【0085】
なお、
図12のS209~S210の処理は選択的に実行されてもよい。例えば、仕様や実装の状況に応じて、S209~S210の処理はスキップしてもよい。この場合、ステップS201の処理において、新規のクエリであると判断されなかった場合(ステップS201:NO)には、処理を終了してもよい。
【0086】
図13は、生成部333が実行する生成処理の一例を図示したものである。具体的に、この
図13は、開発者が、開発者端末2にて、所望するアプリケーションの目的を「スーパーマーケットで野菜をピックアンドプレースする」ことである旨の入力を行った場合のアプリケーション生成処理を例示したものである。なお、このアプリケーションの目的が定義されるクエリは、教師データに含まれていない情報、すなわち、新規のクエリであるものとする。この
図13に示す各処理について、
図12を参照しながらエージェントを中心として説明する。なお、本実施形態に係るエージェントとは、制御部33の情報送受信部331、学習部332、及び生成部333の処理の総称でもある。
【0087】
エージェント(生成部333)は、開発者によって入力された、所望するアプリケーションの目的である「スーパーマーケットで野菜をピックアンドプレースする」ことは、新規のクエリであると判断し(ステップS201:YES)、処理はステップS202に進む。
【0088】
続いて、エージェント(生成部333)は、この新規クエリをパースし(ステップS202)、処理はステップS203に進む。
【0089】
続いて、エージェント(生成部333)は、記憶部32の学習モデルから、当該学習モデルのノード間の重みに関する情報をロードする(ステップS203)。そして、開発者から受信した(新規)クエリを学習済みモデルの入力とし、ステップS203にてロードした重みを用いて、学習済みモデルが出力するコンポジションを予測する(ステップS204)。また、エージェント(生成部333)は、ステップS204にて予測したコンポジションをパースして記憶部32のコンポジション情報に格納する(ステップS205)。
【0090】
続いて、エージェント(生成部333)は、アプリケーションの構造を定義するテンプレートを生成する(ステップS206)。そして、当該アプリケーションの実現に必要なソフトウェアコンポーネント(コンテナ,モジュール等)をダウンロードして取得する(ステップS207)。
【0091】
続いて、エージェント(生成部333)は、ステップS206にて生成したテンプレートに基づき、ステップS207にて取得したソフトウェアコンポーネントを用いて、アセンブリを作成し、実行する(ステップS208)。上述したように、これらの処理は、IDE等を用いて行われてもよい。そして、処理は終了する。
【0092】
上述したステップS201~208に示す処理を経て、エージェント(生成部333)は、開発者から取得したクエリで指定されるアプリケーションを生成する。生成したアプリケーションを
図13の右下に例示する。
【0093】
なお、生成されたアプリケーションについては、情報送受信部331がロボット1に対して送信する。そして、ロボット1は、当該アプリケーションを実行する。
【0094】
なお、サーバ装置3の各機能構成は、上記の通り、ソフトウェアにより実現されてもよいし、ICチップ、SoC(System on Chip)、LSI(Large Scale Integration)、マイクロコンピュータ等のハードウェアによって実現されてもよい。
【0095】
<まとめ>
以上説明した通り、本実施形態に係る制御システムは、開発者により開発者端末2において入力されたクエリに基づき、開発者がクエリにて定義したアプリケーションの目的を達成し得るコンポジションを作成したうえで、これらコンポジションに規定されるソフトウェアコンポーネントを用いてアプリケーションを生成する。さらに、生成したアプリケーションをロボット1で実装可能な状態としてロボット1に送信し実装させる。
【0096】
開発者は、所望するアプリケーションの目的を自然言語等でサーバ装置3に送信するだけで、所望する動作をロボット1に実装させることができる。したがって、開発者側では、所望の目的や動作を実現させるためのアプリケーションの作成が不要となるため、アプリケーションの設計や実装に関する専門知識を必要とせずとも、迅速に目的が達成できる。
【0097】
また、開発者は、本制御システムのエージェントに対してクエリを送信するだけで、ロボット1に対して所望の処理を実行させることができる。したがって、本制御システムのAPI(Application Programming Interface)等を意識することなく、目的の処理をロボット1に実装させることができる。
【0098】
また、本システムでは、開発者によってアプリケーションが生成されなくても、開発者が所望するアプリケーションの目的と、それを実現するために必要なソフトウェアコンポーネントの情報をコンポジションに保存する。これにより、新たに作成されたコンポジションをさらなる学習モデルの学習に用いることができるため、本システムの学習モデルは、より精度の高いコンポジションを出力することができる。そして、開発者は、コンポジションを意識せずとも、目的に応じた精度の高いコンポジションを用いてアプリケーションを生成することができる。
【0099】
また、本システムでは、開発者が自然言語やキーワードによってアプリケーションの目的を設定し得る。これにより、熟練や高度な専門知識のない開発者にとっても、ユーザビリティの高いものとなっている。
【0100】
また、本実施形態では、
図12に例示する生成処理において、ステップS202(クエリをパースする処理)とステップS203(重みをロードする処理)との間に、学習済みモデルのノード間の重みに関する情報またはファイルが利用可能であるか否かを判断するステップ(S202’)を設けてもよい。この場合、ステップS202’において、学習済みモデルのノード間の重みに関する情報やファイルが利用可能である場合にはステップS203(重みをロードする処理)に進み、学習済みモデルのノード間の重みに関する情報やファイルが利用可能ではない場合には、処理を終了してもよい。なお、ステップS202’については図示を省略する。
【0101】
また、本実施形態では、
図12に例示する生成処理において、ステップS201(新規のクエリか否かを判断する処理)とステップS209(コンポジションを保存する処理)との間に、新規のコンポジション情報であるか否かを判断するステップ(S201’)を設けてもよい。この場合、ステップS201’において、新規のコンポジション情報であると判断した場合にはステップS210(コンポジションを保存する処理)に進み、新規のコンポジション情報ではないと判断した場合には処理を終了してもよい。なお、ステップS201’については図示を省略する。
【0102】
本実施形態において、アーキテクチャ情報はサーバ装置3の記憶部32に格納するものとしたが、開発者端末2の記憶部22にも格納する構成としてもよい。
【0103】
また、本実施形態の制御システムは、ロボット1と開発者端末2とサーバ装置3とを備えるものとしたが、開発者端末2に代えて、もしくは、開発者端末2と併せて、本システムの管理者が用いる管理者端末を備えるものとしてもよい。
【0104】
また、本実施形態の制御システムは、ロボット1を制御するためのロボット用アプリケーションを生成するものとしたが、生成するアプリケーションはロボット用のものに限らず、例えば、他のサーバ装置を制御するものであってもよい。
【0105】
<付記>
本実施形態は、以下の開示を含む。
【0106】
(付記1)
情報処理装置が実行する生成方法であって、
クエリで指定された目的を実現するためのコンポジションを予測する処理と、
予測した前記コンポジションに基づきアプリケーションを生成する処理と、
を含む生成方法。
【0107】
(付記2)
前記コンポジションは、前記アプリケーションを実行するための一以上のコンテナに関する情報と、前記コンテナに含まれる一以上のモジュールに関する情報と、モジュール間の通信に関する情報と、を含む、
付記2に記載の生成方法。
【0108】
(付記3)
前記クエリは、開発者から入力され、
入力されるクエリは、自然言語、または一以上のキーワードを含む、
付記1又は付記2に記載の生成方法。
【0109】
(付記4)
前記アプリケーションはロボット用アプリケーションである、
付記1から付記4までのいずれか1項に記載の生成方法。
【0110】
(付記5)
前記アプリケーションの目的を入力とし、当該アプリケーションのコンポジションを出力するよう訓練された学習モデルを用いて、前記クエリで指定された目的を実現するためのコンポジションを予測する、
付記1から付記4までのいずれか1項に記載の生成方法。
【0111】
(付記6)
生成した前記アプリケーションをロボットに送信する、
請求項1から請求項5までのいずれか1項に記載の生成方法。
【0112】
(付記7)
エージェントが、前記開発者が入力したクエリを受信し、前記クエリを前記学習モデルの入力とし、前記学習モデルが出力するコンポジションを取得し、前記コンポジションに基づきアプリケーションを生成し、生成したアプリケーションをロボットに送信する、
請求項1から請求項6までのいずれか1項に記載の生成方法。
【0113】
今回開示された実施形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。また、本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【0114】
1:ロボット
2:開発者端末
3:サーバ装置
21:通信部
22:記憶部
23:制御部
201:プロセッサ
202:メモリ
203:ストレージ
205:入出力I/F
207:入力装置
208:出力装置
231:情報送受信部
233:表示制御部
301:プロセッサ
302:メモリ
303:ストレージ
304:通信I/F
305:入出力I/F
306:ドライブ装置
307:入力装置
308:出力装置
309:ディスクメディア
331:情報送受信部
332:学習部
333:生成部