以下、発明の実施の形態を通じて本発明を説明するが、特許請求の範囲に係る発明を以下の実施形態に限定するものではない。また、実施形態で説明する構成の全てが課題を解決するための手段として必須であるとは限らない。
図1は、本実施形態にかかる移動ロボット100の外観斜視図である。移動ロボット100は、大きく分けて台車部110とアーム部120によって構成される。
台車部110は、主に、ベース111と、ベース111に取り付けられた2つの駆動輪112と1つのキャスター113とから構成される。2つの駆動輪112は、ベース111の対向する側方のそれぞれに、回転軸芯が一致するように配設されている。それぞれの駆動輪112は、不図示のモータによって独立して回転駆動される。キャスター113は、従動輪であり、ベース111から鉛直方向に延びる旋回軸が車輪の回転軸から離れて車輪を軸支するように設けられており、台車部110の移動方向に倣うように追従する。移動ロボット100は、例えば、2つの駆動輪112が同じ方向に同じ回転速度で回転されれば直進し、逆方向に同じ回転速度で回転されれば重心を通る鉛直軸周りに旋回する。
台車部110には、障害物検知や周辺環境認識のための各種センサが設けられている。カメラ114は、そのセンサ類の一つであり、ベース111の前方に2つ配置されている。カメラ114は、例えばCMOSイメージセンサを含み、撮影した画像信号を後述の制御部へ送信する。2つのカメラ114が同一の被写体を捉えれば視差画像を取得でき、制御部は、当該被写体までの距離を算出することもできる。また、マイク115も、センサ類の一つである。マイク115は、取得した音声信号を制御部へ送信する。例えば、取得された音声信号により、制御部は、移動ロボット100の周囲に立つ人の音声を認識して、動作に反映させることができる。
台車部110には、タグに印刷されたQRコード(登録商標)を読み取るタグリーダ116が、前方と側方にそれぞれ設けられている。後述するように、タグリーダ116は、環境下に設置されたタグを読み取って、制御部へ送信する。移動ロボット100は、例えば壁面に取り付けられたタグを読み取りやすくするために、駆動輪112を駆動していずれかのタグリーダ116をタグに正対させても良い。また、台車部110には、コントロールユニット190が設けられている。コントロールユニット190は、制御部とメモリ等を含む。
アーム部120は、主に、複数のアーム121、122、123と、ハンド124とから構成される。アーム121は、鉛直軸周りに回転自在に、一端がベース111に軸支されている。アーム122は、水平軸周りに回転自在に、一端がアーム121の他端に軸支されている。アーム123は、アーム122の他端で放射方向に回転自在に、一端がアーム122の他端に軸支されている。ハンド124は、アーム123の伸延方向と平行な中心軸周りに回転自在に、アーム123の他端に軸支されている。
ハンド124は、移動ロボット100の作業対象物としての搬送物を把持できるように、把持機構を備える。移動ロボット100は、搬送物を搬送するに限らず、様々な目的に適用することができる。アーム部120は、移動ロボット100に与えられるタスクに応じて様々な作業対象物を把持する。例えば、レバーを把持して回転し、扉を開く作業を行うこともできる。
図2は、移動ロボット100の制御ブロック図である。制御部200は、例えばCPUであり、駆動輪ユニット210、アームユニット220、センサユニット230、メモリ240、タグリーダ160等との間で指令やサンプリングデータ等の情報を送受信することにより、移動ロボット10の制御に関わる様々な演算を実行する。
駆動輪ユニット210は、台車部110に設けられており、駆動輪112を駆動するための駆動回路とモータ211、モータ211の回転量を検出するエンコーダ212等を含む。制御部200は、駆動輪ユニット210へ駆動信号を送ることにより、モータ211の回転制御を実行する。モータ211は、移動ロボット100に搭載されたアクチュエータ群を構成する。また、エンコーダ212の検出信号を受け取ることにより、移動ロボット100の移動速度、移動距離、旋回角等を演算する。
アームユニット220は、アーム部120に設けられており、アーム121、122、123およびハンド124を駆動するための駆動回路とアクチュエータ221、アクチュエータ221の動作量を検出するエンコーダ222等を含む。制御部200は、アームユニット220へ駆動信号を送ることにより、アクチュエータ221を動作させ、アーム部120の姿勢制御や把持制御を実行する。アクチュエータ221は、移動ロボット100に搭載されたアクチュエータ群を構成する。また、エンコーダ222の検出信号を受け取ることにより、アーム部120の稼働速度、稼働距離、姿勢等を演算する。
センサユニット230は、カメラ114、マイク115の他にも周辺環境を探索したりアーム部120の姿勢を監視したりする各種センサを含み、これらは、台車部110およびアーム部120に分散して配置されている。制御部200は、それぞれのセンサに制御信号を送ることにより、その出力を取得する。例えば、カメラ114は、制御部200からの制御信号に従って撮影動作を実行し、撮影したフレーム画像データを制御部200へ送信する。
メモリ240は、不揮発性の記憶媒体であり、例えばソリッドステートドライブが用いられる。メモリ240は、移動ロボット100を制御するための制御プログラム、制御に用いられる様々なパラメータ値、関数、ルックアップテーブル等を記憶している。特に、例えば指定された対象物を探索して持ち帰るタスクなど、特定のタスクを実行するためのタスクプログラム241を記憶している。また、タグ情報が読み取られていない状態において、移動ロボット100を制限的に動作させるための制限動作プログラム242を記憶している。また、タスクプログラム241の実行が中断されたときに、移動ロボット100に終端処理を実行させるための終端処理プログラム243を記憶している。具体的には後に詳述する。
タグリーダ116は、QRコードリーダであり、タグに印刷されたQRコードを読み取って制御部200へ送信する。QRコードには、後述するように、アクチュエータ群の許容動作時間および許容動作量の少なくともいずれかの情報が、他の情報と共に記述されている。なお、本実施形態においては、このような情報が記述されたタグとしてQRコードが印刷されたタグを用いるが、このような情報を記述する媒体はQRコードに限らない。例えば、RFIDを用いても良い。タグとしてRFIDを用いる場合は、タグリーダ116としてRFIDリーダを採用する。移動ロボット100が移動する空間の状況に応じて容易に取り替えができるものであって、簡易な処理で内容を読み取れるものであれば、タグとして採用し得る。
また、種類の異なるタグを複数読み取れる構成としても良い。例えば、タグリーダ116としてQRコードリーダとRFIDリーダの両方を搭載しても良い。この場合、より高い安全性を確保するのであれば、QRコードリーダで読み取ったQRコードの情報と、RFIDリーダで読み取ったRFIDの情報とが一致する場合にのみ、後述する制限の解除を行えば良い。一方、利便性を高めたいのであれば、いずれかの情報を読み取れたら読み取った情報に従って制限の解除を行えば良い。
タイマ117は、計時用のタイマであり、制御部200からの開始信号により計時を開始する。また、制御部200からの問合せに対して、計時時間を返す。
制御部200は、制御に関わる様々な演算を実行する機能演算部としての役割も担う。タグ解析部201は、タグリーダ116が読み取った情報を解析して、禁止または制限された動作の解除条件を設定する。動作監視部202は、設定された解除条件の範囲でタスクプログラム241が実行されているか否かを監視する。具体的には後に詳述する。
図3は、移動ロボット100が実行するタスクの例と、そのタスクを実行する作業空間の例を示す図である。図は、移動ロボット100が移動可能な作業エリア601と通路エリア602を、上方から見下ろした様子を示す。
作業エリア601は、例えばパーティションで区切られた空間であり、移動ロボット100が作業可能なエリアの一つである。作業エリア601は、通路エリア602と、出入口603を介して繋がっている。
テーブル611は、作業エリア601の中心に設置されており、棚612は、出入口603から最奥となる壁面近傍に設置されている。移動ロボット100は、出入口603から作業エリア601へ進入し、テーブル611を回避しながら移動し、棚612に載置された搬送物613を把持して出入口603まで帰還するタスクが与えられているとする。移動ロボット100が実行すべき具体的な作業や動作は、タスクプログラム241として予めメモリ240に記憶されている。ユーザは、移動ロボット100の起動時等のタイミングで、予め用意された複数の中からこのタスクプログラム241を指定しておく。
このタスクプログラム241には、カメラ114やマイク115等から得られる情報を利用して、障害物を回避しながら移動経路を探索して移動し、棚612に載置された物品の中から対象物である搬送物613を認識して把持し、帰還する処理が記述されている。移動ロボット100は、例えば、通路エリア602の移動中にこのタスクプログラム241の実行が指定されていることを確認すると、出入口603へ向かう。この時点においては、制限動作プログラム242が実行されており、移動ロボット100に許された移動や動作は制限されている。
ここで、制限動作プログラム242の実行時における動作制限条件の一例について説明する。図4は、制限動作プログラム242の実行時における動作制限条件を示す図である。動作制限条件は、主に、台車部110の移動に関する条件、アーム部120の稼働に関する条件、センサユニット230のセンサ利用に関する条件が設定されている。
台車部110の移動に関する条件としては、台車移動速度が0.6m/s以下に制限されている。したがって、制限動作プログラム242の実行時には、制御部200が生成するモータ211の駆動信号は、この速度以下の駆動信号に限られる。また、台車移動時の高さH0は1.5m以下、直径R0は2.0m以下に制限されている。具体的には、図5に示すように、アーム部120が搬送物613を把持している状態であっても、移動時においては、移動ロボット100の全体が高さH0、直径をR0の円柱空間に収まるようにアーム部120を縮めることが求められる。
アーム部120の稼働に関する条件としては、アーム稼働速度が0.5m/s以下、アーム稼働直径が2.0m以下に制限されている。例えば、出入口603に扉が設けられており、扉を開くためにアーム部120を稼働させる場合には、制御部200は、この条件を満たす駆動信号をアクチュエータ221へ送信しなければならない。
このように、台車部110の移動とアーム部120の稼働に制限を課すことにより、人間と共存する空間においても、移動ロボット100を比較的安全に運用することができる。すなわち、このような制限により、近くに居る人間が移動ロボット100の一部と接触したとしても、怪我をする虞は少ない。
センサユニット230のセンサ利用に関する条件としては、画像認証が不許可、音声認識が不使用に制限されている。画像認証は、例えばユーザが移動ロボット100へ指示を与える場合に、当該ユーザが予め登録された指示を受け入れる対象者に含まれているかを判断するために利用される。音声認識は、例えば操作ボタンの操作に代えてユーザの音声指示により指示内容を認識するために利用される。
このように、複雑な演算が必要な処理を制限することにより、演算エラーによる誤作動を極力抑制することができる。特に、統計処理や確率論を用いた処理を利用する場合には必然的にエラーが発生し得るが、移動ロボット100は、制限動作プログラム242を実行時することにより、このようなエラーを発生させない。すなわち、制限動作プログラム242を実行する通常動作時においては、移動ロボット100は、不確実な結果を出力する処理を行わないので、安定的に動作する。
図3の説明に戻る。移動ロボット100は、出入口603付近の移動開始点621に到達すると、出入口603近傍の壁面に貼着されたタグ604を、タグリーダ116により認識する。タグ604には、図4で説明した制限動作時の条件を解除してタスクを実行するための、新たな条件が記述されている。特に、上述のように、アクチュエータ群の許容動作時間および許容動作量の少なくともいずれかの情報が記述されている。
タグ604は、容易に取り替えることができる。例えば、作業エリア601を管理する管理者は、作業エリア601内に作業する人間が居る時間帯には第1のタグ604を貼り付け、人間が居ない時間帯には第2のタグ604を貼り付けることができる。第1のタグ604には、安全性を重視した制限条件を記述しておき、第2のタグ604には、移動ロボット100の性能を大いに活用する制限条件を記述すれば、安全性と生産性を両立させることができる。また、作業エリア601のレイアウトを変更したり、使用目的を変更したりする場合にも、それぞれの状況に応じて制限条件を設定し、その制限条件を記述したタグ604に取り替えるだけで、移動ロボット100の動作を最適化することができる。すなわち、タスクの内容そのものを変更するのではなく、タスクの実行のさせ方を作業エリアの状況に応じて変更することにより、安全性と生産性の両立を図っている。
また、管理者は、1つのタグを設置するだけで、特定の移動ロボット100に対してのみならず、多数の移動ロボットの動作許容条件を一括して変更することができる。また、管理者は、タスクの内容自体を把握する必要がないので、面倒な作業が発生せず、安全性管理の観点においても有利である。
また、移動ロボット100は、タグ604の読み取りにたとえ失敗した場合であっても、動作制限が課せられた状態のままなので、その動作は共存する人間にとって安全である。さらに、動作制限が解除されても許容された動作時間または動作量まで動作すれば終端処理が実行されるので、共存する人間に不都合が生じる虞も少ない。すなわち、移動ロボット100は、できる限り予期しない動作をさせないように構成されている。
ここで、タグ情報として記述された動作許容条件について説明する。図6は、タグ604から読み取ったタグ情報の例を示す図である。タグ情報は、図4の例で示した動作制限条件と同じ条件の他に、アクチュエータ群の許容動作時間と許容動作量に関する条件を含む。
タグ情報は、アクチュエータ群の許容動作時間の一つとして、全体動作時間が300秒に規定されている。すなわち、タイマ117の開示開始から300秒の間は、以下に記述された条件を満たす限りにおいて、制限動作プログラム242の実行時に課せられた動作制限条件の禁止事項または制限事項が解除される。全体動作時間は、モータ211によって台車部110が移動し、アクチュエータ221によってアーム部120が稼働する合計の時間である。動作監視部202は、タイマ117の出力を取得して、規定された全体動作時間が経過したか否かを監視する。なお、ここでは、合計の時間を規定するが、台車部110が移動する台車移動時間を規定しても良い。
台車移動距離は120mに規定されている。台車移動距離は、モータ211の許容動作量としての規定である。制御部200は、エンコーダ212の出力を取得して移動距離を積算し、規定された台車移動距離に到達したか否かを監視する。台車移動速度は0.9m/s、移動時高さは2.0m、移動時直径は3.0mに規定されている。これらの値は、動作制限条件のそれぞれの値以上に設定されている。すなわち、動作制限条件が緩和され、作業効率の向上が図られている。
アーム稼働量は20mに規定されている。アーム稼働量は、アクチュエータ221の許容動作量としての規定である。制御部200は、エンコーダ222の出力を取得して稼働距離を積算し、規定されたアーム稼働量に到達したか否かを監視する。アーム稼働速度は2.0m/s、アーム稼働直径は4.0mに規定されている。これらの値は、動作制限条件のそれぞれの値以上に設定されている。すなわち、台車部110と同様にアーム部120も動作制限条件が緩和され、作業効率の向上が図られている。なお、アーム部120が稼働するアーム稼働時間を規定しても良い。アーム稼働時間は、例えばアーム部120が把持動作を開始した時点で計時が開始される。
タグ情報は、終端処理プログラムとして、「床面載置/停止」のプログラムを指定している。終端処理プログラムは、全体動作時間、台車移動距離、アーム稼働量(台車移動時間やアーム稼働時間が規定されている場合は、これらも含む)のいずれかが規定量に到達したとして動作監視部202がタスクプログラム241の実行を中断させた場合に、制御部200が実行するプログラムである。終端処理プログラム243は、予め複数が用意されており、メモリ240に記憶されている。タグ情報は、そのうちの一つを指定する。
終端処理プログラム243は、「床面載置/停止」の場合、タスクプログラム241が中断された時点で、アーム部120を駆動してハンド124が把持している搬送物613を床面に載置する動作を実行すると共に、駆動輪112の駆動を停止してその場に留まる。移動ロボット100が傾斜面に位置する場合は、傾斜面をずり落ちないように駆動輪112にトルクを与えても良い。
終端処理プログラム243は、「床面載置/帰還」の場合、搬送物を床面に載置した後に、制限動作プログラム242を実行して動作制限条件を満たしながら出発点まで戻る。なお、搬送物613は、安全な位置に載置されれば良く、床面以外にも予め安全と考えられる位置を指定しても良い。例えば、もともと載置されていた場所を指定しても良いし、搬送物613が比較的小さいのであれば、移動ロボット100の平坦部を指定しても良い。
タグ情報は、センサユニット230のセンサ利用に関する条件として、画像認証を許可、音声認識を使用としている。この点においても、動作制限条件が緩和され、作業効率の向上が優先される。
再び図3の説明に戻る。移動ロボット100は、制限動作時の条件を解除して、読み取ったタグ604に記述された条件下でタスクプログラム241を実行する。制御部200は、移動開始点621から障害物を回避しながらパスPを経由して棚612に対向する把持作業点622へ到達する。把持作業点622へ到達するまでに、例えば作業者などの障害物の存在により途中で停止し続けて全体動作時間の300秒が経過してしまったり、経路探索に失敗して迂回路を進むうちに台車移動距離の120mを移動してしまったりした場合は、その時点で終端処理プログラム243を実行する。
移動ロボット100は、把持作業点622で、棚612から搬送物613を見つけ出し、アーム部120を稼働して搬送物613を把持する。そして、搬送物613が移動時直径R0に収まるようにアーム部120を畳む。なお、この作業が完了するまでにアーム部120の稼働量が20mに到達してしまった場合は、その時点で終端処理プログラム243を実行する。移動ロボット100は、把持作業が完了したら、再び障害物を回避しながらパスPを経由して移動開始点621へ戻り、タスクの実行を終了する。
タスクプログラム241が、例えば、移動開始点621と把持作業点622の往復移動のタスクと、把持作業点622における把持作業のタスクに分けられている場合には、タグ情報は、動作許容条件をそれぞれのタスクに対して別個に規定しても良い。別個に規定されているのであれば、例えば把持作業のタスクに対しては、移動ロボット100が把持作業点622に到達した時点で、タイマ117の計時が開始される。また、往復移動のタスクに対しては、移動ロボット100が把持作業のタスクを実行している間は、タイマ117の計時が中断される。すなわち、タイマ117の計時開始時点は、タグリーダ116がタグ604を読み取った時点に限らず、移動ロボット100が対象タスクを実行できる位置に到達した時点であっても構わない。
次に、移動ロボット100の全体の処理フローについて説明する。図7は、移動ロボットの処理フローを説明するフロー図である。処理フローは、例えば、移動ロボット100の電源がオンにされた時点から開始する。
制御部200は、ステップS101で、メモリ240から制限動作プログラム242を読み込み、制限動作プログラム242に規定された動作制限条件に従って移動ロボット100を制御する。制限動作プログラム242は、指定されたタスクが与えられていないときには通路エリア602を巡回するなど、特定の動作を実行するように記述されていても良い。この場合、当該特定の動作は、規定された動作制限条件を満たすように実行される。
制御部200は、ステップS102で、特定のタスクを取得する。タスクの取得は、例えば、ユーザが端末装置から特定のタスクプログラム241を選択することにより行われる。制御部200は、対象となるタスクプログラム241をメモリ240から読み込む。制御部200は、当該タスクが制限動作プログラム242による動作制限条件下でも開始できるものであれば開始する。何らかの動作が禁止されているために開始できないものであれば、タグ情報を取得するまでは、当該タスクの開始を保留する。
制御部200は、ステップS103で、タグ情報を取得したか否かを確認する。タグリーダ116を介してタグを読み取ったのであれば、タグ解析部201がタグ情報を解析し、ステップS104へ進む。そうでなければ、ステップS112へ進む。ステップS112へ進んだ場合は、動作制限条件の範囲でタスクを実行して処理を終了する。
制御部200は、ステップS104へ進んだら、台車移動距離をリセットし、アーム稼働量をリセットして、タイマ117の計時を開始する。制御部200の機能演算部である動作監視部202は、読み取った動作許容条件に従って、全体動作時間、台車移動距離などの監視を開始する。制御部200は、ステップS105へ進み、それまで課されていた動作制限条件を解除し、タグ情報の動作許容条件を満たす範囲でタスクを実行する。
タスクの実行中は、動作監視部202が、ステップS106で全体動作時間の制限時間が終了したかを確認し、ステップS107で台車移動距離が規定値まで到達したかを確認し、ステップS108でアーム稼働量が規定値まで到達したかを確認する。いずれかの条件を満たす場合は、ステップS111へ進み、タグ情報として指定された終端処理プログラム243をメモリ240から読み込んで実行する。終端処理プログラム243の実行が完了したら、一連の処理を終了する。
いずれの条件も満たさない場合は、ステップS109へ進む。なお、動作監視部202は、実行しているタスクが台車部110の移動に関するものであってアーム部120の稼働でないことがわかっている期間では、ステップS108をスキップしても良い。同様に、実行しているタスクがアーム部120の稼働に関するものであって台車部110の移動でないことがわかっている期間では、ステップS107をスキップしても良い。
制御部200は、ステップS109で、タスクが終了したか否かを確認する。タスクが終了していなければ、動作監視部202による監視を継続すべく、ステップS106へ戻る。タスクが終了していれば、ステップS110へ進み、制限動作プログラム242の実行へ処理を戻す。制限動作プログラム242の実行が完了すれば、一連の処理を終了する。
以上の本実施形態においては、タグ情報に、アクチュエータ群の許容動作時間(例えば全体動作時間)と許容動作量(例えば台車移動距離)の両方が記述された例を説明したが、いずれか一方が記述されていても良い。許容動作時間として全体動作時間が記述されており、許容動作量が記述されていないのであれば、動作監視部202は、全体動作時間のみを監視する。この場合は、台車部110の移動距離が大きくなっても構わない。一方、許容動作量としてアーム稼働量が記述されており、許容動作時間が記述されていないのであれば、動作監視部202は、アーム稼働量のみを監視する。この場合は、搬送物613の認識に時間をかけ、ゆっくりと確実に搬送物613を把持することができる。
また、以上の本実施形態においては、搬送物を搬送するためのアーム部120を備えた移動ロボット100を例として説明したが、アーム部120に限らずアクチュエータを備える構造体を有する移動ロボットであれば、同様に禁止や制限を解除してタスクを実行し得る。
また、タグ情報として記述する項目や形式は、図6を用いて説明したものに限らない。例えば、項目としてハンド124の把持力を規定しても良いし、アーム部120の可動範囲を直径ではなくXYZ空間内の座標値で定義しても良い。
また、通常時において課されていた動作制限が解除された状態から、終端処理を実行する条件または動作制限が課せられた状態に戻す条件として、「ユーザによる指示」を加えることもできる。例えば、音声認識の使用が許されているのであれば、「ストップ」の音声を認識した場合に、制御部200は、動作制限が課せられた状態に戻す。
以上の本実施形態においては、制御部200が実行する各プログラムはメモリ240に予め記憶されているものとして説明したが、各プログラムは、例えば無線通信によって外部装置から移動ロボット100へ送信されるものであっても構わない。制御部200は、通信インタフェースを介して取得したプログラムを、ワークメモリに展開して適宜実行しても良い。