以下、本発明に係るプログラミング装置及びその制御プログラム、プログラミング方法について、実施形態を示して詳しく説明する。ここでは、説明を簡明にするために、本発明に係るプログラミング装置を適用したプログラミング教育装置を用いて、移動体であるターゲット機器の動作状態を制御するプログラムを生成する場合について説明する。
<第1の実施形態>
(プログラミング教育装置)
図1は、本発明に係るプログラミング装置を適用したプログラミング教育装置の第1の実施形態を示す概略図である。また、図2は、本実施形態に係るプログラミング教育装置に適用される構成例を示す機能ブロック図であり、図3は、本実施形態に係るプログラミング教育装置に適用される他の構成例を示す機能ブロック図である。
第1の実施形態に係るプログラミング教育装置は、例えば図1に示すように、大別して、プログラム制御装置100と、ターゲット機器200とを有している。プログラム制御装置100は、プログラミング教育の対象者であるユーザによる入力操作を受け付け、受け付けた入力操作に応じた情報を取得して、ターゲット機器200の動作状態を制御するプログラムを生成する。また、ターゲット機器200は、タンジブルな、又はタンジブルでない移動体であって、プログラム制御装置100から転送されたプログラムを実行することにより、移動を含む動作状態が制御される以下、プログラム制御装置100及びターゲット機器200について、詳しく説明する。
(プログラム制御装置)
プログラム制御装置100は、例えば図1に示すように、いずれもタンジブルである、複数のプログラミングブロック120と、コアユニット160と、を有している。
(プログラミングブロック120)
プログラミングブロック120は、例えば図1に示すように、現実空間内において物理的に直接触れることができるタンジブルな物体であり、略立方体(又は、略直方体)形状を有し、後述するように、当該立方体形状の各面を介して他のプログラミングブロック120が連結接続される。このプログラミングブロック120を複数個、連結接続することにより形成される集合体の全体配置形状は、ターゲット機器200の移動経路を規定する。すなわち、プログラミングブロック120は、ターゲット機器200を動作させる際の、ターゲット機器200の移動経路を規定するための入力装置として機能する。ここで、複数のプログラミングブロック120の全体配置形状は、二次元形状(すなわち、平面的に配置された形状)を有しているものであってもよいし、三次元形状(すなわち、立体的に配置された形状)を有しているものであってもよい。また、プログラミングブロック120は、ターゲット機器200を動作させる際に、上記の移動経路上でターゲット機器200が実行する特定の機能動作を設定するための入力装置としても機能する。
なお、プログラミングブロック120は、他のプログラミングブロック120を連結接続した際に、プログラミングブロック120相互間、又は、コアユニット160との間で、後述するブロック情報や連結特定情報の送受信や駆動用の電力の授受を確実に行うことができる程度に、当該接続状態が強固かつ安定して保持されるものであることが好ましい。そのために、例えばプログラミングブロック120相互の接触面となる両面が凹凸形状を有し、互いに着脱可能に係止する構造を有しているものであってもよいし、両面が磁力等により吸着する構造を有しているものであってもよい。
また、本実施形態においては、説明を簡明にするために、プログラミングブロック120が立方体形状を有しているものとして説明するが、本発明はこれに限定されるものではなく、上記のような接続状態を保持できるものであれば、任意の多面体形状を有するものであってもよいし、この例に限られないが略円柱形状や略円錐形状、略裁頭円錐形状、略球形状、略半球形状などのように表面の一部が曲面であるものであってもよい。また、本実施形態においては、ターゲット機器200の移動動作時の始点から終点までの経路(移動経路)を規定する、連結接続された複数のプログラミングブロック120のうち、始点となるプログラミングブロック120を他のプログラミングブロック120と区別するために、便宜的に「スタートブロック120S」と記す。
プログラミングブロック120は、例えば図2に示すように、ブロックI/F部122と、識別変移部124と、記憶部126と、制御部128と、を有している。また、スタートブロック120Sは、プログラミングブロック120の上記の構成に加え、外部インターフェース部(以下、「外部I/F部」と略記する)130を、さらに有している。
ブロックI/F部122は、連結検知部と、受信部と、送信部とを有している。
連結検知部は、自己のプログラミングブロック120又はスタートブロック120Sと、他のプログラミングブロック120との連結状態を検知する。具体的には、連結検知部は、立方体の6面(便宜的に、前後左右上下の6面とする)のうちのどの面、又は、どの方向に他のプログラミングブロック120が連結接続されているか、という連結状態を特定する情報(連結特定情報)を取得する。ここで、スタートブロック120Sは、立方体の6面のうち特定の一面側の方向が、ターゲット機器200の進行方向に対応する基準方向として設定されていて、他のプログラミングブロック120が連結接続されている面について、当該基準方向(ターゲット機器200の進行方向)に対する相対的な配置(方向や位置関係)が検知される。連結検知部により取得された連結特定情報は、記憶部126の記憶領域に記憶される。
受信部は、自己のプログラミングブロック120に対して、ターゲット機器200の移動経路の終点側となる方向側(以下、便宜的に「後方側」と記す)に連結接続された他のプログラミングブロック120(すなわち、後方側のプログラミングブロック120)から、当該後方側のプログラミングブロック120が有するブロック情報を受信する。ここで、ブロック情報は、プログラミングブロック120に固有の識別情報(ID情報)や、ターゲット機器200に実行させる特定の機能動作を規定する機能情報を有している。また、後方側のプログラミングブロック120が連結特定情報を有している場合、すなわち、後方側のプログラミングブロック120のさらに後方側に他のプログラミングブロック120が連結接続されている場合には、受信部は、当該後方側のプログラミングブロック120が有する連結特定情報を受信する。受信部により受信したブロック情報や連結特定情報は、記憶部126の記憶領域に記憶される。
送信部は、自己のプログラミングブロック120に対して、ターゲット機器200の移動経路の始点側となる方向側(以下、便宜的に「前方側」と記す)に連結接続された他のプログラミングブロック120(すなわち、前方側のプログラミングブロック120)、又は、スタートブロック120Sに、自己のプログラミングブロック120が有するブロック情報を送信する。また、自己のプログラミングブロック120の後方側に他のプログラミングブロック120が連結接続されている場合には、当該後方側のプログラミングブロック120から受信したブロック情報、及び、連結検知部により取得された、後方側のプログラミングブロック120との連結状態を特定する連結特定情報を、前方側のプログラミングブロック120、又は、スタートブロック120Sに送信する。
また、各プログラミングブロック120が駆動用の電力を供給する電源部を有していない場合には、ブロックI/F部122は、上記の各構成に加え、給電及び受電機構を有し、複数のプログラミングブロック120を連結接続する際の始点となるスタートブロック120Sから受電した駆動用の電力を後方側のプログラミングブロック120に順次給電する。この場合、スタートブロック120SのブロックI/F部122は、上記の各構成に加え、給電機構を有している。
このようなブロックI/F部122は、他のプログラミングブロック120やスタートブロック120Sとの間で、上記のブロック情報や連結特定情報を送受信するために、非接触型、又は、接触型のインターフェースを有している。ここで、ブロックI/F部122として、非接触型のインターフェースを適用する場合には、例えば電子マネーカード等に用いられているNFC(Near Field Communication)等の近距離無線通信技術による方式や、赤外線等を用いた光通信方式を適用することができ、また、接触型のインターフェースを適用する場合には、端子電極相互を直接接続する方式を適用することができる。なお、ブロックI/F部122に適用されるインターフェースは、立方体の6面全て(前後左右上下の6面)に個別に設けられるものであってもよいし、6面全てに共通して設けられているものであってもよい。
識別変移部124は、例えば発光部あるいは表示部を有し、プログラミングブロック120を用いたプログラミング操作の際に、ブロックI/F部122により自己のプログラミングブロック120が他のプログラミングブロック120やスタートブロック120Sに連結接続された状態が検知されると、発光部を所定の発光状態で発光させたり、表示部に表示される画像を変化させたりすることにより、当該プログラミングブロック120を識別可能な状態にする。
なお、この識別変移部124に適用される表示部は、電力を使用せずに表示される画像を変化させるものであってもよい。例えば、各プログラミングブロック120の内部には永久磁石が設置され、プログラミングブロック120相互を連結接続することに伴い、それぞれのプログラミングブロック120内の永久磁石間に生じる引力又は反発力によって、表示部が回転することで画像を変化させるというように、磁力を利用したものであってもよい。また、プログラミングブロック120のうち少なくとも他のプログラミングブロック120に連結接続される側に、プログラミングブロック120の内部へ向けて押圧変位される凸部を設けておいてもよい。そして、プログラミングブロック120相互を連結接続することに伴い、プログラミングブロック120の凸部が内方へ押圧変位され、その変位に連動して表示部が回転することで画像を変化させるというように、メカニカルな機構を有するものであってもよい。
また、識別変移部124は、プログラミング操作に基づいて生成されたプログラムを実行して、ターゲット機器200に移動動作させたり、予め設定された特定の機能動作を実行させたりする際に、当該ターゲット機器200の移動位置や機能動作を規定したプログラミングブロック120の発光部を所定の発光状態で発光させたり、表示部に表示される画像を変化させたりすることにより、ターゲット機器200の動作状態に対応するプログラミングブロック120を識別可能な状態にする。
ここで、識別変移部124に適用される発光部は、例えば発光ダイオード(LED)を適用することができ、表示部は、例えば液晶や有機EL素子による表示方式を適用することができる。そして、識別変移部124は、プログラミング操作の際やプログラムの実行時に、発光部を所定の発光色や発光強度、発光パターンで発光させたり、表示部に表示される画像を変化させたりすることにより、視覚的に識別可能な状態に変移させる。
なお、図2においては、識別変移部124として発光部又は表示部を設けた形態を示したが、本発明はこの形態に限定されるものではなく、音響部や振動部をさらに備え、発音や振動させる形態や、当該発音や振動の繰り返し時間や振幅、周波数、パターンを変化させる形態を有しているものであってもよい。これによれば、ユーザの視覚に加え聴覚や触覚を通して、プログラミング操作の対象になっているプログラミングブロック120や、ターゲット機器200の動作状態に対応するプログラミングブロック120が、より確実に識別可能になる。
記憶部126は、自己のプログラミングブロック120又はスタートブロック120Sに固有のブロック情報を記憶するとともに、後方側に他のプログラミングブロック120が連結接続されている場合には、当該後方側のプログラミングブロック120が有するブロック情報、及び、当該後方側のプログラミングブロック120との連結状態を特定する連結特定情報を記憶する。
ここで、記憶部126は、ブロック情報として、自己のプログラミングブロック120又はスタートブロック120Sに固有の識別情報、及び、ターゲット機器200の機能動作を規定する機能情報を記憶する。また、記憶部126は、後方側に他のプログラミングブロック120が連結接続されている場合には、全ての後方側のプログラミングブロック120が有するブロック情報、及び、全ての後方側のプログラミングブロック120の連結状態を特定する連結特定情報を記憶する。本実施形態においては、これらの自己及び後方側に連結接続された全てのプログラミングブロック120に関するブロック情報と連結特定情報とを「入力操作情報」と総称する。したがって、スタートブロック120Sの記憶部126には、連結接続された全てのプログラミングブロック120に関する入力操作情報が記憶されることになる。
また、記憶部126は、当該プログラミングブロック120に連結接続された他のプログラミングブロック120から送信された入力操作情報を一時的に記憶領域に記憶する。さらに、記憶部126は、後述する制御部128においてプログラミングブロック120の各部の動作を制御するためのプログラムや各種の情報を記憶するものであってもよい。すなわち、記憶部126は、RAM及びROMを有するものである。
外部I/F部130は、スタートブロック120Sにのみ設けられ、スタートブロック120Sと後述するコアユニット160との間で通信を行い、記憶部126の記憶領域に記憶された入力操作情報(連結接続された全てのプログラミングブロック120が有するブロック情報、及び、連結接続された全てのプログラミングブロック120相互の連結状態を特定する連結特定情報)をコアユニット160に送信する。また、スタートブロック120Sが駆動用の電力を供給する電源部を有していない場合には、外部I/F部130は、受電機構を有し、後述するコアユニット160から受電した駆動用の電力を、ブロックI/F部122を介して後方側のプログラミングブロック120に給電する。
このような外部I/F部130は、非接触型、又は、接触型のインターフェースを有している。ここで、外部I/F部130として、非接触型のインターフェースを適用する場合には、例えばNFCやBluetooth(登録商標)、Wi-Fi(Wireless Fidelity;登録商標)等の無線通信方式や、赤外線等を用いた光通信方式を適用することができ、また、接触型のインターフェースを適用する場合には、各種の通信ケーブルを用いた有線通信方式や、端子電極相互を直接接続する方式を適用することができる。
制御部128は、上記のブロックI/F部122、識別変移部124、記憶部126、外部I/F部130を有するプログラミングブロック120の各部の動作を制御するコンピュータのプロセッサである。特に、プログラミングブロック120の制御部128は、ブロックI/F部122により後方側に他のプログラミングブロック120が連結接続された状態を検知した場合には、当該後方側のプログラミングブロック120が有するブロック情報を受信するとともに、当該後方側のプログラミングブロック120との連結状態を特定する連結特定情報を取得して記憶部126の記憶領域に記憶する。また、プログラミングブロック120の制御部128は、ブロックI/F部122により前方側の他のプログラミングブロック120やスタートブロック120Sに連結接続された状態を検知した場合には、記憶部126の記憶領域に記憶されたブロック情報や連結特定情報を、当該前方側のプログラミングブロック120やスタートブロック120Sに送信するとともに、識別変移部124により自己のプログラミングブロック120を所定の発光状態で発光させたり、表示画像を変化させたりして識別可能な状態にする。
一方、スタートブロック120Sの制御部128は、ブロックI/F部122によりプログラミングブロック120が連結接続された状態を検知した場合には、連結接続された全ての後方側のプログラミングブロック120が有するブロック情報、及び、連結接続された全ての後方側のプログラミングブロック120の連結状態を特定する連結特定情報を受信して記憶部126の記憶領域に記憶する。さらに、制御部128は、外部I/F部130を介してプログラミング操作により記憶部126の記憶領域に記憶された各種情報をコアユニット160へ送信する。
(コアユニット160)
コアユニット160は、例えば図1に示すように、一面側(図面、上面)に操作スイッチが配置された直方体形状や平板形状を有している。このコアユニット160は、プログラミングブロック120を用いたプログラミング操作により取得された情報に基づいて、ターゲット機器200を動作させるためのプログラムを生成するとともに、当該プログラムを実行して、ターゲット機器200の動作状態を制御するコントロール装置として機能する。
コアユニット160は、具体的には、例えば図2に示すように、操作部162と、外部I/F部164と、記憶部166と、通信インターフェース部(以下、「通信I/F部」と略記する) 168と、制御部170と、電源部172と、を有している。
操作部162は、ユーザが操作を行うことにより上述したプログラミングブロック120を用いたプログラミング操作により取得された情報に基づいてプログラムを生成するとともに、当該プログラムの実行状態を指示する。具体的には、操作部162は、生成したプログラムの実行状態を選択する複数のプッシュスイッチやタッチセンサ、あるいは、タッチパネルを有している。ここで、操作部162には、例えば図1に示すように、後述する制御部170により生成されたプログラム全体を一括して実行する一括実行スイッチ182や、当該プログラムの命令を1ステップずつ実行するステップ実行スイッチ184、実行されているプログラムを停止する実行停止スイッチ186、ターゲット機器200を初期位置(スタート地点)まで戻すホームスイッチ188等のプッシュスイッチが配置されている。そして、操作部162は、ユーザがいずれかのスイッチを押下した状態、又は、スイッチに接触した状態を検出すると、当該スイッチ操作に応じてプログラムの生成及び実行状態を指示する制御信号を後述する制御部170に出力する。
外部I/F部164は、コアユニット160とスタートブロック120Sとの間で通信を行い、スタートブロック120Sから送信された入力操作情報を受信する。また、記憶部166は、スタートブロック120Sから外部I/F部164を介して受信した入力操作情報を所定の記憶領域に記憶するとともに、これらの情報に基づいて、後述する制御部170により生成されたプログラムを別の記憶領域に記憶する。また、記憶部166は、制御部170において受信した入力操作情報に基づいてターゲット機器200の動作状態を制御するためのプログラムを生成するためのプログラムや、コアユニット160の各部の動作を制御するためのプログラム、その他、各種の情報を記憶するものであってもよい。すなわち、記憶部166は、RAM及びROMを有するものである。
通信I/F部168は、コアユニット160とターゲット機器200との間で通信を行い、記憶部166の記憶領域に記憶されたプログラムをターゲット機器200に送信する。具体的には、通信I/F部168は、非接触型、又は、接触型のインターフェースを有し、非接触型のインターフェースを適用する場合には、例えばWi-Fi(登録商標)やBluetooth(登録商標)等の無線通信方式や、赤外線等を用いた光通信方式を適用することができ、また、接触型のインターフェースを適用する場合には、通信ケーブルを用いた有線通信方式を適用することができる。
制御部170は、上記の操作部162、外部I/F部164、記憶部166、通信I/F部168、及び、後述する電源部172を有するコアユニット160の各部の動作を制御するコンピュータのプロセッサである。特に、制御部170は、操作部162によりプログラムの生成、実行に関するユーザの指示を検出した場合には、スタートブロック120Sから送信される入力操作情報に基づいて、ターゲット機器200の動作状態を制御するプログラムを生成する。
具体的には、制御部170は、操作部162において、一括実行スイッチ182又はステップ実行スイッチ184が操作されて押下又は接触状態を検出すると、スタートブロック120Sから送信された入力操作情報(連結接続された全てのプログラミングブロック120のブロック情報及び連結特定情報)に基づいて、ターゲット機器200の動作状態(移動動作及び機能動作)を制御するための命令を有するプログラムを生成する。ここで、プログラミング操作により取得された上記の各情報はプログラムのソースコードに対応し、制御部170は、このソースコードをターゲット機器200において実行可能な機械語からなるプログラムに変換(コンパイル)して、記憶部166の記憶領域に記憶する。なお、この変換処理は、プログラム全体を一括して行うものであってもよいし、プログラムの1ステップの命令ごとに行うものであってもよい。
なお、本実施形態においては、コアユニット160に設けた制御部170により、プログラミング操作により取得した入力操作情報に基づいて、ターゲット機器200を動作させるためのプログラムを生成する場合について説明した。本発明はこれに限定されるものではなく、例えば後述するターゲット機器200に設けられた制御部により、コアユニット160から送信される入力操作情報に基づいて、ターゲット機器200内でプログラムを生成するものであってもよい。
また、制御部170は、操作部162におけるスイッチ操作に応じて、生成されたプログラムをターゲット機器200に送信してターゲット機器200の動作状態を制御する。さらに、制御部170は、電源部172によりコアユニット160内の各部、及び、スタートブロック120S、プログラミングブロック120への駆動用の電力の供給状態を制御する。
電源部172は、コアユニット160内の各部に駆動用の電力を供給する。また、電源部172は、コアユニット160とスタートブロック120Sとを接続することにより外部I/F部164、130を介して、スタートブロック120S内の各部に駆動用の電力を供給する。スタートブロック120Sに供給された電力は、ブロックI/F部122を介して、スタートブロック120Sに連結接続された複数のプログラミングブロック120に順次供給される。ここで、電源部172は、例えば商用交流電源から電力が供給されるものであってもよいし、乾電池等の一次電池やリチウムイオン電池等の二次電池を備えるものであってもよいし、環境発電技術による発電部と二次電池を備えるものであってもよい。
なお、本実施形態においては、コアユニット160にのみ電源部172を備え、スタートブロック120S及びプログラミングブロック120には電源部を備えていない形態を示した。この形態においては、コアユニット160とスタートブロック120Sとを接続することにより双方の外部I/F部164、130に設けられた給電及び受電機構を介して、コアユニット160からスタートブロック120Sへ駆動用の電力が供給される。さらに、スタートブロック120Sにプログラミングブロック120が連結接続されることにより双方のブロックI/F部122に設けられた給電及び受電機構を介して、スタートブロック120Sからプログラミングブロック120へ駆動用の電力が供給される。ここで、外部I/F部130、164や、ブロックI/F部122に設けられる給電及び受電機構としては、電磁誘導方式等の非接触型、又は、ケーブルや端子電極を直接接続する接触型の機構を適用することができる。
また、本発明に適用可能な他の形態としては、例えば図3に示すように、スタートブロック120S及びプログラミングブロック120に各々固有の電源部132を有するものであってもよいし、スタートブロック120Sにのみ固有の電源部132を有するものであってもよい。スタートブロック120Sにのみ固有の電源部132を有する形態においては、ブロックI/F部122に設けられた給電及び受電機構を介して、スタートブロック120Sから連結接続された複数のプログラミングブロック120へ駆動用の電力が順次供給される。ここで、電源部132は、例えばボタン電池等の一次電池やリチウムイオン電池等の二次電池を備えるものであってもよいし、環境発電技術による発電部と二次電池を備えるものであってもよい。
さらに、本発明に適用可能な他の形態としては、例えば、図2に示したように、コアユニット160にのみ電源部172を備えた形態や、スタートブロック120Sにのみ電源部132を備えた形態において、スタートブロック120Sに連結接続される複数のプログラミングブロック120のうちの、任意のプログラミングブロック120に昇圧回路を備えたものであってもよいし、昇圧機能のみを有するブロックをプログラミングブロック120間に適宜連結接続するものであってもよい。これにより、スタートブロック120Sに複数のプログラミングブロック120が連結接続されている場合であっても、終端側のプログラミングブロック120にまで十分な電力を供給することができる。
少なくともスタートブロック120Sが固有の電源部132を有する形態においては、スタートブロック120Sにコアユニット160を接続しない状態においても、ユーザはスタートブロック120S及びプログラミングブロック120を用いてプログラミング操作を行うことができる。また、コアユニット160をスタートブロック120S及びプログラミングブロック120から離間させて独立した状態で(すなわち、コアユニット160単体で)、操作部162の各スイッチを操作することにより、入力操作情報に基づくプログラム生成処理や、ターゲット機器200の動作状態の制御を行うことができる。
(ターゲット機器200)
ターゲット機器200は、ユーザによる入力操作に基づいてプログラム制御装置100により生成されたプログラムの実行対象である。本実施形態ではターゲット機器200として、例えば図1に示すように、現実空間内において地上を走行する実体のある自走式の玩具や、ドローン等の飛行体を適用した場合について示す。しかしながら、ターゲット機器200は当該生成されたプログラムに基づいて動作状態が制御されるものであればよく、タンジブルな移動体の他に、スマートフォンやタブレット等のモバイル端末、パーソナルコンピュータ等の情報通信機器において実行されるアプリケーションソフトウェア、又は、当該アプリケーションソフトウェアにより実現される仮想空間内のオブジェクト、すなわち、タンジブルでない移動体であってもよい。
ターゲット機器200は、プログラミングブロック120を用いたプログラミング操作において、スタートブロック120Sに連結接続された複数のプログラミングブロック120の集合体の全体配置形状により決定された仮想経路に対応する移動経路に沿って移動する。ここで、ターゲット機器200は、仮想経路を形成する複数のプログラミングブロック120の全体配置形状を第1形状とした場合、当該第1形状を拡大した相似形状である第2形状を有する経路を移動経路として移動する。また、ターゲット機器200は、機能動作が設定されたプログラミングブロック120の連結位置に対応する位置で、当該プログラミングブロック120に設定された機能動作を実行する。
ターゲット機器200は、具体的には、例えば図2に示すように、駆動部202と、機能部204と、通信I/F部206と、記憶部208と、制御部210と、電源部212と、を有している。
駆動部202は、ターゲット機器200を移動動作させるための駆動輪(タイヤ)やプロペラ等であって、プログラミングブロック120を用いたプログラミング操作において決定された仮想経路に対応する移動経路に沿ってターゲット機器200を移動させる。
機能部204は、発光部や表示部、音響部、振動部、撮像部、各種センサ等であって、プログラミング操作においてプログラミングブロック120に設定された機能情報に基づいて特定の機能動作を実行する。ここで、ターゲット機器200に設定される機能動作としては、例えば発光部を所定の発光状態で発光させる動作や、表示部に表示される画像を変化させる動作、音響部により所定の音や楽音を発生する動作、振動部を所定のパターンで振動させる動作、ターゲット機器200を当該位置で回転させたりジャンプさせたりする動作、撮像部により周囲を撮影する動作、各種のセンサによりセンシングする動作等を有する。これらに代表される機能動作は、ターゲット機器200の移動経路のうち、当該機能情報を記憶したプログラミングブロック120の連結位置に対応する位置で、移動経路の進行方向又は逆行方向への移動を伴わない動作(いわゆる、アクション)である。なお、機能情報は、これらの機能動作を単独で実行することを規定するものであってもよいし、複数の機能動作を組み合わせて実行することを規定するものであってもよい。
通信I/F部206は、ターゲット機器200とコアユニット160との間で通信を行い、コアユニット160の制御部170により生成されたプログラムを受信する。また、記憶部208は、コアユニット160から通信I/F部206を介して受信したプログラムを所定の記憶領域に記憶する。
制御部210は、上記の駆動部202、機能部204、通信I/F部206、記憶部208、及び、後述する電源部212の各部の動作を制御するコンピュータのプロセッサである。特に、制御部210は、コアユニット160から通信I/F部206を介して受信し、記憶部208の記憶領域に記憶されたプログラムを実行することにより、駆動部202を制御してプログラミング操作により決定された仮想経路に対応する移動経路に沿ってターゲット機器200を移動させるとともに、機能部204を制御してプログラミング操作により設定された機能動作を実行させる。また、制御部210は、コアユニット160における操作部162のスイッチ操作に応じてプログラムの実行状態を制御する。さらに、制御部170は、電源部212によりターゲット機器200内の各部への駆動用の電力の供給状態を制御する。
電源部212は、ターゲット機器200内の各部に駆動用の電力を供給する。電源部212は、例えば商用交流電源から電力が供給されるものであってもよいし、乾電池等の一次電池やリチウムイオン電池等の二次電池を備えるものであってもよいし、環境発電技術による発電部と二次電池を備えるものであってもよい。
なお、本実施形態に適用されるターゲット機器200は、図1に示したように、二次元空間である地上を走行する自走式の玩具や、三次元空間である空中を飛行するドローン等の飛行体に限定されるものではなく、水上を移動する船体であってもよいし、水中を移動する潜水体であってもよい。ここで、ターゲット機器200が飛行体や潜水体の場合には、移動経路の始点で当該ターゲット機器200が地上から一定の高度に上昇、又は、水面から一定の水深に潜水し、移動経路の終点で地上に下降、又は、水面に浮上する動作を行うものであってもよい。
また、ターゲット機器200として、モバイル端末や情報通信機器において実行されるアプリケーションソフトウェアを適用する場合には、当該アプリケーションソフトウェアにより実現される仮想空間内において、前述のオブジェクト(例えばゲーム画面内のキャラクタやアイテム等)の動作状態を制御して当該仮想空間内の任意の経路で移動させたり、任意の機能を実行させたりする。
(プログラミング操作及びプログラム生成、実行方法)
次に、本実施形態に係るプログラミング教育装置におけるプログラミング操作及びプログラム生成、実行方法(プログラミング方法)について説明する。
図4は、本実施形態に係るプログラミング教育装置におけるプログラミング操作及びプログラム生成、実行方法の一例(ノーマルモード)を示すフローチャートである。図5、図6は、本実施形態に適用されるプログラミング操作処理(平面的配置)を説明するための概略図である。図5(a)、(b)及び図6の左図はプログラミング操作を説明するための斜視図であり、同右図はプログラミング操作時のプログラミングブロックの配置形状を示す平面図である。また、図7、図8は、本実施形態に適用されるプログラム生成、実行処理(一括処理)を説明するための概略図であり、図9、図10は、本実施形態に適用されるプログラム生成、実行処理(ステップ処理)を説明するための概略図である。なお、図4に示すフローチャートのうちの、モードの切り換え設定に係る処理動作(ステップS104)については、後述する変形例1において詳しく述べるため、本実施形態では説明を適宜省略する。
本実施形態に係るプログラミング教育装置におけるプログラミング操作及びプログラム生成、実行方法においては、大別して、プログラミングブロック120を用いたタンジブルな入力操作によるプログラミング操作処理と、当該プログラミング操作により取得した入力操作情報に基づくプログラム生成処理と、コアユニット160とターゲット機器200とを用いたプログラム実行処理と、が実行される。プログラミング教育装置における、これらの各制御処理は、上述したプログラミングブロック120やコアユニット160、ターゲット機器200に設けられた各制御部において、独立して又は相互に連携して特定の制御プログラムを実行することにより実現されるものである。
(プログラミング操作処理)
本実施形態に係るプログラミング教育装置におけるプログラミング操作処理においては、図4のフローチャート及び図5(a)に示すように、まず、ユーザは、プログラミング教育装置のスタートブロック120Sとコアユニット160とを接続した状態でコアユニット160の電源を投入することによりプログラム制御装置100を起動するとともに、ターゲット機器200の電源を投入して起動する(ステップS102)。
次いで、プログラミングブロック120を用いてプログラミング操作処理を実行する。まず、図5(a)、(b)に示すように、ユーザが、ターゲット機器200を動作させる際の移動経路をイメージして、コアユニット160に接続されたスタートブロック120Sを移動経路に対応する仮想経路の始点(スタート)として、当該始点と終点(ゴール)を含む2以上のプログラミングブロック120を順次連結接続する。
ここで、図5(a)、(b)、図6に示すように、スタートブロック120Sを始点として、移動経路の終点側となる方向に、後方側のプログラミングブロック120を順次連結接続し、複数のプログラミングブロック120を二次元空間に平面的に配置する場合には、スタートブロック120Sやプログラミングブロック120の立方体形状の6面のうち、前後左右に相当する側面(図5(a)、(b)、図6右側の平面図における上下左右の4面)のいずれかの面にプログラミングブロック120が連結接続される。これにより、図6に示すように、スタートブロック120Sを始点として終点まで連結接続された複数のプログラミングブロック120の配置形状により、ターゲット機器200の移動経路を規定する平面的な仮想経路が決定される(ステップS106)。なお、本実施形態においては、スタートブロック120Sを始点として連結接続される複数のプログラミングブロック120のうち、終点となるプログラミングブロック120を便宜的に「終端ブロック120G」と記す。
また、ターゲット機器200の移動経路の任意の位置において特定の機能動作を実行させる設定をする場合には、ユーザは、移動経路に対応する仮想経路を形成する複数のプログラミングブロック120のうち、当該機能動作を実行する位置に対応するプログラミングブロック120に、所望の機能動作に関する機能情報を設定する(ステップS108)。ここで、ターゲット機器200の機能動作を設定する手法としては、例えば図5(b)、図6に示すように、予め特定の機能動作に関する機能情報が設定されたプログラミングブロック(以下、「機能設定ブロック」と記す)120Fを用意して、仮想経路を形成する複数のプログラミングブロック120のうちの、当該機能動作を実行する位置に対応するプログラミングブロック120として、上記の機能設定ブロック120Fを連結接続する。なお、ターゲット機器200の機能動作を設定する手法については、この手法に限定されるものではなく、様々な形態を適用することができる。機能動作を設定する他の手法については、詳しくは後述する。
なお、プログラミング操作処理において、複数のプログラミングブロック120を連結接続して、ターゲット機器200の移動経路に対応する仮想経路のみを決定し、移動経路上でターゲット機器200に特定の機能動作を実行させない場合には、上記のステップS108の処理動作は省略される。
上記のステップS106、S108に示したプログラミング操作処理においては、具体的には次のような処理動作が実行される。
図5(a)、(b)、図6に示したように、スタートブロック120Sを始点としてターゲット機器200の移動経路に対応する仮想経路を形成する複数のプログラミングブロック120を連結接続した場合、スタートブロック120Sにおいては、まず、スタートブロック120Sの制御部128がブロックI/F部122の連結検知部により、スタートブロック120Sの立方体形状の側面にプログラミングブロック120が連結接続されているか否かを検知する。プログラミングブロック120が連結接続されている場合には、スタートブロック120Sの制御部128は当該プログラミングブロック120が連結接続されている面について、スタートブロック120Sに対する相対的な配置(すなわち、スタートブロック120Sと後方側のプログラミングブロック120との連結状態)を特定して連結特定情報を取得する。取得した連結特定情報は記憶部126の記憶領域に記憶される。
次いで、スタートブロック120Sの制御部128は、検知した後方側のプログラミングブロック120に対して、ブロックI/F部122を介してスタートブロック120Sが有するブロック情報(スタートブロックであることを示す固有の識別情報を含む)を送信する。さらに、スタートブロック120Sの制御部128は、後方側のプログラミングブロック120に対して、当該プログラミングブロック120が有するブロック情報や連結特定情報の送信を要求する命令信号を送信して、後方側のプログラミングブロック120からの応答を待機する状態に移行する。次いで、後方側のプログラミングブロック120から応答があり、当該プログラミングブロック120が有するブロック情報や連結特定情報を受信した場合には、スタートブロック120Sの制御部128は、当該プログラミングブロック120のブロック情報や連結特定情報を記憶部126の記憶領域に記憶する。
一方、スタートブロック120S又は他のプログラミングブロック120に連結接続された後方側のプログラミングブロック120においては、スタートブロック120S又は前方側のプログラミングブロックから、当該後方側のプログラミングブロック120が有するブロック情報や連結特定情報の送信を要求する命令信号を受信した場合には、当該後方側のプログラミングブロック120の制御部128は、当該後方側のプログラミングブロック120のさらに後方側にプログラミングブロック120が連結接続されているか否かを検知する。さらに後方側にプログラミングブロック120が連結接続されている場合には、当該後方側のプログラミングブロック120の制御部128は、当該後方側のプログラミングブロック120とさらに後方側のプログラミングブロック120との連結状態を特定して、取得した連結特定情報を記憶部126の記憶領域に記憶する。
次いで、後方側のプログラミングブロック120の制御部128は、検知したさらに後方側のプログラミングブロック120に対して、ブロックI/F部122を介して当該後方側のプログラミングブロック120が有するブロック情報(当該プログラミングブロック120であることを示す固有の識別情報を含む)、及び、全ての前方側のプログラミングブロック120に関するブロック情報を送信する。さらに、当該後方側のプログラミングブロック120の制御部128は、さらに後方側のプログラミングブロック120に対して、当該プログラミングブロック120が有するブロック情報や連結特定情報の送信を要求する命令信号を送信して、さらに後方側のプログラミングブロック120からの応答を待機する状態に移行する。次いで、さらに後方側のプログラミングブロック120から応答があり、当該プログラミングブロック120が有するブロック情報や連結特定情報を受信した場合には、後方側のプログラミングブロック120の制御部128は、当該プログラミングブロック120のブロック情報や連結特定情報、さらに後方側のプログラミングブロック120から受信した、全ての後方側のプログラミングブロック120に関するブロック情報及び連結特定情報を、スタートブロック120S又は前方側のプログラミングブロック120へ送信する。
また、後方側のプログラミングブロック120のさらに後方側にプログラミングブロック120が連結接続されていない場合には、当該後方側のプログラミングブロック120が終端ブロック120G(すなわち、仮想経路の終点)であるので、当該プログラミングブロック120が有するブロック情報(終端ブロック120Gであることを示す固有の識別情報を含む)や連結特定情報を、スタートブロック120S又は前方側のプログラミングブロック120へ送信する。
これにより、スタートブロック120Sは、連結接続された全ての後方側のプログラミングブロック120に関するブロック情報及び連結特定情報を受信して記憶部126の記憶領域に記憶する。そして、スタートブロック120Sが有するブロック情報や連結特定情報、後方側のプログラミングブロック120から受信した、全ての後方側のプログラミングブロック120に関するブロック情報及び連結特定情報は、所定のタイミングで外部I/F部130を介してコアユニット160へ送信される。
このとき、スタートブロック120Sとの間で通信を行い、各種情報や信号の送受信を行っている後方側のプログラミングブロック120において、当該プログラミングブロック120の制御部128は、識別変移部124を所定の発光状態で発光させたり、表示画像を変化させたりして、当該プログラミングブロック120の動作状態を視覚的に識別可能な状態に変移させる(図5(b)中では便宜的に濃いハーフトーンで表記)。なお、このとき、スタートブロック120Sにおいても、識別変移部124を所定の発光状態で発光させたり、表示画像を変化させたりして、当該スタートブロック120Sの動作状態を視覚的に識別可能な状態に変移させるものであってもよい。
ここで、スタートブロック120S及び各プログラミングブロック120の識別変移部124が発光部を有する場合には、スタートブロック120S及び各プログラミングブロック120の制御部128は、例えば、連結接続された各プログラミングブロック120の発光部を所定の発光色や発光強度で常時発光(点灯)させたり、発光色を変化させたり、所定の発光パターンで発光(点減)させたりする動作を継続(保持)する。また、制御部128は、プログラミング操作処理中に、コアユニット160の操作部162に設けられたプログラム確認スイッチ(図示を省略)等を操作したり、一定時間プログラミング操作がなかったりした場合や定期的等の条件をトリガーとして、連結接続されて既に決定された移動経路の順番にしたがって、スタートブロック120S及び各プログラミングブロック120の発光部を時分割で順次発光させる動作を実行する。このように、スタートブロック120S及び各プログラミングブロック120における識別変移部124の変移状態(この場合は発光状態)を保持、又は、特定の条件をトリガーとして所定の変移状態を提示することにより、プログラミング操作の内容や進行状況、当該プログラミング操作により決定された現時点までの移動経路やターゲット機器200の移動順序、機能動作等を視覚的に把握、理解し易くなる。
また、制御部128は、プログラミング操作処理中に連結接続したプログラミングブロック120間で正常に情報や信号の送受信が行えない場合や、予め連結接続が禁止されたプログラミングブロック120同士を接続させた場合等、プログラム制御装置100の動作に異常が発生した場合には、スタートブロック120Sや各プログラミングブロック120の発光部を発光させないようにしたり、通常とは異なる発光色や発光パターンで発光させたりする制御を行う。これにより、プログラミング操作時の誤り等をユーザに報知する。さらに、制御部128は、スタートブロック120Sや各プログラミングブロック120の識別変移部124が音響部や振動部を備えている場合には、上記の発光部における発光動作に加え、あるいは、当該発光動作に替えて、音響部や振動部における発音や振動の振幅や周波数、パターンを変化させて、プログラミング操作時の誤り等をユーザに報知するものであってもよい。
本実施形態においては、複数のプログラミングブロック120を連結接続した際の配置形状により、ターゲット機器200の全移動経路に対応する仮想経路を決定し、かつ、仮想経路上の任意の位置に機能設定ブロックを連結接続することにより、移動経路上で実行する全ての機能動作を設定するプログラミング操作が終了するまで、上記のステップS106、S108を繰り返し実行する(ステップS110のNo)。
なお、ステップS106、S108に示したプログラミング操作は、ターゲット機器200の移動経路を順次決定しつつ、ターゲット機器200における機能動作を順次設定するものであってもよいし、後述する機能動作の設定方法に示すように、ターゲット機器200の全移動経路を決定した後、ターゲット機器200における全ての機能動作を設定するものであってもよい。
そして、図6に示すように、プログラミングブロック120を用いたプログラミング操作処理を終了した状態においては、スタートブロック120S及び各プログラミングブロック120の制御部128は、上記のステップS106、S108に示したように、プログラミング操作により決定された全移動経路に対応し、さらに、ターゲット機器200における機能動作を設定するスタートブロック120S及び各プログラミングブロック120の識別変移部124の変移状態を保持したり、特定の条件をトリガーとして所定の変移状態を提示したりする。これにより、プログラミング操作により決定されたターゲット機器200の全移動経路やその移動順序、全ての機能動作やその実行順序等を視覚的に把握、理解し易くなる。
また、上記のプログラミング操作処理を終了すると(ステップS110のYes)、プログラミングブロック120及びコアユニット160を用いたプログラム生成処理の実行が可能な待機状態に設定される。
そして、図7(a)に示すように、ユーザが、コアユニット160の操作部162に設けられたプログラム実行スイッチ(一括実行スイッチ182又はステップ実行スイッチ184)を操作すると(ステップS112)、ステップS114〜S120のプログラム一括生成、実行処理、又は、ステップS122〜S130のプログラムステップ生成、実行処理が実行される。
(プログラム一括生成、実行処理)
上記のステップS112において、図7(a)に示すように、ユーザが、コアユニット160に設けられた一括実行スイッチ182をオン操作すると、プログラム一括生成、実行処理が実行される。プログラム一括生成、実行処理においては、まず、コアユニット160の制御部170が、スタートブロック120Sの制御部128に制御信号を送信して、上記のプログラミング操作処理により取得したブロック情報や連結特定情報を有する入力操作情報を一括してスタートブロック120Sから受信する(ステップS114)。受信した入力操作情報は、記憶部166の記憶領域に記憶される。
次いで、制御部170は、スタートブロック120Sから受信した入力操作情報をソースコードとして、ターゲット機器200の動作状態(移動動作及び機能動作)を制御するための命令を有するプログラムを一括して生成する(ステップS116)。具体的には、制御部170は、入力操作情報に含まれる連結特定情報に基づいて、連結接続された複数のプログラミングブロック120の全体配置形状を特定するとともに、入力操作情報に含まれるブロック情報(機能情報)に基づいて、連結接続された各プログラミングブロック120の任意の位置で実行される機能動作を特定する。ここで、連結接続された複数のプログラミングブロック120の全体配置形状は、ターゲット機器200の移動経路を規定する。制御部170は、特定した内容に基づいて、ターゲット機器200が実行可能な形式のプログラムを生成する。制御部170において生成されたプログラムは、コアユニット160の記憶部166の所定の記憶領域に記憶される。
次いで、制御部170は、図7(a)に示すように、生成されたプログラムを、通信I/F部168を介して、ターゲット機器200に一括して転送する(ステップS118)。ターゲット機器200の制御部210は、転送されたプログラムを実行して、駆動部202及び機能部204を動作させることにより、図7(a)、(b)、図8に示すように、上述したプログラミングブロック120を用いたプログラミング操作処理において決定された平面的な仮想経路に対応する移動経路(図中、太点線で表記)に沿って順次移動する全体動作を行う(ステップS120)。
このとき、コアユニット160の制御部170は、通信I/F部168を介して、ターゲット機器200からプログラムの実行状態(すなわち、ターゲット機器200の移動位置や機能動作の実行状態)に関する情報を随時受信し、スタートブロック120S及び各プログラミングブロック120の制御部128にプログラム実行情報として送信する。各制御部128は、コアユニット160から受信したプログラム実行情報に基づいて、図7(a)、(b)、図8に示すように、現在時点におけるターゲット機器200の移動経路上での位置に対応する各プログラミングブロック120の識別変移部124を特定の発光状態で発光させたり、表示画像を変化させたりして視覚的に識別可能な状態に変移させる(図7(a)、(b)中では便宜的に濃いハーフトーン、図8中では便宜的に濃いハッチングで表記)。
また、図8に示すように、ターゲット機器200が、プログラミング操作において特定の機能動作を設定した位置に移動し、当該機能動作を実行している場合には、当該機能動作を設定した機能設定ブロック120Fの制御部128は、ターゲット機器200から受信したプログラム実行情報に基づいて、識別変移部124を特定の発光状態で発光させたり、表示画像を変化させたりして視覚的に識別可能な状態に変移させる。なお、図8においては、ターゲット機器200の機能動作として特定の楽音を発生する場合を示し、当該機能動作に対応する機能設定ブロック120Fを濃いハッチングで表記した。
ここで、プログラミングブロック120の識別変移部124が発光部を有する場合には、プログラミングブロック120の制御部128は、例えば次のように発光状態を制御することにより、ターゲット機器200におけるプログラムの実行状態を視覚的に識別可能にする。これにより、ターゲット機器200におけるプログラムの実行状態等を視覚的に把握、理解し易くなる。
制御部128は、例えば、プログラミング操作により決定された移動経路及び機能動作に対応する全てのプログラミングブロック120の発光部を所定の発光色や発光強度で常時発光させた状態で、プログラム実行情報に基づいて、現在時点におけるターゲット機器200の位置や、ターゲット機器200が実行している機能動作に対応するプログラミングブロック120の発光部を、他のプログラミングブロック120とは異なる発光色や、より高い発光強度、あるいは、発光パターン(例えば、点滅)で発光させる。
また、他の形態として、制御部128は、例えば、プログラム実行情報に基づいて、現在時点におけるターゲット機器200の位置や、ターゲット機器200が実行している機能動作に対応するプログラミングブロック120の発光部を所定の発光色や発光強度で発光させ、他のプログラミングブロック120の発光部を発光させない(消灯させる)。
さらに他の形態として、例えば、各プログラミングブロック120の識別変移部124はいずれも、プログラミング操作時の状況を示す第1の発光部とプログラム実行時の状況を示す第2の発光部とを別個に備え、制御部128は、現在時点におけるターゲット機器200の位置や、ターゲット機器200が実行している機能動作に対応するプログラミングブロック120では第1及び第2の発光部をともに発光させ、他のプログラミングブロック120では第1の発光部のみを発光させる。
また、ターゲット機器200において実行されているプログラムにエラーやバグが発生した場合には、制御部128は、ターゲット機器200から受信したプログラム実行情報に基づいて、当該エラーやバグが発生したプログラミングブロック120を、上記の通常の実行状態とは異なる発光色や発光パターンで発光させる制御を行う。これにより、プログラム実行時の異常をユーザに報知する。ここで、プログラム実行時のエラーやバグとは、例えばターゲット機器200が撮像部を備えていないにも関わらず、撮影を行う命令が実行された場合や、ターゲット機器200がプログラミング操作時には想定されていなかった障害物等に進行方向が阻まれているにも関わらず、障害物の方向にさらに移動する命令が実行された場合等である。
(プログラムステップ生成、実行処理)
上述したステップS112において、図9(a)に示すように、ユーザが、コアユニット160に設けられたステップ実行スイッチ184をオン操作すると、プログラムステップ生成、実行処理が実行される。プログラムステップ生成、実行処理においては、まず、コアユニット160の制御部170が、スタートブロック120Sの制御部128に制御信号を送信して、上記のプログラミング操作処理により取得したブロック情報や連結特定情報を有する入力操作情報を一括して、又は、プログラミング操作の一操作(ステップ)ごとに、スタートブロック120Sから受信し(ステップS122)、記憶部166の記憶領域に記憶する。
次いで、制御部170は、受信した入力操作情報に基づいてターゲット機器200の動作状態(移動動作及び機能動作)を制御するための命令を有するプログラムを一括して、又は、プログラミング操作の一操作ごとに生成し(ステップS124)、記憶部166の所定の記憶領域に記憶する。ここで、プログラミング操作の一操作とは、1つのプログラミングブロック120を連結接続する操作のことであり、本実施形態のプログラムステップ生成、実行処理における一ステップとは、この一操作により指定されるステップのまとまりのことである。ただし、後述するように、プログラミングブロック120が複数段積み重ねられて、且つ、これらのプログラミングブロック120により指定された複数の機能を同時に実行することが指示されている場合には、それらすべての機能を同時に実行するステップが一ステップとなる。
次いで、制御部170は、図9(a)に示すように、生成されたプログラムを一操作分(ステップ単位)のプログラムごとに、通信I/F部168を介して、ターゲット機器200に転送する(ステップS126)。ターゲット機器200は、転送された一操作分のプログラムを実行して、駆動部202及び機能部204を動作させることにより、上述したプログラミング操作処理において決定された仮想経路に対応する移動経路(図中、太点線で表記)に沿って一操作分だけ移動したり、一操作分だけ機能を実行したりするステップ動作を行う(ステップS128)。
このとき、コアユニット160の制御部170は、ターゲット機器200に転送した一操作分のプログラムに関する情報(すなわち、ターゲット機器200の移動やターゲット機器200が実行する機能を規定する情報)を、スタートブロック120S及び各プログラミングブロック120の制御部128にプログラム実行情報として送信する。各制御部128は、このプログラム実行情報に基づいて、図9(a)に示すように、現在時点におけるターゲット機器200の移動経路上での位置に対応する各プログラミングブロック120を特定の発光状態で発光させたり、表示画像を変化させたりして視覚的に識別可能な状態に変移させる(図9(a)中では便宜的に濃いハーフトーンで表記)。
また、図10(a)、(b)に示すように、ターゲット機器200が、プログラミング操作において特定の機能動作を設定した位置に移動し、当該機能動作を実行している場合には、当該機能動作を設定した機能設定ブロック120Fの制御部128は、プログラム実行情報に基づいて、当該機能設定ブロック120Fを特定の発光状態で発光させたり、表示画像を変化させたりして視覚的に識別可能な状態に変移させる。なお、図10(b)においては、ターゲット機器200の機能動作として特定の楽音を発生する場合を示し、当該機能動作に対応する機能設定ブロック120Fを便宜的に濃いハッチングで表記した。
ステップS128の処理動作を実行した後、コアユニット160の制御部170は、ステップS128においてターゲット機器200に実行させたステップ動作が、プログラミング操作処理により取得した入力操作情報のうちの最後の入力操作情報に対応するものであるか否かを判定する(ステップS130)。すなわち、コアユニット160の制御部170は、ターゲット機器200が移動経路の終点位置まで移動し、且つ、当該終点位置のプログラミングブロック120に設定された機能をターゲット機器200が実行し終わっているか否かを判定する。
コアユニット160の制御部170が、ステップS128においてターゲット機器200に実行させたステップ動作が最後の入力操作情報に対応するものであると判定した場合(ステップS130のYes)には、図4のフローチャートに示したプログラミング操作及びプログラム生成、実行方法に係る一連の処理動作が終了する。一方、制御部170が、ステップS128においてターゲット機器200に実行させたステップ動作が最後の入力操作情報に対応するものでないと判定した場合(ステップS130のNo)には、前述のステップS112へ遷移する。このステップS112では、ユーザが、コアユニット160に設けられた一括実行スイッチ182、又は、ステップ実行スイッチ184のいずれをオン操作したかを判定する。
一括実行スイッチ182がオン操作されたと判定した場合、コアユニット160の制御部170は、プログラミング操作処理により取得した入力操作情報のうち、まだ実行していないすべての入力操作情報について、前述のプログラム一括生成、実行処理を行う(ステップS114〜S120)。すべての入力操作情報に対応する動作を行った後、図4のフローチャートに示したプログラミング操作及びプログラム生成、実行方法に係る一連の処理動作が終了する。また、ステップ実行スイッチ184がオン操作されたと判定した場合、コアユニット160の制御部170は、前述のステップS122〜S130に従って、プログラムステップ生成、実行処理が実行される。なお、本実施形態においては、図4に示した一連の処理動作を、便宜的に「ノーマルモード」と呼称する。
このように、本実施形態においては、プログラミングブロック120とコアユニット160とからなるタンジブルなプログラム制御装置を用いて、始点となるスタートブロック120Sにプログラミングブロック120を順次連結接続するプログラミング操作により、スタートブロック120Sを基準とする、その全体配置形状の相対的な配置に基づいて仮想経路を決定することができ、この仮想経路によりターゲット機器200の移動経路を規定することができる。また、ターゲット機器200の移動経路上の任意の位置に対応する仮想経路のプログラミングブロック120に機能情報を設定するプログラミング操作により、当該位置でターゲット機器200に特定の機能動作を実行させることができる。
また、本実施形態においては、プログラミング操作時に連結接続された複数のプログラミングブロック120の全体配置形状が、ターゲット機器200の移動経路に対応しているので、当該配置形状により移動経路を直感的に把握することができる。さらに、プログラミング操作に基づいて生成されたプログラムの実行時に、又は、プログラムの実行の前後(例えば、プログラミング操作中)に、連結接続された複数のプログラミングブロック120のうち、プログラミング操作やプログラム実行の対象となっているプログラミングブロック120を、視覚的に識別可能な状態に変移させることができる。
したがって、本実施形態によれば、幼児等の年少者であっても、タンジブルなプログラム制御装置を用いてプログラミングブロック120を平面的に連結接続する簡易な操作により、ターゲット機器200の移動経路を決定することができるとともに、当該移動経路上の任意の位置でターゲット機器200に機能動作を設定するプログラミングを容易に行うことができる。また、プログラミング時の操作内容やターゲット機器200の動作状態を視覚を通して直感的に把握することができ、プログラミングの学習効果の向上を期待することができる。
なお、上述したプログラミング操作及びプログラム生成、実行方法においては、プログラミング操作処理の終了後、ユーザが、コアユニット160の操作部162に設けられたプログラム実行スイッチ(一括実行スイッチ182又はステップ実行スイッチ184)を操作することにより、プログラミング操作処理により取得した入力操作情報を、スタートブロック120Sからコアユニット160に送信する形態を示した。本発明はこれに限定されるものではなく、例えば、プログラミング操作処理中にプログラミングブロック120を連結接続することにより新たな入力操作情報を取得するたびに、随時、又は、所定のタイミングや定期的に、当該入力操作情報をコアユニット160に送信するものであってもよい。
また、上述したプログラミング操作及びプログラム生成、実行方法においては、プログラミング操作処理において、スタートブロック120Sを始点として、移動経路の終点側となる方向に、後方側のプログラミングブロック120を順次連結接続し、複数のプログラミングブロック120を二次元空間に平面的に配置する場合(図5、図6参照)を示した。本発明はこれに限定されるものではなく、複数のプログラミングブロック120を三次元空間に立体的に配置するものであってもよい。
図11は、本実施形態に適用されるプログラミング操作処理(立体的配置)を説明するための概略図であり、図12は、本実施形態に適用されるプログラム生成、実行処理(一括処理)の他の例を説明するための概略図である。
上述したプログラミング操作処理において、スタートブロック120Sを始点として、連結接続される複数のプログラミングブロック120を三次元空間に立体的に配置する場合には、スタートブロック120Sやプログラミングブロック120の立方体形状の全6面(前後左右上下の6面)のいずれかの面にプログラミングブロック120が連結接続される。これにより、図11(a)、(b)に示すように、スタートブロック120Sを始点として連結接続されたプログラミングブロック120が、水平面上だけでなく上下(天地)方向にも配置され、この配置形状に基づいてターゲット機器200の移動経路を規定する立体的な仮想経路が決定される。
また、ターゲット機器200の移動経路の任意の位置において特定の機能動作を実行させる設定をする場合には、図11(a)、(b)に示すように、複数のプログラミングブロック120からなる仮想経路のうちの、当該機能動作を実行する位置に対応するプログラミングブロック120として、当該機能動作に関する機能情報が設定された機能設定ブロック120Fを連結接続する。
そして、図12(a)に示すように、ユーザが、コアユニット160の操作部162に設けられたプログラム実行スイッチ(例えば、一括実行スイッチ182)を操作すると、プログラム生成、実行処理が実行される。プログラム生成、実行処理においては、まず、コアユニット160がプログラミング操作処理により取得した入力操作情報をスタートブロック120Sから受信し、当該入力操作情報に基づいてターゲット機器200の動作状態(移動動作及び機能動作)を制御するプログラムを生成する。
生成されたプログラムをコアユニット160からターゲット機器200に転送して実行することにより、図12(a)、(b)に示すように、ドローン等のターゲット機器200が上述したプログラミング操作処理において決定された立体的な仮想経路に対応する移動経路(図中、太点線で表記)に沿って順次移動する全体動作を行う(ステップS120)。
このとき、ターゲット機器200の移動経路上での位置に対応する各プログラミングブロック120は、例えば特定の発光状態で発光して視覚的に識別可能な状態に変移する(図12(a)中では便宜的に濃いハーフトーンで表記)。また、図12(b)に示すように、ターゲット機器200が移動経路上の所定の位置で機能動作を実行している場合には、当該位置に対応するプログラミングブロック120は、例えば特定の発光状態で発光して視覚的に識別可能な状態に変移する。なお、図12(b)においては、ターゲット機器200の機能動作として特定の位置で旋回する場合を示し、当該機能動作に対応する機能設定ブロック120Fを便宜的に濃いハッチングで表記した。
これによれば、幼児等の年少者であっても、タンジブルなプログラム制御装置を用いてプログラミングブロック120を立体的に連結接続する簡易な操作により、ターゲット機器200の移動経路を決定することができるとともに、当該移動経路上の任意の位置でターゲット機器200に機能動作を設定するプログラミングを容易に行うことができる。また、三次元空間内での動作を対象とする高度なプログラミング技術であっても、プログラミング時の操作内容やターゲット機器200の動作状態を視覚を通して直感的に把握することができ、プログラミングの学習効果の向上を期待することができる。
なお、上述したプログラミングブロック120を用いたプログラミング操作処理においては、始点となるスタートブロック120Sについて、立方体の6面のうち特定の一面側の方向が基準方向として設定され、他のプログラミングブロック120が連結接続されている面について、当該基準方向に対する相対的な配置が検知されて、連結特定情報として取得されることを示した。
そのため、連結接続された複数のプログラミングブロック120により決定される仮想経路は、スタートブロック120Sを基準とする相対的な配置を有している。ここで、プログラミング操作により決定される仮想経路と、ターゲット機器200の実際の移動経路とを対応付けるためには、スタートブロック120Sの基準方向とターゲット機器200の進行方向(又は、前後方向)との関係を明確にしておく必要がある。
図13は、本実施形態に適用されるスタートブロックの外観表記の一例を示す概略図である。
このような仮想経路と移動経路との対応付けを支援、誘導する手段として、例えば図13(a)、(b)に示すように、スタートブロック120Sの立方体の各面に、ターゲット機器200の外観を模し、ターゲット機器200の進行方向を基準方向として明確にしたイラストが表記されている。図13(b)においては、スタートブロック120Sの立方体の6面のうち、例えば上面と前後左右の側面にターゲット機器200である自走式の玩具の上面図と前後側面図、左右側面図がイラストとして表記された例を示す。なお、スタートブロック120Sの外観表記については、ターゲット機器200の進行方向を基準方向として示すものであれば、上記のイラストに限らず、写真画像や記号、文字等を表記するものであってもよい。
これにより、スタートブロック120Sの外観表記を視認することにより、ターゲット機器の進行方向との対応付けが直感的に可能になるので、年少者であっても、プログラミング操作の際にスタートブロック120Sに連結接続するプログラミングブロック120の配置(方向や位置関係)を正確に把握、理解して、効率的なプログラミング学習を実現することができる。
なお、上述したプログラミング操作及びプログラム生成、実行方法においては、ターゲット機器200の機能動作の設定方法として、ターゲット機器200の移動経路に対応する仮想経路を形成する複数のプログラミングブロック120のうち、当該機能動作を実行する位置に対応するプログラミングブロック120に、予め所望の機能動作に関する機能情報を設定する手法を示した。本発明はこの形態に限定されるものではなく、次のような設定方法を適用することができる。
図14は、本実施形態に適用されるターゲット機器の機能動作の設定方法の一例を示す概略図である。
ターゲット機器の機能動作の設定方法の一例としては、図14(a)、(b)に示すように、スタートブロック120Sに複数のプログラミングブロック120を順次連結接続することにより、ターゲット機器200の移動経路を規定する仮想経路が決定され、当該複数のプログラミングブロック120のうちの、所望の機能動作を実行する位置に対応するプログラミングブロック120上に、当該機能動作が設定された機能設定ブロック120Fが1又は複数個積み重なるように連結接続される。ここで、スタートブロック120Sに連結接続される複数のプログラミングブロック120は、仮想経路を決定するためだけに使用され、プログラミングブロック120上に積み重なるように連結接続される機能設定ブロック120Fは、機能動作を設定するためだけに使用される。また、機能設定ブロック120Fは、連結接続されるプログラミングブロック120と同一又は同等の外形形状及び寸法を有している。
このような機能動作の設定方法においては、上述した実施形態と同様に、プログラミング操作処理において、スタートブロック120Sにプログラミングブロック120が連結接続されることにより、ブロックI/F部122を介して後方側のプログラミングブロック120が有するブロック情報や連結特定情報がスタートブロック120Sに送信される。
また、所望の機能動作を実行する位置に対応するプログラミングブロック120上に、1又は複数の機能設定ブロック120Fが積み重なるように連結接続されることにより、連結接続されたプログラミングブロック120のブロックI/F部122を介して当該機能設定ブロック120Fが有する機能情報がスタートブロック120Sに送信される。
これにより、プログラム生成、実行処理において、複数のプログラミングブロック120により決定された仮想経路に対応する移動経路に沿ってターゲット機器200が移動し、機能設定ブロック120Fが積み重ねられたプログラミングブロック120の位置に対応する移動経路上の位置にターゲット機器200が到達すると、機能設定ブロック120Fに設定された1又は複数の機能動作を実行する。ここで、図14(a)においては、一のプログラミングブロック120上に1個の機能設定ブロック120Fが積み重ねられて、ターゲット機器200の機能動作として特定の楽音を発生する場合を示し、図14(b)においては、一のプログラミングブロック120上に2個の機能設定ブロック120Fが積み重ねられて、ターゲット機器200の機能動作として特定の発光色で発光するとともに、特定の位置で回転する場合を示す。
なお、図14に示したターゲット機器の機能動作の設定方法においては、仮想経路を形成する任意のプログラミングブロック120上に、同一の外形形状及び寸法を有するとともに、所望の機能動作が設定された機能設定ブロック120Fを積み重ねて連結接続する形態を示した。本発明はこれに限定されるものではなく、プログラミングブロック120上に積み重ねて連結接続される機能設定ブロック120Fと同等の、機能動作を設定する機能を有しているものであれば、プログラミングブロック120と同一の外形形状や寸法を有していないものであってもよい。すなわち、1以上の任意の機能動作を設定するための機能情報と固有の識別情報とを有するとともに、プログラミングブロック120の立方体の各面に対して良好に密着又は吸着して接続され、かつ、視覚的に識別可能な形状や色彩等を有するマーカ等を適用するものであってもよい。
また、上記のマーカを利用した形態の他の例として、マーカは固有の識別情報のみを有し、また、仮想経路を形成する複数のプログラミングブロック120とは別の場所に、当該マーカに対応付けて1以上の任意の機能動作を設定するための機能情報を用意しておき、スタートブロック120Sやコアユニット160においてマーカの識別情報を認識することにより、用意された機能情報を受信して、プログラムの生成に使用するものであってもよい。さらに、他の形態として、上記のマーカは実体のある物品でもよいし、例えば任意のプログラミングブロック120の立方体の各面への接触又は押下により、識別変移部124が変移すること(例えば発光や画像の表示)により認識される実体のないものであってもよい。
また、ターゲット機器の機能動作の設定方法の他の例としては、機能設定ブロック120Fとなるプログラミングブロック120の記憶部126に、複数の機能動作を規定する機能情報を予め記憶し、ソフトウェアによる設定変更やプログラミングブロック120の外面に設けられた切替スイッチの操作、重力センサや加速度センサによる傾きや衝撃の検知等により、当該複数の機能動作のうちから所望の機能動作を選択して実行可能なように設定するものであってもよい。なお、この形態においては、各プログラミングブロック120は、図示を省略した切替スイッチや上記の各種センサを予め備えている。
ここで、複数の機能動作から所望の機能動作を選択して設定する手法としては、例えば、プログラミングブロック120の外面にボタンスイッチやタッチセンサを設け、ユーザによる当該スイッチやセンサへの接触又は押下の回数や、その時間に応じて、機能動作をトグル切り換え(例えば、1つの機能動作のオン、オフ、又は、2つ以上の異なる機能動作の順次切り換え)をする形態を適用することができる。また、他の形態として、ユーザによる外面のボタンスイッチやタッチセンサへの接触又は押下の際の力の大きさや、ダブルクリックなどの操作の種類に応じて、機能動作を切り換えて設定するものであってもよい。
また、さらに他の形態として、例えば立方体形状を有するプログラミングブロック120において、立方体の6面の各々に異なる機能動作を対応付けて、各機能動作を規定する機能情報を記憶部126の記憶領域に記憶した形態を有するものであってもよい。そして、ユーザが当該プログラミングブロック120の任意の面を、前方側のプログラミングブロック120又はスタートブロック120Sに連結接続した状態を、ブロックI/F部122の連結検知部により検知することにより、複数種類の機能動作の中から当該面に対応付けられた機能動作を設定するものであってもよい。
なお、本実施形態においては、コアユニット160にスタートブロック120Sを接続し、当該スタートブロック120Sを始点として、ターゲット機器200の移動経路に対応させて複数のプログラミングブロック120を二次元形状(平面的配置)又は三次元形状(立体的配置)に連結接続する場合について説明した。本発明はこの形態に限定されるものではなく、仮想経路を形成する複数のプログラミングブロック120が直接コアユニット160に接続されているものであってもよい。但し、この場合には、連結接続される複数のプログラミングブロック120の配置形状がコアユニット160に干渉しないことを前提とする。
なお、本実施形態においては、図1に示したように、コアユニット160としてプログラミングブロック120に非接触型又は接触型のインターフェースを介して接続される専用の装置を適用した場合について説明したが、本発明はこの形態に限定されるものではなく、スマートフォンやタブレット等の汎用のモバイル端末を適用するものであってもよい。すなわち、近年市販されている汎用のモバイル端末は、上述したコアユニット160が有する全ての構成(操作部162、外部I/F部164、記憶部166、通信I/F部168、制御部170、電源部172)を備えている。したがって、このようなモバイル端末に、スタートブロック120S及びプログラミングブロック120により取得された入力操作情報に基づいて、ターゲット機器200の動作状態を制御するためのプログラムを生成するための専用のアプリケーションソフトウェア(コンパイラ)をインストールすることにより、汎用のモバイル端末(命令生成部)を上述したコアユニット160として適用することができる。ここで、コアユニット160として汎用のモバイル端末を適用する場合には、上記のコンパイラに加え、プログラミングブロック120(機能設定ブロック120Fを含む)やターゲット機器200の各種のパラメータを設定するためのソフトウェアや、上記の入力操作情報を汎用言語(テキスト)にコード変換するソフトウェア等をインストールするものであってもよい。
次に、上述した実施形態に係るプログラム制御装置を有するプログラミング教育装置の各種の変形例について説明する。
<変形例1>
図15は、本実施形態に係るプログラミング教育装置におけるプログラミング操作及びプログラム生成、実行方法の変形例(リアルタイムモード)を示すフローチャートである。図16、図17は、本変形例に適用されるプログラミング操作処理及びプログラム生成、実行処理を説明するための概略図である。ここで、上述した実施形態と同等の構成についてはその説明を簡略化する。
上述した実施形態に係るプログラミング教育装置におけるプログラミング操作及びプログラム生成、実行方法においては、プログラミング操作処理において、ターゲット機器200の全移動経路を決定するとともに、全ての機能動作を設定した後、プログラム生成処理及びプログラム実行処理を実行するノーマルモードについて説明した。本変形例においては、上述したノーマルモードに加え、プログラミング操作処理において、一操作分の入力操作を行うたびに、当該一操作分のプログラムを生成してターゲット機器200に転送して実行するリアルタイムモードを有し、ユーザが任意のモードを選択してプログラミング学習を行う。
(プログラミング操作処理)
本変形例に係るプログラミング教育装置におけるプログラミング操作処理においては、図15のフローチャートに示すように、まず、ユーザは、スタートブロック120Sとコアユニット160とを接続してプログラム制御装置100を起動するとともに、ターゲット機器200を起動する(ステップS202)。
次いで、コアユニット160の制御部170は、ユーザにより図16(a)に示すようなモード切換スイッチ119が操作されて、ノーマルモードに設定されたか、リアルタイムモードに設定されたかを判定する(ステップS204)。ここで、モード切換スイッチ119は、上述した実施形態に示したノーマルモードでの処理動作、又は、後述するリアルタイムモードでの処理動作のいずれを実行するかを選択するスイッチであって、例えばプッシュスイッチやスライドスイッチが適用される。ここで、モード切換スイッチ119としてプッシュスイッチを適用した場合には、ユーザがモード切換スイッチ119を押下操作しない場合(ステップS204のNo)には、初期設定(デフォルト)であるノーマルモードが保持され、押下操作した場合(ステップS204のYes)には、ノーマルモードからリアルタイムモードに切り換え設定される。また、モード切換スイッチ119は、リアルタイムモードに切り換え設定された状態で、ユーザが押下操作した場合には、リアルタイムモードから再度ノーマルモードに切り換え設定される。すなわち、モード切換スイッチ119は、押下操作のたびにノーマルモードとリアルタイムモードとが交互に切り換え設定される。
制御部170は、モード切換スイッチ119によりノーマルモードが設定されたと判定した場合には、上述した実施形態において図4に示したフローチャートのステップS106以降の処理動作を実行する。一方、制御部170は、モード切換スイッチ119によりリアルタイムモードが設定されたと判定した場合には、ステップS206以降の処理動作を実行する。
なお、このステップS204におけるモードの切り換え設定に係る処理動作は、上述した実施形態に示した図4のフローチャートにおいても同様に実行され、ステップS104においてユーザがモード切換スイッチ119を押下操作しない場合には、初期設定であるノーマルモードが保持されてステップS106以降の処理動作が実行され、ユーザがモード切換スイッチ119を押下操作して、ノーマルモードからリアルタイムモードに切り換え設定された場合には、以下のステップS206以降の処理動作が実行される。
リアルタイムモードが設定された場合には、ユーザは、プログラミングブロック120を用いて、ターゲット機器200の移動経路を決定し、又は、ターゲット機器200における機能動作を設定するプログラミング操作処理を実行する(ステップS206)。
具体的には、ターゲット機器200の移動経路を決定するプログラミング操作処理においては、図16(a)に示すように、ユーザが、ターゲット機器200を動作させる際の移動経路をイメージして、コアユニット160に接続されたスタートブロック120Sを移動経路に対応する仮想経路の始点(スタート)として、移動経路の終点側となる方向に、ターゲット機器200を一操作分だけ動作させるための移動経路に対応するプログラミングブロック120を連結接続する。また、ターゲット機器200における機能動作を設定するプログラミング操作処理においては、図17(b)に示すように、ユーザが、ターゲット機器200により特定の機能動作を実行する位置に、当該機能動作が設定された機能設定ブロック120Fを連結接続する。
ユーザが、上記のようなプログラミング操作を行うと、スタートブロック120SのブロックI/F部122により、プログラミングブロック120が連結接続されているか否かを検知し、スタートブロック120Sとプログラミングブロック120との連結状態を特定する連結特定情報を取得することにより、図16(a)に示すように、ターゲット機器200の移動経路の一操作分に対応する仮想経路が決定される。また、スタートブロック120S又は前方側のプログラミングブロック120のブロックI/F部122により、機能設定ブロック120Fが連結接続されているか否かを検知し、機能設定ブロック120Fとの連結状態を特定する連結特定情報、及び、機能設定ブロック120Fが有する機能情報を取得することにより、図17(b)に示すように、ターゲット機器200の移動経路の一操作分に対応する仮想経路が決定されるとともに、ターゲット機器200の機能動作が設定される。
このとき、スタートブロック120Sの制御部128は、ブロックI/F部122により取得された一操作分のプログラミングブロック120が有するブロック情報と連結特定情報、又は、機能設定ブロック120Fが有するブロック情報と連結特定情報を取得して記憶部126の記憶領域に記憶する。また、制御部128は、当該プログラミングブロック120又は機能設定ブロック120Fの識別変移部124を所定の発光状態で発光させたり、表示画像を変化させたりして視覚的に識別可能な状態に変移させる(図16(a)中では便宜的に濃いハーフトーン、図17(b)中では便宜的に濃いハッチングで表記)。
(プログラム生成、実行処理)
次いで、プログラム生成、実行処理においては、コアユニット160の制御部170が、上述したプログラミング操作処理においてスタートブロック120Sにより取得された一操作分のブロック情報と連結特定情報とを有する入力操作情報を、プログラミング操作の一操作(ステップ)ごとに受信する(ステップS208)。
次いで、コアユニット160の制御部170は、受信した一操作分の入力操作情報に基づいて、ターゲット機器200の動作状態(移動又は機能動作)を制御するための命令を有する一操作分のプログラムを生成する(ステップS210)。
次いで、図16(a)、図17(b)に示すように、制御部170が、生成された一操作分のプログラムをターゲット機器200に転送することにより(ステップS212)、ターゲット機器200において、当該一操作分のプログラムが実行されて、ターゲット機器200が移動経路に沿って一操作分だけ移動するステップ動作、又は、ターゲット機器200が移動経路上の特定の位置で一操作分の機能動作を実行するステップ動作が行われる(ステップS214)。
このようなターゲット機器200の動作状態を制御するためのプログラミング操作処理、及び、プログラム生成、実行処理は、ターゲット機器200が移動経路の終点位置に移動してプログラミング操作が終了するまで、図15(a)、(b)及び図16(a)、(b)に示すように、一操作ごとに繰り返し実行される。(ステップS216)。なお、制御部170は、移動経路の終点(ゴール)が指示されたり、終端ブロック120Gが連結接続されたりしたことに応じて、プログラミング操作が終了したと判定する。他の例では、制御部170は、プログラミング操作中の任意のタイミングで、コアユニット160の実行停止スイッチ186の押下操作を受け付けたことに応じて、プログラミング操作が終了したと判定してもよい。
このように、本変形例によれば、ノーマルモードとリアルタイムモードとを任意に切り換えることにより、ターゲット機器200の動作状態を制御するためのプログラミング操作処理における操作内容や、プログラムの実行状態を一括して、又は、一操作ごとに視覚を通して把握することができるので、直感的かつ多面的に理解し易くなり、プログラミングの学習効果の向上を期待することができる。
<変形例2>
図18は、本実施形態に係るプログラミング教育装置におけるプログラミング操作に適用される機能動作の変形例(条件分岐、繰り返し、関数、イベント)を示す概略図である。ここで、上述した実施形態と同等の構成についてはその説明を簡略化する。
上述した実施形態においては、ターゲット機器200に実行させる機能動作として、移動経路上での移動を伴わない機能動作(アクション)を設定する場合について説明した。本変形例においては、アクション以外の他の機能動作に関する機能情報を、仮想経路上のプログラミングブロック120に設定することにより、ターゲット機器200を多様な動作状態で制御するプログラミング学習を行う。
本変形例に係るプログラミング操作に適用されるプログラミングブロック120には、上述した実施形態に示した機能動作である「アクション」の他に、「条件分岐」、「繰り返し」、「関数」、「イベント」の4種類の機能動作が設定される。以下、各機能動作について説明する。
「条件分岐」が機能動作として設定されたプログラミングブロック(以下、「条件分岐ブロック」と記す)120Aは、図18(a)に示すように、仮想経路を形成する任意のプログラミングブロック120に直接、又は、条件分岐ブロック120Aを任意のプログラミングブロック120上に積み重ねて連結接続して、当該機能動作に関する機能情報を設定することにより、当該プログラミングブロック120に対応する移動経路上の位置におけるターゲット機器200が条件分岐の機能動作を実行するように設定される。ここで、条件分岐とは、当該機能動作に関連して予め指定された条件により、条件分岐ブロック120Aが連結接続された位置以降のプログラムの実行状態が異なるような動作である。例えば図18(a)では、条件に応じて、ターゲット機器200が移動する経路が分岐する。
条件としては、例えば、ターゲット機器200に備えられた照度センサにより検出された照度が予め定めた値よりも大きいか否かに応じて、異なる動作を行うものであってよい。また、条件分岐ブロック120Aが連結接続されたプログラミングブロック120に対応する位置までターゲット機器200が移動すると、そこでターゲット機器200が一時停止するようにしてもよい。また、ターゲット機器200がマイクロフォンを備えており、その一時停止中にユーザが手を叩いた音を検出し、検出した音の回数に応じて、異なる動作を行うものであってよい。なお、これらは一例に過ぎず、他の条件を適用してよいことは言うまでもない。
なお、条件の設定方法は、次のようなものを適用することができる。 例えば、条件分岐ブロック120A自体がプログラマブルな構造であり、そこに条件を設定できるような機器、具体的には音を検知するのか光を検知するのか、また音であれば回数に応じてどう動作を行うのかを設定できる機器を用いる。 また、例えば、条件分岐ブロック120Aの上にさらに、上述のような様々な条件のうちのいずれかの条件が予め指定された、別のプログラミングブロック120を積み重ねる。 また、例えば、条件分岐ブロック120A自体に、上述のいずれかの条件が組み込まれているものを用いる。
「繰り返し」が機能動作として設定されたプログラミングブロック(以下、「繰り返しブロック」と記す)は、仮想経路を形成する任意のプログラミングブロック120に直接、又は、繰り返しブロックを任意のプログラミングブロック120上に積み重ねて連結接続して、当該機能動作に関する機能情報を設定することにより、当該プログラミングブロック120に対応する移動経路上の位置におけるターゲット機器200が繰り返しの機能動作を実行するように設定される。ここで、繰り返しとは、同じ経路を指定回数だけ繰り返し移動する動作である。
なお、繰り返しブロックの構成や設定方法は、次のようなものを適用することができる。 例えば、図18(b)に示すように、繰り返し元ブロック120Bと繰り返し先ブロック120Cとを用い、仮想経路を形成する任意のプログラミングブロック120に直接、又は、当該機能動作に関する機能情報を設定した繰り返し元ブロック120Bと繰り返し先ブロック120Cを任意のプログラミングブロック120上に積み重ねて連結接続することにより、ターゲット機器200が移動経路上の繰り返し元位置まで進んだら、繰り返し先位置へ戻る動作を、指定回数(例えば3回)だけ行う。
また、例えば、繰り返し元ブロック120Bのみを用い、仮想経路を形成する任意のプログラミングブロック120を繰り返し元に設定することにより、ターゲット機器200が移動経路上の繰り返し元位置まで進んだら、無条件でスタート位置に戻る動作を、指定回数だけ行う。
なお、繰り返し回数の指定方法としては、例えば、予め繰返し回数の規定されている繰り返しブロックを用いる形態や、繰り返しの回数を規定する回数ブロックを用い、繰り返し元ブロック120Bの上に回数ブロックを積み重ねる形態を適用することができる。さらに、別の繰り返し回数の指定方法としては、繰り返しブロックに設けられたダイヤルにより、繰り返し回数を指定する形態や、繰り返しブロックにテンキーと表示画面を設け、繰り返し回数を指定する形態、繰り返しブロックにカウンターボタンと表示画面を設け、カウンターボタンを押下することにより、繰り返し回数を指定する形態等を適用することができる。
「関数」が機能動作として設定されたプログラミングブロック(以下、「関数ブロック」と記す)120Dは、図18(c)に示すように、仮想経路を形成する任意のプログラミングブロック120に直接、又は、関数ブロック120Dを任意のプログラミングブロック120上に積み重ねて連結接続して、当該機能動作に関する機能情報を設定することにより、当該プログラミングブロック120に対応する移動経路上の位置におけるターゲット機器200が関数の機能動作を実行するように設定される。ここで、「関数」とは例えば、上述した実施形態に示したような様々な「アクション」の1つ以上をひとまとまりにしたものである。関数の機能動作の実行が設定されたプログラミングブロック120に対応する移動経路上の位置へターゲット機器200が移動したときに、その位置において、そのひとまとまりの「アクション」がまとめて実行される。具体的には、例えば、「その場で90°右へ回転する」、「予め定めた楽音を鳴らす」、「撮影する」、「その場で90°左へ回転する」という4つの「アクション」がひとまとまりになって一つの「関数」が構成されていて、ターゲット機器200が上記の位置へ移動すると、その位置でこれら4つの「アクション」を順次実行する。
このような「関数」の具体的内容は、例えば図18(c)に示すように、連結接続されたプログラミングブロック120の集合体とは別の場所で、任意の「アクション」が設定された1以上の機能設定ブロック120Fを接続(連結配置)するというプログラミング操作により指定される。このように別の場所で連結配置されたひとまとまりの1以上のプログラミングブロック120のことを、関数本体142という。関数本体142は、始点ブロックBLsと終点ブロックBLeとを含み、それらの間に、ユーザが所望する「アクション」を指定する1以上の機能設定ブロック120Fが連結配置されている。プログラミング実行時にはターゲット機器200は、始点ブロックBLsと終点ブロックBLeとの間に配置された「アクション」をそれらの並び順に実行する。
なお、図18(c)に示すように、プログラミング操作により仮想経路を形成する、連結接続された複数のプログラミングブロック120のうちの2以上のプログラミングブロック120に、同一の関数ブロック120Dを連結接続してもよい。これにより、プログラミング実行時に移動経路上の異なる位置で複数回にわたって、同じひとまとまりのアクションをターゲット機器200に実行させたい場合、一つの関数をプログラミングして、且つ、上記の異なる位置に対応する複数のプログラミングブロック120に、そのひとまとまりのアクションに対応する関数ブロック120Dを連結接続するだけでよい。このため、同じひとまとまりのアクションを複数回プログラミング操作する必要がなく、プログラミング時の操作量が低減されるとともに、関数を使ったプログラミングの学習効果の向上を期待することができる。
また、互いに異なる内容を指定する二種以上の関数ブロック120Dを、仮想経路を形成する2以上のプログラミングブロック120にそれぞれ連結接続してもよいし、一つのプログラミングブロック120に同じ又は異なる関数ブロック120Dを複数連結接続してもよい。上述のように二種以上の関数ブロック120Dを用いてプログラミング操作を行う場合は、プログラミング操作時に、各関数ブロック120Dと少なくとも各始点ブロックBLsとを互いに無線又は有線によりペアリングする操作を行う。これにより、プログラミング実行時に、各関数ブロック120Dにペアリングされた始点ブロックBLsを含む関数本体142の機能設定ブロック120Fにより指定されたひとまとまりのアクションを、ターゲット機器200に実行させることができる。
なお、仮想経路を形成する複数のプログラミングブロック120と、これらのプログラミングブロック120とは別の場所に配置される関数本体142の機能設定ブロック120Fとは非接触型又は接触型のインターフェースを介して接続されて、関数本体142の機能情報がプログラミングブロック120又はスタートブロック120Sに送信される。そして、コアユニット160において、プログラミングブロック120を用いたプログラミング操作により取得した入力操作情報とともに、当該機能情報を加味したプログラムが生成される。
「イベント処理」は割り込み処理とも言われ、ターゲット機器200の動作状態を制御するプログラムの実行中の任意のタイミングで、何らかのイベントが発生したことに応じて、ターゲット機器200が実行する処理のことである。そのようなイベントとしては、例えば、ターゲット機器200がプログラム通り動いている途中で障害物等にぶつかったことや、ユーザが「止まれ。」や「進め。」などの音声を発したこと、又は、ターゲット機器200の周囲が急に暗くなったことなどが挙げられるが、これらの例に限られるものではないことは言うまでもない。これら例示したような様々なイベントのいずれかが発生したことをターゲット機器200が検出したことをトリガーとして、そのイベントに対応させて予め設定した機能動作を、ターゲット機器200が実行する。なお、ターゲット機器200だけに限らず、プログラミングブロック120やコアユニット160のいずれかによりイベントの発生を検出する構成であってもよい。
イベント処理は、図18(d)に示すように、仮想経路を形成する複数のプログラミングブロック120とは別の場所で、任意の「アクション」が設定された複数の機能設定ブロック120Fを連結接続するプログラミング操作により実現される。ここで、図18(d)においては、ターゲット機器200がユーザの拍手を検出するとLED等の発光部を点灯させるイベント処理を示す。このように別の場所で連結配置されたひとまとまりの1以上のプログラミングブロック120のことを、イベント処理本体144という。このイベント処理本体144の具体的構成は、上述した関数本体142と同様であるので詳細な説明を省略する。関数ブロック120Dの場合と同様に、互いに異なる内容を指定する二種以上のイベントブロック120Eを、仮想経路を形成する2以上のプログラミングブロック120にそれぞれ連結接続してもよいし、一つのプログラミングブロック120に同じ又は異なるイベントブロック120Eを複数連結接続してもよい。
なお、仮想経路を形成する複数のプログラミングブロック120と、これらのプログラミングブロック120とは別の場所に配置されるイベント処理本体144の機能設定ブロック120Fとは非接触型又は接触型のインターフェースを介して接続されて、イベント処理本体144の機能情報がプログラミングブロック120又はスタートブロック120Sに送信される。そして、コアユニット160において、プログラミングブロック120を用いたプログラミング操作により取得した入力操作情報とともに、当該機能情報を加味したプログラムが生成される。
このように、本変形例によれば、プログラミングブロック120を用いたプログラミング操作において、仮想経路を形成する任意のプログラミングブロック120に直接、又は、上記の機能動作が設定された各ブロック120A〜12Fを任意のプログラミングブロック120上に積み重ねて連結接続する簡易な操作により、「アクション」の「逐次実行」に加え、「条件分岐」、「繰り返し」、「関数」、「イベント」の抽象度がより高い各機能動作をターゲット機器200に実行させるように設定することができる。
これにより、幼児等の年少者であっても、ターゲット機器200の移動と各種の機能動作を組み合わせたプログラミングを、タンジブルなプログラム制御装置を用いて容易に行うことができるとともに、その操作内容やターゲット機器200の動作状態を視覚を通して直感的に把握し易くすることができ、抽象度がより高いプログラミングの学習効果の向上を期待することができる。
なお、本変形例においては、プログラミングブロック120に設定される機能動作として、「条件分岐」、「繰り返し」、「関数」、「イベント」を個別に示して説明したが、これらは任意に組み合わせて設定するものであってもよい。
<変形例3>
図19は、本実施形態に係るプログラミング教育装置に適用される構成の変形例を示す機能ブロック図であり、図20は、本変形例に適用されるプログラム生成、実行処理の一例を説明するための概略図である。ここで、上述した実施形態と同等の構成についてはその説明を簡略化する。
上述した実施形態においては、スタートブロック120Sを始点として、複数のプログラミングブロック120を順次連結接続するプログラミング操作処理により取得した入力操作情報(ブロック情報や連結特定情報)に基づいて、ターゲット機器200の動作状態を制御するプログラムが生成される。そして、このプログラムを実行することにより、プログラミング操作時に連結接続されたプログラミングブロック120の集合体の全体配置形状により決定された仮想経路に対応する移動経路に沿って、ターゲット機器200を移動させる制御方法について説明した。本変形例においては、上述した実施形態に示した制御方法により生成されたプログラムを実行することにより、移動経路に沿って移動するターゲット機器200に対して、当該プログラムの実行中に連結接続されたプログラミングブロック120の集合体の傾きや角度(方向)を変化させることにより、ターゲット機器200をより複雑な動作状態で制御するプログラミング学習を行う。
本変形例に係るプログラミング教育装置においては、例えば図19に示すように、上述した実施形態に示したプログラム制御装置100のスタートブロック120Sが、加速度センサ134をさらに備えた形態を有している。ここで、加速度センサ134は、スタートブロック120Sの傾きや角度(方向)を随時検出する。スタートブロック120Sの制御部128は、加速度センサ134からの検出信号の変化を監視して、スタートブロック120Sの傾きや角度(方向)に関するブロック傾斜情報を生成して記憶部126の記憶領域に記憶する。
本変形例に係るプログラミング操作処理においては、上述した実施形態と同様に、ユーザがターゲット機器200の移動経路をイメージして、始点となるスタートブロック120Sに対して複数のプログラミングブロック120を順次連結接続する。これにより、スタートブロック120Sの制御部128は、連結接続された全てのプログラミングブロック120に関するブロック情報及び連結特定情報を受信して記憶部126の記憶領域に記憶する。
このプログラミング操作処理においては、スタートブロック120Sの制御部128は、加速度センサ134からの検出信号を監視しない状態、又は、加速度センサ134の検出動作自体を停止した状態を保持する。これにより、ユーザがスタートブロック120Sにプログラミングブロック120を連結接続する際に、スタートブロック120Sを持ち上げたり、移動させたりすることによりスタートブロック120Sの傾きや角度(方向)が著しく変化する状態を検出しないようにする。
次いで、プログラム生成、実行処理においては、プログラミング操作処理により取得された入力操作情報に基づいて、コアユニット160の制御部170によりターゲット機器200の動作状態を制御するプログラムを生成して、ターゲットに転送する。ターゲット機器200は、転送されたプログラムを実行して、図20(a)に示すように、プログラミング操作処理において決定された仮想経路に対応する移動経路A(図中、細い点線で表記)に沿って移動する。また、ターゲット機器200の移動経路上での移動に伴って、現在時点の移動位置に対応するプログラミングブロック120が発光して視覚的に識別可能な状態になる。
このプログラム実行処理においては、スタートブロック120Sの制御部128は、加速度センサ134からの検出信号を監視し、検出信号に変化が生じた場合には、スタートブロック120Sの傾きや角度(方向)の変化量を含むブロック傾斜情報を生成してコアユニット160に送信する。コアユニット160の制御部170は、ブロック傾斜情報を受信すると、当該ブロック傾斜情報に含まれるスタートブロック120Sの傾きや角度(方向)の変化量を加味した新たなプログラム、又は、修正プログラムを生成してターゲットに転送する。ターゲット機器200は、現在実行中のプログラムを転送されたプログラムに更新することにより、図20(b)に示すように、現在実行中のプログラムで設定されていた移動経路Aから、現在時点以降、更新後のプログラムで設定される移動経路B(図中、太い点線で表記)に沿って移動する。
なお、スタートブロック120Sの傾きや角度(方向)に変化がない場合には、ターゲット機器200は、現在実行中のプログラムを継続して、図20(a)に示したように、当該プログラムで設定された移動経路Aに沿って終点位置まで移動する。
ここで、本変形例に示した制御方法は、ターゲット機器200においてプログラム実行中に、スタートブロック120Sに連結接続された複数のプログラミングブロック120の集合体の傾きや角度(方向)が変化した場合に、ターゲット機器200の動作状態をどのように変化させるかという処理動作を行うものであり、これは上述した変形例2に示したイベント処理の機能動作に相当するものである。この場合は、イベント処理本体として、加速度センサによるスタートブロック120Sの傾きや角度(方向)の変化の検出、当該変化量に応じたプログラムの生成、ターゲット機器200における実行プログラムの更新、の各機能動作が予め設定されることになる。
このように、本変形例によれば、ターゲット機器200のプログラム実行中に、仮想経路を形成する複数のプログラミングブロック120の集合体を持ち上げたり移動させたりして、その傾きや角度(方向)を変化させることにより、ターゲット機器200の移動経路を含む動作状態を変化させることができる。このとき、イベント処理等の高度な機能動作を含むプログラミングを、タンジブルなプログラム制御装置を用いて容易に行うことができるとともに、その操作内容やターゲット機器200の動作状態を視覚を通して直感的に把握し易くすることができ、プログラミングの学習効果の向上を期待することができる。
なお、上述した各実施形態においては、年少の幼児を対象とするプログラミング教育装置について説明したが、本発明はこれに限定されるものではない。本発明は、タンジブルな入力操作、及び、視覚を通して操作内容やターゲット機器の動作状態を把握、理解できる特徴を有していることから、例えばプログラミングの初心者を対象とするものであってもよいし、身体の機能回復のためのリハビリテーションを必要とする人を対象とするものであってもよい。
以上、本発明のいくつかの実施形態について説明したが、本発明は、上述した実施形態に限定されるものではなく、特許請求の範囲に記載された発明とその均等の範囲とを含むものである。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
(付記)
[1]
タンジブルな複数の形状指示部がユーザ操作によって互いに相対的に配置されることで前記複数の形状支持部の相対位置が指示されたことに応じて、前記複数の形状支持部の相対位置に基づいて、第1形状を指示する第1形状指示部と、
前記第1形状指示部により指示された前記第1形状に対応させて被制御部を移動させる命令を生成する命令生成部と、
を備えることを特徴とするプログラミング装置。
[2]
前記複数の形状指示部のうちのいずれかの形状指示部に対応付けて前記被制御部における機能を設定する機能設定部をさらに備え、
前記命令生成部は、
前記命令に応じて前記被制御部が前記いずれかの形状指示部に対応する位置へ移動したときに、前記機能設定部により設定された前記機能を前記被制御部に実行させる命令を生成することを特徴とする[1]に記載のプログラミング装置。
[3]
前記複数の形状指示部のうちのいずれかの形状指示部は、前記機能の設定を受け付ける機能受付部をさらに備え、
前記命令生成部は、
前記命令に応じて前記被制御部が前記いずれかの形状指示部に対応する位置へ移動したときに、前記機能受付部が受け付けた前記機能を該被制御部に実行させる命令を生成することを特徴とする[1]又は[2]に記載のプログラミング装置。
[4]
前記第1形状に対応して移動する前記被制御部を、さらに備えることを特徴とする[1]乃至[3]に記載のプログラミング装置。
[5]
タンジブルな複数の形状指示部がユーザ操作によって互いに相対的に配置されることで前記複数の形状支持部の相対位置が指示されたことに応じて、前記複数の形状支持部の相対位置に基づいて、第1形状を指示し、
前記指示された前記第1形状に対応させて被制御部を移動させる命令を生成する、
ことを特徴とするプログラミング方法。
[6]
プログラミング装置を制御するための制御プログラムであって、
前記プログラミング装置は、第1形状指示部と命令生成部とを備え、
前記プログラミング装置を制御するコンピュータに、
タンジブルな複数の形状支持部がユーザ操作によって互いに相対的に配置されることで前記複数の形状支持部の相対位置が指示されたことに応じて、前記複数の形状支持部の相対位置に基づいて、前記第1形状指示部によって第1形状を指示させ、
指示された前記第1形状に対応させて被制御部を移動させる命令を、前記命令生成部によって生成させる、
ことを特徴とする制御プログラム。