以下、本発明に係るプログラム処理装置及びその制御方法、制御プログラムについて、実施形態を示して詳しく説明する。ここでは、説明を簡明にするために、本発明に係るプログラム処理装置を適用したプログラミング教育装置を用いて、移動体であるターゲット機器の動作状態を制御するプログラムを生成する場合について説明する。
<プログラミング教育装置>
図1は、本発明に係るプログラム処理装置を適用したプログラミング教育装置の一実施形態を示す概略図である。また、図2は、本実施形態に係るプログラミング教育装置に適用されるプログラム生成装置の構成例を示す機能ブロック図であり、図3は、本実施形態に係るプログラミング教育装置に適用されるプログラム実行装置の構成例を示す機能ブロック図である。図4は、本実施形態に係るプログラム実行装置に適用されるターゲット機器の一例を示す概略図であり、図5は、本実施形態に係るプログラム実行装置に適用されるプレイシートの一例を示す概略図である。
第1の実施形態に係るプログラミング教育装置は、例えば図1に示すように、大別して、プログラム生成装置100と、プログラム実行装置200とを有している。プログラム生成装置100は、プログラミング学習の対象者であるユーザによる入力操作を受け付け、当該入力操作に応じた情報を取得してプログラムを生成する。プログラム実行装置200は、プログラム生成装置100により生成されたプログラムを実行することにより、所定の現実空間内での、タンジブルな移動体であるターゲット機器210の動作状態を制御する。
ここで、本実施形態においては、図1に示すように、プログラム生成装置100として、現実空間内において実体のある装置にユーザが実際に触れて入力操作を行う、タンジブルな入力装置を示して説明するが、本発明はこれに限定されるものではない。すなわち、本発明に適用されるプログラム生成装置は、ターゲット機器210の動作状態を制御するためのプログラムを生成することができるものであれば入力操作の方法や装置の形態を限定するものではない。したがって、プログラム生成装置は、例えば図1に示すプログラム生成装置100′のように、スマートフォンやタブレット端末、パーソナルコンピュータ等の情報通信機器において実行されるアプリケーションソフトウェアにより実現される仮想空間内で入力操作を行って、プログラムを生成するものであってもよい。なお、本明細書において、タンジブルであるとは、現実空間内に実体があり、手で触れて実感することができる状態にあることを意味する。
(プログラム生成装置)
プログラム生成装置100は、例えば図1に示すように、いずれもタンジブルである、プログラミングボード120と、プログラミングブロック140と、コアユニット160と、プログラミング用ガイドシート(以下、「ガイドシート」と略記する)180と、を有している。これらはいずれも、タンジブルな構成を有するものである。
(プログラミングボード120)
プログラミングボード120は、現実空間内において物理的に直接触れることができるタンジブルな物体であり、例えば図1に示すように、略平板状の形状を有し、一面側(図面、上面側)に、同一の平面形状を有する複数の領域102が相互に隣接して行列方向に2次元配置されたプログラミングエリア104が設けられている。このプログラミングエリア104は、ユーザが後述するようなタンジブルな入力操作により指示した情報を取得する入力装置として機能する。また、プログラミングエリア104の各領域102は、後述するターゲット機器210が移動するプレイシート260に設けられた各区画262に1対1の関係で対応するとともに、当該ターゲット機器210の絶対座標系での位置に対応する。ここで、各領域102は、例えば図1に示すように、正方形や長方形等の矩形状の平面形状を有して格子状に配列されている。なお、各領域102の平面形状は、矩形状の他、八角形等の多角形状や円形状を有するものであってもよい。
プログラミングボード120は、具体的には、例えば図2に示すように、指示検出部122と、識別変移部124と、ブロックインターフェース部(以下、「ブロックI/F部」と略記する)126と、記憶部128と、外部インターフェース部(以下、「外部I/F部」と略記する)130と、制御部132と、を有している。
指示検出部122は、プログラミングエリア104の各領域102へのユーザによる指示の有無を検出する。具体的には、指示検出部122は、例えば図2に示すように、プログラミングエリア104の各領域102に対応して個別に設けられたタッチセンサ、或いは、プッシュスイッチ等のメカニカルスイッチを有している。そして、指示検出部122は、このタッチセンサやプッシュスイッチによりユーザの入力操作を検出すると、プログラミングエリア104上での当該領域(指示領域)102の位置を特定する。指示検出部122により取得された指示領域102の位置に関する情報(以下、「指示位置情報」と記す)は、後述する記憶部128の記憶領域に順次記憶される。
なお、図2においては、指示検出部122として、プログラミングエリア104の各領域102に対応してタッチセンサ又はプッシュスイッチを個別に設けた形態を示したが、本発明はこの形態に限定されるものではない。指示検出部122として、例えばプログラミングエリア104の全域にわたり共通して設けられたタッチパネルを有しているものであってもよい。
識別変移部124は、ユーザの入力操作により指示された領域(指示領域)102を、指示されていない他の領域102に対して視覚的に識別可能な状態に変移させる。具体的には、識別変移部124は、例えば図2に示すように、プログラミングエリア104の各領域102に対応して個別に設けられた発光ダイオード(LED)等の発光部、或いは、液晶表示デバイス等の表示部を有している。そして、識別変移部124は、プログラミングボード120を用いたプログラミング操作の際に、指示検出部122によりユーザの指示が検出された領域102の発光部を特定の発光色や発光強度、発光パターンで発光させたり、表示部に表示される画像を変化させたりして、発光状態や表示状態を変化させることにより、視覚的に他の領域102との識別を可能にする。
また、識別変移部124は、プログラミング操作に基づいて生成されたプログラムを実行して、ターゲット機器210を動作させる際に、当該ターゲット機器210のプレイシート260上での位置に対応した領域102の発光状態や表示状態を変化させることにより、視覚的に他の領域102との識別を可能にする。
なお、図2においては、識別変移部124として、プログラミングエリア104の各領域102に対応して発光部又は表示部を個別に設けた形態を示したが、本発明はこの形態に限定されるものではない。識別変移部124として、例えばプログラミングエリア104の全域にわたり共通して設けられた発光パネルや表示パネルを有しているものであってもよい。また、識別変移部124は、上記の発光部又は表示部に加え、音響部や振動部をさらに備え、発音や振動の振幅や周波数、パターンを変化させる形態を有しているものであってもよい。これによれば、ユーザの視覚に加え聴覚や触覚を通して、より確実に指示領域102の識別が可能になる。
ブロックI/F部126は、プログラミングエリア104の各領域102に載置されるプログラミングブロック140の有無を検出するとともに、当該プログラミングブロック140との間で通信を行い、例えばプログラミングブロック140に予め設定された特定の機能動作に関する情報(以下、「機能情報」と記す)を受信する。具体的には、ブロックI/F部126は、プログラミングエリア104の各領域102に対応して個別に設けられた非接触型、又は、接触型のインターフェースを有している。そして、ブロックI/F部126は、これらのインターフェースによりプログラミングブロック140がプログラミングエリア104の指示領域に載置された状態を検出すると、プログラミングエリア104上での当該プログラミングブロック140の位置を特定するとともに、当該プログラミングブロック140の機能情報を受信する。ブロックI/F部126により取得されたプログラミングブロック140の位置に関する情報(以下、「ブロック位置情報」と記す)及び機能情報は、相互に関連付けて後述する記憶部128の記憶領域に順次記憶される。ここで、ブロックI/F部126として、非接触型のインターフェースを適用する場合には、例えば電子マネーカード等に用いられているNFC(Near Field Communication)等の近距離無線通信技術による方式や、赤外線等を用いた光通信方式を適用することができ、また、接触型のインターフェースを適用する場合には、端子電極相互を直接接続する方式を適用することができる。
記憶部128は、指示検出部122により取得された指示領域102の位置に関する指示位置情報を、記憶領域に順次記憶する。ここで、記憶部128の記憶領域に記憶された各指示位置情報を時系列的に並べることにより、ユーザの指示順序に関する情報(以下「順序情報」と記す)が得られる。この指示位置情報及び順序情報は、ユーザのプログラミング操作により動作状態が制御されるターゲット機器210の移動経路及び移動順序を規定する。すなわち、ユーザがプログラミングエリア104の2つ以上の連続する領域102を指示することにより、ターゲット機器210の移動経路を規定する仮想経路が決定される。そして、この仮想経路を示す線分の集まりを第1形状とすると、当該第1形状に対応する経路(本実施形態においては、第1形状の相似形状となる形状を有する経路)がターゲット機器210の実際の移動経路として規定される。
また、記憶部128は、ブロックI/F部126により取得されたプログラミングブロック140の位置に関するブロック位置情報、及び、プログラミングブロック140に設定された特定の機能動作に関する機能情報を、相互に関連付けて記憶する。さらに、記憶部128は、後述する制御部132においてプログラミングボード120の各部の動作を制御するためのプログラムや、当該プログラムの実行時に必要とされる、又は、生成される各種の情報を記憶するものであってもよい。すなわち、記憶部128は、RAM(ランダムアクセスメモリ)及びROM(読み出し専用メモリ)を有するものである。
外部I/F部130は、プログラミングボード120と後述するコアユニット160との間で通信を行い、例えば記憶部128の記憶領域に記憶された指示位置情報、順序情報、ブロック位置情報、機能情報(以下、これらの情報を「入力操作情報」と総称する)をコアユニット160に送信する。具体的には、外部I/F部130は、非接触型、又は、接触型のインターフェースを有している。ここで、外部I/F部130として、非接触型のインターフェースを適用する場合には、例えばNFCやBluetooth(登録商標)、Wi-Fi(Wireless Fidelity;登録商標)等の無線通信方式や、赤外線等を用いた光通信方式を適用することができ、また、接触型のインターフェースを適用する場合には、各種の通信ケーブルを用いた有線通信方式や、端子電極相互を直接接続する方式を適用することができる。
制御部132は、上記の指示検出部122、識別変移部124、ブロックI/F部126、記憶部128、外部I/F部130を有するプログラミングボード120の各部の動作を制御するコンピュータのプロセッサである。特に、制御部132は、指示検出部122によりプログラミングエリア104の各領域102へのユーザの指示を検出した場合には、当該領域102の指示位置情報を記憶部128の記憶領域に順次記憶させるとともに、識別変移部124により当該領域102の発光状態や表示状態を変化させて視覚的に識別可能な状態に変移させる。
また、制御部132は、ブロックI/F部126によりプログラミングブロック140が指示領域102上に載置された状態を検出した場合には、当該プログラミングブロック140に設定された機能情報を、ブロックI/F部126を介して取得し、当該プログラミングブロック140のブロック位置情報に関連付けて記憶部128の記憶領域に記憶させる。さらに、制御部132は、プログラミング操作により記憶部128の記憶領域に記憶された各種情報を、外部I/F部130を介してコアユニット160へ送信する。
(プログラミングブロック140)
プログラミングブロック140は、現実空間内において物理的に直接触れることができるタンジブルな物体であり、例えば図1に示すように、略立方体形状を有し、ユーザによりプログラミングボード120のプログラミングエリア104上の任意の領域102に載置される。このプログラミングブロック140は、ターゲット機器210を動作させる際に、特定の機能動作を規定する入力装置として機能する。ここで、プログラミングブロック140は、プログラミングエリア104上に単体で(すなわち、一段のみ)載置されるものであってもよいし、複数個積み重ねて(すなわち、複数段)載置されるものであってもよい。
なお、プログラミングブロック140の立体形状は、立方体に限定されるものではなく、プログラミングエリア104上に安定して載置することができ、且つ、プログラミングブロック140相互が安定して積み重ねることができるものであれば、任意の多面体形状を有するものであってもよいし、略円柱形状や略円錐形状、略裁頭円錐形状、略球形状、略半球形状等のように表面の一部に曲面を有するものであってもよい。また、プログラミングエリア104上にプログラミングブロック140を安定して載置、又は、プログラミングブロック140同士を安定して載置し、且つ、後述する機能情報等を確実に送受信するためには、載置するプログラミングブロック140の下面と、載置されるプログラミングボード120の上面、又は、他のプログラミングブロック140の上面とが適切に密着することが好ましい。そのために、例えば接触面となる両面が互いに係合する凹凸形状を有しているものであってもよいし、両面が磁力等により吸着するように形成されているものであってもよい。
プログラミングブロック140は、具体的には、例えば図2に示すように、ブロックI/F部142と、識別変移部144と、記憶部146と、制御部148と、を有している。
ブロックI/F部142は、プログラミングブロック140とプログラミングボード120との間で通信を行い、後述する記憶部146の記憶領域に記憶された機能情報を直接プログラミングボード120に送信する。また、プログラミングエリア104上にプログラミングブロック140が複数段積み重ねられている場合には、ブロックI/F部142は、プログラミングブロック140間で通信を行い、上段のプログラミングブロック140から送信された機能情報を下段側のプログラミングブロック140、又は、プログラミングボード120に順次転送する。これにより、積み重ねられた各プログラミングブロック140の記憶部146の記憶領域に記憶された機能情報が、当該プログラミングブロック140の積み重ねの順に(上段から下段へ順番に、又は、下段から上段へ順番に)、プログラミングボード120の記憶部128の記憶領域に記憶される。
具体的には、ブロックI/F部142は、プログラミングブロック140がプログラミングボード120に接触する載置面側(図1中、立方体形状の下面側)、及び、当該接触面に対向し、上段に積み重ねられるプログラミングブロック140に接触する面側(図1中、立方体形状の上面側)に個別に設けられた非接触型、又は、接触型のインターフェースを有している。そして、ブロックI/F部142は、これらのインターフェースによりプログラミングブロック140がプログラミングエリア104の領域102に載置された状態、及び、プログラミングブロック140上に他のプログラミングブロック140が積み重ねられた状態を検出すると、プログラミングブロック140ごとに予め設定された機能動作に関する機能情報を記憶部146の記憶領域から読み出して、プログラミングボード120に直接、又は、下段側のプログラミングブロック140を介して送信する。ここで、プログラミングブロック140とプログラミングボード120との間に適用されるインターフェースと、プログラミングブロック140間に適用されるインターフェースとは、同一の方式を有し、上述したプログラミングボード120のブロックI/F部126に示した各種の方式を適用することができる。
なお、本実施形態においては、立方体形状を有するプログラミングブロック140において、プログラミングボード120に接触する面側(立方体形状の下面側)、及び、上段のプログラミングブロック140に接触する面側(立方体形状の下面側)の2面に個別のブロックI/F部142を設けた形態を示すが、本発明はこの形態に限定されるものではない。例えば、立方体のどの面がプログラミングボード120に接触する載置面になった場合であっても、また、どの面に他のプログラミングブロック140が積み重ねられて接触する面になった場合であっても、プログラミングボード120や他のプログラミングブロック140との間で機能情報等の送受信が可能なように、ブロックI/F部142が全6面に個別に、又は、共通して設けられているものであってもよい。
識別変移部144は、上述したプログラミングボード120の識別変移部124と同様に、発光部或いは表示部を有している。そして、識別変移部124は、プログラミングボード120を用いたプログラミング操作の際に、ブロックI/F部142によりプログラミングブロック140がプログラミングエリア104の各領域102に載置された状態が検出されると、発光部の発光状態や表示部の表示状態を変化させて、視覚的に他のプログラミングブロック140との識別を可能にする。
なお、この識別変移部144に適用される表示部は、電力を使用せずに表示される画像を変化させるものであってもよい。例えば、プログラミングボード120内部のプログラミングエリア104の各領域102と、各プログラミングブロック140の内部にはそれぞれ永久磁石が設置され、プログラミングブロック140を領域102へ載置したことに伴い、プログラミングボード120とプログラミングブロック140の永久磁石間に生じる引力又は反発力によって、表示部が回転することで画像を変化させるような、磁力を利用したものであってもよい。また、プログラミングブロック140のうち少なくともプログラミングボード120に載置される側に内部へ向けて押圧変位される凸部を設け、プログラミングブロック140を領域102へ載置したことに伴い、プログラミングブロック140の凸部が内方へ押圧変位されて表示部が回転することで画像を変化させるような、メカニカルな機構を有するものであってもよい。
また、識別変移部144は、プログラミング操作に基づいて生成されたプログラムを実行して、ターゲット機器210に予め設定された特定の機能動作を実行させる際に、当該ターゲット機器210の機能動作を規定した各プログラミングブロック140の発光部の発光状態や表示部の表示状態を変化させたりすることにより、視覚的に他のプログラミングブロック140との識別を可能にする。
また、識別変移部144は、上記の発光部又は表示部に加え、音響部や振動部をさらに備え、発音や振動の振幅や周波数、パターンを変化させる形態を有しているものであってもよい。これによれば、ユーザの視覚に加え聴覚や触覚を通して、より確実に機能動作を規定したプログラミングブロック140の識別が可能になる。
記憶部146は、ターゲット機器210を動作させる際に、特定の機能動作を規定するID情報である機能情報を記憶している。ここで、機能情報は、特定の機能動作を単独で実行することを規定するものであってもよいし、複数の機能動作を組み合わせて実行することを規定するものであってもよい。
また、記憶部146は、当該プログラミングブロック140上に積み重ねられた他のプログラミングブロック140から送信された機能情報を一時的に記憶領域に記憶する。さらに、記憶部146は、後述する制御部148においてプログラミングブロック140の各部の動作を制御するためのプログラムや、当該プログラムの実行時に必要とされる、又は、生成される各種の情報を記憶するものであってもよい。すなわち、記憶部146は、RAM及びROMを有するものである。
なお、本実施形態においては、特定の機能動作を規定する機能情報が各プログラミングブロック140の記憶部146の記憶領域に予め固定的に記憶されている形態を示すが、本発明はこの形態に限定されるものではない。例えば、一つのプログラミングブロック140について複数の機能動作を規定する機能情報が予め記憶部146の記憶領域に記憶され、ソフトウェアによる設定変更や切替スイッチの操作、プログラミングブロック140の傾きや衝撃の検知等により、任意の機能動作が選択されて設定されるものであってもよい。
また、他の形態として、例えば立方体形状を有するプログラミングブロック140において、立方体の6面の各々に異なる機能動作を対応付けて、各機能動作に関する機能情報を記憶部146の記憶領域に記憶した形態を有し、ブロックI/F部142によりプログラミングボード120に接触する面を検出することにより、機能情報を読み出して当該接触面に対応付けられた機能動作を設定するものであってもよい。ここで、例えば、プログラミングボード120に接触する面(立方体の下面)に対向する面(立方体の上面)に、当該接触面に対応付けられた機能動作を表すイラストや画像、文字、記号等を表記して、ターゲット機器210に実行させる機能動作の内容を、視覚を通して直感的に認識できるようにしてもよい。
制御部148は、上記のブロックI/F部142、識別変移部144、記憶部146を有するプログラミングブロック140の各部の動作を制御するコンピュータのプロセッサである。特に、制御部148は、ブロックI/F部142によりプログラミングブロック140がプログラミングエリア104の領域102に載置された状態を検出した場合には、当該プログラミングブロック140に設定された機能情報を、ブロックI/F部142を介してプログラミングボード120に送信するとともに、識別変移部144により当該プログラミングブロック140の発光状態や表示状態を変化させて視覚的に識別可能な状態に変移させる。また、制御部148は、ブロックI/F部142により当該プログラミングブロック140上に他のプログラミングブロック140が積み重ねられている状態を検出した場合には、上段のプログラミングブロック140から送信された機能情報を下段側のプログラミングブロック140、又は、プログラミングボード120に順次転送する。
(コアユニット160)
コアユニット160は、例えば図1に示すように、一面側(図面、上面)に操作スイッチが配置された直方体形状や平板形状を有している。このコアユニット160は、プログラミングボード120を用いたプログラミング操作により取得された情報に基づいて、ターゲット機器210を動作させるためのプログラムを生成するとともに、ユーザの指示に応じて当該プログラムを実行して、ターゲット機器210の動作状態を制御するコントロール装置として機能する。
コアユニット160は、具体的には、例えば図2に示すように、操作部162と、外部I/F部164と、記憶部166と、通信インターフェース部(以下、「通信I/F部」と略記する) 168と、制御部170と、電源部172と、を有している。
操作部162は、ユーザが操作を行うことにより上述したプログラミングボード120を用いたプログラミング操作により取得された情報に基づいてプログラムを生成するとともに、当該プログラムの実行状態を指示する。具体的には、操作部162は、生成したプログラムの実行状態を選択する複数のプッシュスイッチやタッチセンサ、或いは、タッチパネルを有している。ここで、操作部162には、例えば図1に示すように、後述する制御部170により生成されたプログラム全体を一括して実行する一括実行スイッチ112や、当該プログラムの命令を1ステップずつ実行するステップ実行スイッチ114、実行されているプログラムを停止する実行停止スイッチ116、ターゲット機器210を初期位置(スタート地点)まで戻すホームスイッチ118等のプッシュスイッチが配置されている。そして、操作部162は、ユーザがいずれかのスイッチを操作した状態を検出すると、当該スイッチ操作に応じた制御信号を後述する制御部170に出力する。
外部I/F部164は、上述したプログラミングボード120の外部I/F部130に適用される通信規格に対応したインターフェースを有し、コアユニット160とプログラミングボード120との間で通信を行い、例えばプログラミングボード120から送信された入力操作情報を受信する。
記憶部166は、プログラミングボード120から外部I/F部164を介して受信した入力操作情報を所定の記憶領域に記憶するとともに、これらの情報に基づいて、後述する制御部170により生成されたプログラムを別の記憶領域に記憶する。また、記憶部166は、制御部170において受信した入力操作情報に基づいてターゲット機器210の動作状態を制御するためのプログラムを生成するためのプログラムや、コアユニット160の各部の動作を制御するためのプログラム、これらのプログラムの実行時に必要とされる、又は、生成される各種の情報を記憶するものであってもよい。すなわち、記憶部166は、RAM及びROMを有するものである。
通信I/F部168は、コアユニット160とターゲット機器210との間で通信を行い、例えば記憶部166の記憶領域に記憶された、ターゲット機器210の動作状態を制御するためのプログラムをターゲット機器210に送信する。具体的には、通信I/F部168は、非接触型、又は、接触型のインターフェースを有し、非接触型のインターフェースを適用する場合には、例えばWi-Fi(登録商標)やBluetooth(登録商標)等の無線通信方式や、赤外線等を用いた光通信方式を適用することができ、また、接触型のインターフェースを適用する場合には、通信ケーブルを用いた有線通信方式を適用することができる。
制御部170は、上記の操作部162、外部I/F部164、記憶部166、通信I/F部168、及び、後述する電源部172を有するコアユニット160の各部の動作を制御するコンピュータのプロセッサである。特に、制御部170は、操作部162によりプログラムの生成、実行に関するユーザの操作を検出した場合には、プログラミングボード120から送信される入力操作情報に基づいて、ターゲット機器210の動作状態を制御するためのプログラムを生成する。
具体的には、制御部170は、操作部162において、一括実行スイッチ112又はステップ実行スイッチ114が操作された状態を検出すると、プログラミングボード120から送信された入力操作情報(指示位置情報、順序情報、ブロック位置情報、機能情報)に基づいて、ターゲット機器210の動作状態(移動及び機能動作)を制御するための命令を有するプログラムを生成する。ここで、プログラミングボード120を用いたプログラミング操作により取得された上記の各情報はプログラムのソースコードに対応し、制御部170は、このソースコードをターゲット機器210において実行可能な機械語からなるプログラムに変換(コンパイル)する。変換処理されたプログラムは、記憶部166の記憶領域に記憶される。なお、この変換処理は、プログラム全体を一括して行うものであってもよいし、プログラムの1ステップの命令ごとに行うものであってもよい。
また、制御部170は、操作部162におけるスイッチ操作に応じて、生成されたプログラムをターゲット機器210に送信してターゲット機器210の動作状態を制御する。さらに、制御部170は、電源部172によりコアユニット160内の各部、及び、プログラミングボード120、プログラミングブロック140への駆動用の電力の供給状態を制御する。
電源部172は、コアユニット160内の各部に駆動用の電力を供給する。また、電源部172は、コアユニット160とプログラミングボード120とを接続することにより外部I/F部164、130を介して、プログラミングボード120内の各部に駆動用の電力を供給する。プログラミングボード120に供給された電力は、ブロックI/F部126、142を介して、プログラミングブロック140にさらに供給される。
なお、本実施形態においては、コアユニット160にのみ電源部を備え、外部I/F部164、130、及び、ブロックI/F部126、142を介して、プログラミングボード120やプログラミングブロック140に駆動用の電力を供給する形態を示した。この形態においては、外部I/F部164、130やブロックI/F部126、142に、例えば電磁誘導方式等の非接触型や、ケーブルや端子電極を直接接続する接触型の給電機構を適用することができる。また、コアユニット160にのみ電源部を備えた形態に限定されるものではなく、プログラミングボード120及びプログラミングブロック140のいずれか一方、又は、双方が固有の電源部を有するものであってもよい。
(ガイドシート180)
ガイドシート180は、例えば図1に示すように、プログラミングボード120のプログラミングエリア104上に載置して装着される光透過性の(透明又は半透明な)タンジブルな薄膜や薄板であって、ユーザのプログラミング操作を支援、誘導するためのイラストや画像、写真、文字、記号等(以下、「画像等」と略記する)が一面側(図面、上面側)に予め表記されている。言い換えれば、ガイドシート180にはターゲット機器210の移動経路を規定する仮想経路を特定する可視的な情報が記録されている。ここで、ガイドシート180には、プログラミングボード120のプログラミングエリア104の各領域102に1対1の関係で対応する複数の区画106が設けられ、上記画像等は、後述するプログラム実行装置200のプレイシート260に表記される画像等に対応し、相似図形の関係を有している。
また、ガイドシート180は、プログラミングエリア104を外部からの圧力等による損傷から保護しつつ、ユーザによる指示をプログラミングボード120の指示検出部122に適切に伝達することができる性質を有しているとともに、プログラミングブロック140とプログラミングボード120との間で情報を適切に伝達することができる性質又は形態を有している。
(プログラム実行装置)
プログラム実行装置200は、例えば図1に示すように、タンジブルな移動体であるターゲット機器210と、当該ターゲット機器210が上述したプログラム生成装置により生成されたプログラムにしたがって移動するプレイシート260とを有している。本実施形態においては、ターゲット機器210として地上を走行して移動する自走式の玩具を適用した場合について説明する。
(ターゲット機器210)
ターゲット機器210は、ユーザによる入力操作に基づいてプログラム生成装置100(又は100′)において生成されたプログラムを実行するとともに、後述するプレイシート260に設定されたマーカの情報に基づいて、実行中のプログラムに対して割り込み処理となる特定のイベント処理や位置補正処理を実行することにより、プレイシート260上での動作状態が制御される。
ターゲット機器210は、プログラミングボード120を用いたプログラミング操作において、ガイドシート180が装着されたプログラミングエリア104の各領域102を、ユーザが順次指示することにより決定された仮想経路に対応する移動経路に沿って移動する。ここで、ターゲット機器210は、プログラミング操作の際に使用したガイドシート180の画像等の相似画像が表記されたプレイシート260上を、上記の移動経路に沿って移動する。また、ターゲット機器210は、上記のプログラミング操作において、機能動作が設定されたプログラミングエリア104の指示領域102に対応するプレイシート260上の位置で、当該機能動作を実行する。
ターゲット機器210は、具体的には、例えば図3に示すように、駆動部212と、読取部214と、機能部216と、記憶部218と、通信I/F部220と、制御部222と、電源部224と、を有している。
駆動部212は、ターゲット機器210を移動動作させるための駆動輪(タイヤ)や駆動源(モータ)等であって、上述したプログラミングボード120を用いたプログラミング操作において決定された仮想経路に対応する移動経路に沿ってターゲット機器210をプレイシート260上で移動させる。
読取部214は、図3に示すように、ターゲット機器210が実際に移動するプレイシート260の各区画262に設置されたマーカ264に埋め込まれた情報を読み取るカメラやイメージセンサ、読取回路である。ターゲット機器210の移動中に読取部214により読み取られたマーカ264の情報は、後述する制御部222において実行される特定のイベント処理や位置補正処理に用いられる。ここで、詳しくは後述するが、プレイシート260に設置されるマーカ264としては、一次元や二次元のコードパターンや特定の波長を有する塗料からなる色パターン、プレイシート260の厚み方向に形成された溝や凹凸パターン等をプレイシート260の表面に所定の平面形状で設置する形態や、NFC等の近距離無線通信技術を適用した通信用のICチップやICタグ等をプレイシート260の表面に設置又は埋め込んだ形態が適用される。マーカ264として例えばコードパターンや色パターンを適用した形態においては、読取部214として当該パターン形状や波長を検出するカメラやイメージセンサが適用され、また、マーカ264として例えば溝や凹凸パターンを適用した形態においては、プレイシート260の表面からの距離(深さや高さ)を検出する測距センサが適用される。また、マーカ264として例えば通信用ICチップやICタグ等を適用した形態においては、読取部214として当該通信規格に対応した読取回路(リーダー)が適用される。
機能部216は、光を発する発光部や画像を表示する表示部、音声を出力する音響部、ターゲット機器210の筐体を振動させる振動部、ターゲット機器210の外部の画像を撮影する撮像部、ユーザの音声を認識するマイクロフォン、及び、マイクロフォンから入力された音声を認識する音声センサ、ターゲット機器210の外部の明るさを検出する照度センサ等の各種のセンサのいずれかを、機能実行手段として有している。これらの機能実行手段は、プログラミング操作においてプログラミングブロック140に設定された機能情報に基づいて所定の機能動作を実行する。
ここで、ターゲット機器210において実行される機能動作としては、プログラミングブロック140が載置された領域102に対応する位置で、例えば発光部を所定の発光状態で発光させる動作や、表示部に表示される画像を変化させる動作、音響部により所定の音や楽音を発生する動作、振動部を所定のパターンで振動させる動作、ターゲット機器210を当該位置で回転させたりジャンプさせたりする動作、撮像部により周囲を撮影する動作、各種のセンサによりセンシングする動作等を有する。機能情報は、これらの機能動作を単独で実行することを規定するものであってもよいし、複数の機能動作を組み合わせて実行することを規定するものであってもよい。
なお、ターゲット機器210に設定可能な機能動作としては、上記のプログラミングブロック140が載置された領域102に対応する位置で実行されるもの、すなわち、プログラミングエリア104の領域102間の移動を伴わない各種の機能動作(いわゆる、アクション処理)に限定されるものではない。例えば、プログラミングブロック140が載置されたプログラミングエリア104上の指示領域102を基点として、予め指定された条件により特定の動作(例えば異なる経路を選択して移動する等)を実行する条件分岐処理や、特定の経路を指定回数だけ繰り返し移動する繰り返し処理、予め指定された複数のアクションをひとまとまりの動作として実行する関数処理等を有するものであってもよい。さらに他の機能動作として、プログラミングブロック140の載置位置に関わらず、ターゲット機器210の移動動作中の任意のタイミングで、予め指定したイベントの発生をトリガーとして、アクション処理や条件分岐処理を含む特定の動作(例えば拍手音を検知して発光したり回転したりする動作や、移動経路上の障害物を検知して停止したり報知したりする動作等)を実行するイベント処理を有するものであってもよい。
また、機能部216に設けられる機能実行手段のうち、発光部や表示部、音響部、振動部は、ユーザへの報知手段としても適用される。例えば、ターゲット機器210において実行される機能動作が、特定の対象物の個数や事象の発生回数等を計測して記憶する変数処理を有している場合、変数の変化に応じて、例えば発光部における発光回数や振動部における振動回数を変化させたり、表示部に表示される数字やイラストの数を変化させたり、音響部から発音される音声アナウンスやアラーム音の回数を変化させたりして、ユーザに当該変数に関する情報を報知する。ここで、表示部を用いた変数の報知方法について具体例を示すと、図4(a)に示すように、表示部が液晶や有機EL素子等による表示デバイス232を有する場合には、表示部に表示される数字やイラストの数が、更新された変数に対応するように表示データを変化させる。また、図4(b)〜(e)に示すように、ドラム236や回転板238の表面に数字や、所定数のイラストが表記されたメカニカルカウンタを適用する場合には、ターゲット機器210の筐体に設けられた開口窓234から露出してユーザに視認される数字やイラストの数が、更新された変数に対応するようにドラム236や回転板238の回転を制御する。
記憶部218は、コアユニット160から通信I/F部220を介して受信したプログラムを所定の記憶領域に記憶する。また、読取部214により取得されたマーカ264の情報を記憶領域に記憶する。さらに、記憶部218は、後述する制御部222においてターゲット機器210の各部の動作を制御するためのプログラムや、当該プログラムの実行時に必要とされる、又は、生成される各種の情報を記憶するものであってもよい。すなわち、記憶部218は、RAM及びROMを有するものである。
通信I/F部220は、上述したコアユニット160の通信I/F部168に適用される通信規格に対応したインターフェースを有し、ターゲット機器210とコアユニット160との間で通信を行い、例えばコアユニット160において生成されたプログラムを受信する。
制御部222は、上記の駆動部212、読取部214、機能部216、記憶部218、通信I/F部220、及び、後述する電源部224の各部の動作を制御するコンピュータのプロセッサである。特に、制御部222は、コアユニット160から通信I/F部220を介して受信し、記憶部218に記憶されたプログラムを実行することにより、駆動部212を制御してプログラミング操作により決定された仮想経路に対応する移動経路に沿ってターゲット機器210を移動させるとともに、機能部216を制御してプログラミング操作により設定された機能動作を実行させる。
また、制御部222は、ターゲット機器210がプレイシート260上を所定の移動経路に沿って移動している際に、読取部214により読み取られたマーカ264の情報に基づいて、特定のイベント処理や位置補正処理を実行してターゲット機器210の動作状態を制御する。また、制御部222は、コアユニット160における操作部162のスイッチ操作に応じてプログラムの実行状態を制御する。さらに、制御部222は、電源部224によりターゲット機器210内の各部への駆動用の電力の供給状態を制御する。なお、マーカ264の情報に基づいて実行される特定のイベント処理や位置補正処理を含むターゲット機器210の制御動作については後述する。
電源部224は、ターゲット機器210内の各部に駆動用の電力を供給する。電源部224は、例えば乾電池等の一次電池やリチウムイオン電池等の二次電池を備えるものであってもよいし、環境発電技術による発電部と二次電池を備えるものであってもよい。
(プレイシート260)
プレイシート260は、ターゲット機器210が現実空間において実際に移動する領域を規定するものであって、例えば図5(a)に示すように、膜状又は薄板状の形状を有し、一面側(図面、上面側)に、同一の平面形状を有する複数の区画262が相互に隣接して行列方向に2次元配置されている。ここで、プレイシート260の各区画262は、上述したプログラミングボード120に設けられた各領域102やガイドシート180の各区画106に相似する平面形状を有するとともに、1対1の関係で対応付けられている。また、プレイシート260には、例えば図1に示すように、上述したガイドシート180に相似する様々な画像等が予め表記され、これらの画像等により現実空間においてターゲット機器210が移動する経路や機能動作を実行する位置等がユーザに認識される。
また、プレイシート260には、各区画262を基本単位として、あるいは、互いに隣接する複数の区画262を単位として、プレイシート260上を移動するターゲット機器210において特定のイベント処理を実行するためのイベント情報や、位置補正処理を実行するための位置情報が埋め込まれたマーカ264が設置されている。マーカ264は、具体的には、例えば図5(a)、(b)に示すように、プレイシート260の相互に隣接して配置された複数の区画262の表面に、各区画262を通り格子状や直線状に連続して、可視光領域又は非可視光領域の特定の波長を有する塗料からなる色パターンを印刷又は塗布、貼付した形態や、例えば図5(a)、(c)に示すように、各区画262を通り格子状や直線状に連続して、プレイシート260の厚み方向に所定の深さを有する溝を形成した形態を適用することができる。
また、マーカ264は、例えば図5(d)、(e)に示すように、プレイシート260の各区画262の表面に、バーコードやQRコード(登録商標)のような一次元や二次元の視認可能なコードパターンを印刷又は載置、貼付した形態や、可視光領域や非可視光領域の異なる波長の塗料からなる色パターンを印刷又は塗布、載置、貼付した形態、プレイシート260の厚み方向に異なる深さ(又は高さ)を有する凹凸パターンを形成した形態等を適用することができる。また、マーカ264は、プレイシート260の各区画262の表面に、個別の情報を保持するNFC等の通信用のICチップやICタグを貼付した形態、又は、プレイシート260の内部に埋め込んだ形態等を適用することもできる。これらの各区画262に個別に設置されるマーカ264は、図5(d)、(e)に示すように区画262内の特定の領域に設置されるものであってもよいし、区画262内の略全域に設置されるものであってもよい。
ここで、マーカ264は、図5に示した各種の形態のうち、特定の一種類(例えば、格子状の色パターンのみやコードパターンのみ)を適用するものであってもよいし、複数種類を組み合わせて(例えば、格子状の溝とICチップとを併用して)適用するものであってもよい。また、プレイシート260上に設置されるマーカ264は、所定の区画262に予め固定的に設置されているものであってもよいし、ユーザにより任意の区画262に設置されるものであってもよい。例えば、プレイシート260に対してマーカ264を載置したり貼付したりする形態においては、マーカ264がカードやシールのような形態を有し、各区画262に一度載置又は貼付したマーカ264を剥がして別の区画262に載置又は貼り直すことによりマーカ264の設置位置を任意に変更することができる。また、マーカ264として情報を保持するICチップやICタグを適用した形態においては、通信を用いた外部からの書き込み操作等により、保持している情報を書き替えるものであってもよい。
また、本実施形態に適用されるプレイシート260は、膜状又は薄板状の1枚の部材からなるものであってもよいし、例えば上記の区画262ごとに分割が可能な形態を有し、ユーザが自由に組み合わせを変更できるものであってもよい。
なお、本実施形態においては、後述するプログラム実行処理の具体例において、マーカ264、265に埋め込まれたイベント情報を用いて特定のイベント処理(変数処理、障害物回避処理)を実行する制御方法について詳しく説明する。また、マーカ264に埋め込まれた位置情報を用いて位置補正処理を実行する制御方法については後述する変形例において説明する。
<プログラミング教育装置の制御方法>
次に、本実施形態に係るプログラミング教育装置の制御方法(プログラミング操作及びプログラム生成、プログラム実行方法;プログラム処理装置の制御方法)について説明する。
本実施形態に係るプログラミング教育装置の制御方法においては、大別して、上述したプログラム生成装置100を用いた入力操作により、任意の移動経路や機能動作が設定されたプログラムを生成するプログラミング操作処理及びプログラム生成処理と、当該プログラムに基づいてターゲット機器210をプレイシート260上で上記の移動経路に沿って移動させつつ、所定の位置で機能動作を実行させるプログラム実行処理と、が実行される。ここで、プログラム実行処理においては、ターゲット機器210がプレイシート260上を移動中に、マーカ264の情報を読み取ることにより、実行中のプログラムに対して割り込み処理となる特定のイベント処理や位置補正処理が実行される。プログラミング教育装置における、これらの各制御処理は、上述したプログラミングボード120やプログラミングブロック140、コアユニット160、ターゲット機器210に設けられた各制御部において、独立して又は相互に連携して特定の制御プログラムを実行することにより実現されるものである。
図6は、本実施形態に係るプログラミング教育装置の制御方法(プログラミング操作及びプログラム生成処理、プログラム実行処理)の全体を示すフローチャートである。図7は、本実施形態に適用されるプログラミングボードを用いたプログラミング操作処理を説明するための概略図であり、図8は、本実施形態に適用されるプレイシートを用いてイベント処理を設定する際のプログラミング操作処理を説明するための概略図である。図9は、本実施形態に適用されるイベント処理のプログラミング操作の設定例を示す概略図である。
(プログラミング操作処理)
本実施形態に係るプログラミング教育装置におけるプログラミング操作処理においては、図6のフローチャート及び図7(a)に示すように、まず、ユーザは、プログラミングボード120とコアユニット160を有するプログラム生成装置100、及び、ターゲット機器210を有するプログラム実行装置200の電源を投入して起動する(ステップS102)。また、プログラミングボード120にはプログラミングエリア104の各領域102に、ガイドシート180の各区画106が1対1の関係で対応するようにガイドシート180が装着される。
ここで、ガイドシート180に表記されている画像等は、ターゲット機器210が実際に移動するプレイシート260の画像等に対応し、ターゲット機器210の移動経路や機能動作を実行する位置等に関連する様々な情報を有している。そのため、ユーザによるプログラミング学習の内容に応じてプレイシート260が変更された場合には、それに応じた画像等が表記されたガイドシート180に交換されてプログラミングボード120に装着される。このように、ガイドシート180に表記された画像等は、プログラミングボード120を用いたプログラミング操作の手順や方法に影響を与えるものであるため、ユーザによるプログラミング操作に先立って、画像等が有する情報がプログラミングボード120に登録される。具体的には、例えば図2に示すように、各ガイドシート180には、当該ガイドシート180に表記された画像等に関する固有の情報(移動経路情報や各領域の位置を特定するための情報等)が記憶されたICチップ182が設けられ、プログラミングボード120にガイドシート180が装着されると、プログラミングボード120に設けられたICチップ読出し部134により上記の情報が読み出されて記憶部128の記憶領域に記憶される。言い換えれば、ICチップ182にはターゲット機器210の移動経路を規定する仮想経路を特定する電気的な情報が記録されている。
次いで、ユーザがプログラミングボード120及びプログラミングブロック140を用いてプログラミング操作処理を実行する。具体的には、まず、図7(a)に示すように、ユーザが、プログラミングボード120に装着されたガイドシート180(又はプレイシート260)に表記された画像等を参照しつつ、ターゲット機器210を動作させる際の移動経路に対応する複数の区画106(すなわち、プログラミングエリア104の複数の領域102)に接触して、又は、当該区画106を押下して順次指示する。ここで、ユーザは、ガイドシート180上に予め設定された、又は、任意に設定した始点(スタート)Rsと終点(ゴール)Rgを含む2以上の連続する区画106の全てについて、ターゲット機器210の移動順序に従って順次指示する。また、図8(a)に示すように、プレイシート260の任意の区画262にユーザが予めマーカ264を設置した場合や、マーカ264が所定の区画262に固定的に設置されている場合には、ユーザは、当該マーカ264も参照し、例えばマーカ264を設置した区画262を通過する、又は、当該マーカ264を設置した区画262を回避するターゲット機器210の移動経路を決定する。これにより、プログラミングボード120において、ターゲット機器210の全ての移動経路に対応する仮想経路(始点Rs→終点Rg;例えば図7(b)中では黒い太線で表記)が決定される(ステップS104)。
このとき、プログラミングボード120の制御部132は、ユーザにより指示された各領域102に関する指示位置情報と、それらの順序情報を取得して記憶部128の記憶領域に記憶させる。また、制御部132は、各指示領域102の識別変移部124を所定の発光状態で発光させたり、表示画像を変化させたりして視覚的に識別可能な状態に変移させる(図7(a)中では便宜的にハーフトーンで表記)。
次いで、図7(b)に示すように、ユーザは、仮想経路となる複数の区画106(指示領域102)のうち、ターゲット機器210により特定の機能動作を実行する位置の区画106に、当該機能動作が設定されたプログラミングブロック140を1又は複数個載置する。これにより、ターゲット機器210の機能動作が設定される(ステップS106)。
このとき、プログラミングボード120の制御部132は、ガイドシート180上に載置された各プログラミングブロック140のブロック位置情報と、それらの機能情報を取得して記憶部128の記憶領域に記憶させる。また、載置されたプログラミングブロック140の制御部148は、識別変移部144を所定の発光状態で発光させたり、表示画像を変化させたりして視覚的に識別可能な状態に変移させる(図7(b)中では便宜的にハーフトーンで表記)。
ここで、プログラミングブロック140を用いたプログラミング操作により設定される機能動作としては、上述したように、例えば、プログラミングブロック140が載置された領域102に対応する位置で、ターゲット機器210の機能部216から光や音を発生させたり、回転やジャンプ等の所定の動きをさせたり、周囲を撮影やセンシングしたりするアクション処理が設定される。また、機能動作として、例えば、プログラミングブロック140が載置された領域102を基点として、条件分岐処理や繰り返し処理、関数処理が設定されるものであってもよい。
さらに他の機能動作としては、上述したようなイベント処理が設定されるものであってもよい。イベント処理においては、例えば図9(a)に示すように、プログラミングボード120のプログラミングエリア104の周辺に設けられたイベントゾーン150に、イベント処理設定用のプログラミングブロック(イベント設定ブロック)140Eを載置して、図9(b)〜(d)に示すように、当該イベント設定ブロック140Eに対応するように、任意のアクション処理が設定された1以上のプログラミングブロック(イベントブロック)140Fを連結配置するというプログラミング操作により、一連のイベント処理が設定される。このように別の場所で連結配置されたひとまとまりの1以上のイベントブロック140Fのことを、イベント処理本体152という。イベント処理本体152は、始点ブロックBLsと終点ブロックBLeとを含み、それらの間に、ユーザが所望する「アクション」を指定する1以上のイベントブロック140Fが連結配置されている。プログラム実行時にはターゲット機器210は、始点ブロックBLsと終点ブロックBLeとの間に配置された「アクション」をそれらの並び順に実行する。
本実施形態に適用されるイベント処理としては、具体的には、ターゲット機器210が移動動作中の任意のタイミング(すなわち、移動経路上の任意の位置)で、例えば図9(b)に示すように、所定の変数対象物(図9(b)では「リンゴ」)を規定するマーカ264を検出して、変数を更新して報知する動作や、例えば図9(c)に示すように、当該変数に応じて分岐点における進行する経路を決定する動作、例えば図9(d)に示すように、ターゲット機器210の移動を阻む障害物(図9(d)では「猛犬」)を規定するマーカ265を検出して、回避経路を探す動作等が実行される。
本実施形態においては、ユーザによりターゲット機器210の全ての移動経路に対応する仮想経路が決定され、且つ、全ての機能動作が設定されてプログラミング操作を終了するまで、上記のステップS104、S106を繰り返し実行する(ステップS108のNo)。ここで、ターゲット機器210の移動経路が決定された後に、ユーザは、例えば図8(b)に示すように、プレイシート260の任意の区画262にマーカ264をさらに設置してもよい。マーカ264を移動経路に対応する区画262上に設置した場合には、後述するプログラムの実行処理において、ターゲット機器210は、当該マーカ264に埋め込まれた情報を、上述したイベント処理におけるトリガーとして読み取ることになる。
なお、ステップS104、S106に示したプログラミング操作においては、ガイドシート180の画像等が有する情報に基づいて、ユーザによる入力操作が制御される。すなわち、移動経路や機能動作を実行する位置等を設定する操作において、画像等の情報に基づいて、指示禁止領域や載置禁止領域がある場合には、該当する領域への入力操作が制限されたりエラー状態が報知されたりする。また、上記情報に基づいて、始点Rsから終点Rgまでの移動経路となる各領域102が連続するように入力操作が誘導される。
また、上記のプログラミング操作は、ターゲット機器210の移動経路を順次決定しつつ、ターゲット機器210における機能動作を順次設定するものであってもよいし、全ての移動経路を決定した後にターゲット機器210における全ての機能動作を設定するものであってもよい。
次いで、プログラミングボード120を用いたプログラミング操作により、ターゲット機器210の全ての移動経路に対応する仮想経路を決定し、且つ、全ての機能動作を設定する処理が終了(ステップS108のYes)すると、コアユニット160を用いたプログラム生成処理が実行される。
(プログラム生成処理)
プログラム生成処理においては、まず、例えばユーザがコアユニット160の操作部162に設けられたプログラム実行スイッチ(一括実行スイッチ112又はステップ実行スイッチ114)を操作する(ステップS110)。これにより、コアユニット160が、上記のプログラミング操作処理により取得した指示位置情報や順序情報、ブロック位置情報、機能情報を有する入力操作情報をプログラミングボード120から受信する(ステップS112)。
次いで、コアユニット160の制御部170は、受信した入力操作情報をソースコードとして、ターゲット機器210の動作状態(移動及び機能動作)を制御するための命令を有するプログラムを生成する(ステップS114)。生成されたプログラムは、コアユニット160の記憶部166の記憶領域に記憶される。
なお、本実施形態においては、ユーザが、コアユニット160の操作部162のプログラム実行スイッチを操作することにより、ターゲット機器210の動作状態を制御するためのプログラムを生成する処理を実行する場合について説明したが、これに限定されるものではなく、上述したプログラミング操作処理が終了したと判断された場合に、自動的に上記のプログラム生成処理を実行するものであってもよい。
また、本実施形態においては、特に言及しなかったが、コアユニット160は、プログラミングボード120を用いた一連のプログラミング操作処理により取得された入力操作情報を一括して受信するものであってもよいし、プログラミング操作の一操作(ステップ)ごとに受信するものであってもよい。また、コアユニット160は、受信した入力操作情報に基づいて、全ての移動経路におけるターゲット機器210の動作状態を制御するためのプログラムを一括して生成するものであってもよいし、プログラミング操作の一操作(ステップ)ごとにプログラムを生成するものであってもよい。これに伴って、後述するプログラム実行処理においては、全ての移動経路におけるターゲット機器210の動作状態を制御するプログラムを一括して実行するものであってもよいし、プログラミング操作の一操作(ステップ)ごとに対応するプログラムを実行するものであってもよい。
(プログラム実行処理)
プログラム実行処理においては、まず、コアユニット160の制御部170が、上記のプログラム生成処理において生成したプログラムを通信I/F部168を介してターゲット機器210に転送する(ステップS116)。ターゲット機器210の制御部222は、コアユニット160から転送され、通信I/F部220を介して受信したプログラムを、記憶部218の記憶領域に記憶する。
次いで、ターゲット機器210の制御部222は、転送されたプログラムを実行することにより、上述したプログラミング操作処理において決定されたプレイシート260上の移動経路に沿って、ターゲット機器210を移動させる動作を行う(ステップS118)。また、制御部222は、移動経路の移動中に、ターゲット機器210が上述したプログラミング操作処理においてプログラミングブロック140を用いて設定されたプレイシート260上の位置に到達した場合には、所定の機能動作を実行する。さらに、制御部222は、移動経路の移動中に、ターゲット機器210が上述したプログラミング操作処理においてマーカ264が設置されたプレイシート260上の位置に到達した場合には、特定のイベント処理を実行する。そして、ターゲット機器210が移動経路の終点まで到達した場合には、図6のフローチャートに示したプログラミング操作及びプログラム生成、実行方法に係る一連の処理動作が終了する。
(具体例)
以下に、プログラム実行処理の具体例を示す。ここでは、ターゲット機器210が上述したプログラミング操作処理により決定されたプレイシート260上の移動経路に沿って移動するとともに、プログラミングブロック140により設定された位置で所定の機能動作を実行する。また、ターゲット機器210は上記の移動経路に沿って移動しつつ、プレイシート260の各区画262に設置されたマーカ264に埋め込まれた情報を読み取ることにより、特定のイベント処理を実行する。本実施形態においては、イベント処理として、変数処理と条件分岐処理と障害物回避処理とを有し、マーカ264として設置された変数対象物である「リンゴ」を計数しながら移動経路を走行し、移動経路上の分岐点において上記の変数を条件として進行する分岐経路を決定し、さらに、マーカ265として設置された障害物である「猛犬」を回避する経路を決定して終点まで移動するプログラムを実行する場合について、図面を参照して説明する。
図10は、本実施形態に適用されるプログラム実行処理の全体を示すフローチャートである。図11は、本実施形態に適用される変数処理及び条件分岐処理の例を示すフローチャートである。図12は、本実施形態に適用される障害物回避処理の例を示すフローチャートである。図13は、本実施形態に適用されるプログラム実行処理を説明するための概略図である。図14は、本実施形態に適用される変数処理及び条件分岐処理を説明するための概略図であり、図15は、本実施形態に適用される障害物回避処理を説明するための概略図である。
プログラム実行処理においては、図10のフローチャートに示すように、まず、ターゲット機器210の制御部222が、プログラム生成装置100(コアユニット160)において生成され転送されたプログラムを記憶部218から読み出して実行する(ステップS202)。これにより、ターゲット機器210の制御部222は、駆動部212を駆動させて、図13(a)に示すように、上述したプログラミング操作処理において決定されたプレイシート260上の移動経路に沿って、ターゲット機器210を始点から終点まで移動させる動作を行う(ステップS204)。
このターゲット機器210の移動動作において、制御部222は、実行しているプログラムの進行状況に基づいて、ターゲット機器210が移動経路の終点に到達しているか否かを判断し(ステップS206)、図15(b)に示すように、終点に到達している場合(ステップS206のYes)には、ターゲット機器210を始点に戻すように移動させて(ステップS222)、プログラム実行処理を終了する。ここで、ターゲット機器210を始点に移動させる動作は、例えば実行しているプログラムにより移動経路上の移動履歴が記録されている場合には当該移動履歴に基づいて、通過した経路を逆戻りするものであってもよいし、所定の経路(例えば直線経路等)を通って戻るものであってもよい。また、例えば、予め始点位置に赤外線方式等の無線モジュールを搭載したホームベース機器を設置しておき、ターゲット機器210が終点に到達した場合や、イベント処理やエラーの発生によりプログラムの実行を中断した場合等に、ホームベース機器から常時又は周期的に発信される赤外線をターゲット機器210の機能部216に備えられた赤外線センサにより検出して、始点位置に移動するよう誘導するものであってもよい。
ステップS206において、ターゲット機器210が移動経路の終点に到達していない場合(ステップS206のNo)には、制御部222は、実行しているプログラムの進行状況に基づいて、上述したプログラミングブロック140を用いたプログラミング操作処理において設定された、イベント処理を除く機能動作の実行位置にターゲット機器210が到達しているか否かを判断する(ステップS208)。ターゲット機器210がイベント処理を除く機能動作の実行位置にいる場合(ステップS208のYes)には、制御部222は、図13(b)に示すように、機能部216等により当該機能動作を実行させる(ステップS210)。図13(b)ではターゲット機器210が特定の発光色で発光している状態を示す。
ここで、ターゲット機器210が移動経路を走行する動作中(ステップS204)、及び、機能動作の実行中(ステップS210)においては、ターゲット機器210の制御部222は、通信I/F部220を介してプログラムの実行状態(すなわち、ターゲット機器210の現在位置や実行中の機能、ターゲット機器210がプログラム通りに動作しているか否かなど)に関する情報をプログラム実行情報として、プログラム生成装置100(コアユニット160、プログラミングボード120)に随時送信する。これにより、プログラミングボード120の制御部132は、受信したプログラム実行情報に基づいて、図13(a)、(b)に示すように、ターゲット機器210のプレイシート260上での現在位置に対応する領域102(図ではガイドシート180の区画106に対応する)や、実行中の機能動作に対応するプログラミングブロック140を、他の領域102やプログラミングブロック140に対して識別可能な状態に変移させる。或いは、プログラムにエラーやバグが発生した場合に、識別可能な状態に変移させる。例えば、当該領域102やプログラミングブロック140を特定の発光色や発光強度、発光パターンで発光させたり、表示画像を変化させたりして、発光状態や表示状態を変化させる(図13(a)、(b)中では便宜的に濃いハーフトーンで表記)。このように、プレイシート260上でのターゲット機器210の動作状態をフィードバックして、ユーザの手元にあるプログラム生成装置100で報知することにより、プログラミング操作の内容とターゲット機器210の動作状態(又は、生成されたプログラムの実行状態)との関係を、視覚を通して直感的に把握し易くすることができる。
ステップS208において、ターゲット機器210がイベント処理を除く機能動作の実行位置にいない場合(ステップS208のNo)には、制御部222は、上述したプログラミング操作処理において設定されたイベント処理のトリガーとなる事象を検出したか否かを判断する(ステップS212)。具体的には、制御部222は、トリガーとなる事象として、読取部214により現在位置の区画262に設置されたマーカ264を検出したか否か、或いは、ターゲット機器210の移動経路上の分岐点を検出したか否かを判断する。イベント処理のトリガーとなる事象が検出されない場合(ステップS212のNo)には、制御部222は、ステップS204に戻って、ターゲット機器210を移動経路に沿って移動させる動作を継続する。
ステップS212において、イベント処理のトリガーとなる事象を検出した場合(ステップS212のYes)には、制御部222は、当該事象に基づいて実行するイベント処理を判別する(ステップS214)。ここで、イベント処理は、上述したプログラミング操作において図9(a)〜(d)に示したように、各イベント処理に対応するイベント設定ブロック140Eと、これに関連付けられた1以上のイベントブロック140Fのまとまりであるイベント処理本体152により規定される。
トリガーとなる事象がプレイシート260上に設置されたマーカ264の検出である場合には、制御部222は、当該マーカ264に埋め込まれたイベント情報を読み取り、当該イベント情報により規定されるイベント処理を判別する。すなわち、図8(a)、(b)に示したように、プレイシート260上の任意の区画262に、「リンゴ」のイラストが表記されたマーカ264や、「猛犬」のイラストが表記されたマーカ265が設置され、図14(a)及び図15(a)に示すように、ターゲット機器210が各マーカ264が設置された区画262に到達して当該マーカ264を検出すると、制御部222は、読取部214により各マーカ264の情報を読み取る。
読み取った情報に含まれるイベント情報が、例えば図14(a)に示した「リンゴ」に関するイベント処理を規定している場合には、制御部222は、図9(b)に示したイベント処理本体152に基づいた、「リンゴ」を変数対象物として取得数(拾った数)を計数する変数処理(ステップS216)を実行する。すなわち、プレイシート260上に設置されたマーカ264には「リンゴを拾う」イベント処理が規定され、イベント情報として「リンゴを示すID」や「イベント属性:変数保持」が設定されている。ターゲット機器210がプレイシート260上の当該マーカ264が設置された区画262に到達して、読取部214により当該マーカ264のイベント情報が読み取られ、当該イベント情報により規定されるイベント処理が「リンゴ」に関する「イベント属性:変数保持」であると判別された場合には、制御部222は「リンゴの数が1個」という変数情報を記憶部218の記憶領域に記憶する。ここで、記憶部218に既に「リンゴ」に関する変数情報が記憶されている場合(すなわち、ターゲット機器210がプレイシート260上の移動経路をさらに移動して読み取った別のマーカ264において同じイベント処理が規定されている場合)には、制御部222は変数を加算して、例えば「リンゴの数が2個」のような更新した変数情報を記憶部218の記憶領域に記憶する。
また、読み取った情報に含まれるイベント情報が、例えば図15(a)に示した「猛犬」に関するイベント処理を規定している場合には、制御部222は、図9(d)に示したイベント処理本体152に基づいた、「猛犬」を進路障害物として回避経路を決定する障害物回避処理(ステップS220)を実行する。すなわち、プレイシート260上に設置されたマーカ265には「犬を回避する」イベント処理が規定され、イベント情報として「犬を示すID」や「イベント属性:通行不可能」が設定されている。ターゲット機器210がプレイシート260上の当該マーカ265が設置された区画262に到達して、読取部214により当該マーカ264のイベント情報が読み取られ、当該イベント情報により規定されるイベント処理が「犬」に関する「イベント属性:通行不可能」であると判別した場合には、制御部222は上述したプログラミング操作処理において予め設定された、「イベント属性:通行不可能」をトリガーとするイベント処理(例えばUターンしたり迂回したりする動作)を実行する。
また、トリガーとなる事象がターゲット機器210の移動経路上にある分岐点の検出である場合には、当該検出結果からなるイベント情報により規定されるイベント処理を判別する。すなわち、図14(b)に示すように、ターゲット機器210が移動経路上の分岐点がある区画262に到達して当該分岐点を検出すると、制御部222は、図9(c)に示したイベント処理本体152に基づいた、変数対象物である「リンゴ」の取得数に応じて分岐経路を決定する条件分岐処理(ステップS218)を実行する。
以下、上述したプログラミング操作(図7参照)により決定された移動経路に沿って、ターゲット機器210を走行させた場合に実行される変数処理、条件分岐処理、障害物回避処理の各イベント処理について順に説明する。
(変数処理)
変数処理においては、制御部222は、例えば図11(a)のフローチャートに示すように、まず、マーカ264のイベント情報(「リンゴを示すID」、「イベント属性:変数保持」)から変数対象物である「リンゴ」の数に関する情報を抽出する(ステップS302)。ここで、上述したプログラミング操作処理(図8(a)参照)においては、各々1個のリンゴを表記したマーカ264を任意の区画262に設置する例を示した。この場合、各マーカ264に規定された変数対象物の数は「1」であるが、マーカ264にリンゴが複数個表記されている場合(イベント情報に変数対象物の数が規定されている場合)等には、その数に応じた情報が取得される。
次いで、制御部222は、記憶部218の記憶領域に記憶されている変数情報を読み出して、マーカ264のイベント情報から取得した数を加算して更新し、再び記憶部218に記憶する(ステップS304)とともに、変数が更新されたことをユーザに報知する(ステップS306)。ここで、変数の更新を報知する手法としては、上述したように、ターゲット機器210の機能部に備えられた表示部や音響部等を適用する。具体的には、例えば図4(a)に示したように、ターゲット機器210の筐体に設けられた液晶等の表示デバイス232に、更新された変数(図では「2」)を表示したり、図4(b)、(c)に示したように、開口窓234からリンゴが2個表記されたイラストや数字を露出させたりすることにより、ユーザに変数(リンゴの個数)が更新されたことを、視覚を通して報知する。また、この手法に加えて、又は、この手法に替えて、音響部のスピーカから「リンゴを1個拾いました」や「リンゴを2個持っています」等の音声アナウンスを発生させて、聴覚を通して報知するものであってもよい。
ステップS304、S306の変数の更新及び報知動作の終了後、制御部222は、変数処理を終了して、図10に示したフローチャートのステップS204に戻って、ターゲット機器210を移動経路に沿って移動させる動作を継続する。
(条件分岐処理)
条件分岐処理においては、制御部222は、例えば図11(b)のフローチャートに示すように、まず、実行しているプログラムの進行状況に基づいて、ターゲット機器210の移動経路情報から当該分岐点の位置、分岐の形状や数等に関する特定情報を抽出する(ステップS322)。ここでは、移動経路が分岐点で2経路(分岐経路A、B)に分岐している例を示す。
次いで、制御部222は、記憶部218の記憶領域に記憶されている当該分岐点の通過回数を読み出して「1」を加算して更新し、再び記憶部218に記憶する(ステップS324)。次いで、制御部222は、記憶部218の記憶領域に記憶されている上記の変数処理の対象となっている変数(リンゴの取得数)を読み出して(ステップS326)、当該変数が奇数であるか偶数であるかを判断する(ステップS328)。変数が奇数である場合(ステップS328のYes)には、制御部222は、分岐経路Aを選択してターゲット機器210が当該分岐経路Aに進むように制御し(ステップS330)、変数が偶数である場合(ステップS328のNo)には、分岐経路Bに進むように制御する(ステップS332)。なお、分岐の数が3以上の場合には、例えば変数を当該分岐の数で除算して、その余りの数に応じて進行する分岐経路を決定するものであってもよい。
ステップS328〜S332の分岐経路の決定後、制御部222は、条件分岐処理を終了して、図10に示したフローチャートのステップS204に戻って、ターゲット機器210を移動経路に沿って移動させる動作を継続する。
(障害物回避処理)
障害物回避処理においては、マーカ265のイベント情報(「犬を示すID」、「イベント属性:通行不可能」)に基づいて、「イベント属性:通行不可能」をトリガーとするイベント処理が実行される。制御部222は、例えば図12のフローチャートに示すように、まず、記憶部218の記憶領域に記憶されている上記の条件分岐処理の対象となっている各分岐点の通過回数(すなわち、分岐の通過履歴)を読み出して(ステップS342)、現在位置までの移動経路の途中で、分岐点を通過したか否かを判断する(ステップS344)。現在位置までに分岐点を通過している場合(ステップS344のYes)には、制御部222は、ターゲット機器210を直近(一つ前)の分岐点の位置まで戻すように移動させる(ステップS346)。
ステップS344において、現在位置までに分岐点を通過していない場合(ステップS344のNo)には、制御部222は、進路障害物である「猛犬」を回避する経路がないと判断して、プレイシート260上の移動経路の走行を中断して(ステップS358)、図10に示したフローチャートのステップS222に戻って、ターゲット機器210を始点に戻すように移動させて、一連のプログラム実行処理を終了する。
次いで、制御部222は、記憶部218の記憶領域に記憶されている当該直近の分岐点の通過回数を読み出して「1」を加算して更新し、再び記憶部218に記憶する(ステップS348)。そして、制御部222は、当該直近の分岐点の通過回数が「2」か否かを判断する(ステップS350)。すなわち、ターゲット機器210が当該直近の分岐点を通過するのが2回目であるか判断され、2回目である場合(ステップS350のYes)には、制御部222は、当該直近の分岐点を1回目に(すなわち、前回)通過したときに進んだ分岐経路(例えば分岐経路A)とは異なる分岐経路(例えば分岐経路B)に進むようにターゲット機器210を制御した後(ステップS352)、障害物回避処理を終了して、図10に示したフローチャートのステップS204に戻って、ターゲット機器210を移動経路に沿って移動させる動作を継続する。
ステップS350において、ターゲット機器210が当該直近の分岐点を通過するのが2回目ではない場合(ステップS350のNo)、すなわち、3回目以上である場合には、制御部222は、記憶部218の記憶領域に記憶されている各分岐点の通過回数(分岐の通過履歴)を再度参照して、当該直近の分岐点よりも一つ前に通過した分岐点(すなわち、二つ前の分岐点)があるか否かを判断する(ステップS354)。二つ前の分岐点がある場合(ステップS354のYes)には、制御部222は、ターゲット機器210を二つ前の分岐点の位置まで戻すように移動させた後(ステップS356)、ステップS348に戻って、当該二つ前の分岐点の通過回数を更新して、ステップS350以降の処理動作を繰り返す。
ステップS354において、各分岐点の通過回数を再度参照して、二つ前の分岐点がない場合(ステップS354のNo)には、制御部222は、障害物である「猛犬」を回避する経路はないと判断して、プレイシート260上の移動経路の走行を中断して(ステップS358)、図10に示したフローチャートのステップS222に戻って、ターゲット機器210を始点に戻すように移動させて、一連のプログラム実行処理を終了する。
ここで、上述した変数処理、条件分岐処理、障害物回避処理の各イベント処理においては、ターゲット機器210の制御部222は、通信I/F部220を介して、当該イベント処理の実行状態に関する情報(例えば、マーカ264から読み取ったイベント情報や、当該イベント処理が正常に実行されたか否かを示すイベント実行情報)を、プログラム生成装置100(コアユニット160、プログラミングボード120)に随時送信する。これにより、プログラミングボード120の制御部132は、受信した情報に基づいて、図14(a)、(b)及び図15(a)に示すように、ターゲット機器210のプレイシート260上での現在位置に対応する領域102(図ではガイドシート180の区画106に対応する)を、他の領域102に対して識別可能な状態に変移させる。或いは、イベント処理にエラーやバグが発生した場合に、識別可能な状態に変移させる。例えば、当該領域102を特定の発光色や発光強度、発光パターンで発光させたり、表示画像を変化させたりして、発光状態や表示状態を変化させる(図14(a)、(b)及び図15(a)中では便宜的に濃いハーフトーンで表記)。このように、プレイシート260上でのターゲット機器210のイベント処理に関する動作状態をフィードバックして、プログラム生成装置100に報知することにより、イベント処理におけるプログラミング操作の内容とターゲット機器210の動作状態との関係を、視覚を通して直感的に把握し易くすることができる。
このように、本実施形態においては、プログラム生成装置100により生成されたプログラムを実行するタンジブルなターゲット機器210が実際に移動するプレイシート260上の任意の区画262に、イベント情報を有するマーカ264、265を設置し、当該マーカ264、265をターゲット機器210が読み取ることにより、イベント情報に対応したイベント処理を実行することができる。これにより、すでに生成済みで現在実行中のプログラムに対して、動的に割り込み処理を行うことができ、ターゲット機器210の動作状態を直接制御するプログラミング方法を提供することができる。これにより、プログラム生成装置100におけるプログラミング操作に加えて、簡易且つ理解し易い形態を有するとともに、多様で広範なプログラミング学習の環境を提供することができる。
また、本実施形態においては、プログラム生成装置100におけるプログラミング操作の手法として、プログラミングボード120とプログラミングブロック140とコアユニット160とを用いたタンジブルな手法を提供することができる。これにより、プレイシート260上でのターゲット機器210の移動経路や機能動作を設定するプログラミング操作の内容を把握し易くすることができる。
さらに、本実施形態においては、プログラムの実行中のターゲット機器210の動作状態に対応して、プログラム生成装置100のプログラミングボード120上の領域102やプログラミングブロック140を、視覚的に変移させて他の領域102やプログラミングブロック140と識別が可能なようにすることができる。また、ターゲット機器210の機能部216を報知手段として適用して、イベント処理の実行結果を報知することができる。これにより、プログラミングの操作内容やターゲット機器210の動作状態を把握し易くすることができる。
したがって、本実施形態によれば、簡易且つ理解し易い形態を有するとともに、多様で広範なプログラミング学習の環境下で、ターゲット機器210の動作状態を制御するプログラミングを行うことができるとともに、その操作内容やターゲット機器210の動作状態を直感的に把握し易くすることができ、プログラミングの学習効果の向上を期待することができる。
なお、上述した実施形態においては、図8に示したように、特定のイベント処理を規定するマーカ264を、ユーザ自身がプレイシート260に設置する場合について説明したが、本発明はこれに限定されるものではなく、例えばユーザの他、その管理者やプログラミング教育装置の製造事業者等が、プレイシート260上の任意の位置、又は、既定の区画262に設置するものであってもよい。
また、上述した実施形態においては、図9に示したように、マーカ264のイベント情報により規定されるイベント処理の処理本体152を、ユーザ自身が複数のイベントブロック140Fを連結する形態で設定する場合について説明したが、本発明はこれに限定されない。例えばユーザの他、その管理者やプログラミング教育装置の製造事業者等が、予め想定される複数種類のイベント処理の処理本体152を、コアユニット160やターゲット機器210の記憶部166、218に記憶しておき、トリガーとなる事象(マーカ264のイベント情報等)に基づいて、対応する特定のイベント処理を実行するものであってもよい。
また、本実施形態においては、ターゲット機器210におけるプログラムの実行状態に対応するプログラミングボード120の領域102や、プログラミングブロック140を識別可能な状態に変移(例えば発光)させる方法として、コアユニット160とターゲット機器210とが随時通信(プログラム実行情報の送受信)を行う場合について説明したが、本発明はこれに限定されるものではない。例えば、コアユニット160とターゲット機器210とが通信を行うことなく、コアユニット160からターゲット機器210へのプログラムの転送終了や、当該プログラムの実行開始のタイミングからの経過時間に基づいて、コアユニット160の制御部170がターゲット機器210におけるプログラムの実行状態を推測して、当該実行状態に対応する領域102又はプログラミングブロック140を識別可能な状態に変移させるものであってもよい。この場合、コアユニット160における推測と実際のプログラムの実行状態との誤差が過大にならないように、定期的に、又は、予め設定した位置や条件ごとに、コアユニット160とターゲット機器210とが通信を行うものであってもよい。
また、上述した実施形態においては、プログラミングボード120のプログラミングエリア104上にガイドシート180を装着した状態でプログラミング操作を行う場合について説明したが、本発明はこれに限定されるものではなく、例えばガイドシート180を用いることなくプログラミング操作を行うものであってもよい。すなわち、ユーザはプレイシート260に表記された画像等を参照して、ターゲット機器210の移動経路や機能動作の実行状態をイメージして、プログラミングエリア104の各領域102を直接指示したりプログラミングブロック140を直接載置したりしてもよい。
また、他の形態として、プレイシート260に相似する画像等がプログラミングボード120の各領域102の識別変移部124の表示部に表示されるものであってもよい。この場合、識別変移部124の画像等のデータを書き替えることにより、プレイシート260が変更された場合にも適宜対応することができる。
なお、上述した実施形態においては、プレイシート260にターゲット機器210が現実空間で移動する経路や領域を規定する画像等が表記され、また、ガイドシート180にプレイシート260の画像等に相似し、プログラミング操作を支援、誘導するための画像等が表記されている場合について説明したが、本発明はこれらの画像等が表記されていないものであってもよい。すなわち、予め設定されたプレイシート260上の始点と終点とを繋げるように移動経路を決定するプログラミング操作に限定されるものではなく、例えばプレイシート260上の任意の位置を始点及び終点として、ターゲット機器210を相対的な移動経路で移動させるものであってもよい。
また、上述した実施形態においては、プログラミングボード120上にプログラミングブロック140を載置することによりターゲット機器210の機能動作を設定する場合について説明したが、本発明はこれに限定されるものではない。例えばプログラミングブロック140を用いることなく、プログラミングボード120の各領域102の指示検出部122が有する検出機能を用いて、ユーザによる領域102への指示(接触又は押下)の回数や時間、指示の種類等に応じて、特定の機能動作を設定したり複数の機能動作をトグル切り替えしたりするものであってもよい。
また、上述した実施形態においては、図1に示したように、コアユニット160としてプログラミングボード120に接続される専用の装置を適用した場合について説明したが、本発明はこの形態に限定されるものではない。例えばスマートフォンやタブレット等の汎用のモバイル端末に、少なくとも上述したコアユニット160と同様に、プログラミングボード120において取得された入力操作情報に基づいて、ターゲット機器210の動作状態を制御するためのプログラムを生成するための専用のアプリケーションソフトウェア(コンパイラ)をインストールすることにより、モバイル端末をコアユニット160として適用するものであってもよい。
<変形例>
次に、上述した実施形態に係るプログラミング教育装置の変形例について説明する。
図16は、本実施形態に係るプログラミング教育装置の変形例を説明するための概略図である。ここで、上述した実施形態と同等の構成については同一の符号を付して説明を簡略化する。
上述した実施形態においては、プレイシート260の任意の区画262に設置されたマーカ264に埋め込まれた情報のうち、イベント情報を読み取ることにより、ターゲット機器210が特定のイベント処理(変数処理、障害物回避処理等)を実行する場合について説明した。本発明はこれに限定されるものではなく、上記のイベント処理に加えて、又は、イベント処理に替えて、マーカ264に埋め込まれた位置情報を読み取ることにより、プレイシート260上を走行するターゲット機器210の位置を確定するとともに、移動方向を補正して移動経路からの逸脱を回避する位置補正処理を実行するものであってもよい。このターゲット機器210において実行される位置補正処理は、上述した実施形態に示したプログラミング操作により生成されるプログラムとは別個の、専用のプログラムが予めターゲット機器210に組み込まれ、制御部222において当該プログラムを実行することにより実現される。以下、本実施形態に適用可能な変形例を示す。
本実施形態の一変形例は、例えば図5(a)〜(c)に示したように、行列方向に2次元配置された各区画262を通る格子状のマーカ264が設置されたプレイシート260において、当該マーカ264として単一波長を有する塗料からなる色パターンや、単一の深さ及び形状の溝を適用した形態を有している。このような形態において、例えば図16(a)〜(c)に示すように、ターゲット機器210の制御部222は、読取部214により各区画262に連続して設置されたマーカ264を常時又は所定の周期で読み取って、ターゲット機器210をマーカ264に沿った経路上のみを移動させる。また、このとき、制御部222は、格子状に設置されたマーカ264の交点が各区画262に存在することに基づいて、ターゲット機器210がプレイシート260上を行方向及び列方向に走行した時に通過した当該交点の数を計数することにより、プレイシート260上でのターゲット機器210の相対位置(例えば始点位置から+3行目、−2列目の位置等)を確定する。そして、制御部222は、ターゲット機器210がプログラミング操作により決定された移動経路に対応するマーカ264に沿って走行していない(すなわち、移動経路を逸脱している)と判断した場合には、ターゲット機器210の位置を、移動経路に対応するマーカ264上の正確な位置に戻す位置補正処理を実行して、ターゲット機器210の移動方向を補正する。すなわち、本変形例においては、ターゲット機器210の読取部214により、マーカ264の有無や形状のみが読み取られ、相対位置を規定する位置情報として位置補正処理に用いられる。これにより、本変形例によれば、ターゲット機器210をプレイシート260上の所定の移動経路に沿って正確に移動させることができる。
ここで、本変形例においては、プレイシート260上に格子状に設置されたマーカ264において、任意の区画262内のマーカ264に、例えば上記の単一波長の色パターンや単一の深さ及び形状の溝とは異なる、特定の波長の色パターンや特定の深さや形状の溝等を適用して、個別のイベント情報として定義することにより、ターゲット機器210を移動経路に沿って正確に動作させつつ、上述した実施形態に示したように、移動経路上の任意の位置でターゲット機器210に特定のイベント処理を実行させることができる。すなわち、本変形例においては、マーカ264により規定されるイベント処理が、プレイシート260上の相対位置に関連付けられていることになる。
本実施形態の他の変形例は、例えば図5(d)、(e)に示したように、行列方向に2次元配置された各区画262に個別にマーカ264が設置されたプレイシート260において、当該マーカ264として区画262ごとに、プレイシート260上での各区画262の配置位置を示す固有のコードパターンや固有の波長を有する塗料からなる色パターン、固有の深さ及び形状の溝や凹凸パターン、或いは、配置位置に対応する固有の情報を保持するICチップを適用した形態を有している。このような形態において、例えば図16(d)、(e)に示すように、ターゲット機器210の制御部222は、読取部214により各区画262に個別に設置されたマーカ264を読み取って、ターゲット機器210をマーカ264の配置に沿って移動させる。また、このとき、制御部222は、各区画262に個別に設置されたマーカ264が、プレイシート260上での各区画262の配置位置を示す固有のパターンや形状、配置情報等を有していることに基づいて、プレイシート260上でのターゲット機器210の絶対位置(例えば5行3列目の位置等)を確定する。そして、制御部222は、ターゲット機器210が移動経路上の各区画262に設置されたマーカ264に沿って走行していない(すなわち、移動経路を逸脱している)と判断した場合には、ターゲット機器210の位置を、移動経路に対応する各区画262上の正確な位置に戻す位置補正処理を実行して、ターゲット機器210の移動方向を補正する。すなわち、本変形例においては、ターゲット機器210の読取部214により、マーカ264ごとの固有のパターンや形状、配置情報等が読み取られ、絶対位置を規定する位置情報として位置補正処理に用いられる。これにより、本変形例においても、ターゲット機器210をプレイシート260上の所定の移動経路に沿って正確に移動させることができる。
ここで、本変形例においては、プレイシート260上の各区画262に個別に設置されたマーカ264において、任意の区画262内のマーカ264に、例えば上記の絶対位置を示すコードパターンや色パターン、溝、凹凸パターン、或いは、ICチップに保持された情報に加え、個別のイベント情報を定義するパターンや形状、情報等を適用することより、ターゲット機器210を移動経路に沿って正確に動作させつつ、上述した実施形態に示したように、移動経路上の任意の位置でターゲット機器210に特定のイベント処理を実行させることができる。すなわち、本変形例においては、マーカ264により規定されるイベント処理が、プレイシート260上の絶対位置に関連付けられていることになる。
このように、上述した各変形例においては、プログラミング操作に基づいて生成されたプログラムを実行して、ターゲット機器210を所定の移動経路に沿って正確に動作させつつ、当該移動経路上の任意の位置でターゲット機器210に特定のイベント処理を実行させることができる。したがって、プログラミングの操作内容やターゲット機器210の動作状態を直感的に把握し易くすることができ、プログラミングの学習効果の向上を期待することができる。
なお、上述した変形例においては、図16(d)に示したように、プレイシート260上の全ての区画262に個別にマーカ264を設置した形態を示したが、本発明はこれに限定されるものではなく、例えば、少なくともターゲット機器210の移動経路を網羅する領域の各区画262にのみマーカ264が設置されているものであってもよい。
なお、上述した実施形態及び各変形例においては、年少者やプログラミングの初心者を対象とするプログラミング教育装置について説明したが、本発明はこれに限定されるものではなく、タンジブルな入力操作、及び、視覚を通して操作内容やターゲット機器の動作状態を把握、理解できる特徴を有していることから、例えば身体の機能回復のためのリハビリテーションを必要とする人を対象とするものであってもよい。
以上、本発明のいくつかの実施形態について説明したが、本発明は、上述した実施形態に限定されるものではなく、特許請求の範囲に記載された発明とその均等の範囲とを含むものである。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
(付記)
[1]
本体を有する情報記録部と、
プログラムに従って、前記情報記録部の本体における1以上の位置で動作するタンジブルな被制御部と、
前記被制御部が従う前記プログラムに関する情報が、前記情報記録部の本体における前記1以上の位置のいずれかの位置に対応付けて記録された機能特定部と、
を備え、
前記被制御部は、前記情報記録部の前記いずれかの位置に対応付けて前記機能特定部に記録された前記情報を、前記情報記録部の前記いずれかの位置に存するときに読み取り、読み取った前記情報に基づいて、前記プログラムに含まれる処理を実行することを特徴とするプログラム処理装置。
[2]
前記プログラムは、前記被制御部の動作を変化させるような変数を内部的に保持し、
前記被制御部は、前記情報記録部の前記いずれかの位置に存するときに、前記情報を読み取ったことに応じて、前記プログラムが保持する前記変数を更新する処理を前記処理として実行することを特徴とする[1]に記載のプログラム処理装置。
[3]
前記被制御部は、前記情報記録部の前記いずれかの位置に存するときに、前記情報を読み取ったことに応じて、前記プログラムに含まれるイベント処理を前記処理として実行することを特徴とする[1]又は[2]に記載のプログラム処理装置。
[4]
前記被制御部は、前記プログラムに従って、前記情報記録部の本体における複数の位置に対応する経路に沿って移動し、
前記被制御部の前記経路が対応する前記情報記録部の前記本体における前記複数の位置を指示する経路指示部と、
前記経路指示部により指示された前記複数の位置に対応する前記経路に沿って前記被制御部を移動させる命令を有するプログラムを、前記プログラムとして生成するプログラム生成部と、
をさらに備えることを特徴とする[1]乃至[3]のいずれかに記載のプログラム処理装置。
[5]
前記経路指示部は、
平面方向に配置された複数の部分を有し、前記複数の部分のうちの2以上の部分が指示されることにより前記経路の指示を受け付ける部分指示部を備え、
前記情報記録部の前記本体における前記複数の位置は、前記経路指示部の前記複数の部分に1対1の関係で対応していて、
前記情報記録部の前記複数の位置と、前記経路指示部の前記複数の部分とは、相対位置が互いに対応していることを特徴とす[4]に記載のプログラム処理装置。
[6]
前記経路指示部は、前記複数の部分のいずれかの部分に対応付けられた通知部をさらに備え、
前記情報記録部の前記いずれかの位置での前記被制御部の動作状態を、当該いずれかの位置に対応する前記経路指示部の前記いずれかの部分に対応付けられた前記通知部を介して通知することを特徴とする[5]に記載のプログラム処理装置。
[7]
前記被制御部は、
前記プログラムに従って前記機能特定部上において前記被制御部を移動させる移動部と、
前記被制御部が移動中に、移動した前記機能特定部上の前記相対位置に記録された前記特定の情報を読み取る読取部と、
前記プログラムに従って前記移動部、前記読取部を制御する制御部と、
を備えることを特徴とする[5]又は[6]に記載のプログラム処理装置。
[8]
前記機能特定部は、前記情報記録部の前記いずれかの位置に前記プログラムに関する前記情報を対応付けるユーザ操作を受け付け可能であることを特徴とする[1]乃至[7]のいずれかに記載のプログラム処理装置。
[9]
前記情報記録部の前記いずれかの位置に対応付けて記録された前記プログラムに関する前記情報は、前記情報記録部の前記複数の位置の中での前記いずれかの位置の相対位置を示す相対位置情報を有することを特徴とする[1]乃至[8]のいずれかに記載のプログラム処理装置。
[10]
前記被制御部は、前記情報記録部の前記いずれかの位置に対応付けて記録された前記情報が有する前記相対位置情報を読み取ったことに応じて、前記被制御部の位置を補正することを特徴とする[9]に記載のプログラム処理装置。
[11]
プログラム処理装置の制御方法であって、
前記プログラム処理装置は、本体を有する情報記録部と、プログラムに従って、前記情報記録部の本体における1以上の位置で動作するタンジブルな被制御部と、前記被制御部が従う前記プログラムに関する情報が、前記情報記録部の本体における前記1以上の位置のいずれかの位置に対応付けて記録された機能特定部と、を備え、
前記情報記録部の前記いずれかの位置に対応付けて前記機能特定部に記録された前記情報を、前記被制御部が前記情報記録部の前記いずれかの位置に存するときに、前記被制御部に読み取らせ、読み取らせた前記情報に基づいて、前記プログラムに含まれる処理を前記被制御部に実行させることを特徴とするプログラム処理装置の制御方法。
[12]
プログラム処理装置を制御するための制御プログラムであって、
前記プログラム処理装置は、本体を有する情報記録部と、プログラムに従って、前記情報記録部の本体における1以上の位置で動作するタンジブルな被制御部と、前記被制御部が従う前記プログラムに関する情報が、前記情報記録部の本体における前記1以上の位置のいずれかの位置に対応付けて記録された機能特定部と、を備え、
前記プログラム処理装置を制御するコンピュータに、
前記情報記録部の前記いずれかの位置に対応付けて前記機能特定部に記録された前記情報を、前記被制御部が前記情報記録部の前記いずれかの位置に存するときに、前記被制御部に読み取らせ、読み取らせた前記情報に基づいて、前記プログラムに含まれる処理を前記被制御部によって実行させることを特徴とする制御プログラム。