(57)【要約】【課題】動作プログラムのダウンロードをすることなく、かつ複雑な動作を可能とする自走式機器を提供する。【解決手段】実施形態の自走式機器は、近距離無線タグであるＮＦＣ４から動作プログラムを無線で読み出すＮＦＣリーダ／ライタ回路２２と、ＮＦＣリーダ／ライタ回路２２により読み出された動作プログラムに含まれるコマンドを解釈するプログラム解釈部３３と、解釈されたコマンドを実行するプロセッサ２１ａと、を有する。【選択図】図２
2020038450.tif 000002
【特許請求の範囲】
【請求項１】
近距離無線タグから動作プログラムを無線で読み出すタグリーダ部と、
前記タグリーダ部により読み出された前記動作プログラムに含まれるコマンドを解釈するコマンド解釈部と、
解釈された前記コマンドを実行する実行部と、
を有する、自走式機器。
【請求項２】
前記自走式機器が所定の領域の所定の経路に沿って移動するために、前記所定の経路を検出する移動経路検出部を有し、
前記移動経路検出部により検出された前記所定の経路に沿って移動する、請求項１に記載の自走式機器。
【請求項３】
前記所定の経路は、二次元平面上に形成されたグリッドラインにより規定され、
前記移動経路検出部は、少なくとも１つの光センサにより前記所定の経路を検出する、請求項２に記載の自走式機器。
【請求項４】
前記タグリーダ部は、前記所定の経路上に設けられた前記近距離無線タグからの前記動作プログラムを読み出す、請求項２又は３に記載の自走式機器。
【請求項５】
内部変数を記憶するメモリを有し、
前記内部変数は、前記動作プログラムにより参照可能である、請求項１から４のいずれか１つに記載の自走式機器。
【請求項６】
前記タグリーダ部は、前記動作プログラムによって、前記近距離無線タグへのデータの書き込みが可能であるタグリーダ及びライタ部である、請求項１から５のいずれか１つに記載の自走式機器。
【請求項７】
前記動作プログラムを入力するためのユーザインターフェース部を有し、
前記リーダ部は、前記近接無線タグへの前記動作プログラムを書き込むことができるリーダ／ライタ部である、請求項１から６のいずれか１つに記載の自走式機器。
【請求項８】
前記ユーザインターフェース部は、前記動作プログラムを入力するためのキーボードと、入力された前記動作プログラムを表示する表示器とを有する、請求項７に記載の自走式機器。
【請求項９】
請求項１に記載の自走式機器と、
前記近接無線タグと、
を有する自走式機器システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、自走式機器及び自走式機器システムに関する。
【背景技術】
【０００２】
従来より、自走式ロボットなどの動作を制御するためには、その動作のためのソフトウエアプログラムが必要である。動作プログラムは、例えば、予めパーソナルコンピュータ（以下、ＰＣという）などを利用して作成され、その動作プログラムは、何らかの方法によりロボットにダウンロードされる。ロボットの様々な動作のための複数のコマンドが、動作プログラムに含まれる。
【０００３】
しかし、ロボットの動作を変更したいときには、動作プログラムを書き換え、再度ロボットにダウンロードしなければならない。
【０００４】
また、自走式ロボットにバーコードリーダを設け、バーコードに含まれるコマンドに応じた動作が可能な自走式ロボットも提案されている。
【０００５】
しかし、バーコードに含めることができる命令の数は、限られるため、ロボットは、単純な動作しかできないという問題がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１１−２２４７３２号公報
【特許文献２】特開２０１１−１４７４６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
そこで、本実施形態は、動作プログラムのダウンロードをすることなく、かつ複雑な動作を可能とする自走式機器及び自走式機器システムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
実施形態の自走式機器は、近距離無線タグから動作プログラムを無線で読み出すタグリーダ部と、前記タグリーダ部により読み出された前記動作プログラムに含まれるコマンドを解釈するコマンド解釈部と、解釈された前記コマンドを実行する実行部と、を有する。
【図面の簡単な説明】
【０００９】
【図１】実施形態に係わる自走式ロボットの基本的な動きを説明するための図である。
【図２】実施形態に係わる自走式ロボットの平面図である。
【図３】実施形態に係わる自走式ロボットの底面図である。
【図４】実施形態に係わる、自走式ロボットのハードウエア回路の構成を示すブロック図である。
【図５】実施形態に係わる、自走式ロボットのロボット制御部の内部ソフトウエアプログラムの構成図である。
【図６】実施形態に係わる、自走式ロボットの基本動作の処理の流れの例を示すフローチャートである。
【図７】実施形態に係わる、自走式ロボットが前進し、近距離無線通信タグを検知した場合の、近距離無線通信タグの近距離無線通信リーダ／ライタ回路、ロボット制御部およびクローラ駆動回路間のメッセージシーケンスの例を示す図である。
【図８】実施形態に係わる、近距離無線通信タグに記憶されたタグデータのデータ構造の例を示す図である。
【図９】実施形態に係わるコマンドの一覧を示す図である。
【図１０】実施形態に係わる演算子の一覧を示す図である。
【図１１】実施形態に係わる制御構文の一覧を示す図である。
【図１２】実施形態に係わる、使用できる変数と配列の定義を示す図である。
【図１３】実施形態に係わる、動作プログラムの例を示す図である。
【図１４】実施形態に係わる、サイズを宣言した配列の例を示す図である。
【図１５】実施形態に係わる、近距離無線通信タグに対するデータの読出と書込を行うタグに利用するための近距離無線通信タグのデータ構造の例を示す図である。
【図１６】実施形態に係わる、格納あるいは書き込みのためのコマンドの例を示す図である。
【図１７】実施形態に係わる、複数の近距離無線通信タグの配置の例を示す図である。
【図１８】実施形態に係わる、プログラムタグに書き込まれる動作プログラムの例を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して実施形態を説明する。
（構成）
図１は、本実施形態に係わる自走式ロボットの基本的な動きを説明するための図である。自走式ロボット（以下、単にロボットという）１は、例えば床などのフィールド２上に置かれ、フィールド２に記されたグリッドライン３を検知してそのグリッドライン３に沿って、移動可能な自走式機器である。例えば、グリッドライン３は、線状のテープを貼ったり、塗料で線を描かれたりすることによって、フィールド２上に形成される。
【００１１】
すなわち、ロボット１が走行するフィールド２には、グリッドライン３が引かれる。グリッドライン３は、フィールド２上の所定の領域内の、ロボット１の移動する所定の経路を規定する。ロボット１は、後述する光センサにてこのグリッドライン３を読取りながらグリッドライン３に沿って走行することが可能となっている。
【００１２】
ここでは、グリッドライン３は、互いに平行な複数の横ラインと、複数の横ラインに直交する方向の複数の縦ラインとを含む。
【００１３】
以上のように、ロボット１の移動する所定の経路は、二次元平面上に形成されたグリッドライン３により規定される。
【００１４】
近距離無線通信（ＮＥＡＲ  ＦＩＥＬＤ  ＣＯＭＭＵＮＩＣＡＴＩＯＮ：以下、ＮＦＣという）タグ（以下、ＮＦＣタグという）４が、グリッドライン３の横ラインと縦ラインの任意の複数の交点上に配置される。ロボット１は、後述するようにＮＦＣタグ４に書き込まれた動作プログラムを読み出してその動作プログラムに含まれるコマンドに基づく動作を行うことが可能となっている。
【００１５】
ロボット１と複数のＮＦＣタグ４により、自走式機器システムが構成される。
【００１６】
具体的には、ロボット１は、グリッドライン３によりガイドされてＮＦＣタグ４から動作プログラムが読取り可能な位置まで移動する。ロボット１は、後述する本体１ａの底面に設けられたＮＦＣリーダ／ライタにより、ＮＦＣタグ４から動作プログラムを読み出し、その動作プログラムを実行する。動作プログラムは、ロボット１の動作あるいは処理を指定する複数のコマンドが含まれている。
【００１７】
例えば、ロボット１は、その動作プログラムに基づく前進、旋回などを行う。ロボット１は、本体１ａの底面に設けられた一対のクローラにより、前進、後退、回転などが可能である。ロボット１は、グリッドライン３の交点上で、動作プログラムに基づき、左又は右に回転して、進行方向を変えることができる。
【００１８】
なお、本実施形態は、ロボット１を移動させる構造として、一対のクローラを用いた例で説明するが、移動機構は、一対のクローラに限られず、複数の車輪などを用いた機構でもよい。
【００１９】
すなわち、ロボット１は、近距離無線通信により外部から動作プログラムを読み込んで動作する自走式機器である。
【００２０】
図２は、ロボット１の平面図である。ロボット１は、円柱形状を有している。ロボット１の本体１ａの円形の上面には、キーボード１１、表示器１２、インジケータ部１３及びボタン部１４が配置されている。キーボード１１、表示器１２、インジケータ部１３及びボタン部１４は、ユーザインターフェース部を構成する。
【００２１】
キーボード１１は、ユーザがプログラムのためのコマンド及びデータを入力するための入力装置である。  
【００２２】
表示器１２は、液晶表示器などの表示装置であり、動作プログラムなどを表示する。
【００２３】
インジケータ部１３は、複数のランプ１３ａを含み、ロボット１の状態などを、ランプの点灯、消灯及び点滅等により示す。インジケータ部１３は、電源状態（オン／オフ）、ＮＧＣタグ検出状態（検出動作中、検出中）、 プログラム実行状態（実行／未実行）、プログラム実行エラー状態、タグエラー状態（読込エラー、書込エラー）等を表示する。
【００２４】
ボタン部１４は、複数のボタン、ここでは、電源ボタン１４ａ、プログラム実行ボタン（Ｇｏ）１４ｂ、タグ読込ボタン（Ｌｄ）１４ｃ、プログラム用のタグ書込ボタン（Ｓｃ）１４ｄ、データ用のタグ書込ボタン（Ｓｄ）１４ｅを有する。
【００２５】
ユーザは、タグ読込ボタン（Ｌｄ）１４ｃを操作することにより、ＮＦＣタグ４から、プログラム及びデータ読み出すことができる。
【００２６】
ユーザは、タグ書込ボタン（Ｓｃ）１４ｄを操作することにより、入力したプログラムをＮＦＣタグ４に格納することができる。
【００２７】
ユーザは、タグ書込ボタン（Ｓｄ）１４ｅを操作することにより、入力したデータをＮＦＣタグ４に格納することができる。
【００２８】
よって、ユーザは、キーボード１１を用いて動作プログラム及びデータを入力し、表示器１２に表示された動作プログラム及びデータを見て編集しながら、ロボット１に入力することができる。例えば、ユーザは、キーボード１１を利用してプログラムコードを入力すると、表示器１２に入力した動作プログラムコードが表示される。
【００２９】
ユーザは、表示された動作プログラムをみながら、プログラムコードをさらに入力し、かつプログラムコードを編集することができる。そして、ユーザは、作成した動作プログラムを、ＮＦＣタグ４に書き込むことができる。
【００３０】
よって、キーボード１１及び表示器１２は、動作プログラムを入力するためのユーザインターフェース部であり、後述するＮＦＣリーダ／ライタ回路２２により、動作プログラムがＮＦＣタグ４へ書き込まれる。
【００３１】
なお、ユーザは、ＮＦＣタグ４に記憶される動作プログラム及びデータを、ロボット１を用いて書き込むことが可能であるが、ＰＣなどを用いて作成してから、別の装置を用いてＮＦＣタグ４に書き込むようにしてもよい。
【００３２】
図３は、ロボット１の底面図である。ＮＦＣリーダ／ライタ用のアンテナ１５が、本体１ａの円形の底面の中心部分の近傍に内蔵されている。すなわち、本体１ａの下部に、ＮＦＣリーダ／ライタ用のアンテナ１５が配設されている。なお、アンテナ１５は、本体１ａの底面に露出するように配設されていてもよい。
【００３３】
本体１ａの底面には、４つの光センサ１６が、円形の底面の中心の回りに９０度の間隔を持って配設されている。各光センサ１６は、ＣＭＯＳイメージセンサなどのイメージセンサである。
【００３４】
各光センサ１６は、グリッドライン３を検出するためのセンサであり、ロボット１がグリッドライン３に沿って移動するためのグリッドライン３を検出する。よって、少なくとも１つの光センサ１６は、ロボット１がフィールド２の所定の領域の所定の経路を示すグリッドライン３に沿って移動するために、所定の経路を検出する移動経路検出部を構成する。
【００３５】
さらに、一対のクローラ１７が、アンテナ１５を挟むように、本体１ａの底面に設けられている。各クローラ１７は、独立して駆動される無限軌道を有し、ロボット１は、前進及び後退が可能だけでなく、底面の中心を中心に左右方向への旋回が可能となっている。
【００３６】
図４は、ロボット１のハードウエア回路の構成を示すブロック図である。  
【００３７】
ロボット１の本体１ａには、ロボット制御部２１、ＮＦＣリーダ／ライタ（ＮＦＣ  Ｒ／Ｗ）回路２２、４つの光センサ駆動回路２３、２つのクローラ駆動回路２４、ユーザインターフェース制御部（以下、ＵＩ制御部という）２５、及び外部接続用デバイス２６が設けられている。さらに、ロボット１の本体１ａには、本体１ａ内の各部に電力を供給するための、二次電池などのバッテリ２７が内蔵されている。
【００３８】
ロボット制御部２１は、プロセッサ２１ａ、画像処理部２１ｂ及びメモリ２１ｃを含む。プロセッサ２１ａは、中央処理装置（ＣＰＵ）、ＲＯＭ、ＲＡＭ等を有し、ＲＯＭに格納された各種プログラムを読み出して実行可能である。
【００３９】
画像処理部２１ｂは、４つの光センサ１６からの画像信号を受信して所定の画像処理を行う回路である。ここでは、画像処理部２１ｂは、グリッドライン３の有無、位置及び移動方向を検出する処理を行う。  
【００４０】
メモリ２１ｃは、動作プログラム、内部変数などが記憶される記憶装置である。後述するように、内部変数は、動作プログラムにより参照可能である。
【００４１】
ＮＦＣリーダ／ライタ回路２２は、アンテナ１５に接続され、ロボット制御部２１の制御の下、ＮＦＣタグ４と通信して、非接触の無線通信で、ＮＦＣタグ４に格納されている動作プログラムなどを、読み出したり、ＮＦＣタグ４へ動作プログラムなどを書き込んだりするための回路である。すなわち、ＮＦＣリーダ／ライタ回路２２は、ＮＦＣタグ４から動作プログラムを無線で読み出すタグリーダ部を構成する。言い換えれば、ＮＦＣリーダ／ライタ回路２２は、所定の経路上に設けられたＮＦＣタグ４からの動作プログラムを読み出す。
【００４２】
また、後述するように、ＮＦＣリーダ／ライタ回路２２は、動作プログラムによって、ＮＦＣタグ４へのデータの書き込みも可能である。よって、ＮＦＣリーダ／ライタ回路２２は、タグリーダ及びライタ部を構成する。
【００４３】
光センサ駆動回路２３は、４つの光センサ１６を駆動すると共に、光センサ１６からの画像信号を受信して、ロボット制御部２１に出力する回路である。
【００４４】
クローラ駆動回路２４は、ロボット制御部２１の制御の下、一対のクローラ１７を駆動するための２つの駆動信号を一対のクローラ１７を動かすための２つのモータ１７ａへ出力する。
【００４５】
ＵＩ制御部２５は、上述したキーボード１１及びボタン部１４からの入力信号をロボット制御部２１へ伝達すると共に、ロボット制御部２１から表示信号を表示器１２及びインジケータ部１３へ出力する回路である。すなわち、ＵＩ制御部２５は、ユーザインターフェースコントローラである。ＵＩ制御部２５は、ＣＰＵなどを含むプロセッサを含んでもよい。
【００４６】
外部接続用デバイス２６は、外部装置と通信をするための通信インターフェースである。ここでは、ブルートゥース（登録商標）通信及びＷＩＦI通信のための通信回路である。外部接続用デバイス２６は、ロボット１の内部ソフトウエアプログラムの更新などのために用いられる。
【００４７】
図５は、ロボット１のロボット制御部２１の内部ソフトウエアプログラムの構成図である。  
【００４８】
ロボット制御部２１の内部ソフトウエアプログラムは、ロボット制御部２１のプロセッサ２１ａのＲＯＭに格納されている。
【００４９】
ロボット制御部２１の内部ソフトウエアプログラムは、ＮＦＣリーダ／ライタ通信管理部３１、ＮＦＣリーダ／ライタ通信ドライバ３２、プログラム解釈部３３、内部変数管理部３４、内部変数格納部３５、ロボット動作制御部３６、クローラ駆動回路ドライバ３７、光センサドライバ３８及びＵＩ制御部３９を含む。
【００５０】
ロボット制御部２１の内部ソフトウエアプログラムは、ロボット１がＮＦＣタグ４から動作プログラムを読み出して実行するための基本動作が記述されたプログラムである。
【００５１】
ＮＦＣリーダ／ライタ通信管理部３１は、ＮＦＣリーダ／ライタ通信ドライバ３２を介して、ＮＦＣタグ４との通信を行うためのプログラムである。ＮＦＣリーダ／ライタ通信ドライバ３２もプログラムである。
【００５２】
具体的には、ＮＦＣリーダ／ライタ通信管理部３１は、ＮＦＣリーダ／ライタ回路２２に対して、ＮＦＣタグ４の検出、タグデータの読出し等のコマンド送信及びその応答の受信管理を行う。さらに、ＮＦＣリーダ／ライタ通信管理部３１は、ＮＤＥＦ形式で書かれた動作プログラムをテキストデータとして、ＮＦＣタグ４から取得する処理も行う。
【００５３】
なお、ＮＦＣリーダ／ライタ通信管理部３１は、ＮＦＣタグ４を検知したときに、ＮＤＥＦデータの読出しに十分な時間を取るために、ロボット動作制御部３６にロボット１を停止させる命令を送信するようにしてもよい。  
【００５４】
ＮＦＣリーダ／ライタ通信管理部３１において取得されたテキストデータは、プログラム解釈部３３に送られる。
【００５５】
プログラム解釈部３３は、テキストデータに対してパーシング処理を行って、予約語、演算子、内部変数、即値などを切り出した後、プログラムの制御構造の解釈、ロボット制御命令の解釈および内部変数の演算処理の解釈を行う。
【００５６】
すなわち、プログラム解釈部３３は、ＮＦＣリーダ／ライタ回路２２により読み出された動作プログラムに含まれるコマンドを解釈するコマンド解釈部を構成する。
【００５７】
内部変数は、内部変数格納部３５によりメモリ２１ｃに格納され、内部変数管理部３４は、プログラムに記述された内部変数の演算処理に応じて、内部変数の参照、演算、格納を行う。
【００５８】
プログラム解釈部３３は、ロボット１の動作に関わる制御コマンドを検出したとき、ロボット動作制御部３６に通知する。
【００５９】
ロボット動作制御部３６は、ロボット１の移動の方向と移動量をプログラム解釈部３３から受け取り、一対のクローラ１７を、クローラ駆動回路ドライバ３７を介して制御する。クローラ駆動回路ドライバ３７もプログラムである。
【００６０】
ロボット動作制御部３６は、光センサドライバ３８を介して１つの光センサ１６からの画像信号に基づいて、グリッドライン３の認識を行う。光センサドライバ３８もプログラムである。
【００６１】
具体的には、ロボット動作制御部３６は、画像処理部２１ｂを利用して、４つ光センサ１６によるグリッドライン３の検知を認識して、前進時と後退時のグリッドライン３の移動量、及び回転時の回転移動角度を検知する。ロボット動作制御部３６は、指定された移動量に到達したところで、各クローラ１７の動作を停止させる制御を行う。
【００６２】
前進時／後退時には、ロボット動作制御部３６は、進行方向に沿った一対の光センサ１６によるグリッドライン３の検知に基づいて、進行方向における移動についてのサーボ制御を行う。
【００６３】
ＵＩ制御部３９は、本体１ａのボタン部１４の信号を監視し、プログラム実行ボタン（Ｇｏ）１４ｂの押下の検知を、ロボット動作制御部３６に通知して、ロボット１の動作を開始させるなどの処理を行う。
【００６４】
さらに、ＵＩ制御部３９は、キーボード１１への入力の監視、表示器１２への表示データの出力を行うと共に、インジケータ部１３の表示処理も行う。
（作用）
次に、ロボット１の動作を、図６と図７を用いて説明する。
【００６５】
図６は、ロボット１の基本動作の処理の流れの例を示すフローチャートである。図７は、ロボット１が前進し、ＮＦＣタグ４を検知した場合の、ＮＦＣタグ４のＮＦＣリーダ／ライタ回路２２、ロボット制御部２１およびクローラ駆動回路２４間のメッセージシーケンスの例を示す図である。
【００６６】
図６の処理のためのプログラムは、ロボット動作制御部３６に含まれるプログラムであり、プロセッサ２１ａのＣＰＵによって読み出されて実行される。
【００６７】
電源ボタン１４ａが押下されて、ロボット１の電源がオンにされると、図６の処理が実行される。
【００６８】
ロボット１の電源がオンにされると、プロセッサ２１ａは、最初に、ロボット１の装置の初期化処理を実行する（ステップ（以下、Ｓと略す）１）。
【００６９】
初期化処理の後、プロセッサ２１ａは、プログラム実行ボタン（Ｇｏ）１４ｂが押下されたか否かを判定する（Ｓ２）。
【００７０】
プログラム実行ボタン（Ｇｏ）１４ｂが押下されなければ（Ｓ２：ＮＯ）、処理は、何もしない。
【００７１】
プログラム実行ボタン（Ｇｏ）１４ｂが押下されると（Ｓ２：ＹＥＳ）、プロセッサ２１ａは、ロボット１を前進させる（Ｓ３）。具体的には、プロセッサ２１ａは、ロボット１を前進させるために、モータ１７ａを駆動する駆動信号を出力させる制御信号をクローラ駆動回路２４へ出力する。ロボット制御部２１は、クローラ駆動回路２４へ「前進」の指示コマンドを与え、クローラ駆動回路２４が応答信号をロボット制御部２１へ送信することにより、ロボット１は前進する。
【００７２】
同時に、プロセッサ２１ａは、ＮＦＣリーダ／ライタ回路２２に、ポーリングを開始する開始信号を送信する、すなわち、タグ検出開始指示コマンドを与える。図７に示すように、ロボット制御部２１は、ＮＦＣリーダ／ライタ回路２２に対して、タグ検出開始指示コマンドを与えると、ＮＦＣリーダ／ライタ回路２２からの応答信号を受信する。その後、ＮＦＣリーダ／ライタ回路２２は、ＮＦＣタグ４の検出を開始する。
【００７３】
プロセッサ２１ａは、ＮＦＣタグ４を検出したか否かを判定する（Ｓ４）。  
【００７４】
ＮＦＣリーダ／ライタ回路２２は、ＮＦＣタグ４を検出すると、タグ検出通知信号をロボット制御部２１へ出力する。
【００７５】
ＮＦＣ４を検出しなければ（Ｓ４：ＮＯ）、処理は、Ｓ３に戻り、ロボット１は、ＮＦＣタグ４を検出するまで前進する。
【００７６】
ＮＦＣ４が検出されると（Ｓ４：ＹＥＳ）、プロセッサ２１ａは、ロボット１を停止し、ＮＦＣタグ４と通信を行い、ＮＦＣタグ４から制御コマンド、すなわち動作プログラムを読み出す（Ｓ５）。
【００７７】
具体的には、プロセッサ２１ａは、タグ検出通知信号を受信するので、ロボット１を停止させるための「停止」指示の制御信号をクローラ駆動回路２４へ送信する。「停止」指示の制御信号に応じて、クローラ駆動回路２４は応答信号をプロセッサ２１ａ出力し、一対のクローラ１７の動作を停止する。
【００７８】
ロボット１が停止した後、プロセッサ２１ａは、ＮＦＣリーダ／ライタ回路２２を制御して、ＮＦＣタグ４と通信してＮＦＣタグ４から動作プログラムを読み出す。具体的には、プロセッサ２１ａは、ＮＦＣリーダ／ライタ回路２２へ、タグデータ読出指示信号を送信する。ＮＦＣリーダ／ライタ回路２２は、タグデータ読出指示信号に応じて、ＮＦＣタグ４からタグデータ、すなわち動作プログラムを読み出して、プロセッサ２１ａへ送信する。
【００７９】
プロセッサ２１ａとＮＦＣタグ４間の通信は、例えば、小電力ＩＣ通信技術（ＲＦＩＤ）の国際規格であるＩＳＯ１４４４３に規定されるプロトコルに基づいて行われる。
【００８０】
ここで、ＮＦＣタグ４に書き込まれるコマンドの例を説明する。  
【００８１】
図８は、ＮＦＣタグ４に記憶されたタグデータのデータ構造の例を示す図である。
【００８２】
ＮＦＣタグ４にはＮＤＥＦ（ＮＦＣ  Ｄａｔａ  Ｅｘｃｈａｎｇｅ  Ｆｏｒｍａｔ）形式で記述されたデータが記録されている。ＮＤＥＦについては、ＮＦＣ  Ｆｏｒｕｍの「ＮＦＣ  Ｄａｔａ  Ｅｘｃｈａｎｇｅ  Ｆｏｒｍａｔ（ＮＤＥＦ）  Ｔｅｃｈｎｉｃａｌ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ」等を参照されたし。
【００８３】
ＮＦＣタグ４は、図８に示すデータ構造を有している。ここでは、図８に示すように、ＮＦＣタグ４の「ＴＮＦ」は、「０ｘ０４」（ＮＦＣ  Ｆｏｒｕｍ  ｅｘｔｅｒｎａｌ  ｔｙｐｅ）を用い、「Ｔｙｐｅ」は、「ｔｏｇｈｉｂａ．ｃｏ．ｊｐ：ｒｂｃｍｄ」と定めるものとする。
【００８４】
ＮＦＣタグ４のＮＤＥＦのコンテンツは、ＡＳＣＩＩコードで記述するものとする。図８では、「Ｐａｙｌｏａｄ」に、「Ｓｔｏｐ」（停止）のコマンドがテキストデータで書き込まれている。
【００８５】
ユーザが動作プログラムの編集が終了した後、本体１ａの下部のＮＦＣリーダ／ライタ回路２２にＮＦＣタグ４を検出させている状態で、ユーザは、プログラム用のタグ書込ボタン（Ｓｃ）１４ｃを押すことで、編集した動作プログラムを、「Ｔｙｐｅ」が「ｔｏｇｈｉｂａ．ｃｏ．ｊｐ：ｒｂｃｍｄ」であるＮＤＥＦ形式で、ＮＦＣタグ４に書き込むことができる。
【００８６】
また、同様に、データの編集及び書込も可能である。本体１ａの下部のＮＦＣリーダ／ライタ回路２２にＮＦＣタグ４を検出させている状態で、ユーザは、データ用のタグ書込ボタン（Ｓｄ）１４ｅを押すことで、編集したデータを、ＮＦＣタグ４に「Ｔｙｐｅ」が「ｔｏｇｈｉｂａ．ｃｏ．ｊｐ：ｒｂｃｍｄ」であるＮＤＥＦ形式で、書き込むことができる。
【００８７】
さらに、ＮＦＣタグ４に既に書き込まれている動作プログラム及びデータを読み出すことも可能である。本体１ａの下部のＮＦＣリーダ／ライタ回路２２にＮＦＣタグ４を検出させている状態で、ユーザは、タグ読込ボタン（Ｌｄ）１４ｃを押すことで、ＮＦＣタグ４のＮＤＥＦデータを読み出し、「Ｔｙｐｅ」が「ｔｏｇｈｉｂａ．ｃｏ．ｊｐ：ｒｂｃｍｄ」又は「Ｔｙｐｅ」が「ｔｏｇｈｉｂａ．ｃｏ．ｊｐ：ｒｂｄａｔａ」であった場合は、読み出した内容を表示器１２に表示される。ユーザは、表示されているプログラム及びデータを再度編集し、タグに書き込むことも可能である。 
【００８８】
図９は、コマンドの一覧を示す図である。以下、プログラム構文の予約語の例を用いて説明する。
【００８９】
コマンドには、各種コマンドがあり、ここでは、ロボット１の移動に関するものとして、前進（Ｆｏｒｗａｒｄ）及び後退（Ｂａｃｋｗａｒｄ）の動作制御コマンドがある。さらに、ロボット１の回転に関するものとして、コマンドには、右回転と左回転のための動作制御コマンドもあり、それぞれ９０度、１８０度及び３６０度の回転に関わる。さらに、動作制御コマンドとして、ロボット１の停止もある。
【００９０】
さらに、コマンドには、演算子も使用可能である。図１０は、演算子の一覧を示す図である。コマンドには、内部変数を用いた、加減乗除及び比較演算の演算子を含めることができる。
【００９１】
さらに、コマンドには、内部変数を用いた、条件分岐及びループ処理のプログラム実行制御系の構文を含めることができる。図１１は、制御構文の一覧を示す図である。
【００９２】
数値データは、例えば、０〜６５５３５の範囲の値をとることができる。  
【００９３】
さらに、コマンドには、変数と配列のデータを使用することができる。図１２は、使用できる変数と配列の定義を示す図である。
【００９４】
以上のようなルールの下で、ユーザは、コマンドを含む動作プログラムを、ロボット１からＮＦＣタグ４に書き込むことができる。
【００９５】
図１３は、動作プログラムの例を示す図である。図１３に示す動作プログラムは、内部変数ｉの値に応じて右あるいは左に回って前進する動作が記述されたプログラムである。
【００９６】
動作プログラムは、原則的に、改行コードで終わる一行に、一文のみが記述される。なお、制御構文の場合は複数行に跨がることは、許容される。
【００９７】
また、各予約語は、「（スペース）」をデリミタとして区切られる。図１３に示すように、ＮＦＣタグ４にストアされる動作プログラムは複数の文から構成されても良い。ＮＦＣタグ４にストアされる動作プログラムの長さはＮＦＣタグ４の書込容量に依存するが、一枚のＮＦＣタグ４に書かれる制御コマンドを含む動作プログラムは、そのＮＦＣタグ４の中で完結する。例えば、一枚目のＮＦＣタグ４に「ｉｆ（条件文）｛」まで書き込まれて、次のＮＦＣタグ４に「（実行文）｝」を書き込むような、一文を複数のＮＦＣタグ４に分割して記述することはできない。
【００９８】
さらに、内部変数は宣言を行わずに利用可能とし、初期値は”０”となるものとする。配列を用いる場合は、事前にサイズを宣言する必要があるものとする。  
【００９９】
図１４は、サイズを宣言した配列の例を示す図である。
【０１００】
図６に戻り、プロセッサ２１ａは、ＮＦＣタグ４から読み出された動作プログラムに含まれるコマンドを実行する（Ｓ６）。具体的には、プロセッサ２１ａは、プログラム解釈部３３により、動作プログラムに含まれるコマンドを解釈して、解釈したコマンドを実行する。プロセッサ２１ａは、例えば、コマンドに応じた動作を指示する制御信号をクローラ駆動回路２４へ送信する。受信した各制御信号に応じて、クローラ駆動回路２４は応答信号をプロセッサ２１ａへ送信する。
【０１０１】
すなわち、Ｓ６の処理は、解釈されたコマンドを実行する実行部を構成する。
【０１０２】
プロセッサ２１ａは、動作プログラム中のコマンドの実行後、動作プログラムに停止命令のコマンドが含まれているかを、判定する（Ｓ７）。
【０１０３】
停止命令が含まれているとき（Ｓ７：ＹＥＳ）、処理は、終了する。すなわち、ロボット１は、そのときの状態のままで、停止する。
【０１０４】
停止命令が含まれていないとき（Ｓ７：ＮＯ）、処理は、Ｓ３に戻り、ロボット１は、ＮＦＣタグ４を検出するまで前進する。
【０１０５】
よって、ロボット１は、ＮＦＣタグ４を検出すると、ロボット１は停止する。ロボット１は、ＮＦＣタグ４と通信して、動作プログラムを読み出して、動作プログラムに含まれる各コマンドを実行する。ロボット１は、動作プログラムに停止命令が含まれているときは、停止する。動作プログラムに停止命令が含まれていないときは、ロボット１は、ＮＦＣタグ４を検出するまで前進する。
【０１０６】
以上のように、上述した実施の形態によれば、ロボット１は、移動する経路上に置かれた ＮＦＣタグ４に格納された動作プログラムを読み取って、含まれるコマンドを認識し、コマンドに応じた動作を行うことができる。
【０１０７】
なお、上述した実施の形態では、ロボット１は、ＮＦＣタグ４から動作プログラムを読み出して、その動作プログラムに基づいた動作、例えば移動を行うが、ロボット１は、ＮＦＣタグ４にデータを書き込む動作を、さらに行うようにしてもよい。
【０１０８】
図１５は、ＮＦＣタグ４に対するデータの読出と書込を行うタグに利用するためのＮＦＣタグ４のデータ構造の例を示す図である。
【０１０９】
ここでは、コマンドの場合と同様に、図１５に示すように、ＮＦＣタグ４の「ＴＮＦ」は、「０ｘ０４」（ＮＦＣ  Ｆｏｒｕｍ  ｅｘｔｅｒｎａｌ  ｔｙｐｅ）を用い、「Ｔｙｐｅ」は、「ｔｏｇｈｉｂａ．ｃｏ．ｊｐ：ｒｂｃｍｄ」と定めるものとする。
【０１１０】
ここでは、「Ｐａｙｌｏａｄ」に、ＮＦＣタグ４に書き込まれるデータの値として、１，２，３，４がＡＳＣＩＩコードで記述されて格納されている。ここでも、データの値は、０〜６５５３５の範囲の値をとることができる。
【０１１１】
ここでは、ＮＦＣタグ４から読み出したデータを変数あるいは配列に格納する、あるいは変数あるいは配列のデータをＮＦＣタグ４に書き込むためのコマンドも新たに定義される。
【０１１２】
図１６は、格納あるいは書き込みのためのコマンドの例を示す図である。図１６は、データのロードコマンドとストアコマンドを示す。
【０１１３】
ここでは、このようなＮＦＣタグ４と２つのコマンドを用いて、ロボット１が動作中にデータ操作を行う過程を可視化することが可能となる。
【０１１４】
図１７は、複数のＮＦＣタグ４の配置の例を示す図である。  
【０１１５】
例えば、図１７に示すように、５つのＮＦＣタグ４を、グリッドライン３の１つのライン上に配置する。
【０１１６】
ロボット１の進行方向に沿って、ＮＦＣタグ４ａ、４ｂ、４ｃ、４ｄ、４ｅが、フィールド２上に順に配置される。ＮＦＣタグ４ａは、動作プログラムが格納されたプログラムタグである。ＮＦＣタグ４ｂ〜４ｅは、データが格納されたデータタグである。
【０１１７】
ここでは、図１７に示すように、ＮＦＣタグ４を配置し、各データタグに書かれたデータを昇順にソートし、ソートされた結果をデータタグに書き込む、という動作をロボットに実行させる。
【０１１８】
図１８は、プログラムタグであるＮＦＣタグ４ａに書き込まれる動作プログラムの例を示す図である。
【０１１９】
図１８に示す動作プログラムは、ソーティング用プログラムである。図１８の処理について説明する。
【０１２０】
Ｌ１行において、データタグの個数を変数「ｔｏｔａｌ」に代入しておく。ここでは、４が、変数「ｔｏｔａｌ」に代入される。
【０１２１】
Ｌ２行において、データタグはプログラムタグであるＮＦＣタグ４ａの次の位置から置かれているので、データタグを読み出すために ロボット１を１グリッド分、前進する。
【０１２２】
この例ではソーティングアルゴリズムはバブルソートのアルゴリズムであるため、Ｌ３からＬ４行から始まる二重のｆｏｒループでデータタグの読出し、比較処理が行われる。
【０１２３】
Ｌ８行において、読み出した二つのタグで値を比較する。  
【０１２４】
Ｌ９からＬ１２行において、値が逆順になっていれば、二つのタグのデータを書き換える。
【０１２５】
Ｌ１５行において、Ｌ４のｆｏｒループが終了した後、ロボット１は、ｊ番目のデータタグの位置にあるため、再度、図１７のＮＦＣタグ４ｂの位置からデータを読み出し、比較を行うために（ｊ−１）グリッド分、後退する。
【０１２６】
上記のプログラムが終了後、データタグ４ｂ〜４ｅには、初期データが昇順に並べ替えられた順番で格納されていることになる。
【０１２７】
ソートを実施する過程で、ロボットが各タグの位置に移動してデータの読出／書込を行うため、ソートの過程が目視で確認できることになる。また、この例では、バブルソートのアルゴリズムを用いたが、別のソーティングアルゴリズムを用いることで、アルゴリズムの差がロボットの移動として認識可能になるため、プログラミング教育の観点からアルゴリズムの理解を促進することが可能となる。
【０１２８】
以上のように、上述した実施形態によれば、書き換えプログラムのダウンロードをすることなく、かつ複雑な動作を可能とする自走機器及び自走式機器システムを提供することができる。
【０１２９】
上述した実施の形態のロボット１は、プログラミング教育に有効である。  
【０１３０】
近年は、就学前児童に対してプログラミング教育の機会を与えるような知的玩具や知育玩具などへの関心が高まっている。これらの知的玩具等の製品及びそれらの製品を用いたサービスにおいて、汎用的なＰＣや形態情報端末（ＰＤＡ：Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、スマートフォン、あるいはタブレット端末などを用いるもの以外に、自走するロボットを用いてプログラミングに体験、学習を行うようなシステムがある。
【０１３１】
このようなシステムは、ロボットの動作、行動を制御するための「プログラム」を何らかの方法でロボットに読み込ませる必要がある。一つの方法は、ＰＣ、スマートフォンあるいはタブレット端末で作成した「プログラム」を何らかの通信方法でロボット本体にダウンロードするものである。この方法を用いた場合、ロボットに対してより粒度の細かい制御が可能となる一方、ＰＣやスマートフォン／タブレット端末の操作に対する習熟、あるいは、プログラミングに対するある程度の知識が必要となる。
【０１３２】
ロボットに「プログラム」を読み込ませるもう一つの方法として、ＰＣ等を用いることなく、比較的単純なコマンドが書かれたカードなどをロボットに読み込ませる、という方法がある。しかし、この方法には、ロボットに読み込ませる「プログラム」の作成にはＰＣ等の操作の習熟やプログラミングの知識は必要なくなる一方で、カードに書かれたコマンドは単純なものに限られてしまう、という問題があった。
【０１３３】
また、ロボットシステムを構成する基本ソフトウエアの更新あるいはロボットシステムのアップグレードなどが行われ、ロボットの可能な動作が増えた場合、その動作を可能とするカードを用意することが難しいという問題もある。たとえ、汎用的な二次元バーコードを用いても、その二次元バーコードを印刷あるいは画像として表示するための機器を別途用意する必要があるため、ロボットシステムのコストを大幅に増大させることになる。
【０１３４】
また、二次元バーコードのような読み取り専用のカードを入力として受け付けるだけでは、動作中の状態や内部変数などの情報をロボットの外部に保存することができない。このため、内部変数や状態などはロボット内部のみに存在して、外部に表出することができない。つまり、ロボットはブラックボックス的に動作することになり、プログラミング教育用としてはプログラムの理解度を高めることが難しい。
【０１３５】
これに対して、上述した実施の形態によれば、上述した自走式機器を用いて、ロボット１へのコマンドの入力方法として、ＮＦＣタグ４などの近距離無線タグを用いて、上述した問題のない、自由度及び拡張性も高いプログラミング教育システムを実現することができる。
【０１３６】
特に、ユーザは、自走するロボット１を用いて、コマンドの並びとそれに対応する動作を体感することもできる。
【０１３７】
また、近距離無線タグは、記憶容量すなわち情報量が、二次元バーコードに比べ多いため、細かな動作をするための複雑な複数のコマンドを動作プログラムに含めることができる。
【０１３８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として例示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１３９】
１  ロボット、１ａ  本体、２  フィールド、３  グリッドライン、４、４ａ、４ｂ  タグ、１１  キーボード、１２  表示器、１３  インジケータ部、１３ａ  ランプ、１４  ボタン部、１４ａ  電源ボタン、１５  アンテナ、１６  光センサ、１７  クローラ、１７ａ  モータ、２１  ロボット制御部、２１ａ  プロセッサ、２１ｂ  画像処理部、２１ｃ  メモリ、２２  ＮＦＣリーダ／ライタ回路、２３  光センサ駆動回路、２４  クローラ駆動回路、２５  ユーザインターフェース制御部、２６  外部接続用デバイス、２７  バッテリ、３１  ＮＦＣリーダ／ライタ通信管理部、３２  ＮＦＣリーダ／ライタ通信ドライバ、３３  プログラム解釈部、３４  内部変数管理部、３５  内部変数格納部、３６  ロボット動作制御部、３７  クローラ駆動回路ドライバ、３８  光センサドライバ、３９  ユーザインターフェース制御部。
【図１】
2020038450.tif 000003
【図２】
2020038450.tif 000004
【図３】
2020038450.tif 000005
【図４】
2020038450.tif 000006
【図５】
2020038450.tif 000007
【図６】
2020038450.tif 000008
【図７】
2020038450.tif 000009
【図８】
2020038450.tif 000010
【図９】
2020038450.tif 000011
【図１０】
2020038450.tif 000012
【図１１】
2020038450.tif 000013
【図１２】
2020038450.tif 000014
【図１３】
2020038450.tif 000015
【図１４】
2020038450.tif 000016
【図１５】
2020038450.tif 000017
【図１６】
2020038450.tif 000018
【図１７】
2020038450.tif 000019
【図１８】
2020038450.tif 000020