(57)【特許請求の範囲】
【請求項１】
アクティブ信号入力に応じてコマンドを出力する複数のブロックユニットと、前記ブロックユニットが複数着脱可能でかつ前記ブロックユニットの共通バスに接続されたコントローラを搭載した基板と、出力装置と、を備え、
前記ブロックユニットは、隣接する前記ブロックユニット又は前記コントローラから前記アクティブ信号を受け、前記コマンドを前記共通バスに出力し、
前記コントローラは、前記共通バスより読み出した前記コマンドに従って前記出力装置の状態を変更あるいは保持することを特徴とする、プログラミング学習装置。
【請求項２】
前記コマンドを前記共通バスに出力すると共に、前記コマンド固有の方向に隣接して装着された前記ブロックユニットに前記アクティブ信号を出力する前記ブロックユニットを含むことを特徴とする、請求項１に記載のプログラミング学習装置。
【請求項３】
複数の隣接する前記ブロックユニットのいずれに前記アクティブ信号を出力するかを、前記共通バス上の情報より判断する前記ブロックユニットを含むことを特徴とする、請求項２に記載のプログラミング学習装置。
【請求項４】
外部入力装置を備え、前記コントローラは前記外部入力装置から得られた情報を前記共通バスに定期的あるいは前記情報の変化時に送出することを特徴とする、請求項３に記載のプログラミング学習装置。
【請求項５】
前記ブロックユニットは、前記コマンドの種別情報を記録する書き換え可能な記録装置を具備し、前記アクティブ信号入力に応じて前記記録装置より読み出した前記種別情報に対応した前記コマンドを前記共通バスに出力することを特徴とする、請求項１乃至４の何れかに記載のプログラミング学習装置。
【請求項６】
メモリを搭載し、前記共通バスより読み出した複数の前記コマンドを前記メモリに格納する機能と、前記アクティブ信号を受けて前記メモリに格納した前記コマンドを読み出して前記共通バスに出力する前記ブロックユニットを含むことを特徴とする、請求項１乃至５の何れかに記載のプログラミング学習装置。
【請求項７】
前記ブロックユニットを１つ着脱可能な第２のコントローラを搭載した第２の基板と、第２の出力装置と、を備えたロボットを有し、
あらかじめ前記基板上で複数の前記コマンドを前記メモリに格納した前記ブロックユニットを、前記第２の基板に装着することを特徴とする、請求項６記載のプログラミング学習装置。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、コンピュータを使わずにプログラミングの基本概念を学習するためのプログラミング学習装置に関する。
【背景技術】
【０００２】  近年の人工知能技術を利用した多くの分野のシステム開発や、ビッグデータ処理の需要の高まり、小学校のプログラミング教育必須化などにより、プログラミング教育に関する関心が高まっている。
プログラミングの基本は、基本コマンドの逐次処理とループや分岐などの処理順番の制御であり、特定の言語体系の習得やコンピュータがなくてもプログラミング的思考を学習することは十分可能である。この観点からタイピングやコンピュータの操作に慣れていない小学生を含む初心者向けにプログラミング学習を行うための教材が各社より多数提案されている。
特許文献１に記載されたプログラミングの学習装置には、基本的な動きを定義したブロックを複数装着することで装着順番どおりの動きをするプログラミングカーが示されており、逐次処理だけではなくループ処理やセンサ入力に応じたジャンプ処理の記載もある。
一方、特許文献２に記載された学習玩具は、コマンド情報が記録されたパネルを連続して配置して、その上を移動ロボットがコマンド情報を読み取りながら走行するものであり、例えば読み出した複数の音程コマンドをメモリに格納した後でメロディーとして繰返し演奏するといった記述もある
また、特許文献３に記載されたデジタル回路システムは、論理演算や四則演算などの単機能演算を行う複数のブロックユニットを基板に装着することでより複雑なデジタル回路を作る学習装置であり、ブロックユニット内で演算された情報はシリアル伝送されて隣接のブロックユニットに伝えることで配線の簡略化を実現している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第６３２１０６６号公報
【特許文献２】特開２０２０−１４５７５号公報
【特許文献３】特許第５６７８２２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】  特許文献１に記載されたプログラミングの学習装置は、モータ等の駆動系を含む車体上に複数のブロックを装着するための装着部が具備されている。この学習装置は装着できるブロック数以上に複雑な動作をプログラムすることはできないため、複雑な動作を行うためには多くのブロックが実装できる装着部が必要となる。これを実現しようとすると学習装置が大型化してしまうという欠点がある。【０００５】  また、ブロックの処理順は基本的に線状の決まった経路だけであり、ループ処理用の特殊領域やセンサによる先頭ブロックへのジャンプ等あるものの、２重ループの実現さらにはセンサに応じた異なる動きを実現するための分岐処理ができないという欠点がある。【０００６】  特許文献２に記載された学習玩具は、コマンドが記録されたパネルが移動ロボットとは別に配置されるため、パネルを増やせばより複雑な動作を行うことができる。しかし、配置したパネル上しか移動できないという大きな制限がある。また特許文献１と同様にコマンド（パネル）の並びは線状であるため条件分岐や２重ループ制御が実現できないという欠点がある。【０００７】  特許文献３に記載されたデジタル回路システムにおけるブロックユニットは、回路の一要素である。このため全てのブロックユニットが同時に動作していることは自明である。一方、プログラミング学習は、単一のＣＰＵが基本コマンドを逐次的に実行することを学ぶことが基本である。このため、ブロックユニットに基本コマンドを割り当てても特許文献３に記載のシステムではプログラミング学習を行うことができない。
【課題を解決するための手段】
【０００８】  かかる課題を解決するために、請求項１に記載の発明は、アクティブ信号入力に応じてコマンドを出力する複数のブロックユニットと、前記ブロックユニットが複数着脱可能でかつ前記ブロックユニットの共通バスに接続されたコントローラを搭載した基板と、出力装置と、を備え、前記ブロックユニットは、隣接する前記ブロックユニット又は前記コントローラから前記アクティブ信号を受け、前記コマンドを前記共通バスに出力し、前記コントローラは、前記共通バスより読み出した前記コマンドに従って前記出力装置の状態を変更あるいは保持するプログラミング学習装置としたことを特徴とする。【０００９】  請求項２に記載の発明は、請求項１に記載の構成に加えて、前記コマンドを前記共通バスに出力すると共に、前記コマンド固有の方向に隣接して装着された前記ブロックユニットに前記アクティブ信号を出力する前記ブロックユニットを含むプログラミング学習装置としたことを特徴とする。【００１０】  請求項３に記載の発明は、請求項２に記載の構成に加えて、複数の隣接する前記ブロックユニットのいずれに前記アクティブ信号を出力するかを、前記共通バス上の情報より判断する前記ブロックユニットを含むプログラミング学習装置としたことを特徴とする。【００１１】  請求項４に記載の発明は、請求項３に記載の構成に加えて、外部入力装置を備え、前記コントローラは前記外部入力装置から得られた情報を前記共通バスに定期的あるいは前記情報の変化時に送出するプログラミング学習装置としたことを特徴とする。【００１２】  請求項５に記載の発明は、請求項１乃至４の何れかに記載の構成に加えて、前記ブロックユニットは、前記コマンドの種別情報を記録する書き換え可能な記録装置を具備し、前記アクティブ信号入力に応じて前記記録装置より読み出した前記種別情報に対応した前記コマンドを前記共通バスに出力するプログラミング学習装置としたことを特徴とする。【００１３】  請求項６に記載の発明は、請求項１乃至５の何れかに記載の構成に加えて、メモリを搭載し、前記共通バスより読み出した複数の前記コマンドを前記メモリに格納する機能と、前記アクティブ信号を受けて前記メモリに格納した前記コマンドを読み出して前記共通バスに出力する前記ブロックユニットを含むプログラミング学習装置としたことを特徴とする。【００１４】  請求項７に記載の発明は、請求項６に記載の構成に加えて、前記ブロックユニットを１つ着脱可能な第２のコントローラを搭載した第２の基板と、第２の出力装置と、を備え、あらかじめ前記基板上で複数の前記コマンドを前記メモリに格納した前記ブロックユニットを、前記第２の基板に装着するプログラミング学習装置としたことを特徴とする。
【発明の効果】
【００１５】  本発明は、条件分岐による異なる動作および多重ループ処理をプログラミング可能である。これはブロックユニット自体が共通バス上の情報により分岐経路を判断できるためである。【００１６】  また、少ないブロックユニットでバリエーションに富んだプログラミングが可能である。これはブロックユニット内の種別情報を書き換えることで出力するコマンドを変更できるため、ブロックユニットを有効に活用できるためである。【００１７】  また、コンパクトな移動ロボットを含む学習装置が実現できる。これは、複数ブロックユニットの接続でプログラミングしたシーケンスを、メモリを搭載したブロックユニット１つに統合が可能であり、移動ロボットは１つのブロックユニットだけを搭載すればよいためである。【００１８】  また、基板に装着できるブロックユニット数を超えた複雑なプログラミングを行うことができる。これは統合したブロックが他のブロックユニットと接続可能であり、さらなる再統合ができるからである。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１の実施の形態におけるブロック図である。
【図２】本発明のブロックユニットの裏面を示す斜視図である。
【図３】本発明のプログラミング学習装置の基板の外観を示す斜視図である。
【図４】分岐処理を行うようにブロックユニットを装着したプログラミング学習装置の外観を示す斜視図である。
【図５】図４における内部信号のタイミングチャートである。
【図６】ループ処理を行うようにブロックユニットを装着したプログラミング学習装置の外観を示す斜視図である。
【図７】図６における内部信号のタイミングチャートである。
【図８】２重ループ処理を行うようにブロックユニットを装着したブログらミング学習措置の外観を示す斜視図である。
【図９】図８に示すブロックユニット装着時の仮想ロボットの移動経路を示す図である。
【図１０】障害物回避移動ロボットを実現するようにブロックユニットを装着したプログラミング学習措置の外観を示す斜視図である。
【図１１】図１０に示す移動ロボットの移動経路を示す図である。
【図１２】本発明の第２の実施の形態におけるプログラミング学習装置の移動ロボットの外観を示す斜視図である。
【図１３】複数コマンドを統合したブロックユニットを再度利用した装着例を示すプログラミング学習装置の外観を示す斜視図である。
【発明を実施するための形態】
【００２０】  本発明の実施の形態について、図１から図１３を用いて説明する。
【００２１】  図１には、本発明の第１の実施の形態におけるブロック図が示されている。
本発明のプログラミング学習装置は、６つのブロックユニット１０ａ、１０ｂ、１１、１２ａ、１２ｂ、１３と、基板２、コントローラ２１、出力装置３、外部入力装置４で構成され、基板２上の共通バス２２に全てのブロックユニットとコントローラ２１が接続されている。またコントローラ２１に出力装置３と外部入力装置４が接続されている。また、コントローラ２１とブロックユニット１１間がアクティブ信号ａ０で接続されており、同様に、ブロックユニット１１とブロックユニット１０ａ間はアクティブ信号ａ１、ブロックユニット１０ａとブロックユニット１２ａ間はアクティブ信号ａ２、ブロックユニット１１とブロックユニット１０ｂ間はアクティブ信号ａ３、ブロックユニット１０ｂとブロックユニット１２ｂ間はアクティブ信号ａ４、によりそれぞれ接続されている。ブロックユニット間の接続は基板２への装着順により自由に変更できる構造であり、ブロックユニットの個数とアクティブ信号の接続は上記に限定されるものではない。ブロックユニットの着脱および電気的な接続に関して次に説明する。
【００２２】  図２には、ブロックユニット１を裏面から見た斜視図が示されている。図１の６つのブロックユニットはブロックユニット１と同じ構造を持つものとする。裏面は正方形で４つのアクティブ信号用導電部材１６が形成されており、裏面を基板２に接するように装着して電気的に接続する構造となっている。裏面の形状は正多角形が望ましい。正方形に限定する必要はなく、例えば正六角形形状でもよい。導電部材はブロックユニット裏面に形成せず、基板２側に形成してもよい。裏面の辺の数にアクティブ信号の本数が依存するため、正六角形形状の場合、６つの導電部材が必要である。裏面の中央には共通バス２２と接続するための導電部材１５が形成されている。ここでは図示していない共通グランド用の導電部材の他に電源用の導電部材を設けてもよい。導電部材１５は中央に配置する必要はないが、ブロックユニットを回転して接続しても基板２の共通バス２２に接続できるように基板２側の電極をブロックユニットが装着される領域の中心に対して点対称に配置する必要がある。
【００２３】  図３は出力装置３と外部入力装置４を装着した基板２の外観を示す斜視図である。出力装置３と外部入力装置４は基板２上に必ずしも実装する必要はない。基板２上にはブロックユニット１を固定するための固定用部材２３が形成されており、基板２上にブロックユニット１を装着すると、基板２上の電極２４および２５が、ブロックユニット裏面の導電部材に接触して電気的に接続される。電極２４は共通バス２２に接続されており、全てのブロックユニットとコントローラ２１が接続される。図３の電極２５は下に隣接するブロックユニットと接続する配線パターンに接続されているが、同様に上側、左側、右側に隣接するブロックユニットに接続するための電極も含むものとする。ブロックユニット１の装着による電気的な接続を実現するための機構は、例えばピンソケット形状でもよいし、基板２上の電極とブロックユニット１側の電極を、導電性ゴムやメッキしたバネ等を介して結合してもよい。また、ブロックユニット１が基板面に対して０度、９０度、１８０度、２７０度の４方向のいずれでも装着可能にする構造が望ましい。以上のようにブロックユニットの装着の並び順により、基板２を介してアクティブ信号が隣接ブロックユニット間で接続される。また、図３ではブロックユニットが格子状に４行ｘ４列で１６個に接続できるようになっているが、この数値に制約はなく、格子状に限定することもなく、曲面上に配置できる構造であってもよい。また、各ブロックユニットの基準電位あるいはグランドを接続するための電極は図示していないが形成されているものとする。また、基板２から電源を供給するための電極を設けてもよい。
【００２４】  コントローラ２１にはディスプレイ形状の出力装置３と、スイッチ形状の外部入力装置４が接続されている。出力装置３はディスプレイ等の表示装置以外の例えばモータ等のアクチュエータでもよい。さらにはブザーやスピーカでもよくそれらの組み合わせでもよい。外部入力装置４も、スイッチだけではなく光センサや超音波センサ、傾きセンサでもよい。またコントローラ２１は左上のブロックユニットにアクティブ信号を送るための配線パターンが形成されており、左上に装着したブロックユニットからコマンド処理を実行する。続いて、図１を用いてブロックユニットの動作に関して説明する。
【００２５】  各ブロックユニットは、アクティブ信号を受信すると共通バス２２にコマンドを出力し、次に実行する隣接ブロックユニットに対してアクティブ信号を出力する。共通バス２２は、パラレルバスインターフェースよりもＵＡＲＴ（Ｕｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ／Ｔｒａｎｓｍｉｔｔｅｒ）やＩ２Ｃ（Ｉｎｔｅｒ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などのシリアルインターフェースの方が、少ない信号線で配線が可能なため望ましい。ａ０、ａ１、ａ２、ａ３、ａ４がアクティブ信号であり、最初にコントローラ２１がａ０をアクティブにするとブロックユニット１１はコマンドを共通バス２２に送出し、隣接するブロックユニット１０ａに向けてアクティブ信号ａ１を出力する。ブロックユニット１０ａはこれを受けてコマンドを共通バス２２に送出し、隣接するブロックユニット１２ａに向けてアクティブ信号ａ２を出力する。このようにチェーン状につながったブロックユニットが次々とアクティブになって共通バス２２にコマンドを出力していく。従って、ブロックユニットの並びを変えることで出力するコマンドの順番を容易に変更することができ、これがプログラミングに相当する。
【００２６】  最初に実行するブロックユニット１１のアクティブ信号ａ０はコントローラ２１が出力してもよいし、電源投入直後にアクティブ信号を出力する図示していない開始機能を有するブロックユニットでもよい。前者の場合は、最初に実行するブロックユニットの装着位置を限定する必要があるがブロックユニットの数を１つ削減できる。一方、後者の場合には最初に実行するブロックユニットの位置に制限がなく開始ブロックユニットに隣接するブロックユニットから実行を開始できる。
【００２７】  コントローラ２１は、各ブロックユニットから共通バス２２に出力されたコマンドを解釈し、コントローラ２１に接続されている出力装置３の状態を変更あるいは保持する。例えば、モータの回転速度や回転方向、ディスプレイに表示される値、またはスピーカが発生する音程や音色などを変更する。また、一定時間待ちを行うコマンドの場合には、現在の状態を保持することになる。
【００２８】  ブロックユニットは、出力するアクティブ信号の本数が異なる３グループと、統合処理を行う特殊機能１種を合わせた４グループがある。
【００２９】  第１のグループは、１０ａおよび１０ｂのように出力するアクティブ信号の本数が１本であり、モータ制御コマンドで言えば「前進」「後退」「右回転」「左回転」「速度変更」など、出力装置３の状態を変更後に次のコマンドに制御を渡す基本コマンドを出力するものである。また一定時間待ちを行う「タイマー」もこのグループである。
【００３０】  第２のグループは、ブロックユニット１１のように出力するアクティブ信号の本数が複数個有するものである。「繰返」「分岐」などコマンドの流れを切替えるフロー制御用コマンドに相当し、どのアクティブ信号を有効にするかを、共通バス２２に流れる情報を用いて判断する。
【００３１】  第３のグループは、ブロックユニット１２ａ、１２ｂのようにアクティブ信号を出力しないものである。このグループではフロー制御用コマンドを出力する「復帰」や「先頭戻り」などに相当する。このコマンドを受信した別のブロックユニットあるいはコントローラがアクティブ信号を生成してシーケンスをつないでいく。「復帰」は「繰返」と対にして使用し、この２つのブロックユニットに挟まれたブロックユニットを指定回数だけ繰り返すものとする。
【００３２】  第４のグループであるブロックユニット１３は、コマンド統合時には、内蔵するメモリ１３１に、共通バス２２上に流れる複数コマンドをフロー制御コマンドも含めて記録する。また再生時にはアクティブ信号を受けてメモリ１３１上のコマンドを読み出して共通バス２２に出力する。すなわち複数ブロックユニットで実現したものと同じシーケンスを１つのブロックに統合することができる。メモリ１３１はフラッシュメモリ等の不揮発性メモリが望ましい。また記録／再生の動作を切り替えるためのスイッチを設けてもよい。再生時に一連のコマンド出力が終了後に、隣接ブロック用のアクティブ信号を出力してもよい。これにより「統合」ブロックユニットを再度利用してブロックユニットを連結することでさらに複雑なシーケンスを作ることができる。この機能はプログラミング学習におけるモジュール化に相当する。
【００３３】  ブロックユニットは単にコマンドを出力するだけではなく、共通バス２２上の情報を読み出してブロックユニット自身が判断を行うものも存在する。この処理を実現するために、例えば、専用の論理回路で実現してもよいし、小型のマイコンをブロックユニットに実装し、マイコン内のプログラムで実現するようにしてもよい。
【００３４】  ブロックユニットは、出力するコマンドの種別を保持するための書き換え可能な記録装置を有してもよい。この記録装置は例えば、４ｂｉｔ程度のロータリースイッチでもよいし、マイコンのフラッシュメモリでもよい。また、「前進」「タイマー」「繰返」「分岐」などの処理を行う複数のプログラムをマイコン内に配置して、読み出したコマンドの種別に応じてプログラムを切替えるようにしてもよい。これにより、１つのブロックユニットを必要に応じて、「前進」「後退」「繰返」などに変更できるため、少ないブロックユニット数で多くのバリエーションのプログラミング学習を行うことが可能となる。また、コマンド種別に加えて、回転速度や待ち時間、繰返し回数などのパラメータも一緒に記録しておいてもよい。
【００３５】  図４の斜視図には、条件分岐を含むブロックユニットの装着例を示してあり、図１のブロック図に相当する。最初にコントローラ２１が出力するアクティブ信号により「分岐」機能のブロックユニット１１が最初にアクティブとなる。スイッチ４が押されていない場合には、下向きに隣接している「前進」機能のブロックユニット１０ａを実行し、次に「先頭戻り」機能のブロックユニット１２ａを実行する。各ブロックユニットに描かれている三角マークはアクティブ信号の出力先を示している。ブロックユニット１２ａは「先頭戻り」コマンドであるため、これを検出したコントローラ２１が左上のブロックユニット１１に向けてアクティブ信号を出力し最初の状態に戻る。ブロックユニット１０ａは「前進」コマンドを出力するためスイッチが押されない限り「前進」し続けることになる。「前進」とは、ディスプレイ３上の表示された仮想ロボットが動いてもよいし、モータを実装した基板２自体を動かしてもよい。スイッチ４が押された場合、ブロックユニット１１は右側に隣接するブロックユニット１０ｂに制御を移す。ブロックユニット１０ｂは「後退」コマンドを出力後、「先頭戻り」機能のブロックユニット１２ｂに制御が移り、左上のブロックユニット１１に戻る。
【００３６】  基板２上にはこの他に「統合」機能のブロックユニット１３が接続されている。通常は外した状態でプログラミング学習を行う。ブロックユニット１３は、ブロックユニット１１、１０ａ、１２ａ、１０ｂ、１２ｂの連結で実現したシーケンスを、共通バス２２から読み出し、内部メモリに記録する。このシーケンスの記録時にはアクティブ信号は不要であるため、他のブロックユニットと隣接配置する必要はない。ブロックユニット１３は、統合処理を始める前に、コントローラあるいは全ブロックユニットに対してシーケンス検出動作を始めるコマンドを出力してもよい。このコマンドにより分岐を行うブロックユニットは、外部入力装置４が変化しなくても複数のアクティブ信号を順番に有効にする。各ブロックユニットは分岐経路も含めて順番にコマンドを共通バス２２に出力することができる。また、ブロックユニットの並びによっては経路がループするものも存在するが、例えばインクリメントするコマンド番号をコマンドと一緒に共通バス２２に出力することでループ状態を判断することができる。
【００３７】  図５は図４に示すブロックユニットを装着したプログラミング学習装置の内部信号を示すタイミングチャートである。起動後、コントローラ２１はブロックユニット１１に接続されている信号線ａ０にアクティブ状態を示すＨｉレベルのパルスを出力する。アクティブ信号は１ビットのレベル信号として描かれているがバスインターフェースにアクティブ状態を示すコマンドを出力する形式でも構わない。ブロックユニット１１は、このＨｉレベルを受けて、まず共通バスｂｓに流れるセンス情報を取得後、コマンドｃ０を出力する。共通バスｂｓにはセンサの検出情報ｓｅｎｓがコントローラ２１を介して定期的に出力されている。検出情報が変化した時だけ出力してもよい。タイミングチャートではｓｅｎｓ信号は２値のレベル信号として記載しているが、距離、温度、角度といった多値情報であってもかまわない。
ブロックユニット１１はこのセンス情報が０であることより２本あるアクティブ信号出力のうちａ１にＨｉレベルパルスを出力する。これを受けてブロックユニット１０ａはコマンドｃ１を共通バスｂｓに出力し、隣接するブロックユニット１２ａのアクティブ信号ａ２にＨｉレベルパルスを出力する。ブロックユニット１２ａがアクティブになると「先頭戻り」を意味するコマンドｃ２を共通バスｂｓに出力する。コントローラ２１は共通バス２１にセンス情報を出力しながら流れるコマンドを監視している。そして「先頭戻り」コマンドを受信するとアクティブ信号ａ０にＨｉレベルパルスを出力することでブロックユニット１１に制御が戻る。アクティブ信号ａ０を受けてブロックユニット１１はコマンドｃ０を共通バスｂｓに出力する。先に読み出したセンス情報が１であるため今度はアクティブ信号ａ３にＨｉレベルパルスを出力する。アクティブ信号ａ３を受けてブロックユニット１０ｂがアクティブとなりコマンドｃ３を共通バスｂｓに出力し、隣接するブロックユニット１２ｂのアクティブ信号ａ４にＨｉレベルパルスを出力する。ブロックユニット１２ｂはアクティブ信号ａ４を受けてアクティブとなり「先頭戻り」コマンドｃ４を出力し、ブロックユニット１１に制御が戻る。このようにセンス情報に応じて分岐した異なるシーケンスを行うことができる。
【００３８】  図６の斜視図は、繰返し処理を行うブロックユニットの装着例を示したものあり、図１のブロック図に相当する。初めにコントローラ２１はアクティブ信号を基板２の左上に装着した「繰返」機能のブロックユニット１１に出力する。ブロックユニット１１はまず下向きに隣接するブロックユニット１０ａに制御を渡す。ブロックユニット１０ａは「３０度回転」コマンドを送出して下向きに隣接しているブロックユニット１２ａに制御を渡す。ブロックユニット１２ａは「復帰」を意味するコマンドを共通バス２２に出力する。ブロックユニット１１は、一度アクティブになった後は共通バスに流れるコマンドを監視し「復帰」コマンドの送出を検出すると、「復帰」コマンドの出現回数に応じて下向きか右向きのどちらかにアクティブ信号を出力する。ブロックユニット１１には「繰返」を示すコマンド種別の他に、繰返し回数を指定するパラメータがあらかじめ設定されており、「復帰」コマンドの出現回数がこの繰返し回数に到達していない場合には下向きに制御を渡し、到達した場合には右向きに制御を渡すものとする。ブロックユニット１１に記載されている数字３は繰返し回数を示すものとする。ブロックユニット１０ａ、１２ａがそれぞれ３回アクティブになったのちに右に隣接するブロックユニット１０ｂに制御が渡る。「繰返」と「復帰」に挟まれたブロックユニット「３０度回転」が３回実行される。「繰返」と「復帰」の間に配置するブロックユニットは１つである必要はなく、「繰返」「３０度回転」「前進」「復帰」のように複数のブロックユニットを装着してもよい。この場合、「３０度回転」→「前進」→「復帰」→「３０度回転」→「前進」→「復帰」→「３０度回転」→「前進」「復帰」→のように実行される。
【００３９】  図７は図６に示すブロックユニットを装着したプログラミング学習装置の内部信号を示すタイミングチャートである。起動後、コントローラ２１はブロックユニット１１に接続されている信号線ａ０にアクティブ状態を示すＨｉレベルのパルスを出力する。アクティブ信号ａ０を受けて「繰返」機能のブロックユニット１１はアクティブとなり、共通バスｂｓにコマンドｃ０を出力すると同時に内部のループカウンタｃｎｔを零に初期化する。あらかじめ設定されているループ回数と、内部カウンタ値を比較してループ回数に到達していない場合には２つあるアクティブ信号出力のうちａ１にＨｉパルスを出力する。アクティブ信号ａ１を受けてブロックユニット１０ａはｃ１コマンドを共通バスｂｓに出力し、隣接ブロックユニット１２ａに向けてアクティブ信号ａ２にＨｉパルスを出力する。ブロックユニット１２ａは「復帰」コマンドを共通バスｂｓに出力する。ブロックユニット１１は共通バスｂｓに流れるコマンドを監視して「復帰」コマンドを検出すると内部カウンタｃｎｔをインクリメントする。この結果ｃｎｔ値は１となる。ループ回数（＝３）と、内部カウンタ値を比較してループ回数に到達していないためアクティブ信号出力ａ１にＨｉパルスを出力する。このようにループ回数と内部カウンタ値が一致するまで繰返しを実行する。コマンドｃ３が３回検出されると、ブロックユニット１１はアクティブ信号ａ３にＨｉパルスを出力してループ処理が終了するとともに次に続くコマンド処理が実行される。「繰返」コマンドと「分岐」コマンドを組み合わせもよく、「繰返」を２重にすると２重ループを実現することもできる。
【００４０】  図８は２重ループを実現するブロックユニットの装着例を示した基板２の斜視図である。ブロックユニット１１ｂ、１０ａ、１０ｂ、１２ａにより「前進」「４５度回転」を４回繰り返すループ処理となる。またブロックユニット１１ｃ、１０ｃ、１０ｄ、１２ｂにより「前進」「４５度逆転」を４回行うループ処理となる。この２つのループが順番に実行され、さらにこれらが「繰返」機能ブロックユニット１１ａと「復帰」機能ブロックユニット１２ｃの間に配置されるので２重ループ処理が実行される。「繰返」機能ブロックユニットは、「復帰」コマンドにより内部カウンタを変更するが、どのループ階層の「復帰」コマンドであるかを判断するため、「復帰」コマンド出力時にループの深さを示す番号を付加して送出し、これをもとに判断してもよい。
【００４１】  図９は図８に示す２重ループ処理を仮想ロボットに対して実行した場合の移動軌跡を示す図である。図中の数字は時刻を示しており。時刻０から下向きに進むものとする。最初の内側ループである「前進」→「４５度回転」を４回実行すると８角形の半分の軌跡となり、時刻４の位置でループを抜ける。続いて次の内側ループである「前進」→「４５度逆転」を４回実行すると、最初の軌跡と合わせて横向きのＳ字の軌跡になり、時刻８の位置でループを抜ける。そしてこれが外側のループで２回実行され、時刻１６の位置で停止する。
【００４２】  図１０は、２つの外部入力装置４ａと４ｂと、２つのモータを搭載した出力装置３を搭載したプログラミング学習装置の斜視図である。外部入力装置４ａと４ｂは反射型の光センサあるは超音波センサであり、壁などの反射面とセンサの距離が一定以下になると反応するように動作する。これが進行方向に対して右側と左側にそれぞれ取り付けられている。基板２には９個のブロックユニットが装着されており、ブロックユニット１４ａ、１４ｂ、１４ｃは隣接するブロックユニットどうしのアクティブ信号を接続するだけのブロックユニットであり共通バスにコマンドは送出しない。
【００４３】  最初にコントローラ２１はブロックユニット１１ａにアクティブ信号を出力する。ブロックユニット１１ａは、センサ４ａのセンス情報に基づいて分岐先を判断する「分岐」機能のブロックユニットであり、センサ４ａが未検出なら下向きのブロックユニット１１ｂに制御を渡す。ブロックユニット１１ｂはセンサ４ｂのセンス情報に基づいて分岐先を判断する「分岐」機能のブロックユニットであり、センサ４ｂが未検出ならば下向きに制御を渡す。ここでブロックユニット１４ａはブロックユニット１１ｂが出力したアクティブ信号をそのまま右隣りのブロックユニット１０ｃに渡す。ブロックユニット１０ｃは「前進」コマンドを出力して右隣りのブロックユニット１２に制御を渡す。これによりブロックユニット１２がアクティブとなり「先頭戻り」コマンドを出力する。コントローラ２１はブロックユニット１２が出力した「先頭戻り」コマンドを検出し、ブロックユニット１１ａにアクティブ信号を出力し、初めに戻る。
【００４４】  センサ４ａが障害物を検知した場合、ブロックユニット１１ａは右向きに制御を渡す。右に隣接しているブロックユニット１０ａがアクティブとなり「６０度回転」コマンドを発行し、右向きにアクティブ信号を出力する。右に隣接しているブロックユニット１４ｂは単純接続機能でありブロックユニット１０ａが出力したアクティブ信号をそのまま下向きに出力する。ブロックユニット１４ｂの下に配置されたブロックユニット１４ｃも単純接続機能であり、さらに下に配置されているブロックユニット１２にアクティブ信号を出力する。ブロックユニット１２は「先頭戻り」コマンドを出力し、これを受信したコントローラ２１はブロックユニット１１ａに制御を渡し、初めに戻る。
【００４５】  センサ４ａが未検知で、センサ４ｂが障害物を検知した場合、まずブロックユニット１１ａは下向きに制御を渡す。下に隣接するブロックユニット１１ｂはセンス情報により右向きに制御を移す。アクティブとなったブロックユニット１０ｂは「６０度逆転」コマンドを出力し、右向きにアクティブ信号を出力する。右隣接ブロックユニットは単純接続機能のため、ブロックユニット１０ｂが出力したアクティブ信号をブロックユニット１４ｃの下隣接ブロックユニット１２に渡し、制御が移る。ブロックユニット１２は「先頭戻り」コマンドを出力し、これを検知したコントローラ２１は、先頭ブロックユニット１１ａにその制御を渡す。
【００４６】  このように、左側のセンサ４ａが障害物を検出した場合、時計周りに６０度回転し、右側センサ４ｂが障害物を検知した場合は、反時計回りに６０度回転し、どちらも検知できない場合には前進するように動作する。すなわち障害物を避けて進むことができる。
【００４７】  図１１は、図１０に示した移動ロボットの移動軌跡を示した図である。両側が蛇行した壁で覆われた通路があり、移動ロボットは図面の下から動き始めるものとする。図中の２つに数値のセットは、左側がセンサ４ａのセンス結果、右側がセンサ４ｂのセンス結果である。未検出時は０、障害物を検知すると１になるものとする。開始直後は両センサとも未検出のため直進する。Ａ点でセンサ４ａが反応して６０度回転後直進する。次にＢ点でまたセンサ４ａが反応して６０度回転後直進する。Ｃ点で今度はセンサ４ｂが反応して６０度逆転後直進し、Ｄ点でセンサ４ａが反応して６０度回転後直進し、Ｅ点でセンサ４ｂが反応して６０度逆転して直進する。このように蛇行した通路を壁に衝突することなく進ませることが可能である。
【００４８】  図１２には本発明第２の実施の形態におけるプログラミング学習装置の移動ロボットの斜視図である。図１２には、ブロックユニット１３が一つ装着できる第２のコントローラ２１ｂが実装された第２の基板２ｂと、外部入力装置４ｂが、出力装置３ｂの上に搭載されている。搭載するブロックユニット１３は、あらかじめ図４に示す第１の基板２上で複数のブロックユニットを使って実現したシーケンスを統合したものである。従って、第２の実施の形態のプログラミング学習装置は、図４に示す複数ブロックユニットが装着できる第１のコントローラ２１と第１の基板２を有するプログラミング学習装置と、図１２に示す移動ロボット（第２のコントローラ２１ｂと第２の基板２ｂを実装）の両方を備えているものとする。第１の実施の形態と同様に、出力装置３ｂは、連続回転するモータに限定する必要はなく、サーボモータや、ディスプレイ等の表示装置、あるいは音声発生器でも構わない。ブロックユニットの装着領域が１つであることから、移動ロボットを小型化できる。
【００４９】  第１の基板２上にＷｉ−Ｆｉ（Ｗｉｒｅｌｅｓｓ  Ｆｉｄｅｌｉｔｙ）やＢＬＥ（Ｂｌｕｅｔｏｏｔｈ  Ｌｏｗ  Ｅｎｅｒｇｙ）等の無線送信装置を取り付け、移動ロボット上の第２の基板２ｂ上に同じ通信規格の受信装置を取り付けて、プログラミングシーケンスを第１の基板２から第２の基板２ｂに無線送信することで、第２の基板２ｂ上にはブロックユニットの装着領域も不要としてもよい。
【００５０】  図１３は、統合機能ブロックユニットの再利用例を示す基板２の斜視図である。「統合」機能のブロックユニット１３ａが「繰返」ブロックユニットと「復帰」ブロックユニット内に配置されているので「統合」機能ブロックユニット内の一連のシーケンスが繰り返され、その後別の「統合」機能ブロックユニット１３ｂが実行されて先頭に戻る。このように、あらかじめ作成しておいた「統合」機能ブロックユニットを他のブロックユニットと連結して新たなシーケンスを作成できる。また、このシーケンスを別の「統合」機能ブロックユニットに書込み、１つのブロックユニットに再統合することができる。これを繰り返すと、例えば図１３のように１６個までしかブロックユニットを装着できない基板であっても、「統合」機能のブロックユニットが内部メモリに保存できるコマンド数ｘ１６ブロックまで複雑なシーケンスを実現することができる。
【００５１】  以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。そのような変更又は改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記述から明らかである。
【符号の説明】
【００５２】１      ブロックユニット
１０    アクティブ信号出力を１本持つブロックユニット
１１    アクティブ信号出力を複数本持つブロックユニット
１２    アクティブ信号を出力しないブロックユニット
１３    コマンドシーケンスの記録再生機能を有するブロックユニット
１３１  メモリ
１４    信号接続用ブロックユニット
１５    共通バス用導電部材
１６    アクティブ信号用導電部材
２      基板
２１    コントローラ
２２    共通バス
２３    ブロックユニット固定部材
２４    共通バス用電極
２５    隣接ブロックユニット連結用電極
３      出力装置
４      外部入力装置
【要約】      （修正有）【課題】ブロックユニットを組み合わせて装着するだけで、逐次処理、条件分岐、多重ループ、モジュール化が学習できるプログラミング学習装置を提供する。【解決手段】アクティブ信号入力に応じてコマンドを出力する複数のブロックユニット１０ａ〜１２ｂと、複数のブロックユニットが着脱可能な基板２と、コントローラ２１と、共通バス２２と、出力装置３と、外部入力装置４と、を備え、各ブロックユニットは、隣接するブロックユニット又はコントローラからアクティブ信号を受け、共通バスにコマンドを出力し、隣接ブロックユニットにアクティブ信号を出力し、共通バスに流れるコマンド情報をメモリ１３１に格納可能でかつ格納したコマンドを共通バスに出力するブロックユニット１３を備え、コントローラは、外部入力装置の検出情報を共通バスに出力すると同時に、共通バス上のコマンドに従って、出力装置の状態を変更あるいは保持する。【選択図】図１【図１】
0006915193.tif 000002
【図２】
0006915193.tif 000003
【図３】
0006915193.tif 000004
【図４】
0006915193.tif 000005
【図５】
0006915193.tif 000006
【図６】
0006915193.tif 000007
【図７】
0006915193.tif 000008
【図８】
0006915193.tif 000009
【図９】
0006915193.tif 000010
【図１０】
0006915193.tif 000011
【図１１】
0006915193.tif 000012
【図１２】
0006915193.tif 000013
【図１３】
0006915193.tif 000014