(57)【特許請求の範囲】
【請求項１】
それぞれ入出力部が接続され、マスター制御部にシリアル通信線を介して直列に接続された複数のスレーブ制御部を有し、
前記複数のスレーブ制御部は、
異常の発生の有無を判定する異常判定手段と、
前記マスター制御部から前記シリアル通信線を介して送信された制御情報を記憶するレジスタと、
前記レジスタが記憶する情報に基づいて前記入出力部を制御する入出力制御部と、
異常状態に対応した異常対応情報を記憶する不揮発性メモリと、
前記異常判定手段により異常が発生したと判定されたとき、その異常状態に対応する前記異常対応情報を前記不揮発性メモリから読み出して前記レジスタに設定するレジスタ設定手段と、を備え、
前記複数のスレーブ制御部のうち当該スレーブ制御部よりも上流側の前記スレーブ制御部の前記入出力制御部は、前記入出力部からの情報に基づいて予め定められた制御を行い、
当該スレーブ制御部の前記異常判定手段により上流側の前記シリアル通信線の通信状態に異常が発生したと判定されたとき、当該スレーブ制御部の前記入出力制御部は、前記入出力部からの情報に基づいて前記予め定められた制御の代わりの制御を行う、制御装置。
【請求項２】
それぞれ入出力部が接続され、マスター制御部にシリアル通信線を介して直列に接続された第１及び第２のスレーブ制御部と、
少なくとも一対の車輪と、
前記一対の車輪を回転させるモータと、
前記モータを駆動するモータ駆動回路とを有し、
前記第１及び第２のスレーブ制御部は、
異常の発生の有無を判定する異常判定手段と、
前記マスター制御部から前記シリアル通信線を介して送信された制御情報を記憶するレジスタと、
前記レジスタが記憶する情報に基づいて前記入出力部を制御する入出力制御部と、
異常状態に対応して異常対応情報を記憶する不揮発性メモリと、
前記異常判定手段により異常が発生したと判定されたとき、その異常状態に対応する前記異常対応情報を前記不揮発性メモリから読み出して前記レジスタに設定するレジスタ設定手段とを備え、
前記第１のスレーブ制御部の前記入出力制御部は、前記入出力部として位置センサからの信号に基づいて倒立制御を行い、
前記第２のスレーブ制御部の前記入出力制御部は、前記入出力部として、前記モータを駆動するモータ駆動回路、及び前記車輪の回転を検出する回転センサが接続され、前記異常判定手段により前記シリアル通信線の通信状態に異常が発生したと判定されたとき、前記回転センサからの信号に基づいて前記モータ駆動回路を制御することで前記倒立制御の代わりの制御を行う、
ロボット。
【請求項３】
前記第２のスレーブ制御部の前記入出力制御部は、前記倒立制御の代わりの制御を行った後、前記回転センサからの信号に基づいて転倒防止用スタンドを機能させる、
請求項２に記載のロボット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置及びロボットに関する。
【背景技術】
【０００２】
制御するＩ／Ｏ数が多い場合、マスター基板と複数のスレーブ基板を用いて、それらの間をシリアル通信線を介してデータを送受信することでＩ／Ｏ制御を行う制御装置が知られている（例えば、特許文献１、２参照）。このような制御装置のほとんどは、安全性などを確保する場合、マスター制御部に頼らずスレーブ制御部側にプロセッサやプログラム格納用不揮発性メモリなどを搭載して異常状態が発生しても対応できるよう構築されている。
【０００３】
特許文献１に開示された装置は、駆動制御用に組み込まれたプログラムにより動作する組込型マイコンと、組込型マイコンに対して周期的な周期信号を出力する第１のタイマ回路と、マイコンがプログラムの一部の動作として周期信号を読み取るとともに、その周期信号を伝達して伝達信号を出力し、伝達信号の時間変化を取得した結果に基づき、時間変化が継続する場合と時間経過が継続しない場合とで異なる動作状態信号を出力する第２のタイマ回路とを備えたものである。
【０００４】
特許文献２に開示された装置は、トランスミッタ（検出端装置）と、アクチュエータ（操作端装置）と、トランスミッタからの計測信号に対して演算を行って制御信号を求め、制御信号に基づいてアクチュエータを制御する演算・制御部とを備えたループが、中継器及び通信バッファを介して上位機器に接続されたものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−２０３１８８号公報
【特許文献２】特許第３３０７９１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、スレーブ制御部にマイコンとプログラムを用いない場合でも、通信異常等の異常が発生した場合に直ちに初期状態に戻す構成と比較して安全に停止動作を行うことができる制御装置及び及びロボットを提供することにある。
【課題を解決するための手段】
【０００７】
［１］それぞれ入出力部が接続され、マスター制御部にシリアル通信線を介して直列に接続された複数のスレーブ制御部を有し、
前記複数のスレーブ制御部は、
異常の発生の有無を判定する異常判定手段と、
前記マスター制御部から前記シリアル通信線を介して送信された制御情報を記憶するレジスタと、
前記レジスタが記憶する情報に基づいて前記入出力部を制御する入出力制御部と、
異常状態に対応した異常対応情報を記憶する不揮発性メモリと、
前記異常判定手段により異常が発生したと判定されたとき、その異常状態に対応する前記異常対応情報を前記不揮発性メモリから読み出して前記レジスタに設定するレジスタ設定手段と、を備え、
前記複数のスレーブ制御部のうち当該スレーブ制御部よりも上流側の前記スレーブ制御部の前記入出力制御部は、前記入出力部からの情報に基づいて予め定められた制御を行い、
当該スレーブ制御部の前記異常判定手段により上流側の前記シリアル通信線の通信状態に異常が発生したと判定されたとき、当該スレーブ制御部の前記入出力制御部は、前記入出力部からの情報に基づいて前記予め定められた制御の代わりの制御を行う、制御装置。
［２］それぞれ入出力部が接続され、マスター制御部にシリアル通信線を介して直列に接続された第１及び第２のスレーブ制御部と、
少なくとも一対の車輪と、
前記一対の車輪を回転させるモータと、
前記モータを駆動するモータ駆動回路とを有し、
前記第１及び第２のスレーブ制御部は、
異常の発生の有無を判定する異常判定手段と、
前記マスター制御部から前記シリアル通信線を介して送信された制御情報を記憶するレジスタと、
前記レジスタが記憶する情報に基づいて前記入出力部を制御する入出力制御部と、
異常状態に対応して異常対応情報を記憶する不揮発性メモリと、
前記異常判定手段により異常が発生したと判定されたとき、その異常状態に対応する前記異常対応情報を前記不揮発性メモリから読み出して前記レジスタに設定するレジスタ設定手段とを備え、
前記第１のスレーブ制御部の前記入出力制御部は、前記入出力部として位置センサからの信号に基づいて倒立制御を行い、
前記第２のスレーブ制御部の前記入出力制御部は、前記入出力部として、前記モータを駆動するモータ駆動回路、及び前記車輪の回転を検出する回転センサが接続され、前記異常判定手段により前記シリアル通信線の通信状態に異常が発生したと判定されたとき、前記回転センサからの信号に基づいて前記モータ駆動回路を制御することで前記倒立制御の代わりの制御を行う、ロボット。
［３］前記第２のスレーブ制御部の前記入出力制御部は、前記倒立制御の代わりの制御を行った後、前記回転センサからの信号に基づいて転倒防止用スタンドを機能させる、前記［２］に記載のロボット。
【発明の効果】
【０００８】
請求項１、２に係る発明によれば、スレーブ制御部にマイコンとプログラムを用いない場合でも、通信異常等の異常が発生した場合に直ちに初期状態に戻す構成と比較して安全に停止動作を行うことができる。
請求項３に係る発明によれば、二重に安全性を高めることができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、本発明の実施の形態に係る制御装置が適用された２輪倒立ロボットの概略の外観を示し、（ａ）は側面図、（ｂ）は正面図である。
【図２】図２は、スレーブ制御部の概略の構成例を示すブロック図である。
【図３】図３（ａ）は、エンコーダの概略の構成例を示す斜視図、図３（ｂ）は、スリットを展開して示す模式図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態について図面を参照して説明する。なお、各図中、実質的に同一の機能を有する構成要素については、同一の符号を付してその重複した説明を省略する。
【００１１】
［実施の形態の要約］
本実施の形態の制御装置は、それぞれ入出力部が接続され、マスター制御部にシリアル通信線を介して直列に接続された複数のスレーブ制御部を有し、複数のスレーブ制御部は、異常の発生の有無を判定する異常判定手段と、マスター制御部からシリアル通信線を介して送信された制御情報を記憶するレジスタと、レジスタが記憶する情報に基づいて入出力部を制御する入出力制御部と、異常状態に対応した異常対応情報を記憶する不揮発性メモリと、異常判定手段により異常が発生したと判定されたとき、その異常状態に対応する異常対応情報を不揮発性メモリから読み出してレジスタに設定するレジスタ設定手段とを備える。
【００１２】
「異常状態」とは、シリアル通信線の断線やノイズ等の影響によりエラー回数が多いなどの正常でない状態をいう。「異常対応情報」とは、異常状態に対して初期状態に戻すよりも安全に対応するための情報をいう。複数のスレーブ制御部は、上流側から下流側に向かって直列に接続されている。「上流側」とは、マスター制御部に近い側をいい、「下流側」とは、マスター制御部から遠い側をいう。マスター制御部は、プロセッサとプログラム格納用の不揮発性メモリを有するものである。スレーブ制御部は、プロセッサとプログラム格納用の不揮発性メモリを有していないものである。
【００１３】
［実施の形態］
図１は、本発明の実施の形態に係る制御装置が適用された２輪倒立ロボットの概略の外観を示し、（ａ）は正面図、（ｂ）は側面図である。
【００１４】
この２輪倒立ロボット（以下、単に「ロボット」という場合もある。）１は、胴体部２と、一対の脚部３と、一対の脚部３が回転自在に連結された車軸４と、車軸４の両端に接続された一対の車輪５と、車軸４を回転させるモータ１５（図２参照）とを備える。
【００１５】
胴体部２の内部には、２輪倒立ロボット１の全体を制御するマスター制御部６、マスター制御部６に上流側から下流側にシリアル通信線８を介して直列に接続された複数（図１では２つ）の第１及び第２のスレーブ制御部７Ａ、７Ｂ（これらを総称するときは「スレーブ制御部７」という。）等が設けられている。また、胴体部２は、進行・後退方向（図１（ａ）のＸ軸方向）の前後面にそれぞれ転倒防止用スタンド９が回転可能又は出没可能に設けられている。なお、スレーブ制御部７は、３つ以上でもよい。また、転倒防止用スタンド９は、床面側に車輪を設けたものでもよい。
【００１６】
脚部３の近傍には、後述する図２に示すように、ジャイロセンサ１１、モータ１５を駆動するモータ駆動回路１２、エンコーダ１３、スタンド駆動回路１４等が設けられている。ここで、ジャイロセンサ１１、モータ駆動回路１２、エンコーダ１３、スタンド駆動回路１４は、入出力部の一例である。ジャイロセンサ１１は、位置センサの一例である。エンコーダ１３は、回転センサの一例である。
【００１７】
マスター制御部６は、プログラムとプログラム格納用の不揮発性メモリを有し、プロセッサはプログラムに従って各スレーブ制御部７に対して制御信号（制御情報）を送受信する。スレーブ制御部７は、プロセッサを有しておらず、マスター制御部６からの制御信号に基づいてＩ／Ｏ制御を行う。
【００１８】
具体的には、マスター制御部６は、２つの車輪５が接続されている車軸４上に重心を移動させる倒立制御、すなわち、図１（ａ）に示すように、重心をＹ軸線上にくるように制御する。ロボット１の重心が２つの車輪５の輪軸上から外れると、胴体部２が重心が外れた側（図１（ａ）ではＸ軸方向の右側）に傾いていき、やがて転倒することになる。ここで、転倒させないように制御するには、重心の傾いた方向に対して車輪５をＸ軸方向に回転させることで重心位置をＹ軸上に戻し、倒立状態（胴体部２が垂直の状態）を維持する制御を行う。倒立制御は、マスター制御部６の制御の下、第１のスレーブ制御部７Ａが実行し、第１のスレーブ制御部７Ａと第２のスレーブ制御部７Ｂとの間の通信異常が発生した場合は、第２のスレーブ制御部７Ｂが倒立制御の代わりの制御を行う。
【００１９】
（スレーブ制御部の構成）
図２は、スレーブ制御部７の概略の構成例を示すブロック図である。スレーブ制御部７Ａ、７Ｂは、基板７０と、第１及び第２の異常判定部７１ａ、７１ｂを有するデータ送受信回路７１と、ＳＥＬ回路７２と、制御異常判定部７３と、Ｉ／Ｏ制御モジュール７４と、入力補正部７５と、レジスタ７６と、不揮発性メモリ７７とを備える。ここで、第１及び第２の異常判定部７１ａ、７１ｂ、及び制御異常判定部７３は、異常判定手段の一例である。また、ＳＥＬ回路７２は、レジスタ設定手段の一例である。Ｉ／Ｏ制御モジュール７４は、入出力制御部の一例である。
【００２０】
データ送受信回路７１は、第１の異常判定部７１ａと、第２の異常判定部７１ｂとを備える。第１及び第２の異常判定部７１ａ、７１ｂの詳細については後述する。
【００２１】
レジスタ７６には、マスター制御部６からの制御情報や、異常発生時の外部からのセンサ信号の情報が直接Ｉ／Ｏ制御モジュール７４用のレジスタとして書き込まれる。
【００２２】
マスター制御部６の基板とスレーブ制御部７の基板７０との間、及び各スレーブ制御部の基板７０間をシリアル通信線８によりデータ送受信を行うように構成されている。
【００２３】
（異常判定手段）
第１の異常判定部７１ａは、シリアル通信線８による通信状態の異常（例えば通信断、エラー回数が閾値以上）の発生の有無を判定（異常判定）し、異常が発生したと判定すると、異常が発生した旨をＳＥＬ回路７２及び制御異常判定部７３に通知する。この異常が発生した旨には、例えば、通信異常が発生したシリアル通信線８の場所（上流側か下流側か）及び通信状態の内容が含まれる。
【００２４】
第２の異常判定部７１ｂは、マスター制御部６又は他のスレーブ制御部７から異常が発生した旨の通知を受けた場合に、自己の基板７０内の異常判定を行い、異常が発生したと判定すると、異常が発生した旨をＳＥＬ回路７２及び制御異常判定部７３に通知する。なお、この第２の異常判定部７１ｂは、マスター制御部６とスレーブ制御部７ごとに設けてもよいし、マスター制御部６又は一部のスレーブ制御部７に設けてもよい。この異常が発生した旨には、例えば、自己の基板７０内の異常が発生した場所、及び異常状態の内容が含まれる。
【００２５】
制御異常判定部７３は、例えば一定の間隔で自己の基板７０内で異常が発生したかどうかを判定し、異常が発生したと判定したとき、及び自己の第１又は第２の異常判定部７１ａ、７１ｂから異常が発生した旨の通知を受けた場合は、異常を発生した旨をマスター制御部６、他のスレーブ制御部７、ＳＥＬ回路７２及び外部に通知する。この異常が発生した旨には、第１及び第２の異常判定部７１ａ、７１ｂからの情報の他に、例えば、基板の識別情報、及び異常状態の内容が含まれる。
【００２６】
これら３つの異常判定手段を１つの基板７０内に持つことで、異常状態に対応した制御を、自己の基板７０に対して行うことが可能になる。このようにマスター制御部６とスレーブ制御部７との間、及びスレーブ制御部７間をシリアル通信線８によりデータ送受信を行うシステムにおいて、異常が発生した旨を通知する各種異常判定手段により異常判定を行うことで、発生した異常状態に対応した異常対応制御を行うことができる。
【００２７】
ジャイロセンサ１１は、本実施の形態では、傾きを検出するセンサとして、Ｘ軸、Ｙ軸、Ｚ軸の３Ｄ方向の傾き情報を検出するものを用いる。
【００２８】
モータ駆動回路１２は、モータ１５を駆動するとともに、坂道などではモータ１５にブレーキを付加する。
【００２９】
エンコーダ１３は、車輪５の回転速度及び回転方向を示すパルス信号を出力する。エンコーダ１３の詳細な構成は後述する。
【００３０】
不揮発性メモリ７７には、異常状態に対応して予め定められた異常対応情報が記憶されている。
【００３１】
（レジスタ設定手段）
ＳＥＬ回路７２は、発生した異常状態に対応した異常対応制御、すなわちレジスタ設定動作を行う。第２のスレーブ制御部７ＢのＳＥＬ回路７２は、異常判定手段により異常が発生したと判定されると、第１のスレーブ制御部７Ａの倒立制御の代わりの制御としてエンコーダパルス情報に基づく制御に切り替える。また、ＳＥＬ回路７２は、第１及び第２の異常判定部７１ａ、７１ｂ、及び制御異常判定部７３からの異常が発生した旨の通知を受けたとき、異常状態の内容に応じて対応する異常対応情報を不揮発性メモリ７７から読み出し、読み出した異常対応情報でレジスタ７６を書き換えることで設定し、異常対応情報（レジスタ情報）を有効化する。レジスタ７６に対する異常対応情報の設定は、上書きすることで行われる。これにより、当該Ｉ／Ｏ制御モジュール７４に対して適切な設定情報を設定でき、動作させることが可能になる。なお、システムの制御方法の変更により、不揮発性メモリ７７は、直接又はシリアル通信線８を使用して最適データに書き換える機能を持ってもよい。これにより、常に最良の状態で異常対応が可能となる。
【００３２】
（入力補正部）
倒立制御などはロボット１の重心や重量、またはアームなどの動作状態により常に変化している。荷物等を扱う場合などには、その重量や位置情報も加味する必要がある。通常はこれらの情報をもとにプログラムされた制御ルールに従ってきめ細かく制御を行うが、シリアル通信線８の通信断や他のスレーブ制御部７の異常により、制御に必要な情報が途切れることが懸念される。これらの途切れた情報を補填するのが入力補正部７５の役割となる。
【００３３】
異常状態に対応するための制御を実行するには、レジスタ設定による一方的な設定だけでは全て対応することができない。例えば、ロボットの倒立制御は外部情報（ロボットの傾き情報）がないと、ロボットの重心に対して、現在右に傾いているのか左に傾いているのかが把握できず、制御を誤ると転倒することになる。また、傾き加減によってモータ回転パルス数も変えて制御することが必要であるため、一方的なレジスタ設定では制御できない。当然、リセット等による初期値で停止させると、倒立制御を行っていたロボット１は転倒することになり危険である。
【００３４】
これを回避するため、入力補正部７５は、特定のセンサ情報、例えばジャイロセンサ１１の出力信号をＩ／Ｏ制御モジュール７４の入力側から取り出し、ジャイロセンサ１１の出力信号からロボット１の傾き情報を読み取ってその制御に合う補正値を入力補正してレジスタ７６に書き込む。これにより、所定モータパルス分の制御ができて転倒を防止させることが可能となる。
【００３５】
また、入力補正部７５は、例えば速度が一定以上になると、速度を一定の値に出力するよう温度、傾き等を補正する。
【００３６】
次に、速度制御について説明する。速度制御は、加速、定常、減速の３つの制御がされている。加速時、減速時はジャイロセンサ１１内部にある検出用素子（センサ）の歪により歪値に相当したアナログデータが出力される。
【００３７】
停止時、および一定の速度で走行している場合は、ジャイロセンサ１１内部素子には力が加わらなくなるため歪が生じなくなり、加減速していないことが検出できる。なお、定常走行時、路面の状態やカーブなどのハンドル操作では歪を検出することができる。路面の状態検出や、カーブによる重心移動によって、ロボット１の速度制御を行うことで転倒防止制御を行うこともある。
【００３８】
加速度（加速・減速）が一定以上というのは、検出された加速度の値（つまり素子の歪の度合い）が大きければ、それを抑制する方向に制御する必要がある。例えば加速時は減速方向、減速時は加速方向に制御することでジャイロセンサ１１の歪が一定の値になるよう制御を行うことになる。この時、ジャイロセンサ１１はアナログ値であるため、実際には同じ加速度であっても周囲の温度により違うデータのように検出されることがあるので温度補正を行う。上記記載の「傾き」の意味が時系列的に取得したデータの傾きを意味する場合は、その傾きに対して補正値で正規情報になるよう補正する。アナログデータであるため、温度、取得データの傾きのほか、電源電圧変化、ノイズ、サンプルタイミング（常にデータを取得しているわけではなく、定期的（周期的）にアナログ値を読み込んで判定しているため、アナログ値を２回読み込む間のデータは取得できず、前後の情報から推測して中間データの補正も行う。）などもある。
【００３９】
上記は第１のスレーブ制御部７Ａの話となり、第２のスレーブ制御部７Ｂで孤立した場合はエンコーダ１３とモータ駆動回路１２での制御になる。従って上記は正常状態の動作に近く、閾値を超えた時点でレジスタ７６に書き込むとともに、マスター制御部６にそのレジスタ値を送信する。
【００４０】
ジャイロセンサ１１ではなくエンコーダ１３での制御は、以下の通りとなる。停止時、倒立を維持するということはエンコーダ１３からのパルス入力がないことで自分自身が倒立状態を維持していると検出することになります。ロボット１移動時、第２のスリット列１３１Ｂの受光素子１３３Ｂからのパルスは正常時に入力されたパルス間隔から逸脱しなければ倒立状態を維持していると判断する。
【００４１】
停止時は第２のスリット列１３１Ｂの受光素子１３３Ｂからのパルスとともに第１のスリット列１３１Ａの受光素子１３３Ａからのパルスが入力されることでスリット１３１が右側に回転しているのか左側に回転しているのかを判断し、回転を抑制する方向へ制御することで転倒防止を行う。
【００４２】
動作時は、そのまま移動させると障害物に当たる可能性があるため、移動を止める制御を行います。移動を止めるには第２のスリット列１３１Ｂの受光素子１３３Ｂからのパルス間隔をモニタしながら減速を行うが、これは減速時に入力されたパルス数と、通常減速する時に入力されるであろうパルス数とを比較しながら減速を行って転倒しないように制御を行う。ただし、重心制御が困難であるため、動作時には補助輪をすぐに出して減速動作を行ってもよい。
【００４３】
入力補正部７５は、特定センサ情報をレジスタ７６や不揮発性メモリ７７に与えて、制御を継続するようになっている。入力補正部７５は、入力補正情報は一定情報をレジスタ７６に格納するのではなく、正常の動作していた必要最低限の情報をレジスタ７６経由で入力補正部７５から入力しており、異常発生時に、その入力された情報と、外部からのセンサ情報をもとに補正値を算出し、Ｉ／Ｏ制御モジュール７４用のレジスタ７６に設定する。なお、動作条件が変更された場合などは、レジスタ７６経由で算出式を変更してもよい。入力補正部７５は外部からの入力情報に従い、入力情報に対する入力補正部７５にある比較回路により、所定の閾値が変化したタイミングをトリガとしてレジスタ７６へのデータ書き込み動作を行う。なお、閾値は小さい値から大きい値に変化する場合と、大きい値から小さい値へ変化する場合では違う閾値を使い、閾値近傍でデータがふらついた場合に頻繁に書き込まれることを防ぐために、シュミットトリガのような動きを想定してある程度の閾値の設定値をずらせて設定を行う。
【００４４】
（エンコーダの構成）
図３（ａ）は、エンコーダ１３の概略の構成例を示す斜視図、図３（ｂ）は、スリットを展開して示す模式図である。エンコーダ１３は、図３（ａ）に示すように、車輪５の回転に伴って回転するように回転軸に設けられ、放射状に複数のスリット１３１を有する円盤状の光学スケール１３０と、光学スケール１３０に設けられたスリット１３１を透過する光を出射する発光素子１３２と、スリット１３１を透過した光を受光する受光素子１３３とを備える。
【００４５】
発光素子１３２は、連続した光を出射し、受光素子１３３は、発光素子１３２から出射された光のうち、スリット１３１を透過した光のみを受光することでパルス信号を出力する。
【００４６】
光学スケール１３０には、図３（ｂ）に示すように、スリット１３１の幅が回転方向に沿って徐々に広く形成された第１のスリット列１３１Ａと、スリット１３１の幅が回転方向で一定の第２のスリット列１３１Ｂとを備える。第１のスリット列１３１Ａ及び第２のスリット列１３１Ｂには、図３（ａ）に示すように、それぞれ発光素子１３２Ａ、１３２Ｂと受光素子１３３Ａ、１３３Ｂが設けられている。
【００４７】
第１のスリット列１３１Ａは、スリット１３１の幅が回転方向が一方向では徐々に広くなり、幅が最大になった後は幅が最小から徐々に広くなっている。回転方向が逆方向になると、スリット１３１の幅が徐々に狭くなり、幅が最小になった後は幅が最大から徐々に狭くなっている。このため、第１のスリット列１３１Ａと第２のスリット列１３１Ｂとを組み合わせることにより、スリット幅が一定の第２のスリット列１３１Ｂを基準に第１のスリット列１３１Ａのパルス幅の変化を見れば、光学スケール１３０の回転方向、すなわち車輪５がどちらの方向に回転しているかを検出することができる。
【００４８】
第２のスレーブ制御部７Ｂは、エンコーダ１３からのパルス情報の状態が変化したら、胴体部２が傾きつつあることを意味するため、傾いた方向に対して車輪５を動かしてエンコーダ１３からのパルスが停止するように制御を行う。
【００４９】
なお、上記の制御でもロボット１が転倒することが考えられるため、転倒防止用スダンド９を出して転倒しないようにロボット１を支えるようにしてもよい。
【００５０】
ロボット１が移動中にシリアル通信線８に断線が発生した場合、第２のスリット列１３１Ｂによるパルス間隔を基準に、第１のスリット列１３１Ａによるパルス幅で進行方向を知り、第２のスリット列１３１Ｂによる一定間隔のパルス間隔の時間が遅くなるようにブレーキをかけて停止状態となるように制御を行う。
【００５１】
この際、ブレーキを急激にかけると転倒する可能性があるため、入力補正に従って転倒しないパラメータに従い停止させるとともに、不測の事態（転倒すること）を抑制するための転倒防止用スタンド９を出す制御を合わせて行ってもよい。なお、転倒防止用スタンド９は、移動中に出すと障害物や人に当たる可能性があるため、第２のスリット列１３１Ｂによるパルスが一定以下のパルス間隔（速度）に落ちるまでは出さないなどの制御もパラメータとして持っておくことが望ましい。
【００５２】
（実施の形態の動作）
次に、ロボット１の動作の一例を（１）通常状態の制御と、（２）異常状態の対応制御に分けて説明する。
【００５３】
（１）通常状態の制御
マスター制御部６から、例えば一定の速度で一定の距離を移動する、という命令（制御情報）をシリアル通信線８を介してスレーブ制御部７に送ると、スレーブ制御部７は、マスター制御部６から送られてきた制御情報をレジスタ７６に書き込む。I／Ｏ制御モジュール７４は、レジスタ７６に書き込まれた制御情報に従って入出力部を制御する。
【００５４】
第１のスレーブ制御部７ＡのI／Ｏ制御モジュール７４は、レジスタ７６に書き込まれた制御情報に従い、ジャイロセンサ１１からのジャイロセンサ情報に基づいて倒立制御を行う。すなわち、I／Ｏ制御モジュール７４は、ジャイロセンサ１１からのジャイロセンサ情報に基づいて胴体部２が傾かないように倒立制御を行う。
【００５５】
ジャイロセンサ１１から第１のスレーブ制御部７Ａに入力したジャイロセンサ情報は、不揮発性メモリ７７に格納する。制御方法によってデータ送信タイミングは変わるが、データ格納イベントをトリガとして、割り込み動作のようにデータ格納終了時点でマスター制御部６側へデータを送信する方法と、またはデータは常に最新を不揮発性メモリ７７に書き込むが、マスター制御部６がセンサ情報を要求した場合にマスター制御部６からの要求信号に従ってデータをマスター制御部６に送る動作がある。データ送受信回路７１は、ジャイロセンサ１１からのジャイロセンサ情報をシリアル通信線８を介して第２のスレーブ制御部７Ｂに送信する。
【００５６】
第２のスレーブ制御部７Ｂのデータ送受信回路７１は、第１のスレーブ制御部７Ａから送信されたジャイロセンサ情報を受信する。ＳＥＬ回路７２は、データ送受信回路７１が受信したジャイロセンサ情報をレジスタ７６に書き込む。I／Ｏ制御モジュール７４は、レジスタ７６に書き込まれたジャイロセンサ情報を加速度の情報として利用し、一定の速度で移動するようにモータ駆動回路１２を制御する。
【００５７】
通常制御の場合は、各センサ情報はマスター制御部６側へ送られ、全体の情報をもとに最適なデータを各スレーブ基板７０のレジスタ７６に書き込んで制御を行う。スレーブ基板７０内の閉じた領域でのセンサ情報を使って制御するものはマスター制御部６を介さずに制御される場合もあるが、この場合でも制御結果はマスター制御部６に送られて状態把握を行う。正常時と異常時の制御が類似するなら、正常時でも基板内で制御すればよいことになる。このような制御が困難であるため、各スレーブ基板情報を統合して制御を行っている。
【００５８】
また、第２のスレーブ制御部７ＢのI／Ｏ制御モジュール７４は、エンコーダ１３からのパルス情報に基づいて移動距離を把握し、一定の距離を移動するようにモータ駆動回路１２を制御する。
【００５９】
（２）異常状態の対応制御
第１及び第２のスレーブ制御部７Ａ、７Ｂ間のシリアル通信線８に断線が発生すると、第１のスレーブ制御部７Ａは、ジャイロセンサ１１からのジャイロセンサ情報を第２のスレーブ制御部７Ｂに送信できなくなる。この場合、第２のスレーブ制御部７Ｂの第１の異常判定部７１ａは、第１のスレーブ制御部７Ａから信号が一定時間以上送信されないためにシリアル通信線８の通信状態の異常が発生したと判定し、異常が発生した旨をＳＥＬ回路７２に通知する。
【００６０】
ＳＥＬ回路７２は、第１の異常判定部７１ａからの異常が発生した旨の通知を受けると、異常状態に応じたレジスタ情報を不揮発性メモリ７７から読み出し、読み出したレジスタ情報でレジスタ７６を書き換える。第２のスレーブ制御部７Ｂは、エンコーダ１３が出力するパルス情報に基づいて、第１のスレーブ制御部７Ｂに行っていた倒立制御の代わりとして制御を行う。
【００６１】
Ｉ／Ｏ制御モジュール７４は、エンコーダ１３からのパルス情報に基づいて、胴体部２の傾きを検出し、この傾きを修正するようにモータ駆動回路１２を制御する。すなわち、Ｉ／Ｏ制御モジュール７４は、エンコーダ１３からのパルス情報の状態が変化したら、胴体部２が傾きつつあることを意味するため、傾いた方向に対して車輪５を動かしてエンコーダ１３からのパルスが停止するように制御を行う。
【００６２】
上記制御ではエンコーダ１３からのパルスが停止せずに、増加してしまう場合には、第２のスレーブ制御部７ＢのＩ／Ｏ制御部７４は、スタンド駆動回路１４を制御して転倒防止用スタンド９を排出させる。
【００６３】
上述した異常状態の対応制御のアルゴリズムは、ＡＳＩＣ（特定用途向け集積回路）、ＦＰＧＡ（再構成可能集積回路）等の回路で実現してもよいし、特定の専用回路のスタート信号として入力補正部７５から出力してもよい。
【００６４】
なお、本発明の実施の形態は、上記実施の形態に限定されるものではなく、本発明の要旨を変更しない範囲内で種々に変形、実施が可能である。例えば、２対の車輪を有するロボット、あるいは、画像形成装置において実施してもよい。
【００６５】
また、本発明の要旨を変更しない範囲内で、上記実施の形態の構成要素の一部を省くことが可能であり、上記実施の形態のフローにおいて、ステップの追加、削除、変更、入替え等が可能である。
【符号の説明】
【００６６】
１…２輪倒立ロボット、２…胴体部、３…脚部、４…車軸、５…車輪、
６…マスター制御部、７、７Ａ、７Ｂ…スレーブ制御部、８…シリアル通信線、
９…転倒防止用スタンド、１１…ジャイロセンサ、１２…モータ駆動回路、
１３…エンコーダ、１４…スタンド駆動回路、１５…加速度センサ、
２５…入力補正部、７０…基板、７１…データ送受信回路、
７１ａ…第１の異常判定部、７１ｂ…第２の異常判定部、
７２…ＳＥＬ回路、７３…制御異常判定部、７４…制御モジュール、
７５…入力補正部、７６…レジスタ、７７…不揮発性メモリ、
１３０…光学スケール、１３１…スリット、１３１Ａ…第１のスリット列、
１３１Ｂ…第２のスリット列、１３２、１３２Ａ、１３２Ｂ…発光素子、
１３３、１３３Ａ、１３３Ｂ…受光素子
【図１】
0006627353.tif 000002
【図２】
0006627353.tif 000003
【図３】
0006627353.tif 000004