(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0018】
以下、本発明に係るプログラミング装置及びその制御プログラム、プログラミング方法について、実施形態を示して詳しく説明する。ここでは、説明を簡明にするために、概ね3歳位までの幼児を対象とし、本発明に係るプログラミング装置を適用したプログラミング教育装置を用いて、移動体であるターゲット機器の動作状態を制御するプログラムを生成する場合について説明する。
【0019】
<第1の実施形態>
(プログラミング教育装置)
図1は、本発明に係るプログラミング装置を適用したプログラミング教育装置の第1の実施形態を示す概略図である。また、
図2は、本実施形態に係るプログラミング教育装置に適用される構成例を示す機能ブロック図であり、
図3は、本実施形態に係るプログラミング教育装置に適用される他の構成例を示す機能ブロック図である。
【0020】
第1の実施形態に係るプログラミング教育装置は、例えば
図1に示すように、大別して、プログラム制御装置100と、ターゲット機器200とを有している。プログラム制御装置100は、プログラミング教育の対象者であるユーザによる入力操作を受け付け、受け付けた入力操作に応じた情報を取得して、ターゲット機器200の動作状態を制御するプログラムを生成する。また、ターゲット機器200は、タンジブルな、又はタンジブルでない移動体であって、プログラム制御装置100から転送されたプログラムを実行することにより動作状態が制御される。以下、プログラム制御装置100及びターゲット機器200について、詳しく説明する。
【0021】
(プログラム制御装置)
プログラム制御装置100は、例えば
図1に示すように、いずれもタンジブルである、プログラミングボード120と、プログラミングブロック140と、コアユニット160と、プログラミング用ガイドシート(以下、「ガイドシート」と略記する)180と、を有している。
【0022】
(プログラミングボード120)
プログラミングボード120は、現実空間内において物理的に直接触れることができるタンジブルな物体であり、例えば
図1に示すように、同一の平面形状を有する複数のタンジブルな領域102が相互に隣接して行列方向に2次元配置されたプログラミングエリア104が、一面側(図面、上面)に設けられた略平板状の形状を有している。このプログラミングエリア104は、ユーザが後述するようなタンジブルな入力操作により指示した情報を取得する入力装置として機能し、プログラミングエリア104の各領域102は、後述するターゲット機器200を動作させる際の絶対座標系での位置に対応する。ここで、各領域102は、例えば
図1示すように、正方形や長方形等の矩形状の平面形状を有して格子状に配列されている。なお、各領域102の平面形状は、矩形状の他、八角形等の多角形状や円形状を有するものであってもよい。
【0023】
プログラミングボード120は、具体的には、例えば
図2に示すように、指示検出部122と、識別変移部124と、ブロックインターフェース部(以下、「ブロックI/F部」と略記する)126と、記憶部128と、外部インターフェース部(以下、「外部I/F部」と略記する)130と、制御部132と、を有している。
【0024】
指示検出部122は、プログラミングエリア104の各領域102へのユーザによる指示の有無を検出する。具体的には、指示検出部122は、例えば
図2に示すように、プログラミングエリア104の各領域102に対応して個別に設けられたタッチセンサ、或いは、プッシュスイッチ等のメカニカルスイッチを有している。そして、指示検出部122は、このタッチセンサによりユーザの指等が各領域102に接触した状態、又は、プッシュスイッチにより各領域102を押下した状態を検出すると、プログラミングエリア104上での当該領域(指示領域)102の位置を特定する。指示検出部122により取得された指示領域102の位置に関する情報(以下、「指示位置情報」と記す)は、後述する記憶部128の記憶領域に順次記憶される。ここで、指示検出部122に適用されるタッチセンサは、静電容量方式であってもよいし、感圧方式であってもよい。また、指示検出部122に適用されるプッシュスイッチは、ユーザによる押下操作のたびにオン状態とオフ状態が切り替わるとともに、押下操作後に各プッシュスイッチ上面の高さがプログラミングエリア104の上面高さ(便宜的に「基準高さ」と記す)に復帰する(すなわち、プッシュスイッチの上面高さが常に基準高さに戻る)機構を有していることが好ましい。
【0025】
なお、
図2においては、指示検出部122として、プログラミングエリア104の各領域102に対応してタッチセンサ又はプッシュスイッチを個別に設けた形態を示したが、本発明はこの形態に限定されるものではない。例えば
図3に示すように、指示検出部122として、プログラミングエリア104の全域にわたり共通して設けられたタッチパネルを有しているものであってもよい。この場合には、指示検出部122は、ユーザの指等がタッチパネルの各領域102に対応する位置に接触した状態を検出することにより、プログラミングエリア104上での当該指示領域102の位置を特定する。この場合においても、タッチパネルは、静電容量方式であってもよいし、感圧方式であってもよい。このような形態によれば、指示検出部122のタッチパネルの解像度を向上させてより高精細に指示領域102を検出することができるので、ターゲット機器200の移動経路を直線状(或いは、直交方向)の経路だけでなく、滑らかな曲線を含む経路に設定することができる。なお、
図3には、後述するように、識別変移部124として、プログラミングエリア104の全域に共通する発光パネルや表示パネルを設けた形態を示したが、指示検出部122として上記のタッチパネルを設けた形態であれば、識別変移部124は各領域102に対応して個別に設けられているものであってもよい。
【0026】
識別変移部124は、ユーザにより指示された領域(指示領域)を、指示されていない他の領域に対して視覚的に識別可能な状態に変移させる。具体的には、識別変移部124は、例えば
図2に示すように、プログラミングエリア104の各領域102に対応して個別に設けられた発光部、或いは、表示部を有している。ここで、識別変移部124に適用される発光部は、例えば発光ダイオード(LED)を適用することができ、表示部は、例えば液晶や有機EL素子による表示方式を適用することができる。そして、識別変移部124は、プログラミングボード120を用いたプログラミング操作の際に、指示検出部122によりユーザの指示が検出された領域102の発光部を所定の発光色や発光強度、発光パターンで発光させたり、表示部に表示される画像を変化させたりすることにより、視覚的に他の領域102との識別を可能にする。
【0027】
また、識別変移部124は、プログラミング操作に基づいて生成されたプログラムを実行して、ターゲット機器200を動作させる際に、当該ターゲット機器200の移動位置に対応した領域102の発光部を所定の発光色や発光強度、発光パターンで発光させたり、表示部に表示される画像を変化させたりすることにより、視覚的に他の領域102との識別を可能にする。なお、プログラミング操作時及びプログラム実行時における識別変移部124の変移状態の例(発光部の発光状態)については、後述するプログラミング方法において詳しく説明する。
【0028】
なお、
図2においては、識別変移部124として、プログラミングエリア104の各領域102に対応して発光部又は表示部を個別に設けた形態を示したが、本発明はこの形態に限定されるものではない。例えば
図3に示すように、識別変移部124として、プログラミングエリア104の全域にわたり共通して設けられた発光パネルや表示パネルを有しているものであってもよい。この場合には、識別変移部124は、プログラミング操作の際に、ユーザが指示した領域102に対応する発光パネルの領域を所定の発光色や発光強度、発光パターンで発光させたり、表示パネルの当該領域に表示される画像を変化させたりすることにより、視覚的に他の領域102との識別を可能にする。また、識別変移部124は、プログラミング操作に基づいて生成されたプログラムを実行する際に、ターゲット機器200の移動位置に対応する発光パネルの領域を所定の発光色や発光強度、発光パターンで発光させたり、表示パネルに表示される画像を変化させたりすることにより、視覚的に他の領域との識別を可能にする。なお、識別変移部124に適用される発光パネルや表示パネルは、例えばLEDを2次元配列したパネルや、液晶表示パネル、有機EL表示パネルを適用することができる。このような形態によれば、識別変移部124の発光パネルや表示パネルの解像度を向上させてより高精細で多彩な発光動作や表示動作を行うことができるので、プログラミング操作時やプログラム実行時にターゲット機器200の移動経路や対応する領域を鮮明かつ明確に識別することができる。なお、
図3には、上述したように、指示検出部122として、プログラミングエリア104の全域に共通するタッチパネルを設けた形態を示したが、識別変移部124として、上記の発光パネルや表示パネルを設けた形態であれば、指示検出部122は各領域102に対応して個別に設けられているものであってもよい。また、識別変移部124は、上記の発光部又は表示部に加え、音響部や振動部をさらに備え、発音や振動の振幅や周波数、パターンを変化させる形態を有しているものであってもよい。これによれば、ユーザの視覚に加え聴覚や触覚を通して、より確実に指示領域102の識別が可能になる。
【0029】
ブロックI/F部126は、プログラミングエリア104の各領域102に載置されたプログラミングブロック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)等の近距離無線通信技術による方式や、赤外線等を用いた光通信方式を適用することができ、また、接触型のインターフェースを適用する場合には、端子電極相互を直接接続する方式を適用することができる。
【0030】
なお、指示検出部122として静電容量方式のタッチセンサやタッチパネルを有している場合には、プログラミングブロック140の一部又は全部に人体と同程度の誘電体を用いることにより、プログラミングエリア104上にプログラミングブロック140が載置(接触)されたか否か(プログラミングブロック140の有無)を、指示検出部122により検出するものであってもよい。また、指示検出部122として感圧方式のタッチセンサやタッチパネル、或いは、プッシュスイッチを有している場合には、プログラミングブロック140でプログラミングエリア104を軽く押圧することにより、プログラミングエリア104上にプログラミングブロック140が載置(接触)されたか否か(プログラミングブロック140の有無)を、指示検出部122により検出するものであってもよい。
【0031】
記憶部128は、指示検出部122により取得された指示領域102の位置に関する指示位置情報を、記憶領域に順次記憶する。ここで、記憶部128の記憶領域に記憶された各指示位置情報を時系列的に並べることにより、ユーザの指示順序に関する情報(以下「順序情報」と記す)が得られる。この指示位置情報及び順序情報は、ユーザのプログラミング操作により動作状態が制御されるターゲット機器200の移動経路を規定する。すなわち、ユーザがプログラミングエリア104の2つ以上の連続する領域102を指示することにより、ターゲット機器200の移動経路を規定する仮想経路が決定される。換言すると、プログラミングエリア104において、ユーザが2つ以上の連続する領域102を指示することにより仮想経路が決定され、当該仮想経路内の互いに隣接する2つの領域102同士を繋ぐことによりできる線分の集まりを第1形状とすると、当該第1形状に対応する経路(本実施形態においては、第1形状の相似形状となる形状を有する経路)がターゲット機器200の移動経路と規定される。また、記憶部128は、ブロックI/F部126により取得されたプログラミングブロック140の位置に関するブロック位置情報、及び、プログラミングブロック140に設定された特定の機能動作に関する機能情報を、相互に関連付けて記憶する。さらに、記憶部128は、後述する制御部132においてプログラミングボード120の各部の動作を制御するためのプログラムや各種の情報を記憶するものであってもよい。すなわち、記憶部128は、RAM(ランダムアクセスメモリ)及びROM(読み出し専用メモリ)を有するものである。
【0032】
外部I/F部130は、プログラミングボード120と後述するコアユニット160との間で通信を行い、記憶部128の記憶領域に記憶された指示位置情報、順序情報、ブロック位置情報、機能情報(以下、これらの情報を「入力操作情報」と総称する)をコアユニット160に送信する。具体的には、外部I/F部130は、非接触型、又は、接触型のインターフェースを有している。ここで、外部I/F部130として、非接触型のインターフェースを適用する場合には、例えばNFCやBluetooth(登録商標)、Wi-Fi(Wireless Fidelity;登録商標)等の無線通信方式や、赤外線等を用いた光通信方式を適用することができ、また、接触型のインターフェースを適用する場合には、各種の通信ケーブルを用いた有線通信方式や、端子電極相互を直接接続する方式を適用することができる。
【0033】
制御部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へ送信する。
【0034】
(プログラミングブロック140)
プログラミングブロック140は、例えば
図1に示すように、現実空間内において物理的に直接触れることができるタンジブルな物体であり、略立方体(又は、略直方体)形状を有し、ユーザによりプログラミングボード120のプログラミングエリア104上の任意の指示領域102に載置される。このプログラミングブロック140は、ターゲット機器200を動作させる際に、プログラミングエリア104の領域102間の移動を伴わない特定の機能動作を規定する入力装置として機能する。ここで、プログラミングブロック140は、プログラミングエリア104上に単体で(すなわち、一段のみ)載置されるものであってもよいし、複数段(すなわち、複数個)積み重ねて載置されるものであってもよい。また、プログラミングブロック140の立体形状は、立方体や直方体に限定されるものではなく、プログラミングエリア104上に安定して載置することができ、且つ、プログラミングブロック140相互が安定して積み重ねることができるものであれば、任意の多面体形状を有するものであってもよいし、この例に限られないが略円柱形状や略円錐形状、略裁頭円錐形状、略球形状、略半球形状などのように表面の一部が曲面であるものであってもよい。また、プログラミングエリア104上にプログラミングブロック140を安定して載置、又は、プログラミングブロック140同士を安定して載置し、且つ、後述する機能情報を確実に送信するためには、載置するプログラミングブロック140の下面と、載置されるプログラミングボード120の上面、又は、他のプログラミングブロック140の上面とが適切に密着することが好ましい。そのために、例えば接触面となる両面が互いに係合する凹凸形状を有しているものであってもよいし、両面が磁力等により吸着するように形成されているものであってもよい。
【0035】
プログラミングブロック140は、具体的には、例えば
図2に示すように、ブロックI/F部142と、識別変移部144と、記憶部146と、制御部148と、を有している。
【0036】
ブロックI/F部142は、プログラミングブロック140とプログラミングボード120との間で通信を行い、後述する記憶部146の記憶領域に記憶された機能情報を直接プログラミングボード120に送信する。また、プログラミングエリア104上にプログラミングブロック140が複数段積み重ねられている場合には、ブロックI/F部142は、プログラミングブロック140間で通信を行い、上段のプログラミングブロック140から送信された機能情報を下段側のプログラミングブロック140、又は、プログラミングボード120に順次転送する。これにより、積み重ねられた各プログラミングブロック140の記憶部146の記憶領域に記憶された機能情報が、当該プログラミングブロック140の積み重ねの順に(上段から下段へ順番に、又は、下段から上段へ順番に)、プログラミングボード120の記憶部128の記憶領域に記憶される。
【0037】
具体的には、ブロックI/F部142は、プログラミングブロック140がプログラミングボード120に接触する載置面側(
図1中、立方体形状の下面側)、及び、当該接触面に対向し、上段に積み重ねられるプログラミングブロック140に接触する面側(
図1中、立方体形状の上面側)に個別に設けられた非接触型、又は、接触型のインターフェースを有している。そして、ブロックI/F部142は、この非接触型又は接触型のインターフェースによりプログラミングブロック140がプログラミングエリア104の指示領域に載置された状態、及び、プログラミングブロック140上に他のプログラミングブロック140が積み重ねられた状態を検出すると、プログラミングブロック140ごとに予め設定されたターゲット機器200の特定の機能動作に関する機能情報を記憶部146の記憶領域から読み出して、プログラミングボード120に直接、又は、下段側のプログラミングブロック140を介して送信する。ここで、プログラミングブロック140とプログラミングボード120との間に適用されるインターフェースと、プログラミングブロック140間に適用されるインターフェースとは、同一の方式であることが好ましく、上述したプログラミングボード120のブロックI/F部126に示した各種の方式を適用することができる。
【0038】
なお、本実施形態においては、立方体形状を有するプログラミングブロック140において、プログラミングボード120に接触する面側(立方体形状の下面側)、及び、上段のプログラミングブロック140に接触する面側(立方体形状の下面側)の2面に個別のブロックI/F部142を設けた形態を示すが、本発明はこの形態に限定されるものではない。例えば、立方体のどの面がプログラミングボード120に接触する載置面になった場合であっても、また、どの面に他のプログラミングブロック140が積み重ねられて接触する面になった場合であっても、プログラミングボード120や他のプログラミングブロック140との間で機能情報等の送受信が可能なように、ブロックI/F部142が全6面に個別に、又は、共通して設けられているものであってもよい。
【0039】
識別変移部144は、上述したプログラミングボード120の識別変移部124と同様に、発光部或いは表示部を有し、プログラミングボード120を用いたプログラミング操作の際に、ブロックI/F部142によりプログラミングブロック140がプログラミングエリア104の各領域102に載置された状態が検出されると、発光部を所定の発光状態で発光させたり、表示部に表示される画像を変化させたりすることにより、視覚的に他のプログラミングブロック140との識別を可能にする。
【0040】
なお、この識別変移部144に適用される表示部は、電力を使用せずに表示される画像を変化させるものであってもよい。例えば、プログラミングボード120の内部にはプログラミングエリア104の各領域102に対応する部分に永久磁石が設置され、プログラミングブロック140の内部にも永久磁石が設置されているものとする。そして、プログラミングブロック140を領域102へ載置したことに伴い、プログラミングボード120内の永久磁石とプログラミングブロック140内の永久磁石との間に生じる引力又は反発力によって、表示部が回転することで画像を変化させるというように、磁力を利用したものであってもよい。また、プログラミングブロック140のうち少なくともプログラミングボード120に載置される側に、プログラミングボード120に載置されることにより内部へ向けて押圧変位される凸部を設けておいてもよい。そして、プログラミングブロック140を領域102へ載置したことに伴い、プログラミングブロック140の凸部が内方へ押圧変位され、その変位に連動して表示部が回転することで画像を変化させるというように、メカニカルな機構を有するものであってもよい。
【0041】
また、識別変移部144は、プログラミング操作に基づいて生成されたプログラムを実行して、ターゲット機器200に予め設定された特定の機能動作を実行させる際に、当該ターゲット機器200の機能動作を規定した各プログラミングブロック140の発光部を所定の発光状態で発光させたり、表示部に表示される画像を変化させたりすることにより、視覚的に他のプログラミングブロック140との識別を可能にする。
【0042】
なお、識別変移部144は、上述したプログラミングボード120の識別変移部124と同様に、上記の発光部又は表示部に加え、音響部や振動部をさらに備え、発音や振動の振幅や周波数、パターンを変化させる形態を有しているものであってもよい。これによれば、ユーザの視覚に加え聴覚や触覚を通して、より確実に機能動作を規定したプログラミングブロック140の識別が可能になる。
【0043】
記憶部146は、ターゲット機器200を動作させる際に、プログラミングエリア104の領域102間の移動を伴わない特定の機能動作(いわゆる、アクション)を規定するID情報である機能情報を記憶している。ここで、ターゲット機器200に設定可能な機能動作としては、プログラミングブロック140が載置された領域102に対応する位置で、例えば発光部を所定の発光状態で発光させる動作や、表示部に表示される画像を変化させる動作、音響部により所定の音や楽音を発生する動作、振動部を所定のパターンで振動させる動作、ターゲット機器200を当該位置で回転させたりジャンプさせたりする動作、撮像部により周囲を撮影する動作、各種のセンサによりセンシングする動作等を有する。機能情報は、これらの機能動作を単独で実行することを規定するものであってもよいし、複数の機能動作を組み合わせて実行することを規定するものであってもよい。すなわち、ターゲット機器200は、これらの機能動作を実現するために、発光部や音響部、振動部、撮像部、各種センサ等を機能部として予め備えている。
【0044】
また、記憶部146は、当該プログラミングブロック140上に積み重ねられた他のプログラミングブロック140から送信された機能情報を一時的に記憶領域に記憶する。さらに、記憶部146は、後述する制御部148においてプログラミングブロック140の各部の動作を制御するためのプログラムや各種の情報を記憶するものであってもよい。すなわち、記憶部146は、RAM及びROMを有するものである。
【0045】
なお、本実施形態においては、各プログラミングブロック140に一の機能動作、又は、複数の機能動作の組み合わせを規定する機能情報が記憶部146の記憶領域に予め固定的に記憶されている形態を示すが、本発明はこの形態に限定されるものではない。例えば、一つのプログラミングブロック140について複数の機能動作を規定する機能情報が予め記憶部146の記憶領域に記憶され、ソフトウェアによる設定変更や切替スイッチの操作、重力センサや加速度センサによるプログラミングブロック140の傾きや衝撃の検知等により、複数の機能動作のうちから任意の機能動作が選択されて設定されるものであってもよい。
【0046】
また、他の形態として、例えば立方体形状を有するプログラミングブロック140において、立方体の6面全てにブロックI/F部142を有するとともに、6面の各々に異なる機能動作を対応付けて、各機能動作に関する機能情報を記憶部146の記憶領域に記憶した形態を有するものであってもよい。そして、各面のブロックI/F部142によりプログラミングボード120に接触する面を検出することにより、当該接触面に対応付けられた機能動作に関する機能情報が記憶部146の記憶領域から読み出されてプログラミングボード120に送信される。これによれば、プログラミングボード120に接触するプログラミングブロック140の面に応じて、複数種類の機能動作が設定される。加えて、プログラミングブロック140の一面以上の各面に異なる機能動作を対応付ける場合には、例えば、プログラミングボード120に接触する面(立方体の下面)に対向する面(立方体の上面)に、当該接触面に対応付けられた機能動作を表す記号やイラスト、文字、画像等を表記して、ターゲット機器200に実行させる機能動作の内容を、視覚を通して直感的に認識できるようにしてもよい。
【0047】
制御部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に順次転送する。
【0048】
(コアユニット160)
コアユニット160は、例えば
図1に示すように、一面側(図面、上面)に操作スイッチが配置された直方体形状や平板形状を有している。このコアユニット160は、プログラミングボード120を用いたプログラミング操作により取得された情報に基づいて、ターゲット機器200を動作させるためのプログラムを生成するとともに、当該プログラムを実行して、ターゲット機器200の動作状態を制御するコントロール装置として機能する。
【0049】
コアユニット160は、具体的には、例えば
図2に示すように、操作部162と、外部I/F部164と、記憶部166と、通信インターフェース部(以下、「通信I/F部」と略記する) 168と、制御部170と、電源部172と、を有している。
【0050】
操作部162は、ユーザが操作を行うことにより上述したプログラミングボード120を用いたプログラミング操作により取得された情報に基づいてプログラムを生成するとともに、当該プログラムの実行状態を指示する。具体的には、操作部162は、生成したプログラムの実行状態を選択する複数のプッシュスイッチやタッチセンサ、或いは、タッチパネルを有している。ここで、操作部162には、例えば
図1に示すように、後述する制御部170により生成されたプログラム全体を一括して実行する一括実行スイッチ112や、当該プログラムの命令を1ステップずつ実行するステップ実行スイッチ114、実行されているプログラムを停止する実行停止スイッチ116、ターゲット機器200を初期位置(スタート地点)まで戻すホームスイッチ118等のプッシュスイッチが配置されている。そして、操作部162は、ユーザがいずれかのスイッチを押下した状態、又は、スイッチに接触した状態を検出すると、当該スイッチ操作に応じてプログラムの生成及び実行状態を指示する制御信号を後述する制御部170に出力する。
【0051】
外部I/F部164は、コアユニット160とプログラミングボード120との間で通信を行い、プログラミングボード120から送信された入力操作情報を受信して後述する記憶部166の記憶領域に記憶する。記憶部166は、プログラミングボード120から外部I/F部164を介して受信した入力操作情報を所定の記憶領域に記憶するとともに、これらの情報に基づいて、後述する制御部170により生成されたプログラムを別の記憶領域に記憶する。また、記憶部166は、制御部170において受信した入力操作情報に基づいてターゲット機器200の動作状態を制御するためのプログラムを生成するためのプログラムや、コアユニット160の各部の動作を制御するためのプログラム、その他、各種の情報を記憶するものであってもよい。すなわち、記憶部166は、RAM及びROMを有するものである。
【0052】
通信I/F部168は、コアユニット160とターゲット機器200との間で通信を行い、記憶部166の記憶領域に記憶されたプログラムをターゲット機器200に送信する。具体的には、通信I/F部168は、非接触型、又は、接触型のインターフェースを有し、非接触型のインターフェースを適用する場合には、例えばWi-Fi(登録商標)やBluetooth(登録商標)等の無線通信方式や、赤外線等を用いた光通信方式を適用することができ、また、接触型のインターフェースを適用する場合には、通信ケーブルを用いた有線通信方式を適用することができる。
【0053】
制御部170は、上記の操作部162、外部I/F部164、記憶部166、通信I/F部168、及び、後述する電源部172を有するコアユニット160の各部の動作を制御するコンピュータのプロセッサである。特に、制御部170は、操作部162によりプログラムの生成、実行に関するユーザの指示を検出した場合には、プログラミングボード120から送信される入力操作情報に基づいて、ターゲット機器200の動作状態を制御するプログラムを生成する。
【0054】
具体的には、制御部170は、操作部162において、一括実行スイッチ112又はステップ実行スイッチ114が操作されて押下又は接触状態を検出すると、プログラミングボード120から送信された入力操作情報(指示位置情報、順序情報、ブロック位置情報、機能情報)に基づいて、ターゲット機器200の動作状態(移動及び機能動作)を制御するための命令を有するプログラムを生成する。ここで、プログラミングボード120を用いたプログラミング操作により取得された上記の各情報はプログラムのソースコードに対応し、制御部170は、このソースコードをターゲット機器200において実行可能な機械語からなるプログラムに変換(コンパイル)する。変換処理されたプログラムは、記憶部166の記憶領域に記憶される。なお、この変換処理は、プログラム全体を一括して行うものであってもよいし、プログラムの1ステップの命令ごとに行うものであってもよい。
【0055】
また、制御部170は、操作部162におけるスイッチ操作に応じて、生成されたプログラムをターゲット機器200に送信してターゲット機器200の動作状態を制御する。さらに、制御部170は、電源部172によりコアユニット160内の各部、及び、プログラミングボード120、プログラミングブロック140への駆動用の電力の供給状態を制御する。
【0056】
電源部172は、コアユニット160内の各部に駆動用の電力を供給する。また、電源部172は、コアユニット160とプログラミングボード120とを接続することにより外部I/F部164、130を介して、プログラミングボード120内の各部に駆動用の電力を供給する。プログラミングボード120に供給された電力は、ブロックI/F部126、142を介して、プログラミングブロック140にさらに供給される。ここで、電源部172は、例えば商用交流電源から電力が供給されるものであってもよいし、乾電池等の一次電池やリチウムイオン電池等の二次電池を備えるものであってもよいし、環境発電技術による発電部を備えるものであってもよい。
【0057】
なお、本実施形態においては、コアユニット160にのみ電源部を備え、プログラミングボード120及びプログラミングブロック140には電源部を備えていない形態を示した。この形態においては、コアユニット160とプログラミングボード120とを接続することにより双方の外部I/F部164、130に設けられた給電機構を介して、コアユニット160からプログラミングボード120へ駆動用の電力が供給される。さらに、プログラミングボード120上にプログラミングブロック140が載置されることにより双方のブロックI/F部126、142に設けられた給電機構を介して、プログラミングボード120からプログラミングブロック140へ駆動用の電力が供給される。ここで、外部I/F部130、164や、ブロックI/F部126、142に設けられる給電機構としては、電磁誘導方式等の非接触型、又は、ケーブルや端子電極を直接接続する接触型の給電機構を適用することができる。
【0058】
また、本発明に適用可能な他の形態としては、プログラミングボード120及びプログラミングブロック140の一方、又は、双方が固有の電源部を有するものであってもよい。プログラミングボード120が固有の電源部を有する形態においては、ブロックI/F部126、142に設けられた給電機構を介して、プログラミングボード120からプログラミングブロック140へ駆動用の電力が供給されるものであってもよい。
【0059】
少なくともプログラミングボード120が固有の電源部を有する形態においては、プログラミングボード120にコアユニット160を接続しない状態においても、ユーザはプログラミングボード120やプログラミングブロック140を用いてプログラミング操作を行うことができる。また、コアユニット160をプログラミングボード120から離間させて独立した状態で(すなわち、コアユニット160単体で)、操作部162の各スイッチを操作することにより、入力操作情報に基づくプログラム生成処理や、ターゲット機器200の動作状態の制御を行うことができる。
【0060】
(ガイドシート180)
ガイドシート180は、例えば
図1に示すように、プログラミングボード120のプログラミングエリア104上に載置して装着される光透過性の(透明又は半透明な)タンジブルな薄膜や薄板であって、ユーザのプログラミング操作を支援、誘導するための画像(イラストや写真、数字、文字、記号等)が予め表記されている。言い換えれば、ガイドシート180にはターゲット機器200の移動経路を規定する仮想経路を特定する情報が記録されている。ここで、ガイドシート180には、プログラミングボード120のプログラミングエリア104の各領域102に対応する複数の区画106が設けられ、上記画像は、この区画106を基準単位として表記されている。具体的には、例えば、ガイドシート180に道路や通路を表記する場合には、隣接する区画106間で画像が連続するように設置され、家屋や樹木等を表記する場合には、一又は複数の区画106単位で画像が設置される。
【0061】
また、上述したように、ターゲット機器200の移動経路を規定する仮想経路を決定するプログラミング操作の際、ユーザは、ガイドシート180の複数の区画106のうちのいずれか1つの区画106にユーザの指等が接触する、又は、その1つの区画106を押下する。指示検出部122として、静電容量方式のタッチセンサを適用する場合には、ガイドシート180はプログラミングエリア104を保護しつつ、ユーザの指等の誘電体の接触状態をタッチセンサに適切に伝達することができる性質(誘電特性)を有している。この場合、指示検出部122は上述の接触操作に応じて、接触された1つの区画106の直下にあるプログラミングボード120のプログラミングエリア104の1つの領域102が直接接触された場合と同様に、その1つの領域102における静電容量の変化を検出することができる。また、指示検出部122として、感圧方式のタッチセンサやプッシュスイッチを適用する場合には、指示検出部122は上述の押下操作に応じて、押下された1つの区画106の直下にあるプログラミングボード120のプログラミングエリア104の1つの領域102が直接押下された場合と同様に、その1つの領域102の変位を検出することができる。
【0062】
また、プログラミングボード120上に装着されたガイドシート180の各区画106(すなわち、プログラミングエリア104の各領域102に対応する)には、上述したように、ターゲット機器200に実行させる機能動作に応じてプログラミングブロック140が載置される。このとき、プログラミングブロック140とプログラミングボード120との間でガイドシート180を介して所定の通信方式により情報が送受信される。ここで、プログラミングブロック140とプログラミングボード120のブロックI/F部142、126として、NFC等の無線通信技術による方式を適用する場合には、ガイドシート180は当該通信に使用される電磁波を透過する性質又は形態を有している。また、ブロックI/F部142、126として、赤外線通信等の光通信方式を適用する場合には、ガイドシート180は赤外光を透過する性質又は形態を有している。また、端子電極相互を直接接続する方式を適用する場合には、ガイドシート180は各区画106にプログラミングブロック140のブロックI/F部142とプログラミングボード120のブロックI/F部126とが直接接触するための開口部(貫通孔)が設けられているものであってもよいし、各区画106に上記のブロックI/F部142とブロックI/F部126とを電気的に接続するための貫通電極(ガイドシート180の表裏両面に露出した導電体)が設けられているものであってもよい。
【0063】
そして、ユーザはガイドシート180に表記されている道路や障害物等の配置に基づいて、ガイドシート180の上からプログラミングボード120の各領域102を順次指示することにより、ターゲット機器200の移動経路を規定する仮想経路を決定する。このようなプログラミング操作に関連する特定の画像が表記されたガイドシート180を、プログラミングの内容に応じて複数種類用意し、プログラミングエリア104上に装着するガイドシート180を適宜交換することにより、異なる内容のプログラミング操作を適切に支援して、プログラミング学習の効率を向上させることができる。
【0064】
また、このようなガイドシート180を用いたプログラミング操作によれば、ユーザのプログラミング操作により指示された領域102や、生成されたプログラムを実行する際にターゲット機器200の移動位置に対応する領域102を、識別変移部124により所定の発光状態で発光させたり、表示画像を変化させたりした場合であっても、当該光や画像が光透過性のガイドシート180を通して視覚的に認識される。
【0065】
(ターゲット機器200)
ターゲット機器200は、ユーザによる入力操作に基づいてプログラム制御装置100により生成されたプログラムの実行対象である。本実施形態ではターゲット機器200として、例えば
図1に示すように、現実空間内において地上を走行する実体のある自走式の玩具を適用した場合について示す。しかしながら、ターゲット機器200は当該生成されたプログラムに基づいて動作状態が制御されるものであればよく、タンジブルな移動体の他に、スマートフォンやタブレット等のモバイル端末、パーソナルコンピュータ等の情報通信機器において実行されるアプリケーションソフトウェア又は当該アプリケーションソフトウェアにより実現される仮想空間内のオブジェクト、すなわち、タンジブルでない移動体であってよい。
【0066】
ターゲット機器200がタンジブルな移動体である場合には、ターゲット機器200は、通信I/F部、駆動部、記憶部、機能部、電源部、及び、制御部を備える。ターゲット機器200の通信I/F部は、コアユニット160の通信I/F部168と通信を行い、コアユニット160の制御部170により生成されたプログラムを受信する。記憶部は、ターゲット機器200の通信I/F部が受信したプログラムを記憶する。制御部は、ターゲット機器200の記憶部に記憶されたプログラムに従って、後述する機能部や、駆動部、電源部などを制御し、ターゲット機器200を動作させる。
【0067】
ターゲット機器200は、プログラミングボード120を用いたプログラミング操作において、ガイドシート180が装着されたプログラミングエリア104の各領域102を、ユーザが順次指示することにより決定された仮想経路に対応する移動経路に沿って移動する。ここで、ターゲット機器200は、プログラミング操作の際に使用したガイドシート180の画像を拡大した画像(相似画像)が表記されたプレイシート202上を、上記の移動経路に沿って移動する。また、ターゲット機器200は、光を発する発光部や音声を出力する音響部、それ自体が振動することによりターゲット機器200の筐体を振動させる振動部、ターゲット機器200の外部の画像を撮影する撮像部、ユーザの音声を認識するマイクロフォン、及び、マイクロフォンから入力された音声を認識する音声センサやターゲット機器200の外部の明るさを検出する照度センサ等の各種センサのいずれかを有する機能部を備える。ターゲット機器200の制御部は、記憶部に記憶されたプログラムに従って、プログラミングブロック140が載置された領域102に対応する位置までターゲット機器200を移動させてから、上述の機能部のいずれかを制御することにより、そのプログラミングブロック140に設定された機能動作を、当該位置でターゲット機器200に実行させる。
【0068】
なお、本実施形態に適用されるターゲット機器200は、
図1に示した地上を走行する機器に限定されるものではなく、特定の平面内を移動するものであれば、例えば、一定の高度を保持して移動するドローンのような飛行体であってもよいし、水上を移動する船体であってもよいし、一定の水深を保持して移動する潜水体であってもよい。ここで、ターゲット機器200が飛行体や潜水体の場合には、移動経路の始点で当該ターゲット機器200が地上から一定の高度に上昇、又は、水面から一定の水深に潜水し、移動経路の終点で地上に下降、又は、水面に浮上する動作を行う。
【0069】
また、ターゲット機器200として、モバイル端末や情報通信機器において実行されるアプリケーションソフトウェアを適用する場合には、当該アプリケーションソフトウェアにより実現される仮想空間内において、前述のオブジェクト(例えばゲーム画面内のキャラクタやアイテム等)の動作状態を制御して当該仮想空間内の任意の経路で移動させたり、任意の機能を実行させたりする。
【0070】
(プログラミング操作及びプログラム生成、実行方法)
次に、本実施形態に係るプログラミング教育装置におけるプログラミング操作及びプログラム生成、実行方法(プログラミング方法)について説明する。
【0071】
図4は、本実施形態に係るプログラミング教育装置におけるプログラミング操作及びプログラム生成、実行方法の一例(ノーマルモード)を示すフローチャートである。
図5、
図6は、本実施形態に適用されるプログラミング操作処理を説明するための概略図である。また、
図7、
図8は、本実施形態に適用されるプログラム生成、実行処理(一括処理)を説明するための概略図であり、
図9、
図10は、本実施形態に適用されるプログラム生成、実行処理(ステップ処理)を説明するための概略図である。なお、
図4のフローチャートのうちの、モードの切り替え設定に係る処理動作(ステップS104)については、後述する変形例1において詳しく述べるため、本実施形態では説明を適宜省略する。
【0072】
本実施形態に係るプログラミング教育装置におけるプログラミング操作及びプログラム生成、実行方法においては、大別して、プログラミングボード120とプログラミングブロック140とガイドシート180とを用いた入力操作によるプログラミング操作処理と、プログラミングボード120とコアユニット160とを用いた入力操作情報に基づくプログラム生成処理と、コアユニット160とターゲット機器200とを用いたプログラム実行処理と、が実行される。プログラミング教育装置における、これらの各制御処理は、上述したプログラミングボード120やプログラミングブロック140、コアユニット160、ターゲット機器200に設けられた各制御部において、独立して又は相互に連携して特定の制御プログラムを実行することにより実現されるものである。
【0073】
(プログラミング操作処理)
本実施形態に係るプログラミング教育装置におけるプログラミング操作処理においては、
図4のフローチャート及び
図5(a)、(b)に示すように、まず、ユーザは、プログラミング教育装置のプログラミングボード120とコアユニット160とを接続した状態でコアユニット160の電源を投入することによりプログラム制御装置100を起動するとともに、ターゲット機器200の電源を投入して起動する(ステップS102)。また、プログラミングボード120のプログラミングエリア104を覆うようにガイドシート180を装着する。
【0074】
ここで、ガイドシート180には、
図2に示すように、後述する全移動経路情報及び隣接領域情報が記憶されたICチップ182が設けられている。また、プログラミングボード120には、上記の装着されたガイドシート180のICチップ182に記憶された隣接領域情報を読み出すICチップ読出し部184が設けられている。このICチップ読出し部184は、近距離無線通信などの通信方式によりICチップ182に記憶されたデータを読み出す。プログラミングボード120の電源が投入されて、且つ、ガイドシート180にプログラミングボード120が装着されると、プログラミングボード120のICチップ読出し部184によって、ガイドシート180のICチップ182に記憶された、当該ガイドシート180に固有の全移動経路情報及び隣接領域情報が読み出されて、プログラミングボード120の制御部132の制御により記憶部128の記憶領域に記憶される。
【0075】
次いで、ガイドシート180が装着されたプログラミングボード120及びプログラミングブロック140を用いてプログラミング操作処理を実行する。具体的には、まず、
図6(a)に示すように、ユーザが、プログラミングボード120に装着されたガイドシート180に表記された画像を参照しつつ、ターゲット機器200を動作させる際の移動経路に対応する複数の区画106(すなわち、プログラミングエリア104の複数の領域102)に接触して、又は、当該区画106を押下して順次指示する。ここで、ユーザは、ターゲット機器200の移動経路を決定するために、ガイドシート180上の始点(スタート)Rsと終点(ゴール)Rgを含む2以上の連続する区画106の全てについて、ターゲット機器200の移動順序に従って順次指示する。
【0076】
ここで、上記の全移動経路情報及び隣接領域情報について詳述する。本実施形態では、プログラミングエリア104の複数の領域102は行列方向に2次元配置されていて、その配列方向(行方向又は列方向)に沿って連続して配置された2つの領域102は相互に隣接するものとみなす。この場合、相互に隣接する2つの領域102は適宜定められる閾値以下の距離をおいて離れて配置されていてもよい。全移動経路情報は、始点Rsと終点Rgを含む2以上の連続する区画106に対応する2以上の領域102の、プログラミングボード120のプログラミングエリア104内の相対位置を特定する情報である。隣接領域情報は、複数の領域102のうちのいずれか2つの領域102が相互に隣接しているか否かを示す情報である。全移動経路情報及び隣接領域情報は、例えばプログラミングボード120の記憶部128の記憶領域に記憶されている。記憶領域に記憶されている全移動経路情報及び隣接領域情報は、上述のようにガイドシート180のICチップ182に記憶され、上記のICチップ読出し部184によって読み出されたものであってよく、或いは、プログラミングボード120の記憶部128の記憶領域に複数の隣接領域情報が予め記憶されていて、装着したガイドシート180の種類に対応したものをユーザ操作により選択したものであってもよい。以下でさらに詳述するように、ガイドシート180のICチップ182に記憶された全移動経路情報および隣接領域情報は、ターゲット機器200の移動経路を規定する仮想経路を特定する情報である。
【0077】
本実施形態では、
図5(a)に示すように、注目するある領域102(便宜的に「102X」と記す)を基準として、行方向に一つ左に配置されている領域102Lと、一つ右に配置されている領域102Rと、列方向に一つ上に配置されている領域102Uと、一つ下に配置されている領域102Dとの、4つの領域102L、102R、102U、102Dが、上記の注目するある領域102Xに隣接する領域102である。そして、この注目するある領域102Xを特定するための情報と、その情報に関連付けられて、これら4つの隣接する領域102L、102R、102U、102Dを特定するための情報が、プログラミングボード120の記憶部128の記憶領域に、隣接領域情報として記憶されている。ここで、領域102を特定するための情報は、プログラミングボード120のプログラミングエリア104上の各領域102の相対位置についての情報を含んでいて、具体的には、一例に過ぎないが、プログラミングボード120の最左行から数えて何行目、及び、最上列から数えて何列目の領域102であるかを特定する数値であってよい。
【0078】
なお、複数の領域102のうちのどの領域を、注目するある領域102Xに隣接する領域とするかについては、プログラミングにかかる学習の目的に応じて適宜設定してよい。例えば、上記の4つの領域102L、102R、102U、102Dに加えて、注目するある領域102Xを基準として配列方向に交差する斜め方向(45°方向)に沿って最も近くに配置された4つの領域102を、当該注目するある領域102Xと隣接する領域102であるとしてもよい。
【0079】
ここで、本実施形態のプログラミングボード120のプログラミングエリア104には、その全体にわたって複数の領域102が行列方向にくまなく配置されている。しかしながら、ガイドシート180を装着した場合には、ユーザは、すべての領域102に対してプログラミング操作を許容するとは限らない。
【0080】
具体的には、
図5(b)に示すように、ガイドシート180のうちの仮想経路を指示する黒い線が描かれた複数の区画106の直下にある複数の領域102に対してのみプログラミング操作を許容し、それ以外の複数の領域102に対してはプログラミング操作を禁止している。この場合、注目するある領域102Xに隣接する4つの(斜め方向を含める場合には8つの)領域102のうちいずれかに、プログラミング操作を禁止するべき領域(指示禁止領域)が隣接している場合、この指示禁止領域は当該注目するある領域102Xに隣接する領域ではないとする。具体的には、注目するある領域102Xに対応する隣接領域情報が、指示禁止領域に対応する情報を含まないようにすればよい。ここで、指示禁止領域以外の領域、すなわち、プログラミング操作が許容されている領域を便宜上「指示許容領域」とする。始点Rsを例として説明すると、その始点Rsの区画106に対応する1つの領域102の列方向下側は領域102が存在せず、また、行方向右側と列方向上側に隣接する領域102は仮想経路を指示する黒い線が書かれていないので、これらの3つの領域102は、始点Rsに対応する1つの領域102の隣接領域情報には含めない。従って、始点Rsに対応する1つの領域102を特定するための情報と、その情報に関連付けて、行方向左側に隣接する1つの領域102(始点Rsの区画106に対応する1つの領域102を「102X」とした場合、領域102Lとなる)を特定するための情報だけを、当該1つの領域102に対応する隣接領域情報として含むようにすればよい。
【0081】
プログラミングボード120の制御部132は、指示検出部122によりユーザによる入力操作が検出された1つの領域102が、プログラミング操作が許容された領域であるか否かの判断を行う。具体的には、プログラミング操作を開始して最初に領域を指示する場合は、全移動経路情報に基づいて、始点Rsに対応する1つの領域102へのプログラミング操作のみが許容される。従って、最初に領域を指示するときは、始点Rsに対応しないいずれかの領域102へのプログラミング操作は無効と判断し、プログラミングボード120に設けられた図示しないスピーカーや表示部により「プログラムできない領域です。」などのエラーメッセージを出力させたり、その領域102の発光部を発光させないようにしたり、通常とは異なる発光色や発光パターンで発光させたりする制御を行う。
【0082】
始点Rsに対応する1つの領域102へのプログラミング操作がユーザにより行われると、プログラミングボード120の制御部132は、始点Rsに対応する1つの領域102の隣接領域情報に含まれるいずれかの領域102へのプログラミング操作を待機する。上記の隣接領域情報に含まれるいずれかの領域102へのプログラミング操作が行われた場合、プログラミングボード120の制御部132は、引き続き、さらに別の領域102へのプログラミング操作を待機し、上記の隣接領域情報に含まれないいずれか領域102へのプログラミング操作が行われ場合、エラーメッセージを出力する。このようにして、プログラミングボード120の制御部132は、終点Rgに対応する1つの領域102への指示が指示検出部122により検出されるまで、プログラミング操作を受け付ける。終点Rgに対応する1つの領域102への指示及び全移動経路情報により指示されたすべての領域102への指示が指示検出部122により検出されるか、又は、予め定めた操作によりプログラミング操作が終了したと判断すると、スピーカーや表示部から「プログラミングが終わりました。」などのメッセージを出力する。
【0083】
これにより、ガイドシート180を介して区画106に対応するプログラミングエリア104の領域102が指示されて、
図6(b)に示すように、ターゲット機器200の全移動経路に対応する仮想経路(始点Rs→終点Rg)が決定される(ステップS106)。このとき、プログラミングボード120の制御部132は、指示検出部122により検出された各指示領域102の指示位置情報と、それらの指示順序に関する順序情報を取得して記憶部128の記憶領域に記憶させる。また、制御部132は、各指示領域102の識別変移部124を所定の発光状態で発光させたり、表示画像を変化させたりして視覚的に識別可能な状態に変移させる(
図6(a)中では便宜的にハーフトーンで表記)。
【0084】
ここで、識別変移部124が発光部を有する場合には、制御部132は、例えば
図6(a)に示すように、指示された各領域102の発光部を所定の発光色や発光強度で常時発光(点灯)させたり、発光色を変化させたり、所定の発光パターンで発光(点減)させたりする動作を継続(保持)する。また、制御部132は、プログラミング操作処理中に、コアユニット160の操作部162に設けられたプログラム確認スイッチ(図示を省略)等を操作したり、一定時間プログラミング操作がなかったりした場合や、既定の又はユーザ操作に応じて定められたある時間間隔等の条件をトリガーとして、プログラミング操作により指示されて既に決定された移動経路の順番に従って、各領域102の発光部を時分割で順次発光させる動作を実行する。このように、各指示領域102における識別変移部124の変移状態(この場合は発光状態)を保持、又は、特定の条件をトリガーとして所定の変移状態を提示することにより、プログラミング操作の内容や進行状況、当該プログラミング操作により決定された現時点までの移動経路やターゲット機器200の移動順序等を視覚的に把握、理解し易くなる。
【0085】
また、制御部132は、前述のように、指示禁止領域へのプログラミング操作が行われた場合の他にも、プログラム制御装置100の動作に異常が発生した場合等には、スピーカーや表示部により「動作エラーです。」などのエラーメッセージを出力させたり、当該領域102の発光部を発光させないようにしたり、通常とは異なる発光色や発光パターンで発光させたりする制御を行う。これにより、プログラミング操作時の誤り等をユーザに報知する。さらに、制御部132は、プログラミングボード120が音響部や振動部を備えている場合には、上記の発光部における発光動作に加え、或いは、当該発光動作に替えて、音響部や振動部における発音や振動の振幅や周波数、パターンを変化させて、プログラミング操作時の誤り等をユーザに報知するものであってもよい。
【0086】
次いで、
図6(b)、(c)に示すように、ユーザは、上記の仮想経路となる複数の区画106(指示領域102)のうち、ターゲット機器200により特定の機能動作を実行する位置の区画106に、当該機能動作が設定されたプログラミングブロック140を載置する。ここで、ターゲット機器200により特定の位置で複数の機能動作を実行する場合には、当該位置の区画106に当該機能動作が設定された複数のプログラミングブロック140を複数段積み重ねる。この場合においても、指示禁止領域のいずれかへのプログラミング操作が行われた場合には、プログラミングボード120の制御部132は、前述のようなエラー処理を適宜行う。
【0087】
これにより、ターゲット機器200の機能動作が設定される(ステップS108)。このとき、プログラミングボード120の制御部132は、ガイドシート180を介してブロックI/F部126により検出されたプログラミングブロック140のブロック位置情報と、その機能情報を取得して記憶部128の記憶領域に記憶させる。また、プログラミングブロック140の制御部148は、ユーザが載置したプログラミングブロック140の識別変移部144を所定の発光状態で発光させたり、表示画像を変化させたりして視覚的に識別可能な状態に変移させる(
図6(c)中では便宜的にハーフトーンで表記)。
【0088】
ここで、識別変移部144が発光部を有する場合には、制御部148は、例えば
図6(c)に示すように、各プログラミングブロック140の発光部を所定の発光色や発光強度で常時発光(点灯)させたり、発光色を変化させたり、所定の発光パターンで発光(点減)させたりする動作を継続(保持)する。また、制御部148は、プログラミング操作処理中に、コアユニット160の操作部162に設けられたプログラム確認スイッチ(図示を省略)を操作したり、一定時間プログラミング操作がなかったりした場合や、既定の又はユーザ操作に応じて定められたある時間間隔等の条件をトリガーとして、プログラミング操作により載置されて既に設定された機能動作の実行順序に従って、各プログラミングブロック140の発光部を時分割で順次発光させる動作を実行する。このように、各プログラミングブロック140における識別変移部144の変移状態(この場合は発光状態)を保持、又は、特定の条件をトリガーとして所定の変移状態を提示することにより、プログラミング操作の内容や進行状況、当該プログラミング操作により設定された現時点までの機能動作やその実行順序等を視覚的に把握、理解し易くなる。
【0089】
また、制御部148は、指示禁止領域のいずれかへのプログラミング操作が行われた場合だけでなく、プログラミングブロック140が予め設定した載置禁止領域に載置されたと判断した場合、さらには、プログラム制御装置100の動作に異常が発生した場合等には、当該プログラミングブロック140の発光部を発光させないようにしたり、スピーカーや表示部により予め定めたエラーメッセージを出力させたり、通常とは異なる発光色や発光パターンで発光させたりする制御を行う。これにより、プログラミング操作時の誤り等をユーザに報知する。さらに、制御部148は、プログラミングブロック140が音響部や振動部を備えている場合には、上記の発光部における発光動作に加え、或いは、当該発光動作に替えて、音響部や振動部における発音や振動の振幅や周波数、パターンを変化させて、プログラミング操作時の誤り等をユーザに報知するものであってもよい。ここで、載置禁止領域とは、プログラミング学習の目的に応じて適宜設定してよく、例えば、
図6(a)のトンネルの絵が描かれた区画106に対応する領域102を載置禁止領域に設定してよい。この載置禁止領域の情報も前述の隣接領域情報に含まれるものとする。
【0090】
本実施形態においては、ユーザによりターゲット機器200の全移動経路に対応する仮想経路が決定され、且つ、全ての機能動作が設定されてプログラミング操作を終了するまで、上記のステップS106、S108を繰り返し実行する(ステップS110のNo)。具体的には、プログラミングボード120の記憶部128に記憶されている終点Rgの区画106に対応する1つの領域102への指示、及び、全移動経路情報により指示されたすべての領域102への指示が指示検出部122により検出されると、プログラミング操作が終了したものとプログラミングボード120の制御部132により判断される。
【0091】
なお、ステップS106、S108に示したプログラミング操作は、ターゲット機器200の移動経路を順次決定しつつ、ターゲット機器200における機能動作を順次設定するものであってもよいし、ターゲット機器200の全移動経路を決定した後、ターゲット機器200における全ての機能動作を設定するものであってもよい。また、ターゲット機器200を所定の経路で移動させる動作のみを設定し、特定の機能動作を設定しない場合には、ガイドシート180上にプログラミングブロック140を載置する、上記のステップS108のプログラミング操作は省略される。
【0092】
そして、
図6(c)に示すように、プログラミングボード120及びプログラミングブロック140を用いたプログラミング操作処理を終了した状態においては、制御部132、148は、上記のステップS106、S108に示したように、プログラミング操作により決定された全移動経路に対応する各指示領域102における識別変移部124や、全ての機能動作を設定する各プログラミングブロック140における識別変移部144の変移状態を保持したり、特定の条件をトリガーとして当該変移状態を提示したりする。これにより、プログラミング操作により決定されたターゲット機器200の全移動経路やその移動順序、全ての機能動作やその実行順序等を視覚的に把握、理解し易くなる。
【0093】
また、上記のプログラミング操作処理を終了すると(ステップS110のYes)、プログラミングボード120及びコアユニット160を用いたプログラム生成処理の実行が可能な待機状態に設定される。
【0094】
そして、
図7(a)に示すように、ユーザが、コアユニット160の操作部162に設けられたプログラム実行スイッチ(一括実行スイッチ112又はステップ実行スイッチ114)を操作すると(ステップS112)、ステップS114〜S120のプログラム一括生成、実行処理、又は、ステップS122〜S130のプログラムステップ生成、実行処理が実行される。
【0095】
(プログラム一括生成、実行処理)
上記のステップS112において、
図7(a)に示すように、ユーザが、コアユニット160に設けられた一括実行スイッチ112をオン操作すると、プログラム一括生成、実行処理が実行される。プログラム一括生成、実行処理においては、まず、コアユニット160の制御部170が、プログラミングボード120の制御部132に制御信号を送信して、上記のプログラミング操作処理により取得した指示位置情報や順序情報、ブロック位置情報、機能情報を有する入力操作情報を一括してプログラミングボード120から受信する(ステップS114)。
【0096】
次いで、制御部170は、プログラミングボード120から受信した入力操作情報をソースコードとして、ターゲット機器200の動作状態(移動及び機能動作)を制御するための命令を有するプログラムを一括して生成する(ステップS116)。制御部170において生成されたプログラムは、コアユニット160の記憶部166の記憶領域に記憶される。
【0097】
次いで、制御部170は、
図7(a)に示すように、生成されたプログラムを、通信I/F部168を介して、ターゲット機器200に一括して転送する(ステップS118)。ターゲット機器200は、転送されたプログラムを実行することにより、
図7(b)及び
図8に示すように、上述したプログラミングボード120を用いたプログラミング操作処理において決定された始点Rsから終点Rgまでの仮想経路に対応するプレイシート202上の全移動経路に沿って順次移動する全体動作を行う(ステップS120)。全体動作を行った後、
図4のフローチャートに示したプログラミング操作及びプログラム生成、実行方法に係る一連の処理動作が終了する。
【0098】
この全体動作において、コアユニット160の制御部170は、通信I/F部168を介して、ターゲット機器200からプログラムの実行状態(すなわち、現在時点におけるターゲット機器200の位置や実行中の機能、ターゲット機器200がプログラム通りに移動又は機能を実行しているか否かなど)に関する情報を、プログラム実行情報として随時受信し、プログラミングボード120の制御部132に送信する。プログラミングボード120の制御部132は、コアユニット160から受信したプログラム実行情報に基づいて、
図7(b)に示すように、現在時点におけるターゲット機器200のプレイシート202上での位置に対応する領域102を、プログラミング操作により決定された他の指示領域102とは異なる発光状態で発光させたり、表示画像を変化させたりして視覚的に識別可能な状態に変移させる(
図7(b)中では便宜的に濃いハーフトーンで表記)。
【0099】
また、
図8に示すように、ターゲット機器200が、プログラミング操作において1又は複数の機能動作を設定した位置に移動し、当該機能動作を実行している場合には、プログラミングブロック140の制御部148は、ターゲット機器200から受信したプログラム実行情報に基づいて、現在時点においてターゲット機器200が実行している機能動作に対応するプログラミングブロック140を、他のプログラミングブロック140とは異なる発光状態で発光させたり、表示画像を変化させたりして視覚的に識別可能な状態に変移させる。ここで、
図8に示すように、プログラミングブロック140が複数段積み重ねられて、複数の機能動作が設定されている場合には、制御部148は、各プログラミングブロック140を機能動作の実行順序に従って順次発光動作させる。なお、
図8においては、3段積み重ねられたプログラミングブロック140のうちの2段目のターゲット機器200の機能動作として特定の発光色で発光する場合を示し、当該機能動作に対応するプログラミングブロック140を便宜的に濃いハーフトーンで表記した。
【0100】
なお、本実施形態においては、コアユニット160はターゲット機器200と随時通信を行い、ターゲット機器200におけるプログラムの実行状態に関するプログラム実行情報を受信して、これに基づいて現在時点におけるターゲット機器200の位置に対応するプログラミングボード120の領域102、又は、プログラミングブロック140を識別可能な状態に変移(例えば発光)させる場合について説明した。本発明はこれに限定されるものではなく、コアユニット160は例えばターゲット機器200へのプログラムの転送終了、又は、ターゲット機器200におけるプログラムの実行開始のタイミングからの経過時間に基づいて(すなわち、ターゲット機器200と通信を行うことなく)、ターゲット機器200におけるプログラムの実行状態を推測して、プログラミングボード120の領域102又はプログラミングブロック140を識別可能な状態に変移させるものであってもよい。この場合、コアユニット160における推測と実際のプログラムの実行状態との誤差が過大にならないように、定期的に、又は、予め設定した位置や条件ごとに、コアユニット160がターゲット機器200と通信を行うものであってもよい。
【0101】
ここで、プログラミングボード120の識別変移部124及びプログラミングブロック140の識別変移部144がいずれも発光部を有する場合には、プログラミングボード120の制御部132及びプログラミングブロック140の制御部148は、例えば次のように発光状態を制御することにより、ターゲット機器200におけるプログラムの実行状態を視覚的に識別可能にする。これにより、ターゲット機器200におけるプログラムの実行状態等を視覚的に把握、理解し易くなる。
【0102】
制御部132、148は、例えば
図7(a)に示すように、まず、プログラミング操作により決定された全移動経路に対応する各指示領域102、及び、全ての機能動作に対応する各プログラミングブロック140の発光部を所定の発光色や発光強度で常時発光させた状態を保持する。そして、制御部132、148は、プログラム実行情報に基づいて、現在時点におけるターゲット機器200の位置に対応する領域102や、現在時点においてターゲット機器200が実行している機能動作に対応するプログラミングブロック140の発光部を、
図7(b)や
図8に示すように、他の指示領域102やプログラミングブロック140とは異なる発光色や、より高い発光強度、或いは、発光パターン(例えば、点滅)で発光させる。
【0103】
また、他の形態として、制御部132、148は、例えば、プログラム実行情報に基づいて、現在時点におけるターゲット機器200の位置に対応する領域102や、現在時点においてターゲット機器200が実行している機能動作に対応するプログラミングブロック140の発光部を所定の発光色や発光強度で発光させ、他の指示領域102やプログラミングブロック140の発光部を発光させない(消灯させる)。
【0104】
さらに他の形態として、例えば、プログラミングボード120の各領域102の識別変移部124及びプログラミングブロック140の識別変移部144はいずれも、プログラミング操作時の状況を示す第1の発光部とプログラム実行時の状況を示す第2の発光部とを別個に備えているものとする。そして、制御部132、148は、現在時点におけるターゲット機器200の位置に対応する領域102や、現在時点においてターゲット機器200が実行している機能動作に対応するプログラミングブロック140では第1及び第2の発光部をともに発光させ、他の指示領域102やプログラミングブロック140では第1の発光部のみを発光させる。
【0105】
また、ターゲット機器200において実行されているプログラムにエラーやバグが発生した場合には、制御部132、148は、ターゲット機器200から受信したプログラム実行情報に基づいて、当該エラーやバグが発生した領域102やプログラミングブロック140を、上記の通常の実行状態とは異なる発光色や発光パターンで発光させる制御を行う。これにより、プログラム実行時の異常をユーザに報知する。ここで、プログラム実行時のエラーやバグとは、例えばターゲット機器200が撮像部を備えていないにも関わらず、撮影を行う命令が実行された場合や、ターゲット機器200がプログラミング操作時には想定されていなかった障害物等に進行方向が阻まれているにも関わらず、障害物の方向にさらに移動する命令が実行された場合等である。
【0106】
(プログラムステップ生成、実行処理)
上述したステップS112において、
図9に示すように、ユーザが、コアユニット160に設けられたステップ実行スイッチ114をオン操作すると、プログラムステップ生成、実行処理が実行される。プログラムステップ生成、実行処理においては、まず、コアユニット160の制御部170が、プログラミングボード120の制御部132に制御信号を送信して、プログラミング操作処理により取得した入力操作情報を一括して、又は、プログラミング操作の一操作(ステップ)ごとに、プログラミングボード120から受信する(ステップS122)。
【0107】
次いで、制御部170は、受信した入力操作情報に基づいてターゲット機器200の動作状態(移動及び機能動作)を制御するための命令を有するプログラムを一括して、又は、プログラミング操作の一操作ごとに生成する(ステップS124)。制御部170において生成されたプログラムは、コアユニット160の記憶部166の記憶領域に記憶される。ここで、プログラミング操作の一操作とは、1つの領域102を指示する操作や1つのプログラミングブロック140を載置する操作のことであり、本実施形態のプログラムステップ生成、実行処理における一ステップとは、この一操作により指定されるステップのまとまりのことである。ただし、プログラミングブロック140が複数段積み重ねられて、且つ、これらのプログラミングブロック140により指定された複数の機能を同時に実行することが指示されている場合には、それらすべての機能を同時に実行するステップが一ステップとなる。
【0108】
次いで、制御部170は、
図9に示すように、生成されたプログラムを一操作分のプログラムごとに、通信I/F部168を介して、ターゲット機器200に転送する(ステップS126)。ターゲット機器200は、転送された一操作分のプログラムを実行することにより、上述したプログラミング操作処理において決定された仮想経路に対応するプレイシート202上の移動経路に沿って一操作分だけ移動したり、一操作分だけ機能を実行したりするステップ動作を行う(ステップS128)。
【0109】
このとき、コアユニット160の制御部170は、ターゲット機器200に転送した一操作分のプログラムに関する情報(すなわち、ターゲット機器200の移動やターゲット機器200が実行する機能を規定する情報)を、プログラミングボード120の制御部132にプログラム実行情報として送信する。プログラミングボード120の制御部132は、このプログラム実行情報に基づいて、
図9に示すように、現在時点におけるターゲット機器200のプレイシート202上での位置に対応する領域102を、他の指示領域102とは異なる発光状態で発光させたり、表示画像を変化させたりして視覚的に識別可能な状態に変移させる(
図9中では便宜的に濃いハーフトーンで表記)。
【0110】
また、
図10に示すように、ターゲット機器200が、プログラミング操作において1又は複数の機能動作を設定した位置に移動し、特定の機能動作を実行している場合には、プログラミングブロック140の制御部148は、プログラム実行情報に基づいて、現在時点においてターゲット機器200が実行している機能動作に対応するプログラミングブロック140を、他のプログラミングブロック140とは異なる発光状態で発光させたり、表示画像を変化させたりして視覚的に識別可能な状態に変移させる。
【0111】
ここで、
図10に示すように、プログラミングブロック140が複数段積み重ねられている場合には、ユーザが、コアユニット160のステップ実行スイッチ114をオン操作するたびに、プログラミング操作により設定された実行順序に従って、ターゲット機器200の機能動作が一操作分ずつ実行されるとともに、対応するプログラミングブロック140を順次発光動作させる。なお、
図10においては、3段積み重ねられたプログラミングブロック140のうちの2段目のターゲット機器200の機能動作として特定の発光色で発光する場合を示し、当該機能動作に対応するプログラミングブロック140を便宜的に濃いハーフトーンで表記した。
【0112】
ステップS128の処理動作を実行した後、コアユニット160の制御部170は、ステップS128においてターゲット機器200に実行させたステップ動作が、プログラミング操作処理により取得した入力操作情報のうちの最後の入力操作情報に対応するものであるか否かを判定する(ステップS130)。すなわち、コアユニット160の制御部170は、ターゲット機器200がプレイシート202上の移動経路の終点位置まで移動し、且つ、当該終点位置に1又は複数のプログラミングブロック140が積み重ねられている場合にはそれらすべてのプログラミングブロック140に対応する機能をターゲット機器200が実行し終わっているか否かを判定する。
【0113】
コアユニット160の制御部170が、ステップS128においてターゲット機器200に実行させたステップ動作が最後の入力操作情報に対応するものであると判定した場合(ステップS130のYes)には、
図4のフローチャートに示したプログラミング操作及びプログラム生成、実行方法に係る一連の処理動作が終了する。一方、制御部170が、ステップS128においてターゲット機器200に実行させたステップ動作が最後の入力操作情報に対応するものでないと判定した場合(ステップS130のNo)には、前述のステップS112へ遷移する。このステップS112では、ユーザが、コアユニット160に設けられた一括実行スイッチ112、又は、ステップ実行スイッチ114のいずれをオン操作したかを判定する。
【0114】
一括実行スイッチ112がオン操作されたと判定した場合、コアユニット160の制御部170は、プログラミング操作処理により取得した入力操作情報のうち、まだ実行していないすべての入力操作情報について、前述のプログラム一括生成、実行処理を行う(ステップS114〜S120)。すべての入力操作情報に対応する動作を行った後、
図4のフローチャートに示したプログラミング操作及びプログラム生成、実行方法に係る一連の処理動作が終了する。また、ステップ実行スイッチ114がオン操作されたと判定した場合、コアユニット160の制御部170は、前述のステップS122〜S130に従って、プログラムステップ生成、実行処理が実行される。なお、本実施形態においては、
図4に示した一連の処理動作を、便宜的に「ノーマルモード」と呼称する。
【0115】
このように、本実施形態においては、プログラミングボード120とプログラミングブロック140とコアユニット160とからなるタンジブルなプログラム制御装置100を用いて、プログラミングボード120上の任意の領域102に接触又は押下して指示するプログラミング操作により、絶対座標系でのターゲット機器200の移動経路を決定することができる。また、本実施形態においては、プログラミングブロック140をプログラミングボード120上の任意の領域102に載置するプログラミング操作により、絶対座標系の任意の位置でターゲット機器200に実行させたい機能動作を設定することができる。
【0116】
また、本実施形態においては、プログラミング操作時に決定された移動経路に対応するプログラミングボード120上の領域102や、ターゲット機器200の機能動作に対応するプログラミングブロック140を、プログラミング操作に基づいて生成されたプログラムの実行時に、又は、プログラムの実行の前後(例えば、プログラミング操作中)に、視覚的に他の領域102やプログラミングブロック140と識別が可能なように変移させることができる。
【0117】
したがって、本実施形態によれば、幼児等の年少者であっても、ターゲット機器200の移動と各種の機能動作を組み合わせたプログラミングを容易に行うことができるとともに、その操作内容やターゲット機器200の動作状態を視覚を通して直感的に把握し易くすることができ、プログラミングの学習効果の向上を期待することができる。
【0118】
なお、上述したプログラミング操作及びプログラム生成、実行方法においては、プログラミング操作処理の終了後(ステップS110)、ユーザが、コアユニット160の操作部162に設けられたプログラム実行スイッチ(一括実行スイッチ112又はステップ実行スイッチ114)を操作することにより(ステップS112)、プログラミング操作処理により取得した入力操作情報を、プログラミングボード120からコアユニット160に送信する形態(ステップS114、S122)を示したが、本発明はこれに限定されるものではない。例えば、プログラミング操作処理中にプログラミングボード120において入力操作情報を取得した際には、当該入力操作情報を随時、又は、所定のタイミングや定期的にコアユニット160に送信するものであってもよい。
【0119】
また、上述したプログラミング操作及びプログラム生成、実行方法においては、ターゲット機器200の移動経路の始点から終点に対応するプログラミングエリア104の領域102を順次指示することにより移動経路を決定する手法について説明したが、本発明はこれに限定されるものではない。例えばプログラミング操作時に時間的に連続する順序関係にあるが、相互に隣接しない2つの領域102が指示された場合には、当該指示領域102間の未指示の領域102を自動的に指示領域に設定して移動経路を決定する補間処理を行うものであってもよい。
【0120】
具体的には、プログラミングエリア104において、相互に隣接しない2つの領域102が連続して指示された場合には、補間処理として、当該領域102間の最短距離や最短時間となる経路を設定するものであってもよいし、当該領域102間に複数の経路があり、且つ、移動経路を決定する際に予め条件(例えば、最適なコストや必須の通過地点等)がある場合には、その条件を加味して最良の経路を設定するものであってもよい。ここで、最良の経路を設定する際の条件であるコストとは、各領域102や設定される経路を通過する際に発生する費用又は総費用であって、予め各領域102に個別のコストが関係付けられているものである。このような補間処理については、例えばプログラミングボード120の制御部132において実行されるプログラミング操作処理に予め補間処理が組み込まれているものであってもよいし、例えば図示を省略した補間設定スイッチを操作することにより、補間処理機能をオン、オフするものであってもよい。
【0121】
なお、上述した実施形態においては、
図5〜
図10に示したように、プログラミングボード120のプログラミングエリア104上にガイドシート180を密着して装着した状態でプログラミング操作を行い、ガイドシート180の相似画像が表記されたプレイシート202上を、ターゲット機器200が移動する場合について説明したが、本発明はこれに限定されるものではなく、次のような形態を有しているものであってもよい。
【0122】
図11、
図12は、本実施形態に係るプログラミング教育装置(プログラミング装置)において、ガイドシートを有さない構成例を示す概略図である。ここで、上述した実施形態と同等の構成についてはその説明を簡略化する。
【0123】
すなわち、本実施形態においては、プログラミング教育装置がガイドシート180を用いることなくプログラミング操作を行うものであってもよく、また、ターゲット機器200がプレイシート202を有さないものであってもよい。この場合には、
図11(a)に示すように、ユーザがターゲット機器の移動経路や機能動作の実行状態をイメージして、ガイドシートが装着されていないプログラミングボード120のプログラミングエリア104の各領域102に直接接触又は押下して指示することにより移動経路を決定し、さらに、指示領域102のうちの任意の領域102にプログラミングブロック140を載置することによりターゲット機器200の機能動作を設定する。ここで、ユーザが最初に指示したプログラミングエリア104の領域102は、ターゲット機器200の移動経路の始点に対応し、最後に指示した領域102は、移動経路の終点に対応する。また、この場合には、ターゲット機器200は、上記のガイドシート180を用いない状態でのプログラミング操作により生成されたプログラムに従って、プレイシート202のない特定の平面内を移動経路に沿って移動する。
【0124】
また、ガイドシート180を有さない形態においては、例えばプログラミングボード120のプログラミングエリア104の上面に、上述したガイドシート180に表記された画像と同等の画像が直接表記されているものであってもよい。また、
図11(b)に示すように、識別変移部124として各領域102に設けられた発光部や表示部、又は、プログラミングエリア104の全域に共通して設けられた発光パネルや表示パネルに、上述したガイドシート180に表記された画像と同等の画像GPや、プログラミング操作を支援、誘導するための画像GP等を表示するものであってもよい。
図11(b)に示した形態においては、識別変移部124を用いて表示される画像GP等のデータを書き替えることにより、プログラミングエリア104に表示される画像GPを適宜変更することができる。
【0125】
また、ガイドシート180を有さない形態においては、プログラミングボード120の各領域102に対応して設けられる指示検出部122として、ユーザによる押下操作のたびにオン状態とオフ状態が切り替わるとともに、オン状態での上面の高さがプログラミングエリア104の上面高さ(基準高さ)に比較して変移するスイッチ機構を備えたプッシュスイッチ等を適用した形態を有しているものであってもよい。具体的には、各プッシュスイッチは、例えば
図12(a)に示すように、1回目の押下操作によりプッシュスイッチの上面がプログラミングエリア104の基準高さに比較して沈み込んだ状態(凹状態)に変移するとともに、電気的にオン状態に移行し、2回目の押下操作によりプッシュスイッチの上面が基準高さに戻るとともに、電気的にオフ状態に移行する。なお、プッシュスイッチは、上記のように押下操作に対してスイッチの上面が沈み込んで(凹状態に変移して)オン状態になるものに限らず、例えば
図12(b)に示すように、押下操作に対してスイッチの上面が突出して(凸状態に変移して)オン状態になるものであってもよい。このように、ユーザにより指示された領域102が視覚的に識別可能な状態に変移することにより、プログラミング操作の進行状況が把握、理解し易くなる。すなわち、
図12に示した形態においては、指示検出部122が識別変移部124としての機能も兼ね備えている。なお、この形態においても、プログラミングボード120の各領域102は、識別変移部124として発光部や表示部を有しているものであってもよく、上記の指示検出部122により指示領域102が凹状態又は凸状態に変移して電気的にオン状態になるとともに、所定の発光状態で発光したり、表示画像が変化したりするものであってもよい。
【0126】
なお、上述した実施形態においては、
図6〜
図10に示したように、プログラミングボード120のプログラミングエリア104上の指示領域102に、プログラミングブロック140を載置することによりターゲット機器200の機能動作を設定する場合について説明したが、本発明はこれに限定されるものではなく、次のような形態を有しているものであってもよい。
【0127】
本実施形態において、プログラミングブロック140を用いることなくプログラミング操作を行う場合(すなわち、プログラミングブロック140を用いたプログラミング操作を省略した場合)には、ユーザがプログラミングボード120のプログラミングエリア104の各領域102を順次指示することにより、ターゲット機器200の移動経路を規定する仮想経路のみが決定され、ターゲット機器200の移動動作のみに関するプログラムが生成される。すなわち、本実施形態において、ターゲット機器200の移動動作のみを制御する場合には、プログラミング操作時にターゲット機器200の機能動作が設定されたプログラミングブロック140を必要としない。
【0128】
一方、本発明は、プログラミングボード120を用いてプログラミング操作を行う形態において、プログラミングブロック140を用いることなく、例えばプログラミングボード120の各領域102の指示検出部122の検出機能を用いて、ターゲット機器200の機能動作を設定するものであってもよい。具体的には、プログラミングエリア104の各領域102に設けられた指示検出部122はタッチセンサやプッシュスイッチにより、ユーザによる当該領域102への指示(接触又は押下)の有無を検出する。また、プログラミングボード120の記憶部128の記憶領域には、指示検出部122により検出されるユーザの指示方法や指示状態と、ターゲット機器200の機能動作とを関連付けた情報が記憶されている。プログラミングボード120の制御部132は、各領域102への指示方法や指示状態に応じて、記憶部128の記憶領域に記憶されたターゲット機器200の機能動作を読み出して、当該領域102の指示位置情報に関連付けて記憶部128の記憶領域に記憶させる。
【0129】
ここで、指示検出部122により検出される指示方法や指示状態と、記憶部128の記憶領域に記憶されたターゲット機器200の機能動作との関連付けは、例えば、ユーザによる領域102への接触又は押下の回数や、接触又は押下の時間に応じて、特定の機能動作をトグル切り替え(1つの機能動作のオン、オフ、又は、2つ以上の異なる機能動作の順次切り替え)する形態を適用することができる。また、他の形態として、ユーザによる領域102への接触又は押下の際の力の大きさや、ダブルクリックなどの操作の種類に応じて、個別の機能動作を設定するものであってもよい。
【0130】
なお、上述した実施形態においては、
図1に示したように、コアユニット160としてプログラミングボード120に非接触型又は接触型のインターフェースを介して接続される専用の装置を適用した場合について説明したが、本発明はこの形態に限定されるものではなく、スマートフォンやタブレット等の汎用のモバイル端末を、コアユニット160として適用するものであってもよい。すなわち、近年市販されている汎用のモバイル端末は、上述したコアユニット160が有する操作部162、外部I/F部164、記憶部166、通信I/F部168、制御部170、電源部172の各構成として機能することができる。したがって、このようなモバイル端末に、プログラミングボード120において取得された入力操作情報に基づいて、ターゲット機器200の動作状態を制御するためのプログラムを生成するための専用のアプリケーションソフトウェア(コンパイラ)をインストールすることにより、汎用のモバイル端末を上述したコアユニット160として適用することができる。ここで、コアユニット160として汎用のモバイル端末を適用する場合には、上記のコンパイラに加え、プログラミングボード120やターゲット機器200の各種のパラメータを設定するためのソフトウェアや、上記の入力操作情報を汎用言語(テキスト)にコード変換するソフトウェア等をインストールするものであってもよい。なお、プログラミングボード120やターゲット機器200の各種のパラメータとは、プログラミングボード120における指示検出部122の検出感度や識別変移部124の発光状態や表示画像、ブロックI/F部126の送受信方式等、ターゲット機器200における駆動部の移動速度や機能部の発光状態、発音状態、振動状態、通信I/F部の通信方式等の、変更が可能な設定項目である。なお、コアユニット160としてモバイル端末を適用した形態の例については、後述する変形例4においても説明する。
【0131】
<変形例>
次に、上述した実施形態に係るプログラム制御装置を有するプログラミング教育装置の各種の変形例について説明する。
【0132】
[変形例1]
図13は、本実施形態に係るプログラミング教育装置におけるプログラミング操作及びプログラム生成、実行方法の変形例(リアルタイムモード)を示すフローチャートである。
図14、
図15は、本変形例に適用されるプログラミング操作処理及びプログラム生成、実行処理を説明するための概略図である。ここで、上述した実施形態と同等の構成についてはその説明を簡略化する。
【0133】
上述した実施形態に係るプログラミング教育装置におけるプログラミング操作及びプログラム生成、実行方法においては、プログラミング操作処理において、ターゲット機器200の全移動経路を決定するとともに、全ての機能動作を設定した後、プログラム生成処理及びプログラム実行処理を実行するノーマルモードについて説明した。本変形例においては、上述したノーマルモードに加え、プログラミング操作処理において、一操作分の入力操作を行うたびに、当該一操作分のプログラムを生成してターゲット機器200に転送して実行するリアルタイムモードを有し、ユーザが任意のモードを選択してプログラミング学習を行う。
【0134】
(プログラミング操作処理)
本変形例に係るプログラミング教育装置におけるプログラミング操作処理においては、
図13のフローチャートに示すように、まず、ユーザは、プログラミングボード120とコアユニット160とを接続してプログラム制御装置100を起動するとともに、ターゲット機器200を起動する(ステップS202)。また、プログラミングボード120のプログラミングエリア104上にガイドシート180を装着する。
【0135】
次いで、コアユニット160の制御部170は、ユーザによりモード切替スイッチ119が操作されて、ノーマルモードに設定されたか、リアルタイムモードに設定されたかを判定する(ステップS204)。ここで、モード切替スイッチ119は、上述した実施形態に示したノーマルモードでの処理動作、又は、後述するリアルタイムモードでの処理動作のいずれを実行するかを選択するスイッチであって、例えばプッシュスイッチやスライドスイッチが適用される。ここで、モード切替スイッチ119としてプッシュスイッチを適用した場合には、ユーザがモード切替スイッチ119を押下操作しない場合(ステップS204のNo)には、初期設定(デフォルト)であるノーマルモードが保持され、押下操作した場合(ステップS204のYes)には、ノーマルモードからリアルタイムモードに切り替え設定される。また、モード切替スイッチ119は、リアルタイムモードに切り替え設定された状態で、ユーザが押下操作した場合には、リアルタイムモードから再度ノーマルモードに切り替え設定される。すなわち、モード切替スイッチ119は、押下操作のたびにノーマルモードとリアルタイムモードとが交互に切り替え設定される。
【0136】
制御部170は、モード切替スイッチ119によりノーマルモードが設定されたと判定した場合には、上述した実施形態において
図4に示したフローチャートのステップS106以降の処理動作を実行する。一方、制御部170は、モード切替スイッチ119によりリアルタイムモードが設定されたと判定した場合には、以下のステップS206以降の処理動作を実行する。
【0137】
なお、このステップS204におけるモードの切り替え設定に係る処理動作は、上述した実施形態に示した
図4のフローチャートにおいても同様に実行され、ステップS104においてユーザがモード切替スイッチ119を押下操作しない場合には、初期設定であるノーマルモードが保持されてステップS106以降の処理動作が実行され、ユーザがモード切替スイッチ119を押下操作して、ノーマルモードからリアルタイムモードに切り替え設定された場合には、以下のステップS206以降の処理動作が実行される。
【0138】
リアルタイムモードが設定された場合には、ユーザは、ガイドシート180が装着されたプログラミングボード120及びプログラミングブロック140を用いて、ターゲット機器200の移動経路を決定し、又は、ターゲット機器200における機能動作を設定するプログラミング操作処理を実行する(ステップS206)。
【0139】
具体的には、ターゲット機器200の移動経路を決定するプログラミング操作処理においては、
図14に示すように、ユーザが、プログラミングボード120に装着されたガイドシート180に表記された画像を参照しつつ、ターゲット機器200を一操作分だけ動作させるための移動経路に対応する一の区画106(すなわち、プログラミングエリア104の一の領域102)に接触して、又は、当該区画106を押下して指示する。また、ターゲット機器200における機能動作を設定するプログラミング操作処理においては、
図15に示すように、ターゲット機器200により特定の機能動作を実行する一の区画106に、当該機能動作が設定されたプログラミングブロック140を載置する。
【0140】
ユーザが、上記のようなプログラミング操作を行うと、ガイドシート180を介して上記の区画106に対応するプログラミングエリア104の一の領域102が指示されて、
図14に示すように、ターゲット機器200の移動経路の一操作分に対応する仮想経路が決定される。また、
図15に示すように、プログラミングブロック140が載置された一の領域102が指示されるとともに、ターゲット機器200の機能動作が設定される。このとき、プログラミングボード120の制御部132は、指示検出部122により検出された一の指示領域102の指示位置情報とその順序情報、又は、載置されたプログラミングブロック140のブロック位置情報とその機能情報を取得して記憶部128の記憶領域に記憶させる。また、制御部132は、当該指示領域102の識別変移部124、又は、プログラミングブロック140の識別変移部144を所定の発光状態で発光させたり、表示画像を変化させたりして視覚的に識別可能な状態に変移させる(
図14、
図15中では便宜的に濃いハーフトーンで表記)。
【0141】
(プログラム生成、実行処理)
次いで、プログラミング操作処理において、一操作分の指示位置情報と順序情報、又は、ブロック位置情報と機能情報が取得されると、制御部132からコアユニット160の制御部170に制御信号が送信されて、プログラム生成、実行処理が実行される。具体的には、コアユニット160の制御部170が、プログラミング操作処理によりプログラミングボード120において取得した指示位置情報や順序情報、又は、ブロック位置情報や機能情報を有する入力操作情報を、プログラミング操作の一操作(ステップ)ごとに受信する(ステップS208)。
【0142】
次いで、コアユニット160の制御部170は、受信した一操作分の入力操作情報に基づいてターゲット機器200の動作状態(移動又は機能動作)を制御するための命令を有する一操作分のプログラムを生成する(ステップS210)。
【0143】
次いで、
図14、
図15に示すように、制御部170が、生成された一操作分のプログラムをターゲット機器200に転送することにより(ステップS212)、ターゲット機器200において、当該一操作分のプログラムが実行されて、ターゲット機器200がプレイシート202上の移動経路に沿って一操作分だけ移動するステップ動作、又は、ターゲット機器200がプレイシート202上の特定の位置で一操作分の機能動作を実行するステップ動作が行われる(ステップS214)。
【0144】
このようなターゲット機器200の動作状態を制御するためのプログラミング操作処理及びプログラム生成、実行処理は、ターゲット機器200がプレイシート202上の移動経路の終点位置に移動してプログラミング操作が終了するまで、
図14、又は、
図15に示すように、一操作ごとに繰り返し実行される(ステップS216)。なお、制御部170は、終点(ゴール)Rgに対応する一の区画106への指示(接触又は押下)を受け付けたことに応じて、プログラミング操作が終了したと判定する。他の例では、制御部170は、プログラミング操作中の任意のタイミングで、コアユニット160の実行停止スイッチ116の押下操作を受け付けたことに応じて、プログラミング操作が終了したと判定してもよい。
【0145】
このように、本変形例によれば、ノーマルモードとリアルタイムモードとを任意に切り替えることにより、ターゲット機器200の動作状態を制御するためのプログラミング操作処理における操作内容や、プログラムの実行状態を一括して、又は、一操作ごとに視覚を通して把握することができるので、直感的かつ多面的に理解し易くなり、プログラミングの学習効果の向上を期待することができる。
【0146】
[変形例2]
図16は、本実施形態に係るプログラミング教育装置におけるプログラミング操作に適用される機能動作の変形例(条件分岐、繰り返し、関数、イベント)を示す概略図である。ここで、上述した実施形態と同等の構成についてはその説明を簡略化する。
【0147】
上述した実施形態に係るプログラミング教育装置におけるプログラミング操作及びプログラム生成、実行方法においては、プログラミングボード120のプログラミングエリア104上の指示領域102に、プログラミングブロック140を載置することによりターゲット機器200の移動を伴わない機能動作(アクション)を設定する場合について説明した。本変形例においては、アクション以外の、ターゲット機器200の他の機能動作が設定されたプログラミングブロック140を、プログラミングエリア104上の指示領域102に載置することにより、ターゲット機器200を多様な動作状態で制御するプログラミング学習を行う。
【0148】
本変形例に係るプログラミング操作に適用されるプログラミングブロック140には、上述した実施形態に示した機能動作である「アクション」の他に、「条件分岐」、「繰り返し」、「関数」、「イベント」の4種類の機能動作が設定される。以下、各機能動作について説明する。
【0149】
(条件分岐)
「条件分岐」が機能動作として設定されたプログラミングブロック(条件分岐ブロック)140aを、
図16(a)に示すように、プログラミングボード120のプログラミングエリア104上の指示領域102に載置することにより、当該指示領域102に対応する移動経路上の位置におけるターゲット機器200が条件分岐の機能動作を実行するように設定される。ここで、条件分岐とは、当該機能動作に関連して予め指定された条件により、プログラミングブロック140が載置された位置以降のプログラムの実行状態が異なるような動作である。例えば
図16(a)では、条件に応じて、ターゲット機器200が移動する経路が分岐する。
【0150】
条件としては、例えば、ターゲット機器200に備えられた照度センサにより検出された照度が予め定めた値よりも大きいか否かに応じて、異なる動作を行うものであってよい。また、条件分岐ブロック140aが載置された指示領域102に対応する位置までターゲット機器200が移動すると、そこでターゲット機器200が一時停止するようにしてもよい。また、ターゲット機器200がマイクロフォンを備えており、その一時停止中にユーザが手を叩いた音を検出し、検出した音の回数に応じて、異なる動作を行うものであってよい。なお、これらは一例に過ぎず、他の条件を適用してよいことは言うまでもない。
【0151】
なお、条件の設定方法は、次のようなものを適用することができる。 例えば、140a自体がプログラマブルな構造であり、そこに条件を設定できるような機器、具体的には音を検知するのか光を検知するのか、また音であれば回数に応じてどう動作を行うのかを設定できる機器を用いる。 また、例えば、条件分岐ブロック140aの上にさらに、上述のような様々な条件のうちのいずれかの条件が予め指定された、別のプログラミングブロック140を積み重ねる。 また、例えば、条件分岐ブロック140a自体に、上述のいずれかの条件が組み込まれているものを用いる。
【0152】
(繰り返し)
「繰り返し」が機能動作として設定されたプログラミングブロック(繰り返しブロック)を、プログラミングボード120のプログラミングエリア104上の指示領域102に載置することにより、当該指示領域102に対応する移動経路上の位置におけるターゲット機器200が繰り返しの機能動作を実行するように設定される。ここで、繰り返しとは、同じ経路を指定回数だけ繰り返し移動する動作である。
【0153】
なお、繰り返しブロックの構成や設定方法は、次のようなものを適用することができる。 例えば、
図16(b)に示すように、繰り返し元ブロック140bと繰り返し先ブロック140cとを用い、両者をプログラミングエリア104上の指示領域102に載置することにより、ターゲット機器200が当該指示領域102に対応する移動経路上の位置まで進んだら、繰り返し元ブロック140bの位置から繰り返し先ブロック140cの位置へ戻る動作を、指定回数(例えば3回)だけ行う。
【0154】
また、例えば、繰り返し元ブロック140bのみを用い、繰り返し元ブロック140bをプログラミングエリア104上の指示領域102に載置することにより、ターゲット機器200が当該指示領域102に対応する位置まで進んだら、無条件でスタート位置に戻る動作を、指定回数だけ行う。
【0155】
また、例えば、繰り返し回数の指定方法は、次のようなものを適用することができる。 また、例えば、予め繰返し回数の規定されている繰り返しブロックを用いる。 また、例えば、繰り返しの回数を規定する回数ブロックを用い、繰り返し元ブロックの上に回数ブロックを積み重ねる。
【0156】
また、例えば、繰り返しブロックに設けられたダイヤルにより、繰り返し回数を指定する。 また、例えば、繰り返しブロックに設けられたテンキーと表示画面により、繰り返し回数を指定する。 また、例えば、繰り返しブロックにカウンターボタンと表示画面とが設けられ、カウンターボタンを押下することにより、繰り返し回数を指定する。
【0157】
(関数)
「関数」が機能動作として設定されたプログラミングブロック(関数ブロック)140dを、
図16(c)に示すように、プログラミングボード120のプログラミングエリア104上の指示領域102に載置することにより、当該指示領域102に対応する移動経路上の位置におけるターゲット機器200が関数の機能動作を実行するように設定される。ここで、「関数」とは例えば、上述した実施形態に示したような様々な「アクション」の1つ以上をひとまとまりにしたものである。関数の機能動作の実行が設定された指示領域102に対応する移動経路上の位置へターゲット機器200が移動したときに、その位置において、そのひとまとまりの「アクション」がまとめて実行される。具体的には、例えば、「その場で90°右へ回転する」、「予め定めた楽音を鳴らす」、「撮影する」、「その場で90°左へ回転する」という4つの「アクション」がひとまとまりになって一つの「関数」が構成されていて、ターゲット機器200が上記の位置へ移動すると、その位置でこれら4つの「アクション」を順次実行する。
【0158】
このような「関数」の具体的内容は、例えば
図16(c)に示すように、プログラミングボード120とは別の場所で、任意の「アクション」が設定された1以上のプログラミングブロック140を接続(連結配置)するというプログラミング操作により指示される。このように別の場所で連結配置されたひとまとまりの1以上のプログラミングブロック140のことを、関数本体152という。関数本体152は、始点ブロックBLsと終点ブロックBLeとを含み、それらの間に、ユーザが所望する「アクション」を指示する1以上のプログラミングブロック140が連結配置されている。プログラミング実行時にはターゲット機器200は、始点ブロックBLsと終点ブロックBLeとの間に配置された「アクション」をそれらの並び順に実行する。
【0159】
なお、
図16(c)に示すように、プログラミング操作によりプログラミングボード120上に指定される仮想経路に含まれる複数の指示領域102のうちの2以上の指示領域102に、同一の関数ブロック140dを配置してもよい。これにより、プログラミング実行時に移動経路上の異なる位置で複数回にわたって、同じひとまとまりのアクションをターゲット機器200に実行させたい場合、一つの関数をプログラミングして、且つ、上記の異なる位置に対応する複数の指示領域102にそのひとまとまりのアクションに対応する複数の関数ブロック140dを載置するだけでよい。このため、同じひとまとまりのアクションを複数回プログラミング操作する必要がなく、プログラミング時の操作量が低減されるとともに、関数を使ったプログラミングの学習効果の向上を期待することができる。
【0160】
また、互いに異なる内容を指示する二種以上の関数ブロック140dを、仮想経路に含まれる2以上の指示領域102にそれぞれ載置してもよいし、一つの指示領域102に同じ又は異なる関数ブロック140dを複数段積み重ねて配置してもよい。上述のように二種以上の関数ブロック140dを用いてプログラミング操作を行う場合は、プログラミング操作時に、各関数ブロック140dと少なくとも各始点ブロックBLsとを互いに無線又は有線によりペアリングする操作を行う。これにより、プログラミング実行時に、各関数ブロック140dにペアリングされた始点ブロックBLsを含む関数本体152のプログラミングブロック140により指示されたひとまとまりのアクションを、ターゲット機器200に実行させることができる。なお、プログラミングボード120の外部に配置される関数本体152のプログラミングブロック140と、プログラミングボード120とは非接触型又は接触型のインターフェースを介して接続されて、関数本体152の機能情報がプログラミングボード120に送信される。
【0161】
(イベント)
「イベント処理」とは割り込み処理とも言われ、ターゲット機器200の動作状態を制御するプログラムの実行中の任意のタイミングで、何らかのイベントが発生したことに応じて、ターゲット機器200が実行する処理のことである。そのようなイベントとしては、例えば、ターゲット機器200がプログラム通り動いている途中で障害物等にぶつかったことや、ユーザが「止まれ。」や「進め。」などの音声を発したこと、又は、ターゲット機器200の周囲が急に暗くなったことなどが挙げられるが、これらの例に限られるものではないことは言うまでもない。これら例示したような様々なイベントのいずれかが発生したことをターゲット機器200が検出したことをトリガーとして、そのイベントに対応させて予め設定した機能動作を、ターゲット機器200が実行する。なお、ターゲット機器200だけに限らず、プログラミングボード120、プログラミングブロック140、コアユニット160、ガイドシート180のいずれかによりイベントの発生を検出する構成であってもよい。
【0162】
イベント処理は、
図16(d)に示すように、例えばプログラミングボード120のプログラミングエリア104の周辺にイベントゾーン150を設けて、イベントブロック140eを置く。イベント処理の具体的内容は、プログラミングボード120とは別の場所で、例えば任意の「アクション」が設定された1以上のプログラミングブロック140を接続(連結配置)するというプログラミング操作により指示される。このように別の場所で連結配置されたひとまとまりの1以上のプログラミングブロック140のことを、イベント処理本体154という。このイベント処理本体154の具体的構成は、上述した関数本体152と同様であるので詳細な説明を省略する。関数ブロック140dの場合と同様に、互いに異なる内容を指示する二種以上のイベントブロック140eを、仮想経路に含まれる2以上の指示領域102にそれぞれ載置してもよいし、一つの指示領域102に同じ又は異なるイベントブロック140eを複数段積み重ねて配置してもよい。なお、プログラミングボード120の外部に配置されるイベント処理本体154のプログラミングブロック140と、プログラミングボード120とは非接触型又は接触型のインターフェースを介して接続されて、イベント処理本体154の機能情報がプログラミングボード120に送信される。
【0163】
このように、本変形例によれば、プログラミングボード120とプログラミングブロック140を用いたプログラミング操作において、プログラミングブロック140をプログラミングボード120上の任意の領域102に載置する簡易な操作により、「アクション」の「逐次実行」に加え、プログラミングブロック140に設定された「条件分岐」、「繰り返し」、「関数」、「イベント」の抽象度がより高い各機能動作をターゲット機器200に実行させるように設定することができる。
【0164】
これにより、幼児等の年少者であっても、ターゲット機器200の移動と各種の機能動作を組み合わせたプログラミングを、タンジブルな構成を用いて容易に行うことができるとともに、その操作内容やターゲット機器200の動作状態を視覚を通して直感的に把握し易くすることができ、抽象度がより高いプログラミングの学習効果の向上を期待することができる。
【0165】
なお、本変形例においては、プログラミングブロック140に設定される機能動作として、「条件分岐」、「繰り返し」、「関数」、「イベント」を個別に示して説明したが、これらは任意に組み合わせて設定するものであってもよい。また、「関数」及び「イベント」の機能動作を規定する本体部分のプログラムをプログラミングボード120とは別の場所でプログラミングする場合について説明したが、プログラミングボード120のプログラミングエリア104の周辺領域を拡張した空間で、関数本体、又は、イベント処理本体となるプログラムを生成するものであってもよい。
【0166】
[変形例3]
図17は、本実施形態に係るプログラミング教育装置(プログラミング装置)の変形例を示す概略図である。ここで、
図17(a)は、プログラミングボードとコアユニットとを一体にした形態の概略図であり、
図17(b)は、本変形例におけるプログラミングボードに適用される構成例を示す機能ブロック図である。ここで、上述した実施形態と同等の構成についてはその説明を簡略化する。
【0167】
上述した実施形態に係るプログラミング教育装置においては、プログラミングボード120とコアユニット160とを別個に設けて、非接触型又は接触型のインターフェースを介して入力操作情報の送受信や、駆動用の電力を供給する形態について説明した。本変形例においては、プログラミングボード120とコアユニット160とを一体にした形態を有している。
【0168】
本変形例においては、例えば
図17(a)に示すように、上述した実施形態に示したコアユニット160がプログラミングボード120に一体化された形態を有し、プログラミングボード120のプログラミングエリア104の周辺に、上述したコアユニット160の操作部162に設けられた各種のスイッチが配置されている。
【0169】
また、本変形例においては、例えば
図17(b)に示すように、上述したプログラミングボード120とコアユニット160が有する機能を実現するための構成を有している。ここで、記憶部129は、上述した実施形態に示したプログラミングボード120の記憶部128及びコアユニット160の記憶部166と同等の機能を有している。すなわち、記憶部129は、指示検出部122及びブロックI/F部126により取得された指示位置情報、順序情報、ブロック位置情報、機能情報を有する入力操作情報を、所定の記憶領域に記憶するとともに、当該入力操作情報に基づいて制御部133により生成されたプログラムを別の記憶領域に記憶する。また、記憶部129は、制御部133において入力操作情報に基づいてターゲット機器200の動作状態を制御するためのプログラムを生成するためのプログラムや、プログラミングボード120の各部の動作を制御するためのプログラム、その他の各種の情報を記憶するものであってもよい。すなわち、記憶部128は、RAM及びROMを有するものである。
【0170】
また、制御部133は、上述した指示検出部122、識別変移部124、ブロックI/F部126、記憶部129、操作部162、通信I/F部168、電源部172を有するプログラミングボード120の各部の動作を制御するコンピュータのプロセッサであって、上述した実施形態に示したプログラミングボード120の制御部132及びコアユニット160の制御部170と同等の機能を有している。すなわち、制御部133は、プログラミングエリア104の各領域102へのユーザの指示を検出した場合や、指示領域上にプログラミングブロック140が載置された状態を検出した場合には、取得した入力操作情報を記憶部129の記憶領域に記憶させる。また、制御部133は、入力操作情報に基づいて、ターゲット機器200の動作状態を制御するプログラムを生成するとともに、操作部162におけるスイッチ操作に応じて、生成されたプログラムをターゲット機器200に送信してターゲット機器200の動作状態を制御する。
【0171】
なお、本変形例においては、
図2に示したプログラミングボード120とコアユニット160との間で通信を行うための外部I/F部130、164は省略される。また、本変形例においては、単一の電源部172から供給される電力により、上述した各部が動作する。さらに、本変形例においても、上述した実施形態に示したように、プログラミング操作を支援、誘導するためのガイドシート180がプログラミングエリア104上に装着されているものであってもよいし、装着されてなくてもよい。また、ターゲット機器200の機能動作を設定するための手法として、
図17(a)に示したように、プログラミングブロック140を用いるものであってもよいし、プログラミングブロックを用いないものであってもよい。
【0172】
このように、プログラミングボード120とコアユニット160とを一体にすることにより、プログラミングボード120単体でプログラミング操作やプログラムの生成、ターゲット機器200の動作状態の制御までを行うことができる。このとき、本変形例によれば、各処理動作において、各種の情報の送受信を省略したり、記憶部129への記憶、読み出し回数を削減したりすることにより、全体の処理動作を簡素化することができる。また、本変形例によれば、プログラム制御装置100を構成する部品数を削減することができるとともに、プログラム制御装置100の各部へ駆動用の電力を安定して供給することができる。
【0173】
[変形例4]
図18は、本実施形態に係るプログラミング教育装置(プログラミング装置)の他の変形例を示す概略図である。また、
図19は、本変形例に係るプログラミング教育装置に適用される構成例を示す機能ブロック図である。ここで、上述した実施形態及び変形例3と同等の構成についてはその説明を簡略化する。
【0174】
上述した実施形態に係るプログラミング教育装置においては、プログラミングボード120とコアユニット160とを別個に設けて、プログラミングボード120の任意の領域102にプログラミングブロック140を載置することにより、ターゲット機器200の機能動作を設定し、プログラミングボード120において取得された入力操作情報をコアユニット160に送信することにより、ターゲット機器200の動作状態を制御するためのプログラムを生成する場合について説明した。本変形例においては、プログラミングボード120とコアユニット160の一部とを一体にした形態を有し、プログラミングエリア104上の仮想経路に機能設定用のマーカを載置又は付与し、当該マーカとプログラミングボード120の外部に配置された1以上のプログラミングブロック140とを対応付けることにより、ターゲット機器200において特定の位置で実行する機能動作を設定する。また、本変形例においては、プログラミングボード120において取得した入力操作情報を汎用のモバイル端末に送信することにより、モバイル端末においてターゲット機器200の動作状態を制御するためのプログラムを生成する形態を有している。
【0175】
本変形例においては、例えば
図18に示すように、大別して、プログラム制御装置100と、ターゲット機器200と、汎用のモバイル端末300とを有し、プログラム制御装置100は、プログラミングボード120と、プログラミングブロック140と、を有している。ここで、本変形例においては、例えば
図18に示すように、上述した実施形態に示したコアユニット160の一部がプログラミングボード120に一体化された形態を有し、プログラミングボード120のプログラミングエリア104の周辺に、上述したコアユニット160と同様に各種のスイッチ(一括実行スイッチ、ステップ実行スイッチ、実行停止スイッチ)が設けられた操作部162が配置されている。
【0176】
また、プログラミングエリア104の周辺には、機能設定ボタン136とブロック接続端子138とがそれぞれ複数配置されている。ここで、機能設定ボタン136とブロック接続端子138とは、それぞれ1対1の関係で対応するように組み合わせが設定されている。ブロック接続端子138は、ブロックI/F部126に設けられ、非接触型、又は、接触型のインターフェースを介して、プログラミングボード120の外部に配置されるプログラミングブロック140に接続される。
【0177】
また、ブロック接続端子138に接続されるプログラミングブロック140は、単独で、又は、複数個が連結して配置されることにより、一つのアクションを示す機能動作の他に、上述した変形例(
図16参照)に示したような「関数」における関数本体152や「イベント処理」におけるイベント処理本体154のように複雑な機能を設定することができる。
【0178】
具体的には、
図18において、複数(11個)配置されたブロック接続端子138のうちの、図面左側の8個のブロック接続端子138を有する端子群138Lは、プログラミングボード120上に指定された仮想経路に含まれる複数の指示領域102の一つに関連付けられて機能動作(分岐、繰り返し、関数)を設定するものである。また、複数(11個)配置されたブロック接続端子138のうちの、図面右側の3個のブロック接続端子138を有する端子群138Rは、仮想経路に含まれる指示領域102には無関係の機能動作(イベント)を設定するものである。
【0179】
また、機能設定ボタン136は、ターゲット機器200において特定の機能動作を実行する位置を設定する際にオン操作され、ユーザがプログラミングエリア104の仮想経路(
図18中ではハーフトーンの曲線で表記)上の任意の位置を指示することにより、当該位置がマーカ137により特定される。
【0180】
そして、各端子群138L、138Rの一つのブロック接続端子138に1以上のプログラミングブロック140を接続し、且つ、その一つのブロック接続端子138に対応付けられた機能設定ボタン136をオン操作して、対応するマーカ137をプログラミングボード120上で設定するというプログラミング操作を行うことにより、当該マーカに対応する移動経路上の位置におけるターゲット機器200の機能動作が設定される。
【0181】
ここで、マーカ137は上記のように、ユーザがプログラミングエリア104の仮想経路上の任意の位置に接触又は押下するタッチ操作などにより設定される。このとき、マーカ137は当該位置(又は領域)の指示検出部122により検出されて識別変移部124を発光させたり、表示画像を変化させたりして視覚的に識別させるものであってもよい。また、例えば指示検出部122として静電容量方式のタッチパネルを有している場合には、誘電体からなる部材や小部品をマーカ137として用いて仮想経路上の任意の位置に載置することにより視覚的に識別させるものであってもよい。
【0182】
また、プログラミングボード120の制御部132は、マーカ137により特定された位置情報(マーカ位置情報)と、当該機能設定ボタン136に対応して設けられたブロック接続端子138に接続されているプログラミングブロック140に設定された機能動作に関する機能情報を、相互に関連付けて入力操作情報として記憶部129の記憶領域に記憶させる。
【0183】
すなわち、本変形例においては、上述した実施形態(
図1参照)に示したように、プログラミングボード120上にプログラミングブロック140を載置することなく、プログラミングボード120では、ターゲット機器200の移動経路、及び、機能動作を実行する位置を決定するためのプログラミング操作が行われ、プログラミングボード120の外部では、プログラミングブロック140により実行する機能動作を設定するプログラミング操作が行われる。
【0184】
また、本変形例においては、例えば
図19に示すように、上述した実施形態(
図3参照)に示したプログラミングボード120と同様に、指示検出部122としてプログラミングエリア104の全域にわたり共通して設けられたタッチパネルを有するとともに、識別変移部124としてプログラミングエリア104の全域に共通する発光パネル又は表示パネルを設けた形態を有している。ここで、プログラミングエリア104の解像度を向上させることにより、
図18に示したように、タッチパネルに対して手書き操作により例えば自由曲線形状の仮想経路を指定することにより、滑らかな曲線状の移動経路を設定したり、プログラミング操作時やプログラム実行時にターゲット機器200の移動経路に対応する領域を鮮明かつ明確に発光又は表示させて識別したりすることができる。
【0185】
汎用のモバイル端末300は、上述したように、市販されているスマートフォンやタブレット等であって、非接触型、又は、接触型のインターフェースを介して、プログラミングボード120及びターゲット機器200に接続される。モバイル端末300は、その制御部(命令生成部)によって、プログラミングボード120から受信した入力操作情報に基づいて、ターゲット機器200の動作状態を制御するためのプログラムを生成して、ターゲット機器200に転送する。また、モバイル端末300は、プログラミングボード120やターゲット機器200の各種のパラメータの入力を受け付けたことに応じて、その制御部によって、これらの各種のパラメータを設定したり、ターゲット機器200を選択したりする。さらに、モバイル端末300は、その制御部によって、プログラミングボード120から受信した入力操作情報を汎用言語(テキスト)にコード変換する。すなわち、汎用のモバイル端末300は、上述したコアユニット160と同等の機能を有するものであって、これらの機能を実現するための専用のソフトウェアがインストールされている。
【0186】
そして、上述した実施形態と同様に、プログラミングボード120に設けられた操作部162、又は、モバイル端末300における操作に応じて、ターゲット機器200が設定された移動経路に沿って移動する。このとき、ターゲット機器200は、仮想経路上のマーカ137が載置又は付与された領域に対応する移動経路上の位置で、当該マーカ137に対応付けられたプログラミングブロック140により設定された機能動作を実行する。
【0187】
このように、本変形例においては、プログラミングボード120を用いてターゲット機器200の移動動作に関わるプログラミング操作を行い、プログラミングボード120外のプログラミングブロック140を用いてターゲット機器200の機能動作に関わるプログラミング操作を行っている。したがって、プログラミング操作の内容に応じて別個のインターフェースを用いることができ、直感的で段階的なプログラミング学習を実現することができる。
【0188】
また、プログラミングボード120の外部でプログラミングブロック140を用いてターゲット機器200の機能動作に関わるプログラミング操作を行うことにより、ターゲット機器200に実行させる機能動作を自由に組み合わせることができるので、複雑な処理を有する機能動作を実現することができる。
【0189】
なお、上述した実施形態及び各変形例においては、年少の幼児を対象とするプログラミング教育装置について説明したが、本発明はこれに限定されるものではなく、タンジブルな入力操作、及び、視覚を通して操作内容やターゲット機器の動作状態を把握、理解できる特徴を有していることから、例えばプログラミングの初心者を対象とするものであってもよいし、身体の機能回復のためのリハビリテーションを必要とする人を対象とするものであってもよい。
【0190】
以上、本発明のいくつかの実施形態について説明したが、本発明は、上述した実施形態に限定されるものではなく、特許請求の範囲に記載された発明とその均等の範囲とを含むものである。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
【0191】
(付記)
[1]
平面方向に配置された複数のタンジブルな部分のうちの2以上の部分がユーザ操作によって指示されたことに応じて、前記平面内の第1形状を指示する第1形状指示部と、
前記第1形状指示部により指示された前記第1形状に対応させて被制御部を移動させる命令を生成する命令生成部と、
を備えることを特徴とするプログラミング装置。
【0192】
[2]
前記複数の部分のうちのいずれかの部分に対応付けて前記被制御部が実行する機能を設定する機能設定部をさらに備え、
前記命令生成部は、
前記命令に応じて前記被制御部が前記いずれかの部分に対応する位置へ移動したときに、前記機能設定部により設定された前記機能を前記被制御部に実行させる命令を生成することを特徴とする[1]に記載のプログラミング装置。
【0193】
[3]
前記複数の部分のうちのいずれかの部分は、前記機能の設定を受け付ける受付部をさらに備え、
前記命令生成部は、
前記命令に応じて前記被制御部が前記いずれかの部分に対応する位置へ移動したときに、前記受付部が受け付けた前記機能を該被制御部に実行させる命令を生成することを特徴とする[1]又は[2]に記載のプログラミング装置。
【0194】
[4]
前記命令生成部は、
前記命令に応じて前記被制御部を前記第1形状に対応する経路に沿って前記経路の始点から終点まで移動させる命令を含む前記命令を生成する第1の命令生成モードと、
前記第1形状指示部において次の前記部分が指示されるごとに、前記次の部分の指示に対応する前記命令に応じて前記被制御部を前記第1形状に対応させて移動させる命令を含む前記命令を生成する第2の命令生成モードと、
を備えていることを特徴とする[2]又は[3]に記載のプログラミング装置。
【0195】
[5]
前記第1形状指示部の前記複数の部分に重ねて設けられ、前記第1の形状を特定する情報が記録された操作支援部をさらに備えることを特徴とする[1]乃至[4]のいずれかに記載のプログラミング装置。
【0196】
[6]
汎用のモバイル端末の制御部が前記命令生成部として機能することを特徴とする[1]乃至[5]のいずれかに記載のプログラミング装置。
【0197】
[7]
前記第1形状に対応させて移動する前記被制御部を、さらに備えることを特徴とする[1]乃至[6]に記載のプログラミング装置。
【0198】
[8]
平面方向に配置された複数のタンジブルな部分のうちの2以上の部分がユーザ操作によって指示されたことに応じて、前記平面内の第1形状を指示し、
前記指示された前記第1形状に対応させて被制御部を移動させる命令を生成する、
ことを特徴とするプログラミング方法。
【0199】
[9]
プログラミング装置を制御するための制御プログラムであって、
前記プログラミング装置は、第1形状指示部と命令生成部とを備え、
前記プログラミング装置を制御するコンピュータに、
平面方向に配置された複数のタンジブルな部分を備える前記第1形状指示部の、前記複数の部分うちの2以上の部分がユーザ操作によって指示されたことに応じて、前記平面内の第1形状を前記第1形状指示部によって指示させ、
指示された前記第1形状に対応させて被制御部を移動させる命令を、前記命令生成部によって生成させる、
ことを特徴とする制御プログラム。