特許第6684513号(P6684513)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 株式会社LC−Studioの特許一覧

特許6684513GUIコントローラ設計支援装置、リモートコントロールシステム、およびプログラム
<>
  • 特許6684513-GUIコントローラ設計支援装置、リモートコントロールシステム、およびプログラム 図000002
  • 特許6684513-GUIコントローラ設計支援装置、リモートコントロールシステム、およびプログラム 図000003
  • 特許6684513-GUIコントローラ設計支援装置、リモートコントロールシステム、およびプログラム 図000004
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】6684513
(24)【登録日】2020年4月1日
(45)【発行日】2020年4月22日
(54)【発明の名称】GUIコントローラ設計支援装置、リモートコントロールシステム、およびプログラム
(51)【国際特許分類】
   G06F 8/38 20180101AFI20200413BHJP
【FI】
   G06F8/38
【請求項の数】5
【全頁数】13
(21)【出願番号】特願2020-508061(P2020-508061)
(86)(22)【出願日】2019年12月17日
(86)【国際出願番号】JP2019049488
【審査請求日】2020年2月12日
(31)【優先権主張番号】特願2019-137463(P2019-137463)
(32)【優先日】2019年7月26日
(33)【優先権主張国】JP
【早期審査対象出願】
(73)【特許権者】
【識別番号】519054035
【氏名又は名称】株式会社LC−Studio
(74)【代理人】
【識別番号】100166545
【弁理士】
【氏名又は名称】折坂 茂樹
(72)【発明者】
【氏名】石迫 邦人
【審査官】 今城 朋彬
(56)【参考文献】
【文献】 特開2017−123148(JP,A)
【文献】 国際公開第2014/061093(WO,A1)
【文献】 特開2011−193382(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/38
(57)【特許請求の範囲】
【請求項1】
入力デバイスのタッチパネルディスプレイに表示され、ターゲットデバイスを操作するための操作入力を受け付けるGUIコントローラの設計を支援するGUIコントローラ設計支援装置であって、
複数のコントローラパーツを含んで構成され前記GUIコントローラを定義するコントローラセットを編集するためのコントローラセット編集手段と、
前記コントローラセットに含まれる各コントローラパーツを編集するためのコントローラパーツ編集手段と、
前記コントローラパーツに対する操作入力に応じた前記ターゲットデバイスの制御を規定するユーザプログラムを編集するためのユーザプログラム編集手段と、
を備えるGUIコントローラ設計支援装置。
【請求項2】
前記ターゲットデバイスを制御するために前記ユーザプログラムから呼び出して利用するオブジェクトであるドライバが動作するエンジンが前記ユーザプログラムを実行するための実行環境を起動している状態において、前記コントローラセット編集手段、および、コントローラパーツ編集手段にて編集された前記コントローラセットを、前記入力デバイスに登録するGUIコントローラ登録手段をさらに備える、請求項1に記載のGUIコントローラ設計支援装置。
【請求項3】
前記ターゲットデバイスを制御するために前記ユーザプログラムから呼び出して利用するオブジェクトであるドライバが動作するエンジンが前記ユーザプログラムを実行するための実行環境を起動している状態において、前記ユーザプログラム編集手段にて編集された前記ユーザプログラムを、前記エンジンに登録するユーザプログラム登録手段をさらに備える、請求項1または2に記載のGUIコントローラ設計支援装置。
【請求項4】
請求項1から3のいずれか1項に記載のGUIコントローラ設計支援装置と、
タッチパネルディスプレイを備え、当該タッチパネルディスプレイにGUIコントローラを表示する入力デバイスと、
前記ターゲットデバイスを制御するために前記ユーザプログラムから呼び出して利用するオブジェクトであるドライバが動作するエンジンと、
を備えるリモートコントロールシステムであって、
前記入力デバイスは、前記タッチパネルディスプレイに表示されたGUIコントローラに対するユーザの操作入力を受け付け、当該操作入力の内容を前記エンジンに送信し、
前記エンジンは、前記入力デバイスから受け取った操作入力の内容に基づき、前記ターゲットデバイスを制御すべくドライバを動作させ、
前記入力デバイスは、前記エンジンが前記ユーザプログラムを実行するための実行環境を起動している状態において、前記ユーザプログラムと関連付けられた前記GUIコントローラのコントローラセットを更新可能とし、
前記エンジンは、前記ユーザプログラムを実行するための実行環境を起動している状態において、前記ユーザプログラムを更新可能とすることを特徴とするリモートコントロールシステム。
【請求項5】
コンピュータを、請求項1から3のいずれか1項に記載のGUIコントローラ設計支援装置として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、GUI(Graphical User Interface)により実現されるコントローラの設計やプログラミングを支援するGUIコントローラ設計支援装置に関する。
【背景技術】
【0002】
従来から、ラジオコントロール(RC)カー、ドローン、ロボット、ゲームなどを無線通信により遠隔操作するためのコントローラ装置をスマートフォンなどの画面に表示される操作ボタン等によるGUIとして提供することが実現されている(例えば、特許文献1を参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2019−85041号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
このようなGUIによるコントローラ装置では、操作対象の装置を起動した後は信号を受け付けてからの制御が固定されているか、単純な変更(例えば、ある操作パラメータに対する極性やゲインの変更等)しかできないように構成されている。このため、新たな挙動を追加したり、パラメータそのものを動的に追加したりすることはできず、プログラミングによる自動操縦などの複雑な制御を実現するには、所望の制御に成功するまでに繰り返す試行錯誤の都度、捜査対象の装置を再起動することが必要であるため、非常に多くの時間要していた。
【0005】
本発明の課題は、上記の問題を解決し、柔軟かつリアルタイムに制御やグラフィック表現を変更可能なコントローラ装置のプログラミングを支援するGUIコントローラ設計支援装置を提供することにある。
【課題を解決するための手段】
【0006】
上記の課題を解決すべく、本発明に係るGUIコントローラ設計支援装置は、入力デバイスのタッチパネルディスプレイに表示され、ターゲットデバイスを操作するための操作入力を受け付けるGUIコントローラの設計を支援する。GUIコントローラ設計支援装置は、複数のコントローラパーツを含んで構成されGUIコントローラを定義するコントローラセットを編集するためのコントローラセット編集手段と、コントローラセットに含まれる各コントローラパーツを編集するためのコントローラパーツ編集手段と、コントローラパーツに対する操作入力に応じたターゲットデバイスの制御を規定するユーザプログラムを編集するためのユーザプログラム編集手段と、を備える。
【0007】
本発明では、GUIコントローラ設計支援装置は、ターゲットデバイスを制御するためにユーザプログラムから呼び出して利用するオブジェクトであるドライバが動作するエンジンがユーザプログラムを実行するための実行環境を起動している状態において、GUIコントローラ編集手段にて編集されたコントローラセットを、入力デバイスに登録するGUIコントローラ登録手段をさらに備えるとよい。
【0008】
また、GUIコントローラ設計支援装置は、ターゲットデバイスを制御するためにユーザプログラムから呼び出して利用するオブジェクトであるドライバが動作するエンジンがユーザプログラムを実行するための実行環境を起動している状態において、ユーザプログラム編集手段にて編集されたユーザプログラムを、エンジンに登録するユーザプログラム登録手段をさらに備えるとよい。
【0009】
また、上記の課題を解決すべく、本発明に係るリモートコントロールシステムは、上記いずれかのGUIコントローラ設計支援装置と、タッチパネルディスプレイを備え、当該タッチパネルディスプレイにGUIコントローラを表示する入力デバイスと、ターゲットデバイスを制御するためにユーザプログラムから呼び出して利用するオブジェクトであるドライバが動作するエンジンと、を備える。このリモートコントロールシステムにおいて、入力デバイスは、タッチパネルディスプレイに表示されたGUIコントローラに対するユーザの操作入力を受け付け、当該操作入力の内容をエンジンに送信し、エンジンは、入力デバイスから受け取った操作入力の内容に基づき、ターゲットデバイスを制御すべくドライバを動作させる。入力デバイスは、エンジンがユーザプログラムを実行するための実行環境を起動している状態において、ユーザプログラムと関連付けられたGUIコントローラのコントローラセットを更新可能とする。また、エンジンは、ユーザプログラムを実行するための実行環境を起動している状態において、ユーザプログラムを更新可能とする。
【0010】
また、上記の課題を解決すべく、本発明に係るプログラムは、コンピュータを、上記いずれかのGUIコントローラ設計支援装置として機能させる。
【図面の簡単な説明】
【0011】
図1】GUIコントローラ設計支援装置1が適用される、リモートコントロール環境の一例を示している。
図2】入力デバイス2に登録されたGUIコントローラにより、エンジン3を介してターゲットデバイス4を制御する際の手順を示すフローチャートである。
図3】既存のGUIコントローラやユーザプログラムを編集し更新する際の処理の手順を示すフローチャートである。
【発明を実施するための形態】
【0012】
以下、本発明の実施形態を図面に基づいて説明する。なお、以下の説明では、同一の部材には同一の符号を付し、一度説明した部材については適宜その説明を省略する。
【0013】
〔リモートコントロール環境の構成〕
図1は、本実施形態に係るGUIコントローラ設計支援装置1が適用される、リモートコントロール環境の一例を示している。すなわち、このリモートコントロール環境では、入力デバイス2に対するユーザの操作入力に応じて、エンジン3を介して操作対象であるターゲットデバイス4に制御信号が送信され、ターゲットデバイス4の制御が実現される。GUIコントローラ設計支援装置1は、入力デバイス2に表示される操作画面の設計、入力デバイス2への操作入力に応じてエンジン3で実行されるプログラムの編集等を行い、これらを適宜更新するための環境を提供する。GUIコントローラ設計支援装置1、入力デバイス2及びエンジン3は、ネットワークNWを介して通信可能とされる。なお、GUIコントローラ設計支援装置1、入力デバイス2、エンジン3の全て又は一部は共通のハードウェアにより実現されてもよい。また、エンジン3とターゲットデバイス4は、無線通信手段(ネットワークNWを介するか否かは任意)にて通信可能とされる。
【0014】
GUIコントローラ設計支援装置1は、GUIコントローラ、ユーザプログラムの編集、ユーザプログラムが実行されるエンジン3上の環境である実行環境の編集、ターゲットデバイス4を制御するためにユーザプログラムから呼び出して利用するオブジェクトであるドライバの編集等を行う機能をユーザに提供する装置であり、コンピュータ等により実現される。GUIコントローラ設計支援装置1は、制御部10、記憶部11、表示部12、入力部13、及び通信部14を備える。
【0015】
制御部10は、記憶部11に記憶されている各種のプログラムを実行することにより、GUIコントローラ設計支援装置1の機能を実現する。具体的には、制御部10は、後述するGUIコントローラ編集機能、ユーザプログラム編集機能等の諸機能を実現する。制御部10は、例えばCPU等により実現される。
【0016】
記憶部11は、制御部10にて実行するプログラムや、当該プログラムで用いられるデータ等を記憶する。すなわち、記憶部11は、GUIコントローラ編集機能及びユーザプログラム編集機能を実現するためのプログラム及びデータを記憶する。例えば、記憶部11は、GUIコントローラ編集機能にてユーザが利用可能なコントローラパーツのテンプレート等を記憶するとよい。
【0017】
表示部12は、液晶ディスプレイ、有機ELディスプレイ等の表示素子であり、制御部10による制御の下、各種の情報を表示する。入力部13は、ユーザによる操作を受け付ける。入力部13は、例えば、キーボード、マウス、表示部12に重ねて設けられるタッチパネル等とするとよい。通信部14は、ネットワークNWやその他の通信回線を介して、入力デバイス2、エンジン3等との通信を行う。
【0018】
入力デバイス2は、GUIコントローラ設計支援装置1で作成・編集したGUIコントローラの画面を表示し、当該GUIコントローラに対する操作入力を受け付けて、受け付けた操作入力の内容をエンジン3に送信する。入力デバイス2は、制御部20、記憶部21、表示部22、入力部23、及び通信部24を備える。
【0019】
制御部20は、記憶部21に記憶されている各種のプログラムを実行することにより、入力デバイス2の機能を実現する。具体的には、制御部20は、GUIコントローラの画面を入力部23に表示させる機能、GUIコントローラを構成する各コントローラパーツに対するユーザの操作入力を受け付け、受け付けた操作入力の内容を通信部24を介してエンジン3に送信する機能等を実現する。制御部20は例えばCPU等により実現される。
【0020】
記憶部21は、制御部20にて実行するプログラムや、当該プログラムで用いられるデータ等を記憶する。具体的には、記憶部21は、GUIコントローラを定義するコントローラセットCL、コントローラセットCLに従ってGUIコントローラの画面を表示部22に表示させるための描画プログラム等を記憶する。また、記憶部21は、GUIコントローラを構成する各コントローラパーツについて、入力可能な座標範囲を規定したインデックスを記憶する。
【0021】
表示部22は、液晶ディスプレイ、有機ELディスプレイ等の表示素子であり、制御部20による制御の下、GUIコントローラの画面等の各種の情報を表示する。
【0022】
入力部23は、ユーザによる操作入力を受け付ける。入力部23は、例えば、キーボード、マウス、表示部22に重ねて設けられるタッチパネル等とするとよい。表示部22にGUIコントローラが表示された状態で、ユーザが表示部22に重ねて設けられたタッチパネルを操作すると、タッチパネルがタッチされた座標を検出し、検出した座標がインデックスに照会され、検出した座標に対応するコントローラパーツへの操作入力として受け付けられることになる。また、入力部23として、加速度センサを設け、入力デバイス2の姿勢変化(傾き)をユーザの操作入力として検知するようにしてもよい。入力部23としれ上記に以外の入力デバイスやセンサ類を設けてもよい。通信部24は、ネットワークNWやその他の通信回線を介して、GUIコントローラ設計支援装置1、エンジン3等との通信を行う。通信部24は、例えば、各コントローラパーツに対する操作入力の内容をエンジン3に送信する。
【0023】
エンジン3は、制御部30、記憶部31、及び通信部34を備える。
制御部30は、記憶部31に記憶されている各種のプログラムを実行することにより、エンジン3の機能を実現する。制御部30は例えばCPU、マイコン(マイクロコンピュータ)等により実現される。
【0024】
記憶部31は、制御部30にて実行するプログラムや、当該プログラムで用いられるデータ等を記憶する。具体的には、記憶部31は、実行環境を実現するためのプログラム、ターゲットデバイス4に対応したドライバ、及びこれらのプログラムで用いられるデータ等を記憶する。
【0025】
実行環境は、ユーザのプログラムを実行するためのランタイム(Runtime)である。実行環境は、ターゲットデバイス4に対する操作入力等に起因する実行要求を受け付け、当該実行要求に対応するユーザプログラムの関数や起動ブロックを順次処理する。実行環境は、各種のプログラミング言語に対応可能なように複数種類用意されてよい。
【0026】
ドライバは、通信部34を介してやり取りされるターゲットデバイス4の入出力と、実行環境との間を取り持つプログラムである。ドライバは、例えば、実行環境で実行されるユーザプログラムに基づき、当該制御命令に応じてターゲットデバイス4にて処理可能な制御信号を出力したり、ターゲットデバイス4から送られるセンサ出力等の情報を実行環境で実行されているユーザプログラムに提供したりする機能を実現する。
【0027】
通信部34は、ネットワークNWやその他の通信回線を介して、GUIコントローラ設計支援装置1、入力デバイス2、ターゲットデバイス4等との通信を行う。具体的には、エンジン3は、通信部34を介し、GUIコントローラ設計支援装置1からのユーザプログラムの受信、入力デバイス2からの操作入力の内容の受信、ターゲットデバイス4への制御信号の送信、ターゲットデバイス4からのセンサ出力の受信等を行う。
【0028】
ターゲットデバイス4は、GUIコントローラによる操作の対象となるデバイスである。ターゲットデバイス4は、例えば、ドローン、ラジコンカー、ロボット等の物理デバイスや、3Dモデル等の仮想空間で動作するデバイスとするとよい。ターゲットデバイス4は、制御部40、記憶部41、駆動部42、センサ部43及び通信部44を備える。
【0029】
制御部40は、制御部40に記憶されているファームウェア等のプログラムを実行することによりターゲットデバイス4の制御を司る。制御部40は例えば、マイコン、CPU等により実現される。
【0030】
記憶部41は、エンジン3にて動作するドライバからの送信信号に応じて動作するプログラム(いわゆるファームウェア)を記憶する。駆動部42は、ターゲットデバイス4の動作を実現する部材であり、例えば、モータ、アクチュエータ、及びこれらのドライバ等により構成される。センサ部43は、ターゲットデバイス4の周囲から種々の情報を取得するセンサ類により構成される。センサ部43は、例えば、カメラ、加速度センサ、GPS受信装置、測距センサ、赤外線センサ等を備えるとよい。
【0031】
通信部44は、ネットワークNWやその他の通信回線を介して、エンジン3との通信を行う。すなわち、ターゲットデバイス4は、通信部44を介してエンジン3から制御信号を受信し、必要に応じてセンサ部43で取得した情報をエンジン3に送信する。
【0032】
〔コントローラセット〕
続いて、GUIコントローラを定義するコントローラセットCLについて説明する。
コントローラセットCLは、コントローラパーツのインスタンスの集合(リスト)、ユーザが作成した操作に応じた処理を定義するプログラム(ユーザプログラム)を含んでいる。
【0033】
コントローラセットCLを構成する各コントローラパーツは、後述のコントローラパーツ編集機能を用いてユーザにより配置や外観が定義される。GUIコントローラは、コントローラセットCLに含まれる複数のコントローラパーツを組み合わせてその外観が定義されることになる。ユーザプログラムは定義済みのコントローラパーツを利用し、任意のプログラムを実装したものである。
【0034】
コントローラセットCLは静的属性として、GUIコントローラをグローバルで一意に特定するための識別情報であるUUID(Universally Unique Identifier)、コントローラ付与された名称であるコントローラ名称、コントローラの変更履歴を管理するための変更履歴番号、コントローラが対象とするデバイスを示すドライバタイプ、当該コントローラセットにより定義されるGUIコントローラを表示する際の入力デバイス2の向き(縦/横)を示すデバイスオリエンテーション、GUIコントローラの各パーツや背景を表現(描画)するための画像を示すスキン情報、コントローラセットCLに含まれるユーザプログラムを実行する実行環境の選択設定等を含んでいる。
【0035】
コントローラパーツは、GUIコントローラに配置して利用できる部品であり、ユーザによる操作入力に応じて様々な制御パターンを実現する。1つのコントローラセットにコントローラパーツとして複数のインスタンスを追加することが許容され、個々のコントローラパーツにはユニークな識別情報が付与される。ユーザプログラムでは、この識別情報で各コントローラパーツのインスタンスを識別して利用することができる。
【0036】
コントローラパーツにはさまざまなタイプが存在する。コントローラパーツは、それぞれのタイプごとに特有の属性や状態、振る舞いを持っており、無制限にインスタンス化し、インスタンス毎に識別してユーザプログラム上から利用することが可能とされる。
【0037】
各コントローラパーツは、共通属性として、コントローラ内で一意の名称であるパーツ名称を含んでいる。コントローラパーツのタイプとしては、ジョイスティック、十字キー、ボタン、スイッチ、スライダ、ダイヤル、ジェスチャ、文字列出力エリア、動画/画像出力エリア等が準備されている。これらのコントローラパーツの各タイプについて、設定可能な定義属性(静的属性)や状態属性(入力状態)が保持される。
【0038】
定義属性は、予め定義された変化しない属性である。状態属性は、プログラムの実行状態や、ユーザのコントローラ操作状態に応じて変化する属性である。例えば、ジョイスティックについては、定義属性として、表示サイズ、最小値、最大値、表示位置、アクティブ状態での表示色、枠外判定精度、軌道判定タッチ回数、ユーザプログラムに操作入力を通知する頻度を示すプログラム通知頻度等が定義される。各コントローラパーツは、オーバーレイ設定可能なパーツ以外、表示上重ならないようその表示位置が定義される。また、状態属性としては、アクティブフラグ、開始座標情報、移動前座標情報、移動後座標情報等がプログラムの実行状態や、ユーザのコントローラ操作状態に応じて記録・保持される。
【0039】
続いて、GUIコントローラ設計支援装置1により提供される、コントローラセット編集機能、実行環境編集機能、ドライバ編集機能、コントローラパーツ編集機能、及びユーザプログラム編集機能について説明する。
【0040】
〔実行環境編集機能〕
実行環境編集機能は、制御部10が実行するプログラムとして実現される。実行環境編集機能は、ユーザプログラムが実行されるエンジン3上の環境である実行環境について、そのインスタンスを生成し、当該生成したインスタンスに対して様々な設定項目についての設定値の入力をする画面を提供する。この画面を介したユーザの入力により、設定値を変更することができる。エンジン3では、複数の種類の実行環境(例えば扱うスクリプト言語が異なるもの)を同時に利用することが可能とされ、実行環境編集機能では、利用可能な実行環境のいずれかを選択してその設定を編集することができる。
【0041】
〔ドライバ編集機能〕
ドライバ編集機能は、制御部10が実行するプログラムとして実現される。ドライバは、ターゲットデバイス4を制御するためにユーザプログラムから呼び出して利用するオブジェクトである。ドライバ編集機能は、ターゲットデバイス4を制御するドライバをユーザに選択させる画面を提供する。この画面にて、ユーザが所望のドライバを選択すると、エンジン3において選択したドライバのインスタンスが生成され、生成されたインスタンスに対し識別情報を付与する処理が実行される。ユーザプログラムは、この識別情報を指定して、所望のドライバを介したターゲットデバイス4の制御を実現する。ドライバ編集機能は、生成済みのドライバのインスタンスに対する設定項目を入力する画面を提供する。この画面を介したユーザの入力により、設定値を変更することができる。
【0042】
〔コントローラセット編集機能〕
コントローラセット編集機能は、制御部10が実行するプログラムとして実現される。コントローラセット編集機能は、表示部12に表示されるメニューにおいて、ユーザがGUIコントローラの編集を選択することで開始される。コントローラセット編集機能では、新規にコントローラセットを作成することも、既存のコントローラセットを編集することも可能とされる。新規にコントローラセットを作成する場合には、ユーザはその旨のメニューを選択する。また、既存のコントローラセットを編集する場合には、ユーザは記憶部11に記憶された既存のコントローラセットを選択する。新規作成、または、既存のGUIコントローラセットが選択されると、対応するコントローラセットのインスタンスが生成される。そして、そのコントローラセットに対応する実行環境を起動し、起動した実行環境に当該コントローラセットに含まれるユーザプログラムを登録する。また、コントローラセットのインスタンスへの参照が入力デバイス2に渡されるようにするとよい。
【0043】
〔コントローラパーツ編集機能〕
コントローラパーツ編集機能は、コントローラセットを構成する各コントローラパーツについて、様々な属性を編集する機能である。コントローラパーツ編集機能は、コントローラセット編集機能が実行された後に、表示部12に表示されるメニューにおいて、ユーザがコントローラパーツの編集を選択することで開始される。
【0044】
コントローラパーツ編集機能が開始されると、表示部12には、編集領域R1が表示される。編集領域R1は、入力デバイス2の画面に表示するコントローラパーツの配置、外観等を視覚的に確認しながら編集するための表示領域である。新規にGUIコントローラを作成する場合には、起動時の編集領域R1は空白の状態とされる。一方、既存のGUIコントローラを編集する場合には、編集領域R1には、起動時に選択されたコントローラセットに基づき保存済みのGUIコントローラが表示された状態とされる。
【0045】
ユーザは、編集領域R1内に所望のコントローラパーツを配置したり、配置済みのコントローラパーツを移動、削除、編集(各種属性値の変更)等を行ったりすることにより、自由にGUIコントローラを作成・編集することができる。編集領域R1に配置することができるコントローラパーツのひな形は記憶部11に予め記憶されている。そして、これらのひな形は、ユーザインタフェースを介してユーザが適宜選択して任意の位置に配置することができるように構成される。また、配置済みのコントローラパーツについては、タッチパネルに対するタップやマウスカーソルを合わせた状態でのクリックによって選択が可能とされ、いわゆるドラッグ操作により移動が可能とされる。また、配置済みのコントローラパーツに対しダブルクリック又はダブルタップをすると、当該コントローラパーツについての定義属性を編集することが可能とされる。
【0046】
変更内容を保存する操作や自動保存機能により、コントローラパーツの編集が確定されると、編集後のGUIコントローラに対応するコントローラパーツが記憶部11に記憶される。この時点で入力デバイス2では、参照するコントローラセットのインスタンスに基づき、インデックスにコントローラセットに含まれるコントローラパーツを登録、もしくは更新を実施する。
【0047】
〔ユーザプログラム編集機能〕
ユーザプログラム編集機能は、制御部10が実行するプログラムとして実現される。ユーザプログラム編集機能は、表示部12に表示されるメニューにおいて、ユーザがユーザプログラムの編集を選択することで開始される。ユーザプログラム編集機能では、新規にユーザプログラムを作成することも、既存のユーザプログラムを編集することも可能とされる。新規にユーザプログラムを作成する場合には、ユーザはその旨のメニューを選択する。また、既存のユーザプログラムを編集する場合には、ユーザは記憶部11に記憶された既存のユーザプログラムを選択する。
【0048】
ユーザプログラム編集機能が開始されると、表示部12には、編集領域R2が表示される。編集領域R2は、例えば、使用するプログラミング言語に応じて、ユーザプログラムのソースコードを編集可能なテキストエディタ、GUIブロックプログラミングを実現するためのエディタ等とするとよい。新規にユーザプログラムを作成する場合には、起動時の編集領域R2は空白の状態とされる。一方、既存のユーザプログラムを編集する場合には、編集領域R2には、起動時に選択されたユーザプログラムが表示された状態とされる。
【0049】
ユーザは、編集領域R2内においてユーザプログラムのソースコードを編集することができる。ユーザプログラムの中では、GUIコントローラ編集機能により作成したGUIコントローラに含まれているコントローラパーツや、ターゲットデバイス4に対応するドライバのインスタンスをそれぞれ識別情報により区別し、起動ブロック、エントリポイント(関数)、または変数として利用することができる。これらの利用可能なインスタンスは、ユーザインタフェースを介してユーザが適宜選択してソースコード内の任意の位置に挿入することができるように構成される。このようにして、ユーザは、各コントローラパーツに対する操作入力やドライバに対し、起動するプログラム(関数、起動ブロック)を紐づける。
【0050】
ユーザプログラムの編集が確定(登録操作など)すると、GUIコントローラ設計支援装置1の制御部10は、即座にプログラムの文脈を評価する。そして、文脈的に問題が無ければ、エンジン3の実行環境内でプログラム文脈が保持されることとなる。なお、いわゆるブロックプログラミングのように、ブロックとして文脈が保証されている場合には、文脈の評価を行わなくてもよい。
【0051】
変更内容を保存する操作や自動保存機能により、編集後のユーザプログラムが記憶部11に記憶され、ユーザが編集したプログラム言語に応じた実行環境を有するエンジン3に編集後のユーザプログラムを送信してユーザプログラムを登録することができる。なお、いわゆるブロックプログラミングのように、ブロックとして文脈が保証されている場合には、編集情報はユーザ操作に連動して即座に実行環境に登録される。
【0052】
続いて、以上で説明したGUIコントローラ設計支援装置1が適用されるリモートコントロール環境において、入力デバイス2に表示されるGUIコントローラによりターゲットデバイス4を制御する手順、および既存のGUIコントローラやユーザプログラムを編集し更新する際の処理の手順について説明する。
【0053】
編集が行われる前の状態として、入力デバイス2には編集前のGUIコントローラのコントローラセットが登録されており、エンジン3には編集前のユーザプログラムが登録されているものとする。
【0054】
図2は、入力デバイス2に登録されたGUIコントローラにより、エンジン3を介してターゲットデバイス4を制御する際の手順を示すフローチャートである。はじめにユーザは、上述のようにコントローラセット編集機能を用いてコントローラセットのインスタンスを生成する(ステップS100)。次に、コントローラセットインスタンスに応じたユーザプログラムの実行に必要なエンジン3の実行環境を起動する(ステップS110)。このとき、入力デバイス2にコントローラセットが登録される。また、エンジン3の実行環境にはユーザプログラムが登録された状態となる。ここで、「実行環境が起動している」状態とは、実行環境が、”main”関数として無限ループを実行しつつ、プログラム実行要求や登録、更新要求など、何らかのイベントを待機している状態である。なお、コントローラセットインスタンス生成(ステップS100)と実行環境の起動(ステップS110)は順不同である。
【0055】
入力デバイス2は、登録済みのGUIコントローラを表示部22に表示しつつ、入力部23(例えば表示部22に重畳されたタッチパネル)に対するユーザの操作入力を受け付ける(ステップS120)。受け付けられた操作入力の内容は、操作されたコントローラパーツのインスタンスに対応する識別情報、操作に伴い検知されたパラメータ値等を含む実行要求イベントとして、エンジン3で起動されている実行環境に送られる(ステップS130)。
【0056】
エンジン3において利用可能とされているドライバは、起動状態のターゲットデバイス4と接続され、制御信号やセンサ出力の送受信が可能な状態となっている。ドライバは、いわゆるKeep Alive方式により、接続状態を管理するとよい。一般に、ドライバは、実行環境で実行されるユーザプログラムからの呼び出しに応じて、ターゲットデバイス4に対し制御信号を送信する。また、ドライバは、ターゲットデバイス4からのセンサ出力に起因して、当該ドライバのインスタンスに対応する識別情報、センサ出力に伴う値等を含む実行要求を、エンジン3で起動されている実行環境に送る。
【0057】
入力デバイス2のGUIコントローラに対する操作やドライバからの要求により実行環境に対し実行要求イベントが発行されると、当該実行要求の元となったコントローラパーツやドライバのインスタンスに対応する起動ブロックもしくは関数が、当該実行環境に対するプログラム実行スタックとして登録される(ステップS140)。プログラム実行スタックに登録された処理は、”main”関数として実行されている無限ループのループ毎にイベント処理と共に順次実行されていくことになる(ステップS150)。
【0058】
入力デバイス2は、登録済みのGUIコントローラを表示部22に表示しつつ、入力部23(例えば表示部22に重畳されたタッチパネル)に対するユーザの操作入力を受け付け、その内容をエンジン3で起動されている実行環境に送るとともに、操作入力に応じてコントーローラパーツのGUI表現(外観)を変更する(例えばアニメーション表示等)。
【0059】
このような環境で、入力デバイス2に表示されたGUIコントローラに対する操作入力に応じて、エンジン3で起動している実行環境においてユーザプログラムの対応するエントリポイントが実行され、ドライバを介してターゲットデバイス4に対する制御が実行される。
【0060】
続いて、既存のGUIコントローラやユーザプログラムを編集し更新する際の処理について説明する。図3は、既存のGUIコントローラやユーザプログラムを編集し更新する際の処理の手順を示すフローチャートである。
【0061】
GUIコントローラやユーザプログラムを編集する場合、GUIコントローラ設計支援装置1にて、GUIコントローラ編集機能やユーザプログラム編集機能を用いて、コントローラパーツ定義、配置、ユーザプログラムの編集等を行う(ステップS200)。編集を終えた後、コントローラパーツ編集機能やユーザプログラム編集機能においてそれぞれの編集が確定すると(ステップS220)、コントローラセットについては入力デバイス2に、ユーザプログラムについてはエンジン3に、それぞれ登録がおこなわれる(ステップS240)。GUIコントローラやユーザプログラムの編集や登録は任意のタイミングで、入力デバイス2、エンジン3、ターゲットデバイス4の再起動を要さずに行うことができ、これによりGUIコントローラを構成する各コントローラパーツに対する操作と、ターゲットデバイス4の挙動をリアルタイムで系に反映させることができる。
【0062】
本実施形態のリモートコントロール環境では、上述とおり、エンジン3が、受け取った実行要求とエントリポイント(関数や起動ブロック)とを、実行要求に含まれるコントローラパーツのインスタンスの識別情報を利用して紐づける。編集後のGUIコントローラやユーザプログラムの登録が行われると、コントローラパーツのインスタンスの識別情報とエントリポイントとの対応関係が変更され得るが、この関係は編集後のユーザプログラムにおいて規定され、エンジン3の実行環境に登録されることになる(ステップS260)。また、GUIコントローラの構成を示すコントローラセットの更新が入力デバイス2に登録されると、更新の内容に応じて、入力デバイス2に表示されるGUIコントローラの表示、コントローラパーツからの通知等が変更される。
【0063】
起動している実行環境は、登録の前後に亘ってmain関数として無限ループを実行し続ける。更新後のGUIコントローラやユーザプログラムが登録されると、同名の関数や変数は新たな値に置き換わる場合があるが、更新の前にプログラム実行スタックに登録された実行要求に紐づく関数については、更新前のユーザプログラムにて規定されている関数が実行される。そして、更新後にプログラム実行スタックに登録された実行要求については新しいユーザプログラムにて規定されている関数が実行される(ステップS280)ことになる。
【0064】
以上で説明した本実施形態におけるGUIコントローラ設計支援装置によれば、柔軟かつリアルタイムに制御やグラフィック表現を変更可能なコントローラ装置のプログラミングを支援することが可能となる。
【0065】
なお、上記に本実施形態を説明したが、本発明はこれらの例に限定されるものではない。例えば、上記の実施形態では、GUIコントローラ設計支援装置1、入力デバイス2、およびエンジン3が個別のハードウェアとして実現されたが、これらのうちの複数又は全てを1つのハードウェア(例えば、1台のコンピュータ)により実現してもよい。また、前述の各実施形態に対して、当業者が適宜、構成要素の追加、削除、設計変更を行ったものや、各実施形態の特徴を適宜組み合わせたものも、本発明の要旨を備えている限り、本発明の範囲に含有される。
【符号の説明】
【0066】
1 GUIコントローラ設計支援装置
2 入力デバイス
3 エンジン
4 ターゲットデバイス
NW ネットワーク

【要約】
柔軟かつリアルタイムに制御やグラフィック表現を変更可能なコントローラ装置のプログラミングを支援することのできるGUIコントローラ設計支援装置を提供する。
GUIコントローラ設計支援装置は、入力デバイスのタッチパネルディスプレイに表示され、ターゲットデバイスを操作するための操作入力を受け付けるGUIコントローラの設計を支援する。GUIコントローラ設計支援装置は、複数のコントローラパーツにより構成されGUIコントローラを定義するコントローラセットを編集するためのGUIコントローラ編集手段と、GUIコントローラに対する操作入力に応じたターゲットデバイスの制御を規定するユーザプログラムを編集するためのユーザプログラム編集手段と、を備える。
図1
図2
図3