JP3777830B2 - コンピュータプログラム生成装置及びコンピュータプログラム生成方法 - Google Patents
コンピュータプログラム生成装置及びコンピュータプログラム生成方法 Download PDFInfo
- Publication number
- JP3777830B2 JP3777830B2 JP29633198A JP29633198A JP3777830B2 JP 3777830 B2 JP3777830 B2 JP 3777830B2 JP 29633198 A JP29633198 A JP 29633198A JP 29633198 A JP29633198 A JP 29633198A JP 3777830 B2 JP3777830 B2 JP 3777830B2
- Authority
- JP
- Japan
- Prior art keywords
- physical
- robot
- physical object
- objects
- tangible
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
- Stored Programmes (AREA)
Description
【発明の属する技術分野】
本発明は、一般的に、有形コンピューティングに関し、さらに特定すると、プログラムのプログラム言語要素またはプログラミング言語を表す物理オブジェクトを操作することによるコンピュータ・プログラムの作成に関する。有形コンピューティング・システムの基本機能は、各物理オブジェクトに任意のプログラム言語要素を割り当てることができる実在する三次元作業空間のコンピュータによる観察を要求し、各オブジェクトに対する属性の割当て、または各オブジェクトの移動、あるいはその両方の結果、新しいプログラム構成要素を生成することである。
【0002】
【従来の技術及び発明が解決しようとする課題】
ヒューマン・コンピュータ・インタフェース(HCI)は、レバーやボタンから現在のキーボード、マウス、およびグラフィック・ディスプレイに至るまでの人間の機械との歴史的な対話から進化してきた。しかし、人とコンピュータ・プログラムの対話は、通常、デスクトップ・コンピュータ上のグラフィック・ユーザ・インタフェース(GUI)用途に限られる。GUIの本質とは、仮想環境で現実世界の用途を描くメタファー(metaphor:比喩的表現) ―つまりアイコン―である。したがって、GUIによるソリューション (解決策)では、現実的なメタファーを利用する。
【0003】
遍在(ubiquitous)コンピューティングは、多くのコンピュータが、ユーザに気づかれない内に、物理的環境全体で使用可能であるコンピューティングに対するアプローチである。しかし、この種のコンピューティングは、GUIスタイルの対話メタファーを、ユーザの物理的環境に配置される大型コンピュータ端末および小型コンピュータ端末にエクスポートすることによって特徴付けられる。
【0004】
「拡張された現実」つまり「コンピュータ拡張環境」は、実在する媒体および
計算上の媒体の統合化を試みるコンピューティングに対する別のアプローチである。例えば、物理的文書は、物理的文書がある実在する机の上へのコンピュータ・ディスプレイのビデオ投影を使用してデジタル文書で移動することができる。
【0005】
ユーザが、従来のコンピュータ画面内で三次元モデルを操作するための機構として物理的プロップを与えられる、「受動現実世界インタフェース・プロップ(prop)」も開発された。
【0006】
仮想現実の到来とともに、ユーザが自分の手を動かし、仮想環境内の仮想構成要素と対話できるようにするために触覚に基づくインタフェースが開発された。
【0007】
デジタル情報を日常の物理オブジェクトおよび環境に結合することにより物理的世界を拡張する、より新しいタイプのHCIが「有形(tangible)ユーザ・インタフェース」(TUI)と呼ばれる。例えば、フラット・パネル表示装置とは、物理オブジェクトに結び付けられた三次元デジタル情報との触覚に基づいた対話を可能にする物理的に具体化されたウィンドウである。したがって、TUIでは、物理オブジェクトが仮想アイコンを置換し、物理オブジェクトの操作が仮想世界で起きていることを表す。
【0008】
直接操作プログラムを使用するその他のシステムには、物理オブジェクトのグラフィック表記のすべて仮想環境内でのユーザ操作により、プログラムを構築できるようにする「ツーントーク(ToonTalk)」が含まれる。
【0009】
本発明は、前記のように、プログラムを作成および生成する場合に仮想環境の制限を克服するシステムを提供する。
【0010】
本発明は、さらに、コンピュータ対話が、プログラムと、埋込みプログラムを持つデジタルアーチファクト(artifacts)を作成できるようにするシステムを提供する。
【0011】
本発明の有形コンピューティング・システムでは、ユーザは、選択された物理オブジェクトを操作し、プログラムと他のデジタル構造を作成、制御し、このようにして汎用の制限されていないプログラムを作成する。
【0012】
本発明は、一人または複数のユーザによる作業空間内の一セットのオブジェクトの操作を観察、理解し、オブジェクトの集合の操作に反応する有形コンピューティング・システムを提供する。作業空間における人々、位置、および物事、あるいはさらに一般的には、関心のある位置は、少なくとも、特定のセットのオブジェクトでの指定されたセットの運動が、コンピュータまたはコンピュータのネットワークに通信できる程度まで観察できなければならない。有形コンピューティング用システムに必要とされる理解の最小レベルは、有形言語を認識し、観察された入力が正しいか、あるいはエラーが検出されたときに、適切な動作(action)をトリガする能力として表されることができる。動作には、例えばコンパイル、解釈、または変換のような他のデジタル構造の生成、アクティブ・アプリケーション、例えば、ユーザ・インタフェースのための制御イベントの生成、およびエラー状態に対するエラー・メッセージの生成または是正動作を含むことがある。
【0013】
本発明は、実在する表記からコードを規定するために使用される有形プログラミング言語も提供する。本発明の有形プログラミング言語は、オブジェクトでなされるまたはオブジェクトに適用されるジェスチャーにより他のデータ・オブジェクトでの演算を呼び出すために、観察される位置からピックアップされ、ドロップされ、使用されうる一セットの有形データ・オブジェクトとしてデータを表す。このようなジェスチャーには、例えば複数のオブジェクトに同時にタッチすることが含まれる。
【0014】
また、本発明の有形プログラミング言語は、プログラムをメモリに保存し、メモリからプログラムを復元すること、およびデータ値を入力および出力することを含む、外部操作を許容する。
【0015】
本発明の有形コンピューティング・システムでは、システムは、作業空間内でオブジェクトに対し行われていることを観察または感知し、これらの動作を手近な作業での有意ステップとして解釈し、これらの動作の結果としてシステムの状態を更新する。本発明の有形コンピューティング・システムでは、ユーザは、自らの計算上のニーズにさらに優れた制御を与えられる。有形オブジェクトの具体性によって、一グループのユーザは、有形プログラミング言語要素と自然に対話できるようになる。
【課題を解決するための手段】
【0016】
本発明は、コンピュータプログラムを生成する装置であって、ユーザによって操作できる物理空間内で配置可能であり、かつ異なるプログラム言語要素が各々割り当てられた複数の物理オブジェクトと、物理空間で発生する物理オブジェクトに対する物理操作を観察し、対応する電気信号を生成するセンサと、入力として電気信号を受信し、プログラミング規則に従って物理オブジェクトの属性を割り当てし直し、割り当てし直された属性に基づいて、物理オブジェクトに適用された動作及び物理オブジェクトの属性の意味を理解して、理解内容を表すプログラムコードの対応する部分を出力するプロセッサと、を備える、コンピュータプログラム生成装置である。
【0017】
コンピュータプログラムを生成する方法であって、センサが、物理空間内で異なるプログラム言語要素が各々割り当てられた複数の物理オブジェクトの内の少なくとも1つの物理操作に基づいて電気信号を生成し、プロセッサが、入力として電気信号を受信し、プログラミング規則に従って物理オブジェクトの属性を割り当てし直し、割り当てし直された属性に基づいて、物理オブジェクトに適用された動作及び物理オブジェクトの属性の意味を理解して、理解内容を表すプログラムコードの対応する部分を出力するコンピュータプログラム生成方法である。
【0018】
本発明の他の面は、添付図面とともに取られる、以下のさらに詳説された説明から明らかになるだろう。
【0019】
【実施の形態】
図1は、本発明の有形コンピューティング・システム10の1つの好ましい実施の形態を示す。図1に示されるように、実在する三次元の物理オブジェクト、つまりフィーコン(物理的アイコン:phicon)12にプログラム言語要素を割り当てることができ、各フィーコン12に属性を割り当てることによって、新しいプログラム要素、つまりイベント14が生じる。各プログラム要素、つまりイベント14は、有形コンピューティング・システム10のイベント認識サブシステム16によって認識される。認識されたイベント14は、イベント・ストリーム18によってイベント処理サブシステム20に伝達される。各イベント14は、待ち行列22の中に入れられる。イベント14は、状態遷移サブシステム24によって待ち行列22から順次引き出される。状態遷移サブシステム24は、状態遷移が発生したか否かを判断する。言語定義サブシステム26およびシステム状態記憶サブシステム28は状態遷移サブシステム24によってアクセスされ、システムの状態を判断する。処理更新30は、フィーコン12のイベント14をフィーコン処理サブシステム32で処理することによって発生する。それから、イベント14の内部ソフトウェア表現34がコード生成サブシステム36によって使用され、コード記憶サブシステム40に記憶されるプログラミング・コードを生成する。さらに、イベント14の内部ソフトウェア表現34は、イベント14の外部表現のために、出力プレゼンテーション・サブシステム38によって使用される。出力プレゼンテーション・サブシステム38は、画面での標準グラフィック・プレゼンテーション(図示されていない)であってよい。コード記憶サブシステム40に記憶されるコード生成サブシステム36によって生成されるコードは、ソース・コード、オブジェクト・コードあるいはその他のコンパイル可能または実行可能なプログラム言語の形式であってよい。
【0020】
有形コンピューティングは、1)対象となるオブジェクト12を観察し、ユーザの動作を推論するか、2)ユーザを観察し、関係するオブジェクト12を推論するか、あるいは3)これら2つのアプローチの組み合わせによって実現される。オブジェクト12は、例えば、信号を伝送することによって、観察に積極的に参加することができる。オブジェクト12は、例えば、ビデオ画像のオブジェクト分析を通して観察に消極的に参加してもよい。有形コンピューティングに必要とされる観察には、1)操作中のオブジェクト12を識別すること、2)オブジェクト12を配置すること、および3)オブジェクト12に関連するイベント14を決定することが含まれる。イベント(複数の場合がある)14の決定には、例えば、オブジェクト12に対して何が行われているのか、またはどのオブジェクト12がどの組み合わせで使用されているのかが含まれる。実在するオブジェクト12は、計算の部分を表すために使用される。システム10は、これらの実在のオブジェクト12を使用して、意図されたデジタル表現を作り上げる場合に、ユーザによってなされる動作を観察する。オブジェクト12および使用される動作のセットが、設計つまり意図を表現するための正確な「ボディーランゲージ」を形成する。
【0021】
例えば、ユーザは、電気的な装置または機械的な装置内にあるハードウェアの実際の部品を採取し、それらのパーツの異なったアセンブリまたはデバイス修理のための命令を指定することができる。地理的な領域または建物の物理モデルは、物理モデルによって表される人々、位置、および物事に関連するデータを通してナビゲーションを制御するために使用されることができる。人々、位置、および物事の物理モデルが、イベントまたは考えられるイベントのナレーション、例えば、アニメーション、マンガ、映画脚本、またはプロセス説明を作成するために使用されることがある。後方支援状況、例えば、在庫管理(資材統制)、生産フロー、または戦術上の位置の物理表現は、一グループの人々が、複雑な手順または行動方針について推論してから、その表現を使用して手順または行動方針を文書化できるようにするために使用されることができる。
【0022】
オブジェクト12を最初に認識することは、さまざまな方法で達成され得る。例えば、ユーザは、ユーザがオブジェクトに割り当てることを希望するアイデンティティに対応する事前に割り当てられた位置にタッチすることによって、オブジェクト12を識別することができる。同様に、物理的なスイッチベースの観察システムが使用されてもよい。別の用途の広い観察機構は、カメラ162が作業空間で受動的なオブジェクトを観察する、仮想観察である。観察領域のサイズおよび構成は、視野またはカメラ162の解像度の粒度を調節することによって変更されてもよい。
【0023】
また、有形コンピューティング・イベントの視覚的な観察は、作業空間に導入されている物理的アイコン( フィーコン) 12の種類を識別するために色を使用することを含んでもよい。例えば、各フィーコン12は、事前に選択された色のより大きな円に取り付けることができる。色のセットは、ブロック、フィギュア(figure)などの考えられる種類のタイプのフィーコン12の範囲をカバーする。1つのあらかじめ定義された色が優勢となる連続する複数の領域を探すことによって、オブジェクト12の初期認識が可能になる。システム10は、バーコードおよびデータグリフ(絵文字)を含むさまざまな特徴を区別することによってオブジェクトを識別するためのその他の視覚的な技法を使用することがある。
【0024】
有形コンピューティング・システム10は、オブジェクトのアイデンティティを継続して認識できるか、あるいはシステム状態の一部としてオブジェクトのアイデンティティを記憶することができる。継続的な認識によって、オブジェクト12は認識信号を伝送するか、あるいはそれが関係している各イベント14の間にイベント認識サブシステム16によって消極的に感知される。システム状態情報は、実際にイベント認識サブシステム16によって観察されなくても、各イベント14にどのオブジェクト12が関係しているのかを追跡調査するために使用されてもよい。
【0025】
データ構造は、複数のセットの物理的に近接して位置するオブジェクト12を含む。1つまたは複数の指定された比較オブジェクト12は、例えば、「上回る」、「下回る」、または「以上」のような条件論理テストを実行するために一セットのデータについて動作し、テストの結果に基づいて適切な動作を呼び出す。比較オブジェクト12は、例えばテストを実行し、動作を呼び出すためにオブジェクト12にタッチすることによるなどのジェスチャーで呼び出されることができる。1つまたは複数の反復オブジェクトは、データ構造の要素に沿って反復するか、指定された数までカウントするか、指定された数からカウントすることによって反復する。トレーニング段階によって、その反復オブジェクトが呼び出される各反復中に、一セットの有形言語動作が学習され、反復オブジェクト12と関連付けられ、適用されることができるようになる。反復オブジェクト12は、例えば、その学習された動作をデータ構造上で実行するためにそのオブジェクトにタッチすることによるなどのジェスチャーによって呼び出されてもよい。また、一セットの学習された動作は、オブジェクト12と関連付けられ、複雑な動きをカプセル化するためのメカニズムを提供することができる。したがって、有形プログラミングでは、データは、観察中の位置からピックアップされ、移動され、オブジェクト12でなされるか、オブジェクト12に適用されるジェスチャーによって他のデータに対する動作を呼び出すために使用することができる一セットの有形データ・オブジェクト12によって表される。このようにして、フィーコン12のユーザ操作は、オブジェクトおよびその中のプログラミングするのに関連付けられたあらゆる表現を表す。
【0026】
図2に図示されるように、フィーコン12の作業空間42内での位置を観察するには、座標系、つまりグリッド60を識別する必要がある。フィーコン12は空間を占めるため、グリッド60のセル62のサイズは、1つのフィーコン12がグリッド60上で1つの位置、または多くの位置を占有するように定義されることができる。座標系も層を成していてもよい。図2に図示されるように、イベント認識サブシステム16のカメラ162は、グリッド60上の多くの視覚的に強調されたフィーコン12を観察する。視覚的に強調されたフィーコン12は、12という値を運ぶ「12」データフィーコン122や「2で除算」演算を運ぶ結合データ/演算子フィーコン124のようなそれらの属性を示す観察可能なラベルを運ぶ。カメラ162は、画像を処理し、例えばデータフィーコン122のデータ「12」の画像を出力プレゼンテーション・サブシステム38のディスプレイ382上で表示する有形コンピューティング・システム10のイベント認識サブシステム16に、フィーコン12を含む作業空間42の画像を伝送する。
【0027】
表1は、有形コンピューティング・システム10内の1つまたは複数のフィーコン12にユーザが適用できる動作のクラスを概略する。例えば、ユーザが、フィーコン12を裏返したり、スピンさせたり、軸回りに回転することなどによって、フィーコン12の向きを変更することができる。有形コンピューティング・サブシステム10はこの動作を観察し、フィーコン12の状態および属性および動作に基づいて、プログラミング・イベントを生成する。
【0028】
好ましい実施の形態では、本発明の有形プログラミング方法によって、ユーザ/プログラマは、ユーザが選択したフィーコンを対話的に操作し、プログラムを作成することができる。データは、作業空間42内の観察可能な位置からピックアップされ、作業空間42内の別の観察可能な位置でドロップされ、フィーコン12でなされるまたはフィーコン12に適用されるジェスチャーによって他のデータフィーコン12に対する動作を呼び出すために使用できる一セットの有形データフィーコン12で表される。このようなジェスチャーには、例えば、複数のオブジェクト12にいっしょにタッチすることが含まれる。データ構造は、複数のセットの物理的にグループ化されたフィーコン12を含み、さらに、一つのセット内のフィーコン12が互いに関してどのように配置されるのかを含んでもよい。比較フィーコン12は、一セットのデータフィーコン12の上で動作し、条件付き論理テストを実行する。このようなテストは、例えば、「上回る」または「以上」を含み、比較フイーコンにはテストに基づいて適切な動作を呼び出す。比較フィーコン12は、そのテストおよび呼び出された動作を実行するためにジェスチャーによって呼び出されてもよい。このようなジェスチャーには、例えば、データフィーコン12に比較フィーコン12をタッチ(接触)させることが含まれる。反復フィーコン12は、データ構造の要素に沿って、あるいは指定された数までカウントするか、指定された数からカウントすることによって反復する。トレーニング段階によって、いったん反復オブジェクト12が呼び出されると、各反復中に、一セットの有形言語動作が学習され、反復オブジェクト12に関連付けられ、適用されることができる。反復オブジェクト12は、その学習された動作をデータ構造上で実行するためにジェスチャーによって呼び出されてもよい。例えば、データ・オブジェクト12に反復オブジェクト12をタッチさせることによって、データ構造上で学習された動作が実行される。一セットの学習された動作が、オブジェクト12と関連付けられて、複雑な動きをカプセル化するためのメカニズムを提供することもできる。このような手順オブジェクト12は、その学習された動作をデータ構造上で実行するためにジェスチャーによって呼び出されてもよい。例えば、データ・オブジェクト12に手順オブジェクト12をタッチさせる。1つまたは複数の制御オブジェクト12は、学習された動作のトレーニング段階を制御する。制御オブジェクト12にタッチすると、トレーニングセッションが停止する。学習された動きのある別のオブジェクト12に制御オブジェクト12をタッチさせると、学習された動作が廃棄され、タッチされたオブジェクト12が再トレーニングできる。また、本発明の有形プログラミング言語は、データ値の入力および出力だけではなく、プログラムをメモリに保存すること、およびプログラムをメモリから復元することを含む外部動作(演算)に備える。
【0029】
このようにして、プログラムは、多様なタイプのフィーコン12に対し実行された観察された動作によって作成されることができる。有形言語用に設計されるインタプリタは有形プログラムを実行し、これらのプログラムは有形インタフェースを使用して、保存、検索、編集、および再実行することができる。図3は、プログラムを構築するために使用されるこれらの多様なタイプの有形フィーコン12を示す。表2は、図4に図示されるフィーコン12をその表現および動作とともに一覧表示する。
【0030】
数ブロック50は、データフィーコン122などの数字表現及び数字演算などの結合データ/演算子フィーコン124を表すために使用される。例えば、演算には、加法、減法、乗法、および除法が含まれることができる。はかりとして図示されるチェッカフィーコン52は、条件式を表すために使用される。ロボットフィーコン54は、反復および手続き要約を表すために使用される。例えば、ロボットフィーコン54はタッチされると、ロボット54はそれ以降の動作を思い出す。これは、フィーコン12のロボットトレーニングと呼ばれる。ロボットフィーコン54が再びタッチされると、それはロボットフィーコン54に近接するフィーコン12のすべてに対して再びそれらのそれ以降の動作を実行する。カウントダウンロボットフィーコン56は反復を表すために使用される。カウントダウンロボットフィーコン56をタッチすると、それはそれ以降の動作を思い出す。ストップライトフィーコン58は、インタフェース状態制御を表すために使用される。例えば、ストップライトフィーコン58にタッチした結果、ロボットフィーコン54またはカウントダウンロボットフィーコン56のロボットトレーニングを終了する信号が発生できる。図4および図5は、図2および図3に図示される言語要素を使用して、フィボナッチ・シーケンス(Fibonacci sequence)を決定するために、プログラムがどのように構築されるかを示す。
【0031】
図4に図示されるように、ユーザが、さまざまな数と変数を表す一連のブロック50をピックアップし、ブロック50を線の内のグリッド60上にドロップしてデータは初期化され、このようにしてデータ・シーケンスを形成する。この例では、ブロック50によって表される数は、デフォルトによりゼロに設定される。プログラムの初期状態は、最初の2つのブロック50にデータ値Iを入力することによって設定される。次に、ユーザはストップライトフィーコン58をピックアップし、それを数の行に水平に近接していない任意のグリッド要素の上に置く。
【0032】
次に、図4に図示されるように、ロボットフィーコン54が初期化され、トレーニングされる。ユーザがロボットフィーコン54をピックアップし、それを数の行のすぐ左側にドロップすると、ロボットフィーコン54のトレーニングが発生する。ユーザはロボットフィーコン54にタッチし、ロボットフィーコン54のトレーニングの開始を知らせる。
【0033】
次に、図4に図示されるように、ユーザが、ロボット54のすぐ右側にある、行の中の第1の数ブロック50をピックアップし、第3の数ブロック50にこの第1の数ブロック50をタッチさせ、それによって加法動作を実行すると、1つの反復のためのトレーニングが発生する。つまり、第1の数ブロック50の値が第3の数ブロック50の値に加算される。それから、ユーザは第2の数ブロック50をピックアップし、第3の数ブロック50に第2の数ブロック50をタッチさせ、別の加法動作を生じさせる。つまり、第2の数ブロックの値が第3の数ブロック50の値に加算される。それから、ユーザはストップライト58にタッチし、ロボットフィーコン54に対するトレーニング終了を知らせる。
【0034】
ただちに実行されるか、別のプログラミング言語に変換され得るプログラムが、このようにして作成された。ロボットフィーコン54のすぐ右側にあるブロック50の行には特別な意味があり、ロボット・コンテキスト(文脈)と呼ばれる。ロボット・コンテキストに関して取られる動作は、ロボットフィーコン54に関する相対的な位置を意味すると解釈される。反復は、増分オフセットを、これらの数ブロック50に関連するこれらの値に加算することによって達成される。オフセットは、ゼロからコンテキスト内のオブジェクト50の数に増分される。コンテキストの外の値を引き出す反復が発生すると、ロボットフィーコン54の実行が停止する。
【0035】
次に、図5に図示されるように、ユーザが第3の数ブロック50の値をゼロにリセットすると、シーケンス計算の再初期化および実行が発生する。実行は、ロボットフィーコン54に再びタッチし、ロボットフィーコン54に、行中の数ごとに計算ステップを実行させることによって達成される。
【0036】
フィボナッチ・シーケンスを決定するために図4に関して前述される有形入力イベントは、表3に示される。
【0037】
フィボナッチ・シーケンスプログラミングのロボットトレーニングは、図4および表3を使用して、以下に示すようにトレースすることができる。ロボットフィーコン54は、セル位置(0,0)に配置され、ユーザ64がロボットフィーコン54にタッチすると、トレーニングが開始する。ロボット・コンテキスト内の数ブロック50は、ロボットフィーコン54のすぐ右側のセル位置(0,1)、(0,2)および(0,3)に位置される。ロボット・コンテキスト内に位置されるセルでのロボットトレーニングの間にイベントが発生するたびに、ロボット・コンテキスト数が、ロボットの位置の右側にある水平セル62から1を差し引いた数として計算される。セル位置(0,1)にある第1の数ブロック50がピックアップされると、ロボット・コンテキスト数が0に設定される。イベント「ピックアップ」に関して、セル位置(0,1)およびコンテキスト数0が思い出される。第1の数ブロック50がセル位置(0,3)にある数ブロック50にタッチされると、イベント「タッチ」、位置(0,3)およびロボット・コンテキスト2が思い出される。第1の数ブロック50の値が、セル位置(0,3)に位置する数ブロック50の値に加算される。第1の数ブロック50がその元のセル位置(0,1)に戻されると、イベント「ドロップ」、位置(0,1)およびロボット・コンテキスト数0が思い出される。ユーザ64がセル位置(0,2)から第2の数ブロック50をピックアップすると、イベント「ピックアップ」、位置(0,2)、およびロボット・コンテキスト数1が思い出される。第2の数ブロック50がセル位置(0,3)にある数ブロック50にタッチされると、イベント「タッチ」、位置(0,3)、およびロボット・コンテキスト数2が思い出される。第2の数ブロック50の値は、セル位置(0,3)に位置する数ブロック50の値に加算される。第2の数ブロック50がその元のセル位置(0,2)に戻されると、イベント「ドロップ」、位置(0,2)およびロボット・コンテキスト数1が思い出される。ユーザ64がセル位置(1,7)にあるストップライト58をタッチすると、ロボットトレーニングは停止する。
【0038】
フィボナッチ数の計算は、ロボットフィーコン54に関して思い出された命令を実行することによって、数ブロック50のシーケンス全体について計算される。図5は、記憶されたシーケンスの実行を示す。ロボットフィーコン54は、セル位置(0,0)に位置され、ユーザ64が2度目にロボットフィーコン54にタッチすると(1度目は、前記のようにシーケンスを学習するためであった)実行が開始する。ロボット・コンテキスト内の数ブロック50は、ロボットフィーコン54のすぐ右側のセル位置(0,1)、(0,2)、および(0,3)に位置される。ロボット・コンテキスト内に位置するセルでのロボット実行の間にイベントが発生するたびに、記憶されたロボット・コンテキスト番号が、ロボット動作が発生しなければならないセル位置を計算するために使用される。セル位置は、記憶されたロボット・コンテキスト数とロボットフィーコン54の水平セル位置と1とを加えたものとして計算される。第1の記憶された動作によって、セル位置(0,1)にある数ブロック50に対するピックアップ・イベントが生じる。次に記憶された動作によって、セル位置(0,3)にある数ブロック50でタッチ・イベントが生じる。第1の数ブロック50の値は、セル位置(0,3)に位置する数ブロック50の値に加算される。次に記憶された動作によって、セル位置(0,1)の数ブロック50のドロップ・イベントが生じる。次に記憶された動作によって、セル位置(0,2)にある数ブロック50のピックアップ・イベントが生じる。次に記憶された動作によって、セル位置(0,3)にある数ブロック50でタッチ・イベントが発生する。第2の数ブロック50の値は、セル位置(0,3)に位置する数ブロック50の値に加算される。次に記憶された動作によって、セル位置(0,2)にある第2の数ブロックをドロップするイベントが生じる。
【0039】
ロボット・コンテキスト数を1というオフセット分増加すると、命令の加法シーケンス全体が、右側に1セル位置、スライドする。このようにして、1というオフセットが使用されると、(0,0),(0,2)、(0,0)、(0,1)、(0,2)、(0,1)に位置するセルに対する動作の元のシーケンスは、(0,1)、(0,3)、(0,1)、(0,2)、(0,3)および(0,2)に位置するセルに対する演算(動作)になる。オフセット・コンテキスト数が数オブジェクト50の数を越えるセル位置を計算すると、ロボットフィーコン54の動作、つまりプログラムの実行が停止する。
【0040】
図4に図示されるフィボナッチ有形プログラムは、このようにして、反復および計算を含む手順要約を説明する。ユーザ64が、フィーコン12の物理位置、フィーコン12の物理外観、およびフィーコン12の任意の移動に基づき、プログラミング規則に従って割当てし直されることができる属性を備える物理オブジェクト12を、物理的にタッチするか、移動するか、あるいはそれ以外の場合には接触していることに注意する必要がある。各フィーコン12はユーザまたはシステムによってそのフィーコン12に割り当てられる属性によって説明されるため、フィーコン12は、特定の形式に制限されていない。
【0041】
図6の(a)及至図6の(d)に図示されるように、ユーザがある特定の有形オブジェクト12をタッチするか、押すか、ピックアップするか、ドロップするか、あるいはそれ以外の場合有形オブジェクト12と対話すると、対話がイベント認識サブシステム16によって観察される。イベント認識サブシステム16は、特定のオブジェクト12および特定のオブジェクトの関連する属性に基づいて、適用された動作およびその関連付けられた意味を理解する。システム10は、観察されることに対し反応し、プログラム言語または実行済みプログラム言語(例えば、グラフィック・ディスプレイ)、あるいはその両方を生成する。図6の(a)及至図6の(d)は、ドロップする、ピックアップする、タッチする、および「複数のオブジェクトにいっしょにタッチする」というイベントのそれぞれを認識する連続画像を描く。図6の(a)に図示されるドロップ・イベントは、グリッド60上で以前には空であった位置にあるオブジェクト12の出現によって決定される。図6の(b)のピックアップ・イベントは、グリッド60上の以前は占有されていた位置からのオブジェクト12の消失によって決定される。図6の(c)に図示されるように、第2のオブジェクト12の以前には占有されていた位置64内での移動は、第2のオブジェクト12に対する第1のオブジェクト12のタッチを示す。オブジェクト12は、タッチ・イベントとして適格化するためには、例えば33%という位置64のしきい値パーセントを越えなければならない。図6の(c)および図6の(d)に図示されるように、2つのオブジェクト12にいっしょにタッチすることは、1つの位置64内に2つのオブジェクト12を置くことによって示される。したがって、図6の(d)に図示されるように、2つのオブジェクト12にいっしょにタッチすることは、実際には、2つのイベント、即ち、位置(1,3)からのピックアップおよび位置(2,2)でのタッチ、に対応することができる。
【0042】
別の実施の形態では、有形プログラムは、有形コンピューティング環境内のインタプリタによって実行されるか、JavaやCのような主流のプログラミング言語に変換されてもよい。図7では、変換関数は、ロボットフィーコン54が保存ボード74上にドロップされ、その後にそれ以降の実行が続く場合に呼び出される。データ定義に関して初期条件の捕捉を可能にする規則(convention)も許容できる。例えば、同等なJavaコードを生成するためには、変換の各呼出しが、ロボットフィーコン54を実行するための主要な方法でJavaクラスを作成する。ロボットフィーコン54の動きは、この生成クラス用のJava方法に変換される。一時変数は各有形位置に関係付けられ、これらの変数は位置値に一致する。これらの位置に関してなされた動作は、中間計算のためにこれらの一時変数を使用することができる。データ・フロー分析は、それ以降のコード生成ステップでの変数を排除することができる。さらに、位置変数および数動作方法を定義するすべての生成されたコードによって共用される1つの共通クラスJCGがある。各ロボットフィーコン54は、識別されたコンテキストを有する方法によって表され、各識別されたコンテキストは、ヌルとして、コンテキスト・アレイとして、またはtempアレイ(一時アレイ)の中のアレイ・インデックスとして定義されることができる。ロボットフィーコン54の各主要ルーチンは、指定されたあらゆる非ヌル・コンテキストに対してループ内で呼び出され、反復プログラム構造を生じさせる。さらに、各チェッカ52呼出しが、条件式のif-then-else構造を定義する。
【0043】
一例に、表4から表11は、さまざまな物理操作の状態遷移を説明する。特に、ドロップ、タッチ、ピックアップ、およびデータエントリの状態遷移が、この有形プログラミング言語(Tangible Programming Language) について説明される。
【0044】
特に、各状態Qは、作業空間に導入される有形プログラミング・オブジェクトOの集合、作業空間の位置L、オブジェクトOの位置L上へのマッピングιo 、処理モードmおよびオブジェクトOの選択された1つSの関数である。具体的には、Oは、すべての数ブロック50、チェッカ・ブロック52、ロボット54と56、およびストップライト58の合併(union)である。各オブジェクトOにはあるドメインにおいて一つのセットの属性を有することを理解する必要がある。これらの属性は、例えば「値(o)」がオブジェクトOの「値」属性を意味する関数記号によって説明されるのが好ましい。表4は属性を概略する。
【0045】
また、位置Lが「未知の」位置、「手にした(既知の)」位置、および作業空間位置を含むことも理解する必要がある。さらに、作業空間位置は、三つ組<ボード、行、列>として定義されるのが好ましく、この場合「ボード」は「ツール領域(Tool Area) 」ボード、「保存領域(Save Area) 」ボード、および「作業領域(Work Area) 」ボードを含む。ツール領域ボードは、オブジェクト・タイプおよび属性値を未定義フィーコン12に割り当てるために使用される。保存領域は、保存ルーチンを呼出すために使用される。作業領域とは、前記のように、オブジェクトが、プログラミング・イベントを生成し、データ構造またはデータ・シーケンスを形成するために配置されるところである。「未知の」位置は、オブジェクトの位置が未定義になると使用される。「手にした」位置は、オブジェクトとのジェスチャーの間に以前の位置からそのオブジェクトがピックアップされたか、除去されたことを示すために使用される。
【0046】
処理モードmは、「トレーニング」、「通常」、および「実行」を含む。入力Iは、有形インタフェース(Tangible Interface)・イベントeおよびイベントの位置l両方の関数である。有形インタフェース・イベントeは、「ドロップ」、「ピックアップ」、「タッチ」、および「データエントリ」を含む。イベントの位置lは、モードに依存する。「通常」モードと「トレーニング」モードでは、有形インタフェースは、グローバル・ボード位置を提供する。また、「実行」モードでは、イベント位置lは、実行するロボットの位置に関連することができる。なお、lは英文字の小文字のエルを表す。
【0047】
このようにして、初期システム状態qo は、有形プログラミング・オブジェクトOの集合、作業空間の位置Lの関数であり、ιo (o)は、「ツール領域」内のツール・オブジェクトを除くすべてのオブジェクトがボードから外れ、何も選択されない場合の、オブジェクトOの位置への初期マッピングである。したがって、前述されたように、任意の状態Qは以下の通りとなり、
Q={O,L,ιo ,m,S}
ここで、
O=有形プログラミング・オブジェクトのセット={数}∪{チェッカ}∪{ロボット}∪{ストップインジケータ}、{ロボット}={歩行ロボット}∪{カウントダウンロボット}となり、「{数}」は集合{o|o∈O、種類(o)=数}を表す。
L={未知}∪{手にする}∪N3
N3=BxNxN=三つ組<ボード、行、列>の集合
B={ツール領域、作業領域、保存領域}
ιo :O→L;
m∈M={通常,トレーニング,実行}
S⊆O=選択されたオブジェクト
θLは、ιo の反転マッピングである(つまり、ιo -1、オブジェクトへのマッピング位置);
I={e,l},
e=有形インタフェース・イベント∈E={ドロップ,ピックアップ,タッチ,データエントリ}
l=イベントの位置∈L−({未知}∪{手にする});
T⊆Oは、ツール領域内のツール・オブジェクトである。注記。これはtij∈T,Lo(tij)=<ツール領域,i,j>になるように、事前に定義された構成である;
β:L→Bは、位置Lのボード上への射影関数である(例えば、β(<b,i,j>)=b);及び
qo=初期システム状態={O,L,ιo (o)=<ツール領域,i,j>ifo=tij∈T,そうでない場合は未知,S{}}
【0048】
有形プログラミング言語は、非常にコンテキストに敏感であり、物理的な現れ(例えば、オブジェクト、ジェスチャー)に対する一致 (correspondence)によって制約される限られた数の要素を含む。したがって、有形プログラミング言語は状態遷移関数によって表される。
【0049】
有形プログラミング言語の状態遷移関数δは、表5−8に示される。状態遷移関数は、状態(States)(つまり、q∈Q)を入力値(つまり、δ:QxI→>Q)を基準にした状態にマッピングする。表5から表11は、どのオブジェクト(S)が選択されるかどうかの変化性、インタフェース・モード(m)、入力動作(θL (l)およびメモリのあるロボットとメモリのないロボットの間の区別)によって作用されるオブジェクト、入力動作が発生しているボード(β(l))、および入力イベント(E)の種類によって特徴付けられるQxIのサブセットに対するこのマッピングを説明する。この特徴付けは、その遷移が表5から表11に示される32のルールによって説明される、1080個の可能な状態−入力の組み合わせ(5*3*6*3*4)を導びく。さらに、表5から表11に記述
される誤差遷移ルールは、相互に排他的ではない。
【0050】
有形プログラミング言語定義での条件論理は、データ・オブジェクト50をチェッカ・オブジェクト52に適用することにより表される。これは、チェッカ・オブジェクト52を2つの数ブロック50の間に置き、チェッカ52にタッチすることによって行われる。これは、ルールT7(Rule T7) で説明される。数オブジェクトおよびチェッカ・オブジェクトが、同じボード上の隣接する列位置で同じ行にすべて位置合わせされるものとする(またはされなければならない)ことを理解する必要がある。チェッカ52は、以下に示す比較の内の1つを行うことができる。つまり、上回る(>)、以上(≧)、下回る(<)、以下(≦)である。大きい方の比較(>、≧)が使用されると、数が比較され、より大きい数がチェッカ52の左側(つまり、低い方の列値を有する位置)に置かれる。より小さい数は、チェッカの右側に置かれる。同様に、小さい方の比較(<、≦)が使用されると、より小さい数が左側に置かれ、より大きい数はチェッカの右側に置かれる。
【0051】
図8は、さらに一般的な比較動作を示す。ロボット54及び/又は56が数ブロック50とチェッカ52の各側面に一直線に置かれる場合、チェッカ52が起動されると、適切なロボット54及び/又は56が呼び出される。即ち、「上回る」または「以上」の比較(>または≧)が使用されると、数ブロック50が比較され、比較が当てはまる場合には、チェッカ52の左側(つまり、より低い列値が指定される位置)にあるロボット54及び/又は56が起動される。当てはまらない場合、右側にあるロボット54及び/又は56が起動される。小さい方の比較が使用されると、ロボット起動のシーケンスはスワップされる。数ブロック50が比較され、比較が当てはまる場合、チェッカの右側にあるロボット54及び/又は56が起動される。当てはまらない場合は、左側にあるロボット54及び/又は56が起動される。
【0052】
有形プログラミング言語には、2つのタイプのロボット・オブジェクト54または56がある。つまり、歩行ロボット54およびカウントダウンロボット56である。歩行ロボット54は、隣接する位置、つまり同じボード、同じ行、連続する位置に位置するオブジェクト50の線と関連付けられる。カウントダウンロボット56は、それらがカウントのために使用するというそのコンテキストとして単独の数オブジェクトを備える。したがって、カウントダウンロボット56の場合、コンテキストは、ロボットがドロップされるところのわずか1位置右側で終了する。
【0053】
ロボットトレーニング中動作が発生するとつねに、以下の項目が記録される。1.イベント、e∈E=(ドロップ、ピックアップ、タッチ、データエントリ)2.イベントがコンテクスト関係であったか、通常であったか
3.イベントが通常のイベントであった場合、イベント位置、l∈L−({未知}U{手にする})
4.イベントが、コンテキスト数がロボット54または56の列位置に関するコンテキスト・オブジェクトの列オフセットによって定義されるコンテキストであった場合のコンテキスト数
【0054】
ロボット54および56は、トレーニングセッション中に記録された動作を順番に再生することによって実行される。ロボットが歩行ロボット4である場合、トレーニングされた動作のセット全体が繰り返し実行され、実行される反復の数はロボットのコンテキストのサイズに基づく。ロボットがカウントダウンロボット56である場合、トレーニングされた動作のセット全体が、ロボットのコンテキストの数値によって示される回数、実行される。
【0055】
表5から表11は、以下に示す例外はあるが、ロボット動作によってなされる状態遷移を決定するために再び使用される。
1.イベントがコンテキストイベントであり、ロボットがカウントダウンロボット56である場合、入力動作によって動作されているオブジェクト50は、オブジェクトのコンテキスト番号によって決定される。即ち、コンテキスト番号がcであり、ロボット位置が座標<ボード、行、列>により指定される場合、これが有効な位置であるならば、動作されているオブジェクトは、<ボード、行、列+c>(即ち、θL(<ボード、行、列+i>)に位置するオブジェクトである。図9は、カウントダウンロボット56の動作を示す。
2.イベントがコンテキストイベントであり、ロボットが歩行ロボット54である場合、入力動作によって動作されているオブジェクト50は、オブジェクトのコンテキスト数および反復数によって決定される。反復数はゼロで始まり、コンテキストのサイズまで増分する。即ち、コンテキスト番号がcである場合、反復番号はiであり、ロボット位置は座標<ボード、行、列>によって指定される場合、これが有効な位置であるならば、動作されているオブジェクトは、<ボード、行、列+c+i>に位置するオブジェクト(即ち、θL(<ボード、行、列+c+i>)である。図10は、歩行ロボット54の動作を示す。
3.ロボット54および56の動作は、なんらかのエラー状態がある場合には停止される。
4.歩行ロボット54のコンテキスト位置は、それらが有効な位置であることを確実にするために各反復の前にチェックされる。歩行ロボット54の実行は、それ以外の場合は停止される。
【0056】
さらに、有形プログラミング言語には、実行されているロボット54または56に保存領域内のロボットと同じラベルが付いている場合には、同等なJavaコードがこのロボット呼出しに生成されるという規定がある。コード(Code)生成は、以下に詳細に説明される。
【0057】
有形プログラミング言語は自体のインタプリタを有する。ロボット・オブジェクト54および56は、プログラムの動作を具体化し、永久記憶装置に保存されることができる。有形プログラミング言語プログラムは、例えばJavaやCのような他の汎用プログラミング言語で任意のプログラムに変換されてもよい。これによって、有形インタフェースは、プログラムが物理オブジェクト12を配列することによって作成されるという独特な機能を備えた汎用プログラミング環境になる。
【0058】
有形プログラミング言語のJavaへの変換関数は、表12、表13および表14に示される。変換が呼び出されるたびに、主方法関数が指定されるJavaクラスが生じる。表9、表10および表11の状態遷移ルールT6は、呼出しステップを概略する。各ロボット・オブジェクト54または56の挙動は、この生成クラスのJava方法に変換される。
【0059】
コード生成のこのバージョンの場合、一時変数が各有形位置に関連付けられる。これらの変数は、対応する位置値の「一時[ボード][行][列](Temp[board][row][column])」および「In_Hand」呼ばれる。表12、表13および表14では、記号“Temp(l)”が「一時[ボード][行][列]」を表すために使用され、この場合l=<ボード、行、列>である。それらの位置に関してなされた動作は、中間計算のためにこれらの一時変数を使用できる。データ・フロー分析は、次のコード生成ステップでこれらの変数を排除することができるだろう。各ロボット54およb56は、コンテキスト・アレイ「コンテキスト(Context) 」をパラメータとして持つ方法によって表される。表12、表13および表14では、記号“Context[c]”が、指定されたイベントのコンテキスト数「c」のコンテキスト・アレイ位置を表すために使用される。
【0060】
有形プログラミング言語の条件論理は、データ・オブジェクト50をチェッカ・オブジェクト52に適用することにより表される。これは、2つのデータ・ブロック50またはデータ・ブロック50のセットの間にチェッカ・オブジェクト52を配置し、チェッカ52をタッチすることによって実行され、ルールT7およびGKに記述される。チェッカ52のコードの生成には、チェッカ52と関連する数、およびオプションでチェッカ52の各分岐に関連するロボット・オブジェクト54及び/又は56を見ることが必要とされる。
【0061】
このようにして、以下を定義することができる。
チェッカ52のn桁右側のオブジェクトRHSの位置としての“RHS(l,n)”
チェッカ52のn桁左側のオブジェクトLHSの位置としての“LHS(l,n)”、および
このチェッカ52(例えば“>”または?“<”)と関連する条件演算子としての“oper”
【0062】
RHSが非ロボット・オブジェクトであり、チェッカ52の2桁右側に位置する、RHS(l,2)の場合、またはLHSが非ロボット・オブジェクトであり、チェッカ52の2桁左側に位置する、LHS(l,2)の場合、この条件論理の生成されたコードは以下の通りである。
【0063】
RHSはロボット・オブジェクト54及び/又は46であり、チェッカ52の2桁右側に位置するRHS(l,2)で、LHSがロボット・オブジェクト54及び/又は56であり、チェッカ52の2桁左側に位置するLHS(l,2)である場合、
“RHSMethodΟ”は、右ロボット54または56から生成される方法を示し、
“LHSMethodΟ”は、左ロボット54または56から生成される方法を示す。
【0064】
この条件論理のコードは、以下によって与えられる。
【0065】
各ロボット方法は、そのラベル属性によって名前付けされ、この場合“name”がロボット“labelО”のラベル属性である。
【0066】
ロボット方法が呼出されると必ず、ロボット・コンテキストがパラメータとして渡されなければならない。即ち、ロボットの現在位置に隣接するTemp位置は、正しい寸法のコンテキスト・アレイに変換される。このコードは、以下の記号“GetContextО”によって示される。
【0067】
歩行ロボット54にコンテキストがない場合、以下のコードが生成される。
以下のコードが、他のすべての歩行ロボット54に生成される。
以下のコードが、すべてのカウントダウンロボット54に生成される。
【0068】
図1から図9に図示されるように、有形プログラミングが、プログラミングされた汎用コンピュータ・システム上で実現されるのが好ましい。ただし、有形プログラミングは、特殊目的コンピュータ、プログラミングされたマイクロプロセッサやマイクロコントローラ、およびASICやその他の集積回路のような周辺装置統合型回路素子、離散エレメントの回路のような配線による電子回路または論理回路、PLD、PLA、FPGAまたはPALのようなプログラマブル論理回路、または類似物でも実現できる。
【0069】
当業者によって理解されるように、本発明は、本発明の精神またはその本質的な特徴から逸脱することなく他の特殊な形式で具体化されることができる。例えば、任意の実在するオブジェクトは、プログラム機能またはグループを表すために使用され、実在するオブジェクト自体が数多くのオブジェクトを含むか、数多くのオブジェクトを割り当てられることができる。実在するオブジェクトのコンピュータによる観察は視覚的であってもよいし、代わりに電子的感知によってもよい。電子的感知は、圧力差(differentiation)感知、オブジェクト・サイズ感知、オブジェクト形状キャパシタンス感知や誘導感知を含む。オブジェクトは、属性を表すように「命令され(charged)」、例えば、数ブロックが「X」個のユニット(単位)を表わすよう命令されることができる。さらに、オブジェクトは、それ自体を識別する信号を受信機に発することができる。いくつかの種の好ましい実施の形態が示され、記述されたが、多くの変化および変更が、添付の特許請求の範囲の適用範囲を逸脱することなくその中で行われることができることを理解する必要がある。
【0070】
このようにして、本発明は、前記に概略される特定の実施の形態とともに説明されたが、多くの他の変更およびバリエーションが当業者には明らかとなることは明らかである。したがって、前記に説明されるような本発明の好まれる実施の形態は、制限的ではなく、例示的となることが意図される。さまざまな変更が、以下の特許請求の範囲に定義されるように、本発明の精神および適用範囲から逸脱することなく加えられることがある。
【0071】
【表1】
【0072】
【表2】
【0073】
【表3】
【0074】
【表4】
【0075】
【表5】
【0076】
【表6】
【0077】
【表7】
【0078】
【表8】
【0079】
【表9】
【0080】
【表10】
【0081】
【表11】
【0082】
【表12】
【0083】
【表13】
【0084】
【表14】
【図面の簡単な説明】
本発明の好まれる実施の形態は、以下の図に関して詳細に説明されるだろう。
【図1】本発明の有形コンピューティング・システムの図である。
【図2】視覚的な有形インタフェースの要素を示す。
【図3】プログラミングに使用されるさまざまな物理オブジェクトを示す。
【図4】フィボナッチ・シーケンスを計算するプログラムの起動ステップおよびトレーニングステップを示す。
【図5】フィボナッチ・シーケンス・プログラムの実行および結果を示す。
【図6】(a)乃至(d)視覚的な有形インタフェースでのさまざまなイベントを示す。
【図7】視覚的な有形インタフェースでの変換機能の呼出しを示す。
【図8】チェッカ・オブジェクトによって実行される条件付き論理を示す。
【図9】カウントダウン・ロボット・オブジェクトによって実行される反復を示す。および、
【図10】歩行ロボット・オブジェクトによって実行される反復を示す。
Claims (16)
- コンピュータプログラムを生成する装置であって、
ユーザによって操作できる物理空間内で配置可能であり、かつ異なるプログラム言語要素が各々割り当てられた複数の物理オブジェクトと、
物理空間で発生する物理オブジェクトに対する物理操作を観察し、対応する電気信号を生成するセンサと、
入力として電気信号を受信し、プログラミング規則に従って物理オブジェクトの属性を割り当てし直し、割り当てし直された属性に基づいて、物理オブジェクトに適用された動作及び物理オブジェクトの属性の意味を理解して、理解内容を表すプログラムコードの対応する部分を出力するプロセッサと、を備える、コンピュータプログラム生成装置。 - 物理オブジェクトの属性がユーザによって割当て可能である、請求項1の装置。
- 物理オブジェクトの操作には、物理オブジェクトをピックアップすること、物理オブジェクトを降ろすこと、物理オブジェクトをスライドさせること、物理オブジェクトを別の物理オブジェクトにタッチさせることを含む、請求項1の装置。
- センサが、グリッドの回りでのオブジェクトの移動を検出する基準グリッドを備える、請求項1の装置。
- センサがカメラである、請求項1の装置。
- 物理オブジェクトが観察に参加する、請求項1の装置。
- 物理オブジェクトの信号をセンサが伝送する、請求項6の装置。
- 物理オブジェクトの各々がプログラムの一部を表す、請求項1の装置。
- 物理オブジェクトが、ロボットフィギュアを表す、請求項1の装置。
- 物理オブジェクトが条件論理テストを実行する、請求項1の装置。
- コンピュータプログラムを生成する方法であって、
センサが、物理空間内で異なるプログラム言語要素が各々割り当てられた複数の物理オブジェクトの内の少なくとも1つの物理操作に基づいて電気信号を生成し、
プロセッサが、入力として電気信号を受信し、プログラミング規則に従って物理オブジェクトの属性を割り当てし直し、割り当てし直された属性に基づいて、物理オブジェクトに適用された動作及び物理オブジェクトの属性の意味を理解して、理解内容を表すプログラムコードの対応する部分を出力する
コンピュータプログラム生成方法。 - 物理オブジェクトが所定の属性を備える、請求項11の方法。
- 複数の物理オブジェクトの内から選択された1つの物理オブジェクトが、所定の属性を備え、物理空間内に配置される、請求項11の方法。
- 複数の物理オブジェクトの内から選択された1つの第2の物理オブジェクトが、所定の属性を備え、物理空間内に配置される、請求項13の方法。
- さらに、プロセッサが物理操作に対応する外部表示を生成する、請求項11の方法。
- 外部表示を生成することが、画像を生成し、画像を視覚ディスプレイ・デバイスに出力することを備える、請求項15の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/961,020 US6175954B1 (en) | 1997-10-30 | 1997-10-30 | Computer programming using tangible user interface where physical icons (phicons) indicate: beginning and end of statements and program constructs; statements generated with re-programmable phicons and stored |
US961020 | 1997-10-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11191061A JPH11191061A (ja) | 1999-07-13 |
JP3777830B2 true JP3777830B2 (ja) | 2006-05-24 |
Family
ID=25503970
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP29633198A Expired - Fee Related JP3777830B2 (ja) | 1997-10-30 | 1998-10-19 | コンピュータプログラム生成装置及びコンピュータプログラム生成方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6175954B1 (ja) |
JP (1) | JP3777830B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101284910B1 (ko) * | 2011-05-23 | 2013-07-12 | 전윤주 | 프로그래밍 블록 조립체, 이를 이용한 프로그램에 의해 구동되는 로봇 시스템 및 그 프로그래밍 방법 |
Families Citing this family (75)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6163817A (en) * | 1998-06-30 | 2000-12-19 | U.S. Philips Corporation | Dynamically disabling and enabling of devices in consumer system with multiple communication protocols |
US6427228B1 (en) * | 1999-05-12 | 2002-07-30 | International Business Machines Corporation | Combining a meta data file and java source code to dynamically create java classes and javabeans |
US7096454B2 (en) * | 2000-03-30 | 2006-08-22 | Tyrsted Management Aps | Method for gesture based modeling |
US7159008B1 (en) | 2000-06-30 | 2007-01-02 | Immersion Corporation | Chat interface with haptic feedback functionality |
AUPR605901A0 (en) * | 2001-07-03 | 2001-07-26 | Choo, Yun Peng | Grouped assembler for machine code |
GB0208873D0 (en) * | 2002-04-18 | 2002-05-29 | Central Research Lab Ltd | Database search/query system using customisable tangible user interface |
WO2005033832A2 (en) * | 2003-08-28 | 2005-04-14 | University Of Maryland, Baltimore | Techniques for delivering coordination data for a shared facility |
US7493595B2 (en) * | 2003-12-19 | 2009-02-17 | The United States Of America As Represented By The Secretary Of The Navy | Multiple-user graphical programming and analysis environment |
US7146247B2 (en) * | 2004-11-24 | 2006-12-05 | Cerner Innovation, Inc. | Computerized method and system for loading and/or unloading a tray using laser scanning technology |
US20080271058A1 (en) * | 2007-04-30 | 2008-10-30 | Nokia Corporation | Tangible interface for mobile middleware |
US8315652B2 (en) | 2007-05-18 | 2012-11-20 | Immersion Corporation | Haptically enabled messaging |
US8620635B2 (en) * | 2008-06-27 | 2013-12-31 | Microsoft Corporation | Composition of analytics models |
US8411085B2 (en) * | 2008-06-27 | 2013-04-02 | Microsoft Corporation | Constructing view compositions for domain-specific environments |
US8117145B2 (en) * | 2008-06-27 | 2012-02-14 | Microsoft Corporation | Analytical model solver framework |
US20090322739A1 (en) * | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Visual Interactions with Analytics |
US8255192B2 (en) * | 2008-06-27 | 2012-08-28 | Microsoft Corporation | Analytical map models |
JP4793422B2 (ja) * | 2008-10-10 | 2011-10-12 | ソニー株式会社 | 情報処理装置、情報処理方法、情報処理システムおよび情報処理用プログラム |
US8155931B2 (en) * | 2008-11-26 | 2012-04-10 | Microsoft Corporation | Use of taxonomized analytics reference model |
US8145615B2 (en) * | 2008-11-26 | 2012-03-27 | Microsoft Corporation | Search and exploration using analytics reference model |
US8103608B2 (en) * | 2008-11-26 | 2012-01-24 | Microsoft Corporation | Reference model for data-driven analytics |
US8190406B2 (en) * | 2008-11-26 | 2012-05-29 | Microsoft Corporation | Hybrid solver for data-driven analytics |
US8314793B2 (en) * | 2008-12-24 | 2012-11-20 | Microsoft Corporation | Implied analytical reasoning and computation |
JP2010204730A (ja) * | 2009-02-27 | 2010-09-16 | Seiko Epson Corp | ジェスチャーに応答して機器を制御するシステム |
US8866818B2 (en) | 2009-06-19 | 2014-10-21 | Microsoft Corporation | Composing shapes and data series in geometries |
US8788574B2 (en) * | 2009-06-19 | 2014-07-22 | Microsoft Corporation | Data-driven visualization of pseudo-infinite scenes |
US20100325564A1 (en) * | 2009-06-19 | 2010-12-23 | Microsoft Corporation | Charts in virtual environments |
US8259134B2 (en) * | 2009-06-19 | 2012-09-04 | Microsoft Corporation | Data-driven model implemented with spreadsheets |
US9330503B2 (en) | 2009-06-19 | 2016-05-03 | Microsoft Technology Licensing, Llc | Presaging and surfacing interactivity within data visualizations |
US8531451B2 (en) * | 2009-06-19 | 2013-09-10 | Microsoft Corporation | Data-driven visualization transformation |
US8692826B2 (en) * | 2009-06-19 | 2014-04-08 | Brian C. Beckman | Solver-based visualization framework |
US8493406B2 (en) * | 2009-06-19 | 2013-07-23 | Microsoft Corporation | Creating new charts and data visualizations |
US8352397B2 (en) * | 2009-09-10 | 2013-01-08 | Microsoft Corporation | Dependency graph in data-driven model |
US20110215998A1 (en) * | 2010-03-08 | 2011-09-08 | Brent Paul Fitzgerald | Physical action languages for distributed tangible user interface systems |
JP2012003734A (ja) * | 2010-06-17 | 2012-01-05 | Yoichi Ochiai | 静電容量式タッチセンサー上ファイコン |
US9043296B2 (en) | 2010-07-30 | 2015-05-26 | Microsoft Technology Licensing, Llc | System of providing suggestions based on accessible and contextual information |
WO2012123033A1 (de) * | 2011-03-17 | 2012-09-20 | Ssi Schaefer Noell Gmbh Lager Und Systemtechnik | Steuerung und überwachung einer lager- und kommissionieranlage durch bewegung und sprache |
CN102136208B (zh) * | 2011-03-30 | 2013-01-09 | 中国科学院软件研究所 | 一种实物编程方法和系统 |
US8831955B2 (en) | 2011-08-31 | 2014-09-09 | International Business Machines Corporation | Facilitating tangible interactions in voice applications |
FR2979446B1 (fr) * | 2011-08-31 | 2013-08-09 | Alcatel Lucent | Dispositif de creation d'un service utilisant une camera ip et procede de creation d'un tel service |
KR101318244B1 (ko) | 2012-02-29 | 2013-10-15 | 한국과학기술연구원 | 3차원 사용자 인터페이스 구현 시스템 및 구현 방법 |
CN102789713B (zh) * | 2012-07-19 | 2015-04-15 | 中国科学院软件研究所 | 一种基于红外和无线传输技术的实物编程方法和系统 |
US9087403B2 (en) | 2012-07-26 | 2015-07-21 | Qualcomm Incorporated | Maintaining continuity of augmentations |
US9158389B1 (en) | 2012-10-15 | 2015-10-13 | Tangible Play, Inc. | Virtualization of tangible interface objects |
US10657694B2 (en) | 2012-10-15 | 2020-05-19 | Tangible Play, Inc. | Activity surface detection, display and enhancement of a virtual scene |
US10033943B1 (en) | 2012-10-15 | 2018-07-24 | Tangible Play, Inc. | Activity surface detection, display and enhancement |
US9370721B2 (en) * | 2013-06-10 | 2016-06-21 | Pixel Press Technology, LLC | Systems and methods for creating a playable video game from a static model |
US10363486B2 (en) | 2013-06-10 | 2019-07-30 | Pixel Press Technology, LLC | Smart video game board system and methods |
US9579573B2 (en) | 2013-06-10 | 2017-02-28 | Pixel Press Technology, LLC | Systems and methods for creating a playable video game from a three-dimensional model |
CN103456203B (zh) * | 2013-09-12 | 2015-08-26 | 中国科学院软件研究所 | 一种便携式实物编程方法及系统 |
US20150339855A1 (en) * | 2014-05-20 | 2015-11-26 | International Business Machines Corporation | Laser pointer selection for augmented reality devices |
CN106575354B (zh) | 2014-05-21 | 2021-11-05 | 汤杰宝游戏公司 | 有形界面对象的虚拟化 |
EP2960769A1 (en) * | 2014-06-26 | 2015-12-30 | Luxembourg Institute of Science and Technology (LIST) | Method for providing data input using a tangible user interface |
US20160112279A1 (en) * | 2014-10-20 | 2016-04-21 | Massachusetts Institute Of Technology | Sensor-based Distributed Tangible User Interface |
CN104898456B (zh) * | 2015-04-02 | 2018-06-19 | 苏州乐派特机器人有限公司 | 实物化编程的方法及其在机器人领域的应用 |
CN105047042B (zh) * | 2015-07-06 | 2017-12-19 | 中国科学院软件研究所 | 一种面向儿童实物编程方法及系统 |
USD795348S1 (en) | 2016-05-24 | 2017-08-22 | Tangible Play, Inc. | Programming tile |
USD871419S1 (en) | 2016-05-24 | 2019-12-31 | Tangible Play, Inc. | Display screen or portion thereof with a graphical user interface |
USD795349S1 (en) | 2016-05-24 | 2017-08-22 | Tangible Play, Inc. | Programming tile |
USD812143S1 (en) | 2016-05-24 | 2018-03-06 | Tangible Play, Inc. | Programming tile |
USD811485S1 (en) | 2016-05-24 | 2018-02-27 | Tangible Play, Inc. | Programming tile |
US10885801B2 (en) * | 2016-05-24 | 2021-01-05 | Tangible Play, Inc. | Virtualized tangible programming |
USD811486S1 (en) | 2016-05-24 | 2018-02-27 | Tangible Play, Inc. | Programming tile |
CN106095096A (zh) * | 2016-06-12 | 2016-11-09 | 苏州乐派特机器人有限公司 | 利用实物块编程的方法及其在机器人领域的应用 |
US10169918B2 (en) | 2016-06-24 | 2019-01-01 | Microsoft Technology Licensing, Llc | Relational rendering of holographic objects |
US20180004393A1 (en) | 2016-07-01 | 2018-01-04 | Autodesk, Inc. | Three dimensional visual programming interface for a network of devices |
PL417869A1 (pl) | 2016-07-06 | 2018-01-15 | Michał Dziedziniewicz | Urządzenie do generowania programów komputerowych i metoda generowania programów komputerowych |
US10304353B1 (en) * | 2016-08-15 | 2019-05-28 | Delfin Lozano | Tray-and-block apparatus for device programming |
KR101892356B1 (ko) * | 2016-10-04 | 2018-08-28 | (주)모션블루 | 블록을 이용한 코딩 교육 서비스 제공 장치 및 방법 |
LU100390B1 (en) * | 2017-09-05 | 2019-03-19 | Luxembourg Inst Science & Tech List | Stretchable interactive tangibles |
US11348672B2 (en) | 2017-12-29 | 2022-05-31 | Cerner Innovation, Inc. | Medical order entry integration with automated dispensing systems |
JP6633115B2 (ja) * | 2018-03-27 | 2020-01-22 | 合同会社オフィス・ゼロ | プログラム作成支援システム及びその方法並びにそのプログラム |
CN110757448A (zh) * | 2018-07-27 | 2020-02-07 | 深圳市创客工场科技有限公司 | 面向于机器人编程的交互实现方法和系统 |
GB2591902B (en) | 2018-09-17 | 2022-06-08 | Tangible Play Inc | Display positioning system |
US20210006730A1 (en) | 2019-07-07 | 2021-01-07 | Tangible Play, Inc. | Computing device |
USD907032S1 (en) | 2019-07-07 | 2021-01-05 | Tangible Play, Inc. | Virtualization device |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5398313A (en) * | 1987-11-06 | 1995-03-14 | Hitachi, Ltd. | Method for visual programming with aid of animation |
DE69126391T2 (de) * | 1990-09-12 | 1997-10-30 | Toshiba Kawasaki Kk | Verfahren zur Funktionenerzeugung durch Bildsymbolanwendung |
JP2804937B2 (ja) * | 1992-10-15 | 1998-09-30 | 矢崎総業株式会社 | システムスイッチ装置 |
US5436639A (en) * | 1993-03-16 | 1995-07-25 | Hitachi, Ltd. | Information processing system |
US5517663A (en) | 1993-03-22 | 1996-05-14 | Kahn; Kenneth M. | Animated user interface for computer program creation, control and execution |
US5732227A (en) * | 1994-07-05 | 1998-03-24 | Hitachi, Ltd. | Interactive information processing system responsive to user manipulation of physical objects and displayed images |
US5796386A (en) * | 1995-01-23 | 1998-08-18 | International Business Machines Corporation | Precise calibration procedure for sensor-based view point control system |
US5704836A (en) * | 1995-03-23 | 1998-01-06 | Perception Systems, Inc. | Motion-based command generation technology |
US5822587A (en) * | 1995-10-20 | 1998-10-13 | Design Intelligence, Inc. | Method and system for implementing software objects |
-
1997
- 1997-10-30 US US08/961,020 patent/US6175954B1/en not_active Expired - Lifetime
-
1998
- 1998-10-19 JP JP29633198A patent/JP3777830B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101284910B1 (ko) * | 2011-05-23 | 2013-07-12 | 전윤주 | 프로그래밍 블록 조립체, 이를 이용한 프로그램에 의해 구동되는 로봇 시스템 및 그 프로그래밍 방법 |
Also Published As
Publication number | Publication date |
---|---|
US6175954B1 (en) | 2001-01-16 |
JPH11191061A (ja) | 1999-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3777830B2 (ja) | コンピュータプログラム生成装置及びコンピュータプログラム生成方法 | |
Cabral et al. | On the usability of gesture interfaces in virtual reality environments | |
Kin et al. | Proton++ a customizable declarative multitouch framework | |
Quek | Eyes in the interface | |
Kin et al. | Proton: multitouch gestures as regular expressions | |
US8270670B2 (en) | Method for recognizing and tracing gesture | |
Kumar et al. | Hand data glove: A new generation real-time mouse for human-computer interaction | |
Kim et al. | EventHurdle: supporting designers' exploratory interaction prototyping with gesture-based sensors | |
KR101318244B1 (ko) | 3차원 사용자 인터페이스 구현 시스템 및 구현 방법 | |
JP2005108211A (ja) | ジェスチャ認識方法及びそれを組み込んだタッチシステム | |
KR101392936B1 (ko) | 사용자 맞춤형 인터페이스 시스템 및 그 구현 방법 | |
US20170192514A1 (en) | Gestures visual builder tool | |
EP4307096A1 (en) | Key function execution method, apparatus and device, and storage medium | |
Ismail et al. | Multimodal fusion: gesture and speech input in augmented reality environment | |
CN104866097A (zh) | 手持信号输出装置和手持装置输出信号的方法 | |
Duke | Reasoning about gestural interaction | |
Kjeldsen et al. | Dynamically reconfigurable vision-based user interfaces | |
CN104951211A (zh) | 一种信息处理方法和电子设备 | |
Liu et al. | COMTIS: Customizable touchless interaction system for large screen visualization | |
WO2017116878A1 (en) | Multimodal interaction using a state machine and hand gestures discrete values | |
CN104081333A (zh) | 包括均描绘图形用户界面的区域的输入镜头的远程显示区 | |
Miller et al. | A glove for tapping and discrete 1D/2D input | |
Mei et al. | A virtual touch event method using scene recognition for digital television | |
JPH0922330A (ja) | タッチパネルの入力方法 | |
Thompson III | Evaluation of a commodity VR interaction device for gestural object manipulation in a three dimensional work environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050719 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050920 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051018 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051219 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060207 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060220 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100310 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110310 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120310 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130310 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130310 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140310 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |