以下、発明の実施の形態を通じて本発明を説明するが、特許請求の範囲に係る発明は以下の実施形態に限定するものではない。また、実施形態で説明する構成の全てが課題を解決するための手段として必須であるとは限らない。
(概略構成)
図1は、本実施形態に係る移動ロボット20が利用される搬送システム1の全体構成を説明するための概念図である。例えば、移動ロボット20は、搬送物の搬送をタスクとして実行する搬送ロボットである。移動ロボット20は、病院、リハビリセンタ、介護施設、高齢者入居施設などの医療福祉施設内において、搬送物を搬送するために自律走行する。また、本実施の形態にかかるシステムは、ショッピングモールなどの商業施設等にも利用可能である。
ユーザU1は、移動ロボット20に搬送物を収容して、搬送を依頼する。移動ロボット20は、設定された目的地まで自律的に移動して、搬送物を搬送する。つまり、移動ロボット20は荷物の搬送タスク(以下、単にタスクともいう)を実行する。以下の説明では、搬送物を搭載する場所を搬送元とし、搬送物を届ける場所を搬送先とする。
例えば、移動ロボット20が複数の診療科がある総合病院内を移動するものとする。移動ロボット20は、複数の診療科間で備品、消耗品、医療器具等を搬送する。例えば、移動ロボットは、搬送物をある診療科のナースステーションから、別の診療科へのナースステーションに届ける。あるいは、移動ロボット20は、備品や医療器具の保管庫から診療科のナースステーションまで搬送物を届ける。また、移動ロボット20は、調剤科で調剤された薬品を使用予定の診療科や患者まで届ける。
搬送物の例としては、薬剤、包袋などの消耗品、検体、検査器具、医療器具、病院食、文房具などの備品等が挙げられる。医療機器としては、血圧計、輸血ポンプ、シリンジポンプ、フットポンプ、ナースコール、離床センサ、フットポンプ、低圧持続吸入器心電図モニタ、医薬品注入コントローラ、経腸栄養ポンプ、人工呼吸器、カフ圧計、タッチセンサ、吸引器、ネブライザ、パルスオキシメータ、血圧計、人工蘇生器、無菌装置、エコー装置などが挙げられる。また、病院食、検査食などの食事を搬送しても良い。さらに、移動ロボット20は、使用済みの機器、食事済みの食器などを搬送しても良い。搬送先が異なる階にある場合、移動ロボット20はエレベータなどを利用して移動してもよい。
搬送システム1は、移動ロボット20と、上位管理装置10と、ネットワーク600と、通信ユニット610と、ユーザ端末400と、を備えている。ユーザU1又はユーザU2は、ユーザ端末400を用いて、搬送物の搬送依頼を行うことができる。例えば、ユーザ端末400は、タブレットコンピュータやスマートフォンなどである。ユーザ端末400は、無線又は有線で通信可能な情報処理装置であればよい。
本実施形態においては、移動ロボット20とユーザ端末400は、ネットワーク600を介して上位管理装置10を接続されている。移動ロボット20及びユーザ端末400は、通信ユニット610を介して、ネットワーク600と接続される。ネットワーク600は有線又は無線のLAN(Local Area Network)やWAN(Wide Area Network)である。さらに、上位管理装置10は、ネットワーク600と有線又は無線で接続されている。通信ユニット610はそれぞれの環境に設置された例えば無線LANユニットである。通信ユニット610は、例えば、WiFiルータなどの汎用通信デバイスであってもよい。
ユーザU1、U2のユーザ端末400から発信された各種信号は、ネットワーク600を介して一旦、上位管理装置10へ送られ、上位管理装置10から対象となる移動ロボット20へ転送される。同様に、移動ロボット20から発信される各種信号は、ネットワーク600を介して一旦、上位管理装置10へ送られ、上位管理装置10から対象となるユーザ端末400へ転送される。上位管理装置10は各機器と接続されたサーバであり、各機器からのデータを収集する。また、上位管理装置10は、物理的に単一な装置に限られるものではなく、分散処理を行う複数の装置を有していてもよい。また、上位管理装置10は、移動ロボット20等のエッジデバイスに分散して配置されていても良い。例えば、搬送システム1の一部又は全部が移動ロボット20に搭載されていても良い。
ユーザ端末400と移動ロボット20は、上位管理装置10を介さずに、信号を送受信してもよい。例えば、ユーザ端末400と移動ロボット20は、無線通信により直接信号を送受信してもよい。あるいは、ユーザ端末400と移動ロボット20は、通信ユニット610を介して、信号を送受信してもよい。
ユーザU1又はユーザU2は、ユーザ端末400を用いて搬送物の搬送を依頼する。以下、ユーザU1が搬送元にいる搬送依頼者であり、ユーザU2が搬送先(目的地)にいる受領予定者であるとして説明を行う。もちろん、搬送先にいるユーザU2が搬送依頼を行うことも可能である。また、搬送元又は搬送先以外の場所にいるユーザが搬送依頼を行ってもよい。
ユーザU1が搬送依頼を行う場合、ユーザ端末400を用いて、搬送物の内容、搬送物の受取先(以下、搬送元ともいう)、搬送物の届け先(以下、搬送先ともいう)、搬送元の到着予定時刻(搬送物の受取時刻)、搬送先への到着予定時間(搬送期限)等を入力する。以下、これらの情報を搬送依頼情報ともいう。ユーザU1は、ユーザ端末400のタッチパネルを操作することで、搬送依頼情報を入力することができる。搬送元は、ユーザU1がいる場所でも良く、搬送物の保管場所などであってもよい。搬送先は、使用予定のユーザU2や患者がいる場所である。
ユーザ端末400は、ユーザU1によって入力された搬送依頼情報を上位管理装置10に送信する。上位管理装置10は、複数の移動ロボット20を管理する管理システムである。上位管理装置10は、移動ロボット20に搬送タスクを実行するための動作指令を送信する。上位管理装置10は搬送依頼毎に、搬送タスクを実行する移動ロボット20を決定する。そして、上位管理装置10は、その移動ロボット20に対して動作指令を含む制御信号を送信する。移動ロボット20が、動作指令に従って、搬送元から搬送先に到着するように移動する。
例えば、上位管理装置10は、搬送元又はその近傍の移動ロボット20に搬送タスクを割り当てる。あるいは、上位管理装置10は、搬送元又はその近傍に向かっている移動ロボット20に搬送タスクを割り当てる。タスクを割り当てられた移動ロボット20が搬送元まで搬送物を取りに行く。搬送元は、例えば、タスクを依頼したユーザU1がいる場所である。
移動ロボット20が搬送元に到着すると、ユーザU1又はその他の職員が移動ロボット20に搬送物を載せる。搬送物を搭載した移動ロボット20が搬送先を目的地として自律移動する。上位管理装置10は、搬送先のユーザU2のユーザ端末400に対して信号を送信する。これにより、ユーザU2は、搬送物が搬送中であることや、その到着予定時間を知ることができる。設定された搬送先に移動ロボット20が到着すると、ユーザU2は、移動ロボット20に収容されている搬送物を受領することができる。このようにして、移動ロボット20が、搬送タスクを実行する。
このような全体構成においては、制御システムの各要素を、移動ロボット20、ユーザ端末400および上位管理装置10に分散して全体として制御システムを構築することができる。また、搬送物の搬送を実現するための実質的な要素を一つの装置に集めて構築することもできる。上位管理装置10は、1又は複数の移動ロボット20を制御する。
本実施の形態では、マップを参照して自律移動する移動ロボット20である。移動ロボット20を制御するロボット制御システムは、測距センサを用いて測定された人までの距離を示す距離情報を取得する。ロボット制御システムは、人までの距離の変化に応じて、前記人の移動速度及び移動方向を示す移動ベクトルを推定する。ロボット制御システムは、移動ロボットの移動を制限するためのコストをマップ上に付与する。ロボット制御システムは、測距センサの測定結果に応じて更新される前記コストに応じて移動するように制御する。ロボット制御システムは、移動ロボット20に搭載されていてもよい、ロボット制御システムの一部又は全部は上位管理装置10に搭載されていても良い。
(制御ブロック図)
図2は、システム1の制御系を示す制御ブロック図を示す。図2に示すように、システム1は、上位管理装置10、移動ロボット20、環境カメラ300を有する。
このシステム1は、所定の施設内において移動ロボット20を自律的に移動させながら、複数の移動ロボット20を効率的に制御する。そのため、施設内には、複数個の環境カメラ300が設置されている。例えば、環境カメラ300は、施設内の通路、ホール、エレベータ、出入り口等に設置されている。
環境カメラ300は、移動ロボット20が移動する範囲の画像を取得する。なお、システム1では、環境カメラ300で取得された画像やそれに基づく情報は、上位管理装置10が収集する。あるいは、環境カメラ300で取得された画像等が直接移動ロボットに送信されてもよい。環境カメラ300は、施設内の通路や出入り口に設けられた監視カメラなどであってもよい。環境カメラ300は、施設内の混雑状況の分布を求めるために使用されていてもよい。
実施の形態1にかかるシステム1では、上位管理装置10が搬送依頼情報に基づいて、ルート計画を行う。上位管理装置10が作成したルート計画情報に基づいて、それぞれの移動ロボット20に行き先を指示する。そして、移動ロボット20は、上位管理装置10から指定された行き先に向かって自律移動する。移動ロボット20は、自機に設けられたセンサ、フロアマップ、位置情報等を用いて行き先(目的地)に向かって自律移動する。
例えば、移動ロボット20は、その周辺の機器、物体、壁、人(以下、まとめて周辺物体とする)に接触しないように、走行する。具体的には、移動ロボット20は、周辺物体までの距離を検知し、周辺物体から一定の距離(距離閾値とする)以上離れた状態で走行する。周辺物体までの距離が距離閾値以下になると、移動ロボット20が減速または停止する。このようにすることで、移動ロボット20が、周辺物体に接触せずに走行可能となる。接触を回避することができるため、安全かつ効率的な搬送が可能となる。
上位管理装置10は、演算処理部11、記憶部12、バッファメモリ13、通信部14を有する。演算処理部11は、移動ロボット20を制御及び管理するための演算を行う。演算処理部11は、例えば、コンピュータの中央演算処理装置(CPU:Central Processing Unit)等のプログラムを実行可能な装置として実装可能である。そして、各種機能はプログラムにより実現することもできる。図2では、演算処理部11において特徴的なロボット制御部111、ルート計画部115、搬送物情報取得部116,コスト付与部118のみを示したが、その他の処理ブロックも備えられる。
ロボット制御部111は、移動ロボット20を遠隔で制御するための演算を行い、制御信号を生成する。ロボット制御部111は、後述するルート計画情報125などに基づいて制御信号を生成する。さらに、環境カメラ300や移動ロボット20から得られた各種情報に基づいて、制御信号を生成する。制御信号は、後述するフロアマップ121、ロボット情報123及びロボット制御パラメータ122等の更新情報を含んでいてもよい。つまり、ロボット制御部111は、各種情報が更新された場合、その更新情報に応じた制御信号を生成する。
コスト付与部118は、フロアマップ121上にコストを付与する。コスト付与部118は、フロアマップ121上の位置にコストを対応付ける。換言すると、フロアマップ121上の各位置に対してコストを算出する。コストは移動ロボット20の移動を制限するための情報である。例えば、0~100の100段階で設定され、数が大きくなるほど移動ロボット20の移動が制限される。具体的には、フロアマップ121がグリッドで分割されたグリッドマップになっている。そして、コスト付与部118は、グリッド毎にコストを設定する。コストが所定値以上のグリッドには、移動ロボット20が進入できなくなる。あるいは、コスト100が大きくなるほど、移動速度の上限値を低く設定する。コスト付与部118は、周囲の状況に応じて、随時コストを算出する。コスト付与部118の処理については後述する。
搬送物情報取得部116は、搬送物に関する情報を取得する。搬送物情報取得部116は、移動ロボット20が搬送中の搬送物の内容(種別)に関する情報を取得する。搬送物情報取得部116は、エラーが発生した移動ロボット20が搬送中の搬送物に関する搬送物情報を取得する。
ルート計画部115は、各移動ロボット20のルート計画を行う。搬送タスクが入力されると、ルート計画部115は、搬送依頼情報に基づいて、当該搬送物を搬送先(目的地)までの搬送するためのルート計画を行う。具体的には、ルート計画部115は、記憶部12に既に記憶されているルート計画情報125やロボット情報123等を参照して、新たな搬送タスクを実行する移動ロボット20を決定する。出発地は、移動ロボット20の現在位置や、直前の搬送タスクの搬送先、搬送物の受取先などである。目的地は、搬送物の搬送先、待機場所、充電場所などである。
ここでは、ルート計画部115は、移動ロボット20の出発地から目的地までの通過ポイントを設定している。ルート計画部115は、移動ロボット20毎に、その通過ポイントの通過順を設定する。通過ポイントは、例えば、分岐点、交差点、エレベータ前のロビーやこれらの周辺に設定されている。また、幅の狭い通路では、移動ロボット20のすれ違いが困難となることもある。このような場合、幅の狭い通路の手前を通過ポイントして設定してもよい。通過ポイントの候補は、予めフロアマップ121に登録されていてもよい。
ルート計画部115は、システム全体として効率良くタスクを実行できるように、複数の移動ロボット20の中から、各搬送タスクを行う移動ロボット20を決定する。ルート計画部115は、待機中の移動ロボット20や搬送元に近い移動ロボット20に搬送タスクを優先的に割り当てる。
ルート計画部115は、搬送タスクが割り当てられた移動ロボット20について、出発地及び目的地を含む通過ポイントを設定する。例えば、搬送元から搬送先までの2以上の移動経路がある場合、より短時間で移動できるように通過ポイントを設定する。そのため、上位管理装置10は、カメラの画像等に基づいて、通路の混雑状況を示す情報を更新する。具体的には、他の移動ロボット20が通過している場所、人が多い場所は混雑度が高い。したがって、ルート計画部115は、混雑度が高い場所を避けるように、通過ポイントを設定する。
移動ロボット20は、左回りの移動経路又は右回りの移動経路のいずれでも目的地まで移動できるような場合がある。このような場合、ルート計画部115は、混雑していないほうの移動経路を通過するように通過ポイントを設定する。ルート計画部115が、目的地までの間に、1又は複数の通過ポイントを設定することで、移動ロボット20が混雑していない移動経路で移動することができる。例えば、分岐点、交差点で通路が分かれている場合、ルート計画部115は、適宜、分岐点、交差点、曲がり角及びその周辺に通過ポイントを設定する。これにより、搬送効率を向上することができる。
ルート計画部115は、エレベータの混雑状況や、移動距離などを考慮して、通過ポイントを設定してもよい。さらに、上位管理装置10は、移動ロボット20がある場所を通過する予定時刻における、移動ロボット20の数や人の数を推定してもよい。そして、推定された混雑状況に応じて、ルート計画部115が通過ポイントを設定してもよい。また、ルート計画部115は、混雑状況の変化に応じて、通過ポイントを動的に変えてもよい。ルート計画部115は、搬送タスクを割り当てた移動ロボット20について、通過ポイントを順番に設定する。通過ポイントは、搬送元や搬送先を含んでいてもよい。後述するように、移動ロボット20が、ルート計画部115により設定された通過ポイントを順番に通過するように自律移動する。
記憶部12は、ロボットの管理及び制御に必要な情報を格納する記憶部である。図2の例では、フロアマップ121、ロボット情報123、ロボット制御パラメータ122、ルート計画情報125、搬送物情報126を示したが、記憶部12に格納される情報はこれ以外にあっても構わない。演算処理部11では、各種処理を行う際に記憶部12に格納されている情報を用いた演算を行う。また、記憶部12に記憶されている各種情報は最新の情報に更新可能である。
フロアマップ121は、移動ロボット20を移動させる施設の地図情報である。このフロアマップ121は、予め作成されるものでもよいし、移動ロボット20から得た情報から生成されるものでもよく、また、予め作成された基本地図に移動ロボット20から得た情報から生成された地図修正情報を加えたものであってもよい。
例えば、フロアマップ121には、施設の壁面、ゲート、扉、階段、エレベータ、固定棚などの位置やその情報が格納されている。フロアマップ121は、2次元のグリッドマップとして表現されていてもよい。この場合、フロアマップ121では、各グリッドに壁や扉なの情報が付されている。
ロボット情報123は、上位管理装置10が管理する移動ロボット20のID、型番、仕様等が記述される。ロボット情報123は、移動ロボット20の現在位置を示す位置情報を含んでいてもよい。ロボット情報123は、移動ロボット20がタスクを実行中か、待機中かの情報を含んでいてもよい。また、ロボット情報123は、移動ロボット20が動作中か、故障中か等を示す情報を含んでいてもよい。また、ロボット情報123は、搬送可能な搬送物、搬送不可な搬送物の情報を含んでいてもよい。
ロボット制御パラメータ122は、上位管理装置10が管理する移動ロボット20についての周辺物体との閾値距離等の制御パラメータが記述される。閾値距離は、人を含む周辺物体との接触を回避するためのマージン距離となる。さらに、ロボット制御パラメータ122は、移動ロボット20の移動速度の速度上限値などの動作強度に関する情報を含んでいても良い。
ロボット制御パラメータ122は、状況に応じて更新されてもよい。ロボット制御パラメータ122は、収納庫291の収容スペースの空き状況や使用状況を示す情報を含んでいてもよい。ロボット制御パラメータ122は、搬送可能な搬送物や、搬送不可能な搬送物の情報を含んでいても良い。ロボット制御パラメータ122は、それぞれの移動ロボット20に対して、上記の各種情報が対応付けられている。
ルート計画情報125は、ルート計画部115で計画されたルート計画情報を含んでいる。ルート計画情報125は、例えば、搬送タスクを示す情報を含んでいる。ルート計画情報125は、タスクが割り当てられた移動ロボット20のID、出発地、搬送物の内容、搬送先、搬送元、搬送先への到着予定時間、搬送元への到着予定時間、到着期限などの情報を含んでいても良い。ルート計画情報125では、搬送タスク毎に、上述した各種情報が対応付けられていてもよい。ルート計画情報125は、ユーザU1から入力された搬送依頼情報の少なくとも一部を含んでいても良い。
さらに、ルート計画情報125は、それぞれの移動ロボット20や搬送タスクについて、通過ポイントに関する情報を含んでいてもよい。例えば、ルート計画情報125は、それぞれの移動ロボット20についての通過ポイントの通過順を示す情報を含んでいる。ルート計画情報125は、フロアマップ121における各通過ポイントの座標や、通過ポイントを通過したか否かの情報を含んでいてもよい。
コストマップ128は、コスト付与部118で付与されたコストを示すマップである。具体的にはフロアマップ121上における位置(アドレス、又は座標)にコストが対応付けられている。上記のように、コストマップ128は、各グリッドにコストが格納されたグリッドマップとすることができる。コスト付与部118がコストを付与する毎に、コストマップ128が更新される。なお、複数台の移動ロボット20に格納されたコストマップ228を統合することで、コストマップ128が生成されていてもよい。つまり、複数台の移動ロボットで付与されたコストに基づいて、コストマップ128が生成されていてもよい。
搬送物情報126は、搬送依頼が行われた搬送物に関する情報である。例えば、搬送物の内容(種別)、搬送元、搬送先等の情報を含んでいる。搬送物情報126は、搬送を担当する移動ロボット20のIDを含んでいても良い。さらに、搬送物情報は、搬送中、搬送前(搭載前)、搬送済みなどのステータスを示す情報を含んでいてもよい。搬送物情報126は搬送物毎にこれらの情報が対応付けられている。搬送物情報126については後述する。
なお、ルート計画部115は、記憶部12に記憶されている各種情報を参照して、ルート計画を策定する。例えば、フロアマップ121、ロボット情報123、ロボット制御パラメータ122、ルート計画情報125に基づいて、タスクを実行する移動ロボット20を決定する。そして、ルート計画部115は、フロアマップ121等を参照して、搬送先までの通過ポイントとその通過順を設定する。フロアマップ121には、予め通過ポイントの候補が登録されている。そして、ルート計画部115が混雑状況等に応じて、通過ポイントを設定する。また、タスクを連続処理する場合などは、ルート計画部115が搬送元及び搬送先を通過ポイントして設定してもよい。
なお、1つの搬送タスクについて、2つ以上の移動ロボット20が割り当てられていてもよい。例えば、搬送物が移動ロボット20の搬送可能容量よりも大きい場合、1つの搬送物を2つに分けて、2つの移動ロボット20に搭載する。あるいは、搬送物が移動ロボット20の搬送可能重量よりも重い場合、1つの搬送物を2つに分けて、2つの移動ロボット20に搭載する。このようにすることで、1つの搬送タスクを2つ以上の移動ロボット20が分担して実行することができる。もちろん、異なるサイズの移動ロボット20を制御する場合、搬送物を搬送可能な移動ロボット20が搬送物を受け取るようにルート計画を行ってもよい。
さらには、1つの移動ロボット20が、2つ以上の搬送タスクを並行して行ってもよい。例えば、1つの移動ロボット20が2つ以上の搬送物を同時に搭載して、異なる搬送先に順次搬送してもよい。あるいは、1つ移動ロボット20が1つの搬送物を搬送中に、他の搬送物を搭載してもよい。また、異なる場所で搭載された搬送物の搬送先は同じであってもよく、異なっていてもよい。このようにすることで、タスクを効率よく実行することができる。
このような場合、移動ロボット20の収容スペースについて、使用状況又は空き状況を示す収容情報を更新するようにしてもよい。つまり、上位管理装置10が空き状況を示す収容情報を管理して、移動ロボット20を制御してもよい。例えば、搬送物の搭載又は受取が完了すると、収容情報が更新される。搬送タスクが入力されると、上位管理装置10は、収容情報を参照して、搬送物を搭載可能な空きがある移動ロボット20を受け取りに向かわせる。このようにすることで、1つの移動ロボット20が、同時に複数の搬送タスクを実行することや、2つ以上の移動ロボット20が搬送タスクを分担して実行することが可能になる。例えば、移動ロボット20の収容スペースにセンサを設置して空き状況を検出しても良い。また、搬送物毎にその容量や重さが予め登録されていてもよい。
バッファメモリ13は、演算処理部11における処理において生成される中間情報を蓄積するメモリである。通信部14は、システム1が用いられる施設に設けられる複数の環境カメラ300及び少なくとも1台の移動ロボット20と通信するための通信インタフェースである。通信部14は、有線通信と無線通信の両方の通信を行うことができる。例えば、通信部14は、それぞれの移動ロボット20に対して、その移動ロボット20の制御に必要な制御信号を送信する。また、通信部14は、移動ロボット20や環境カメラ300で収集された情報を受信する。
移動ロボット20は、演算処理部21、記憶部22、通信部23、近接センサ(例えば、距離センサ群24)、カメラ25、駆動部26、表示部27、操作受付部28を有する。なお、図2では、移動ロボット20に備えられている代表的な処理ブロックのみを示したが、移動ロボット20には図示していない他の処理ブロックも多く含まれる。
通信部23は、上位管理装置10の通信部14と通信を行うための通信インタフェースである。通信部23は、例えば、無線信号を用いて通信部14と通信を行う。距離センサ群24は、例えば、近接センサであり、移動ロボット20の周囲に存在する物又は人との距離を示す近接物距離情報を出力する。カメラ25は、例えば、移動ロボット20の周囲の状況を把握するための画像を撮影する。また、カメラ25は、例えば、施設の天井等に設けられる位置マーカーを撮影することもできる。この位置マーカーを用いて移動ロボット20に自機の位置を把握させてもよい。
駆動部26は、移動ロボット20に備え付けられている駆動輪を駆動する。なお、駆動部26は、駆動輪やその駆動モータの回転回数を検出するエンコーダなどを有していてもよい。エンコーダの出力に応じて、自機位置(現在位置)が推定されていても良い。移動ロボット20は、自身の現在位置を検出して、上位管理装置10に送信する。
表示部27及び操作受付部28はタッチパネルディスプレイにより実現される。表示部27は、操作受付部28となるユーザーインタフェース画面を表示する。また、表示部27には、移動ロボット20の行き先や移動ロボット20の状態を示す情報を表示させても構わない。操作受付部28は、ユーザからの操作を受け付ける。操作受付部28は、表示部27に表示されるユーザーインタフェース画面に加えて、移動ロボット20に設けられる各種スイッチを含む。
演算処理部21は、移動ロボット20の制御に用いる演算を行う。演算処理部21は、例えば、コンピュータの中央演算処理装置(CPU:Central Processing Unit)等のプログラムを実行可能な装置として実装可能である。そして、各種機能はプログラムにより実現することもできる。演算処理部21は、移動命令抽出部211、駆動制御部212、推定部216、経路変更部217、コスト付与部218を有する。なお、図2では、演算処理部21が有する代表的な処理ブロックのみを示したが、図示しない処理ブロックも含まれる。演算処理部21は、通過ポイント間の経路を探索しても良い。また、演算処理部21は、コストマップ228を参照して、経路を決定してもよい。
移動命令抽出部211は、上位管理装置10から与えられた制御信号から移動命令を抽出する。例えば、移動命令は、次の通過ポイントに関する情報を含んでいる。例えば、制御信号は、通過ポイントの座標や、通過ポイントの通過順に関する情報を含んでいてもよい。そして、移動命令抽出部211が、これらの情報を移動命令として抽出する。
さらに、移動命令は、次の通過ポイントへの移動が可能になったことを示す情報を含んでいてもよい。通路幅が狭いと、移動ロボット20がすれ違うことできない場合がある。また、一時的に通路を通行できない場合がある。このような場合、制御信号は、停止すべき場所の手前の通過ポイントで、移動ロボット20を停止させる命令を含んでいる。そして、他の移動ロボット20が通過した後や通行可能となった後に、上位管理装置10が移動ロボット20に移動可能なことになったことを知らせる制御信号を出力する。これにより、一時的に停止していた移動ロボット20が移動を再開する。
駆動制御部212は、移動命令抽出部211から与えられた移動命令に基づいて、移動ロボット20を移動させるように、駆動部26を制御する。例えば、駆動部26は、駆動制御部212からの制御指令値に応じて回転する駆動輪を有している。移動命令抽出部211は、上位管理装置10から受信した通過ポイントに向かって移動ロボット20が移動するように、移動命令を抽出する。そして、駆動部26が駆動輪を回転駆動する。移動ロボット20は、次の通過ポイントに向かって自律移動する。このようにすることで、通過ポイントを順番に通過して、搬送先に到着する。また、移動ロボット20は、自機位置を推定して、通過ポイントを通過したことを示す信号を上位管理装置10に送信しても良い。これにより、上位管理装置10が、各移動ロボット20の現在位置や搬送状況を管理することができる。
推定部216は、周辺物体の移動方向を推定する。ここで、周辺物体の移動方向は、移動ロボット20の進行方向を基準とする方向とすることができる。そして、推定部216は、左右方向における周辺物体の移動方向を推定する。つまり、推定部216は、周辺物体の左右どちらに移動しているか否かを推定する。推定部216は、移動ロボットの進行方向を基準として、周辺物体が左方向に移動しているか、右方向に移動しているかを判定する。さらに、推定部216は、周辺物体の位置や移動速度を推定してもよい。さらに、推定部216が、周辺物体の移動速度を推定してもよい。つまり、推定部216は、周辺物体の移動速度及び移動方向を示す移動ベクトルを推定してもよい。移動方向等の推定については、後述する。
経路変更部217は、推定部216の推定結果に基づいて、経路を変更する。経路変更部217は、左右方向における周辺物体の移動方向と反対側を通過するように、経路を変更する。移動ロボット20の進行方向を基準として、周辺物体が右方向に移動している場合、移動ロボット20はが周辺物体の左側を通過するように、経路変更部217は経路を変更する。また、移動ロボット20の進行方向を基準として、周辺物体が左方向に移動している場合、移動ロボット20が周辺物体の右側を通過するように、経路変更部217は経路を変更する。
経路変更部217は上位管理装置10から送信された経路(ルート)を、推定結果に基づいて変更する。つまり、経路変更部217は、周辺物体の移動方向に応じて、ルート計画部115で計画された経路を再計画する。このようにすることで、周囲の状況に応じた適切な経路での移動が可能となるため、より効率よく移動することができる。ここでは、経路変更部217がコストマップ228を参照して、経路を変更する例について説明する。以下、コスト付与部218が付与されるコスト、及びそのコストマップ228について説明する。
コスト付与部218は、フロアマップ221上にコストを付与する。このコストは、経路変更部217の処理に利用することが可能である。例えば、推定部216の推定結果に基づいて、コスト付与部218がコストを付与することできる。そして、経路変更部217は、コストに基づいて、経路を変更する。もちろん、コストを用いずに、経路変更部217が経路を変更してもよい。
コスト付与部218は、フロアマップ221上の位置にコストを対応付ける。換言すると、フロアマップ221上の各位置に対してコストを算出する。コストは移動ロボット20の移動を制限するための情報である。例えば、0~100の100段階でコストが設定され、数が大きくなるほど移動ロボット20の移動が制限される。コストの設定範囲における上限値を100とし、下限値を0としているが、設定範囲の上限値及び下限値はこの値に限定されるものでない。
具体的には、フロアマップ221がグリッドで分割されたグリッドマップになっている。そして、コスト付与部218は、グリッド毎にコストを設定する。コストが所定値以上のグリッドには、移動ロボット20が進入できなくなる。あるいは、コストが大きくなるほど、移動速度の上限値を低く設定する。コスト付与部218は、周囲の状況に応じて、随時コストを算出する。コスト付与部118の処理については後述する。
推定部216は、移動ロボット20の周辺にある周辺物体を検出する。さらに、推定部216は、周辺物体が他の移動ロボット20や人間の移動体である場合、移動体の移動速度及び移動方向を推定する。また、推定部216は、周辺物体が、施設に固定された固定物体が、施設内を移動可能な移動体であるかを特定してもよい。固定物体としては、施設内の壁面、扉、机、固定棚などがあり、フロアマップ121,221にその情報が格納されている。移動体としては、他の移動ロボット、ストレッチャ、点滴台、可動式の医療機器、キャスタ付きの棚、人、車椅子などが挙げられる。
移動体は、通常、フロアマップ121,221にその情報が登録されていない。よって、推定部216は、フロアマップ121、221を参照して、周辺物体が固定物体か移動体であるかを検出することができる。つまり、フロアマップ221上に登録されている物体と一致する位置にある周辺物体は、固定物体となる。フロアマップ221上に登録されている物体と一致する位置にない周辺物体は、移動体となる。移動体は、物体に限らず、人間や動物であってもよい。
移動ロボット20は、オドメトリーなどによりフロアマップ121における自己位置を推定している。そして、自己位置から周辺物体までの距離と方向に応じて、推定部216が、フロアマップ121上における周辺物体の位置を特定することができる。推定部216は、周辺物体がフロアマップ221に登録されているか否かを判定する。周辺物体までの距離と方向は距離センサ群24の測定結果により取得することができる。
さらに、推定部216は、距離センサ群24やカメラ25等のセンシング結果に基づいて、周辺物体を特定してもよい。例えば、距離センサ群24がライダであるとすると、周辺物体の表面形状を測定することができる。推定部216が表面形状に応じて、周辺物体を特定することができる。例えば、周辺物体が周囲にいる人である場合、距離センサ群24で検出された表面形状が人の表面形状とマッチする。あるいは、推定部216は、カメラ25の撮像画像に基づいて、周辺物体を特定することができる。例えば、周辺物体が周囲にいる人である場合、カメラ25の撮像画像が人の参照画像とマッチする。よって、推定部216は、周辺物体が人であることを特定することができる。このように、各種センサの検出結果に対してパターンマッチング処理を施すことで、周辺物体が人や他の移動ロボットであるかを特定することができる。
記憶部22には、フロアマップ221とロボット制御パラメータ222と搬送物情報226が格納される。図2に示したのは、記憶部22に格納される情報の一部で有り、図2に示したフロアマップ221とロボット制御パラメータ222と搬送物情報226以外の情報も含まれる。フロアマップ221は、移動ロボット20を移動させる施設の地図情報である。このフロアマップ221は、例えば、上位管理装置10のフロアマップ121をダウンロードしたものである。なお、フロアマップ221は、予め作成されたものであってもよい。また、フロアマップ221は、施設全体の地図情報ではなく、移動予定の領域を部分的に含む地図情報であってもよい。
ロボット制御パラメータ222は、移動ロボット20を動作させるためのパラメータである。ロボット制御パラメータ222には、例えば、周辺物体との距離閾値が含まれる。さらに、ロボット制御パラメータ222には、移動ロボット20の速度上限値が含まれている。
搬送物情報226は、搬送物情報126と同様に搬送物に関する情報を含んでいる。搬送物の内容(種別)、搬送元、搬送先等の情報を含んでいる。搬送物情報は、搬送中、搬送前(搭載前)、搬送済みなどのステータスを示す情報を含んでいてもよい。搬送物情報226は搬送物毎にこれらの情報が対応付けられている。搬送物情報126については後述する。搬送物情報226は、移動ロボット20が搬送する搬送物に関する情報を含んでいればよい。したがって、搬送物情報226は搬送物情報126の一部となる。つまり、搬送物情報226は、他の移動ロボット20が搬送する情報を含んでいなくても良い。
駆動制御部212は、ロボット制御パラメータ222を参照して、距離センサ群24から得られた距離情報が示す距離が距離閾値を下回ったことに応じて動作を停止或いは減速をする。駆動制御部212は、速度上限値以下の速度で走行するように、駆動部26を制御する。駆動制御部212は、速度上限値以上の速度で移動ロボット20が移動しないように、駆動輪の回転速度を制限する。
コストマップ228は、コスト付与部218で付与されたコストを示すマップである。具体的にはフロアマップ221上における位置(アドレス、又は座標)にコストが対応付けられている。上記のように、コストマップ228は、各グリッドにコストが格納されたグリッドマップとすることができる。コスト付与部218がコストを算出する毎に、コストマップ228が更新される。
コストマップ228で示されたコストは、通信部23を介して、上位管理装置10に送信される。つまり、通信部23は、コスト付与部218が付与したコストを上位管理装置10に送信する。また、通信部23は、コストに、コストを付与した移動ロボット20のIDを付して、上位管理装置10に送信する。これにより、上位管理装置10のコスト付与部118が複数の移動ロボット20が付与したコストを統合することができる。
(移動ロボット20の構成)
ここで、移動ロボット20の外観について説明する。図3は、移動ロボット20の概略図を示す。図3に示す移動ロボット20は、移動ロボット20の態様の1つであり、他の形態であってもよい。なお、図3では、x方向が移動ロボット20の前進方向及び後進方向、y方向が移動ロボット20の左右方向であり、z方向が移動ロボット20の高さ方向である。
移動ロボット20は、本体部290と、台車部260とを備えている。台車部260の上に、本体部290が搭載されている。本体部290と、台車部260とそれぞれ直方体状の筐体を有しており、この筐体内部に各構成要素が搭載されている。例えば、台車部260の内部には駆動部26が収容されている。
本体部290には、収容スペースとなる収納庫291と、収納庫291を密封する扉292とが設けられている。収納庫291には、複数段の棚が設けられており、段毎に空き状況が管理される。例えば、各段に重量センサ等の各種センサを配置することで、空き状況を更新することができる。移動ロボット20は、収納庫291に収納された搬送物を上位管理装置10から指示された目的地まで自律移動により搬送する。本体部290は図示しない制御ボックスなどを筐体内に搭載していても良い。また、扉292は電子キーなどで施錠可能となっていても良い。搬送先に到着するとユーザU2が電子キーで扉292を開錠する。あるいは、搬送先に到着した場合、自動で扉292が開錠してもよい。
図3に示すように、移動ロボット20の外装には、距離センサ群24として前後距離センサ241及び左右距離センサ242が設けられる。移動ロボット20は、前後距離センサ241により移動ロボット20の前後方向の周辺物体の距離を計測する。また、移動ロボット20は、左右距離センサ242により移動ロボット20の左右方向の周辺物体の距離を計測する。
例えば、前後距離センサ241は、本体部290の筐体の前面及び後面にそれぞれ配置される。左右距離センサ242は、本体部290の筐体の左側面及び右側面にそれぞれ配置される。前後距離センサ241及び左右距離センサ242は例えば、超音波距離センサやレーザレンジファインダである。周辺物体までの距離を検出する。前後距離センサ241又は左右距離センサ242で検出された周辺物体までの距離が、距離閾値以下となった場合、移動ロボット20が減速または停止する。
駆動部26には、駆動輪261及びキャスタ262が設けられる。駆動輪261は移動ロボット20を前後左右に移動させるための車輪である。キャスタ262は、駆動力は与えられず、駆動輪261に追従して転がる従動輪である。駆動部26は、図示しない駆動モータを有しており、駆動輪261を駆動する。
例えば、駆動部26は、筐体内に、それぞれが走行面に接地する2つの駆動輪261と2つのキャスタ262を支持している。2つの駆動輪261は、互いに回転軸芯が一致するように配設されている。それぞれの駆動輪261は、不図示のモータによって独立して回転駆動される。駆動輪261は、図2の駆動制御部212からの制御指令値に応じて回転する。キャスタ262は、従動輪であり、駆動部26から鉛直方向に延びる旋回軸が車輪の回転軸から離れて車輪を軸支するように設けられており、駆動部26の移動方向に倣うように追従する。
移動ロボット20は、例えば、2つの駆動輪261が同じ方向に同じ回転速度で回転されれば直進し、逆方向に同じ回転速度で回転されれば2つの駆動輪261のほぼ中央を通る鉛直軸周りに旋回する。また、2つの駆動輪261を同じ方向と異なる回転速度で回転させることで、左右に曲がりながら進むことができる。例えば、左の駆動輪261の回転速度を右の駆動輪261の回転速度より高くすることで、右折することができる。反対に、右の駆動輪261の回転速度を左の駆動輪261の回転速度より高くすることで、左折することができる。すなわち、移動ロボット20は、2つの駆動輪261の回転方向、回転速度がそれぞれ制御されることにより、任意の方向へ並進、旋回、右左折等することができる。
また、移動ロボット20では、本体部290の上面に表示部27、操作インタフェース281が設けられる。表示部27には、操作インタフェース281が表示される。ユーザが表示部27に表示された操作インタフェース281をタッチ操作することで、操作受付部28がユーザからの指示入力を受け付けることができる。また、非常停止ボタン282が表示部27の上面に設けられる。非常停止ボタン282及び操作インタフェース281が操作受付部28として機能する。
表示部27は、例えば液晶パネルであり、キャラクターの顔をイラストで表示したり、移動ロボット20に関する情報をテキストやアイコンで呈示したりする。表示部27にキャラクターの顔を表示すれば、表示部27が擬似的な顔部であるかの印象を周囲の観察者に与えることができる。移動ロボット20に搭載されている表示部27等をユーザ端末400として用いることも可能である。
本体部290の前面には、カメラ25が設置されている。ここでは、2つのカメラ25がステレオカメラとして機能する。つまり、同じ画角を有する2つのカメラ25が互いに水平方向に離間して配置されている。それぞれのカメラ25で撮像された画像を画像データとして出力する。2つのカメラ25の画像データに基づいて、被写体までの距離や被写体の大きさを算出することが可能である。演算処理部21は、カメラ25の画像を解析することで、移動方向前方に人や障害物などを検知することができる。進行方向前方に人や障害物などがいる場合、移動ロボット20は、それらを回避しながら、経路に沿って移動する。また、カメラ25の画像データは、上位管理装置10に送信される。
移動ロボット20は、カメラ25が出力する画像データや、前後距離センサ241及び左右距離センサ242が出力する検出信号を解析することにより、周辺物体を認識したり、自機の位置を同定したりする。カメラ25は、移動ロボット20の進行方向前方を撮像する。移動ロボット20は、図示するように、カメラ25が設置されている側を自機の前方とする。すなわち、通常の移動時においては矢印で示すように、自機の前方が進行方向となる。
次に、距離センサ群24のセンシング領域の一例について説明する。ここでは、図4に示すように、距離センサ群24として2つの測距センサ24A、24Bが設けられている。測距センサ24Aは2次元測距センサであり、測距センサ24Bは3次元測距センサである。前後距離センサ241及び左右距離センサ242に対応していてもよく、別体として設けられていてもよい。測距センサ24A、及び測距センサ24Bは所定の時間間隔で周辺物体の距離を繰り返し測定する。測距センサ24Aは、測距センサ24Bよりも測定レンジ(測定可能距離が長くなっている)。
測距センサ24A、測距センサ24Bは、パルスレーザ光を測定信号として用いるライダ(LiDAR:Light Detection and Ranging、Laser Imaging Detection and Ranging)である。測距センサ24A、測距センサ24Bは、周辺物体で反射した戻り光の位相や往復時間などによって、周辺物体までの距離を測定している。測距センサ24A、及び測距センサ24Bは、レーザ光の出射方向を変えるための走査ミラーを有している。測距センサ24A、測距センサ24Bが走査ミラーを駆動することで、測定方向が変化する。
測距センサ24Aは、2次元ライダであり、センシング領域(画角範囲)SAが水平面と平行なっている。つまり、測距センサ24Aでは、走査ミラーが鉛直軸周りに回転するため、測定方向がヨー軸周りに変化する。測定信号の出射方向は、水平面と平行である、測定信号の出射方向が、水平面内に変化する。もちろん、センシング領域は、水平面と平行に限られるものではない。例えば、床面が斜面の場合、センシング領域SAは、斜面と平行であってもよい。センシング領域SAが左右方向に拡がっている。
例えば、測距センサ24Aは、移動ロボット20を中心とする全方位(360°)を1°毎に走査することで、2次元測距を行う。センシング領域SAは、水平面内において、360°の全方位となっていてもよく、一部の角度範囲であってもよい。例えば、移動方向前方を中心とした所定の角度範囲のみをセンシング領域SAとすることができる。測距センサ24Aは、自己位置の推定に用いられてもよい。例えば、移動ロボット20の周辺に壁がある場合、この壁の情報がフロアマップ221に格納されている。測距センサ24Aが壁までの距離を測定すると、演算処理部21がフロアマップ221を参照して、移動ロボット20の現在位置を推定する。また、測距センサ24Aは、周辺にある障害物の検知に利用されてもよい。
測距センサ24Bは、3次元ライダであり、センシング領域(画角範囲)SBが立体的になっている。例えば、測距センサ24Bでは、測定信号の出射方向がヨー軸、ピッチ軸周りに変化する。測距センサ24Bが3次元のセンシング領域SBをスキャンすることで、周辺物体の3次元形状を示す点群データを取得することができる。
3次元測定を行う測距センサ24Bと2次元測定を行う測距センサ24Aとを用いて、周辺物体までの距離を測定している。例えば、測距センサ24Aの測定可能距離(測定レンジ)が測距センサ24Bの測定可能距離(測定レンジ)よりも長くなっている。つまり、測距センサ24Aは、3次元測定を行う測距センサ24Bよりも遠距離を測距可能となる。この場合、パルスレーザ光の強度に応じて、測定レンジを設定することができる。
測距センサ24Aでフロアマップ221上にない周辺物体が検出された場合、測距センサ24Bがその周辺物体の3次元形状を測定する。例えば、測距センサ24Aが移動している周辺物体を検出すると、測距センサ24Bが移動している周辺物体までの距離を高精度で測定する。これにより周辺物体までの3次元の表面形状を高精度で測定することができる。
例えば、図4では、移動ロボット20の前方にユーザUAが周辺物体として存在している。遠距離を測距可能な測距センサ24Aの測定結果から、推定部216がユーザUAを周辺物体として検出する。ユーザUAは、フロアマップ221に登録されていないため、測距センサ24Bが測距可能な位置まで近づいたら、測距センサ24BがユーザUAに対して測定を行う。ユーザUAをセンシング領域SBに含むように設定して、測距センサ24Bが測定を行う。測距センサ24Bが、測定信号の走査角度のピッチを小さくして高精度で距離測定を行。そして、測距センサ24Bが、周辺物体表面の3次元形状を測定する。これにより、ユーザUAの3次元形状を示す点群データを測定することができる。
このように、推定部216が測距センサ24Aの測定結果から周辺に周辺物体があることが検知した場合、周辺物体をセンシング領域SBの中心として測距センサ24Bが3次元測定を行う。
また、推定部216は、測距センサ24Bの測定結果から周辺物体の移動ベクトルを算出することができる。周辺物体が移動している人や他の移動ロボット20である場合、推定部216は人や移動ロボット20の移動ベクトルを推定する。移動ベクトルは、移動速度及び移動方向を含む情報である。例えば、移動ロボット20から周辺物体までの距離に変化に基づいて、周辺物体の移動ベクトルを推定する。移動ロボット20は、自己の現在位置を検出している。そして、推定部216は、周辺物体までの距離と方向に応じて、フロアマップ221における周辺物体の位置を検出する。そして、フロアマップ221上における周辺物体の位置の時間変化に応じて、移動ベクトルを算出する。
図4では、移動ロボット20の周辺にユーザUAがいるため、推定部216がユーザUAを周辺物体として検出する。なお、ユーザUAは、施設の職員や利用者である。上記のように、推定部216は、ユーザUAのフロアマップ221上での位置を検出している。さらに、測距センサ24Aと測距センサ24Bとが繰り返し測定を行っている。推定部216は、ユーザUAのフロアマップ221の位置を比較することで、ユーザUAの移動ベクトルを推定している。そして、コスト付与部218は、ユーザUAの移動ベクトルに応じてコストを付与する。
また、推定部216は、周辺物体の重心位置を推定して、重心位置の変化に基づいて移動ベクトルを推定してもよい。例えば、推定部216は、測距センサ24Bの測定で得られた3次元形状や点群データに基づいて、フロアマップ221上における周辺物体の重心位置を算出する。ここで重心位置は、フロアマップ221内における位置、つまり、水平面内における2次元位置とすることができる。例えば、点群データの点の重心位置が周辺物体の推定部216は、周辺物体の重心位置の変化から移動ベクトルを算出しても良い。例えば、推定部216は、前回の測定結果から得られる重心位置と、最新の測距結果から得られる重心位置をフロアマップ上で比較することで、周辺物体の移動ベクトルを算出する。このようにすることで、移動速度、及び移動方向の推定精度を向上することができる。
図5は、移動ロボット20の周辺にいるユーザUAに対して付与されたコストを説明するための模式図である。図5は、通路を走行中の移動ロボット20とその周辺を模式的に示す平面図である。図5に示す上面視において、上下方向(例えば、南北方向)に沿った通路を移動ロボット20が移動している。通路の左右両側には壁Wが設けられている。図5では、移動ロボット20が下から上に向かうように移動している。具体的には、移動ロボット20は、ルート計画部115で計画された経路P1に沿って通路を移動している。経路P1には通過ポイントM11、M12が含まれている。
ここで、移動ロボット20の前方において、ユーザUAが通路を移動している。ユーザUAは移動ベクトルVに示す方向に移動している。図5では左斜め下方向にユーザUAが歩いている。測距センサ24A,及び測距センサ24BがユーザUAまでの距離を測定している。
上記のように推定部216がユーザUAの移動ベクトルVを算出している。つまり、推定部216は、フロアマップ221におけるユーザUAの位置の変化に基づいて、ユーザUAの移動ベクトルVを算出する。ここでは、ユーザUAの移動ベクトルVはフロアマップ221上におけるユーザUAの絶対的な移動速度と移動方向を示している。
例えば、測距センサ24A,及び測距センサ24BがユーザUAまでの距離を繰り返し測定している。つまり、測距センサ24A,及び測距センサ24Bは、移動ロボット20を基準として、ユーザUAまでの距離と方向を測定する。推定部216は、移動ロボット20の自己の現在位置を考慮して、フロアマップ221上におけるユーザUAの位置を特定する。
推定部216は、前回測定時のユーザUAの位置と最新測定時のユーザUAの位置を比較することで移動方向を推定する。推定部216は、前回測定時のユーザUAの位置と最新測定時のユーザUAの位置との間の距離を算出する。そして、測距センサ24A,及び測距センサ24Bの測定時間間隔からユーザUAの移動速度を推定する。例えば、ライダの走査周期、センシング領域の大きさ等に応じて測定時間間隔が決まる。もちろん、移動ベクトルの推定は上記の手法に限られるものではない。例えば、推定部216は、測距センサの3回以上の測定結果に平均値により、移動ベクトルVを推定してもよい。
コスト付与部218は、移動ベクトルVに基づいて、コストをフロアマップ221に付与する。コスト付与部218は、フロアマップ221のグリッド毎にコストを算出する。図5では、ユーザUAの最新の位置と移動ベクトルVとによって、コストが付与されるコスト領域CUが設定されている。コスト領域CUは、ユーザUAの進行方向前方に設定される。コスト領域CUは、ユーザUAの移動速度に応じて可変となっている。例えば、ユーザUAの移動速度が大きいほど、コスト領域CUは大きくなる。
コスト付与部218は、コスト領域CUに含まれるグリッドにコストを付与する。ここでは、コスト領域CUに含まれるグリッドに対して、一定値のコストを付与している。もちろん、移動ベクトルや位置に応じて、グリッド毎に異なるコストの値が異なっていても良い。例えば、移動速度が速いほど、付与するコストを高くすることができる。また、ユーザUAに近い位置ほど、コストを高くすることあるいは低くすることができる。
コスト付与部218は、測距毎に得られる移動ベクトルVに基づいてコストを算出して、順次加算していく。測距センサ24A、24Bの測定結果に応じてコストが更新されていく。コスト領域CUに含まれるグリッドでは、コストが加算される。つまり、ユーザUAの移動方向前方にあるグリッドではコストが増加する。また、測定毎に全グリッドのコストを一定値だけ減算するようにする。したがって、移動方向前方にないグリッドでは、時間経過に従ってコストが減少していく。つまり、コスト領域CUの外側のグリッドでは、測距毎にコストが減少していく。付与するコストや減算するコストは、コストの設定範囲、測定時間間隔、移動ベクトル等に応じて決定すれば良い。このように、コスト付与部218が測定毎にコストを付与することで、コストマップが随時更新されていく。
そして、移動ロボット20は、コストマップ228に応じて移動する。コストが低いグリッドを通過するような経路に沿って移動ロボット20が移動する。図5では、ユーザUAの移動方向前方のコストが高くなっているため、ユーザUAの移動方向前方を避けて通過するような経路P2に沿って移動ロボット20が移動する。よって、移動ロボット20は、ユーザUAの移動元を通過するような経路P2を設定している。例えば、コストマップにおけるコストが所定値以下のグリッドを通過するような経路P2が設定される。移動ロボット20は、コストマップ228を経路計画に反映させている。
このようにすることで、移動ロボット20が効率良く移動することができる。移動ロボット20がユーザUAの移動先を予測して、経路計画を行うことができる。つまり、ユーザUAの移動先を避けるような経路P2で移動できるため、移動速度を落とさずに移動することができる。目的地まで移動する移動時間を短縮することができる。人がいる環境で利用される移動ロボット20では、人を回避して移動することが望まれる。人を回避できるように制御するためには、移動速度を上げることが困難となる。本実施の形態のように、移動ベクトルに応じてコストを更新することで、人の位置を予測することができる。従って、移動ロボット20が、効率よく、移動することができる。
演算処理部21が、測距センサ24A、24Bの測定結果に応じて更新されるコストに応じて移動するように制御する。例えば、演算処理部21がコストマップ228に基づいて、経路を再計画すれば良い。つまり、移動している通路においてコストが低いグリッドを通過するように、移動ロボット20が経路計画を行う。経路P1に含まれるグリッドにおいて、コストが所定値以上になると、演算処理部21が経路P1を修正して、新しい経路P2を設定する。
例えば、搬送先となる目的地が設定されると、ルート計画部115が通常は通路の左側を通行するようにルート計画を行っている。つまり、ルート計画部115は、ルート計画条件として、移動ロボット20の進む方向を基準として、通路の左側を通行するような通過ポイントM11、M12を設定している。ルート計画部115は、通過ポイントM11、M12が設定された経路P1を移動ロボット20に対して計画している。
しかしながら、経路P1に向けてユーザUAが歩いているため、演算処理部21が通路の右側を通過するような経路P2を設定する。演算処理部21が、通過ポイントM11,M22、M23、M24の順で通過するような経路P2を設定する。換言すると、演算処理部21が通過ポイントM12を削除して、通過ポイントM22~M24を追加する。このようにすることで、施設内の状況に応じて、より適切な経路計画を行うことができるため、効率のよい経路計画が可能となる。
例えば、移動ロボット20が通過ポイントM11にいるタイミングにおけるユーザUAの存在する位置を通過するような経路P2を演算処理部21が設定している。移動ロボット20がユーザUAの将来の位置を予測して、経路計画を行うことができる。例えば、移動ロボット20が通過ポイントM11から通過ポイントM12までの距離を移動する移動時間後のユーザUAの位置を移動ロボット20が予測することができる。ユーザUAの移動ベクトルVから予測される将来のユーザUAの位置を避けるような経路P2で移動できる。よって、移動速度を落とさずに移動することができ、目的地まで移動する移動時間を短縮することができる。
なお、図5では壁Wの近傍において、壁コスト領域CWが設定されている。壁コスト領域CWは壁Wから距離が所定距離以下の領域であり、壁Wに沿って配置されている。壁コスト領域CWのコストは固定値となっている。つまり、壁コスト領域CWには、一定の壁コストが設定されている。この場合、壁Wの近傍ではコストが時間によって変化しなくなっている。つまり、測距センサの測定結果が更新された場合でも、壁コスト領域CWのコストは一定値で固定される。したがって、壁Wを移動ロボット20が通過しないような経路が計画される。このように、壁W等の近傍のグリッドにおいて、コストを常時付与することで、壁Wへの衝突、接近を防ぐことができる。よって、より効率良く移動することができる。例えば、上記の距離閾値を大きく設定することが可能になる。
複数台の移動ロボット20が各フロアマップ221上にコストを付与するようにしてもよい。つまり、それぞれの移動ロボット20に設けられた測距センサ24A,24Bの測定結果に基づいて、それぞれの移動ロボット20がコストを付与する。
そして、複数台の移動ロボット20がフロアマップ又はコストマップを共有していてもよい。例えば、移動ロボット20の測距センサ24A,24Bの死角となってしまう領域においても、他の移動ロボット20の測距センサが測定を行うことができる。よって、他の移動ロボットが死角となってしまう領域に対して、コストを付与することができる。移動ロボット20が各自のコストマップを上位管理装置10に送信する。
そして、上位管理装置10が複数台の移動ロボット20のコストマップ228のコストを加算することで、共有用のコストマップ128を生成する。上位管理装置10は、共有用のコストマップ128のコストを各移動ロボット20に送信する。この場合、コストマップ128の一部の領域のみのコストを送信しても良い。つまり、上位管理装置10が、移動ロボット20の移動方向前方において、死角となっている領域のコストを移動ロボット20に送信する。このようにすることで、移動ロボット20の測距センサ24A、24Bの死角となる領域についてもコストが付与される。よって、移動ロボット20は、死角となる領域における状況を予測することができるため、より効率よく移動することができる経路を計画することが可能となる。
なお、図5では、周辺物体がユーザUA、つまり人であるとして説明したが、周辺物体は人に限らず、他の移動ロボット20であってもよい。あるいは、周辺物体は、搬送台車や車椅子などであってもよい。移動ロボット20の周辺に移動する周辺物体(人又は移動ロボットなど)がある場合、その移動ベクトルに基づいて移動ロボット20が移動する。
また、本実施の形態では、2次元測定を行う測距センサ24Aと3次元測定を行う測距センサ24Bとを用いて、周辺物体までの距離を測定している。そして、2次元測定を行う測距センサ24の測定可能距離(測定レンジ)が測距センサ24Bの測定可能距離(測定レンジ)よりも長くなっている。つまり、測距センサ24Aは、3次元測定を行う測距センサ24Bよりも遠距離を測距可能となる。このようにすることで、周辺物体の移動ベクトルの推定精度を向上することができる。
また、測距センサ24Bの測定結果から周辺物体の重心位置を推定してもよい。そして、推定部216は、周辺物体の重心位置の時間変化から移動ベクトルを算出しても良い。このようにすることで、移動速度、及び移動方向の推定精度を向上することができる。
図6を用いて、本実施の形態にかかる制御方法について説明する。図6は、制御方法を示すフローチャートである。まず、測距センサ24A,測距センサ24Bが2次元測距と3次元測距を行う(S11、S21)。そして、推定部216が周辺物体の点群を抽出する(S12)。これにより、周辺物体の3次元形状を示す点群データを取得することができる。
次に、推定部216が周辺物体の位置、速度、重心を抽出する(S13)。ここで、推定部216が、前回の測距結果と今回の測距結果とを比較することで、周辺物体の位置、移動速度、重心、移動方向などの情報を求めている。そして、推定部216は、ステップS13で求めた情報を2次元のフロアマップ221に投影する(S14)。ここでは、フロアマップ上に周辺物体の位置等が投影される。コスト付与部218は、フロアマップ221にコストを付与することで、2次元のコストマップ228を生成する(S15)。ここでは、測距センサ24Aの2次元の測距結果に基づいて、推定された自己位置を用いている。つまり、演算処理部21が、測距センサ24Aの測距結果とフロアマップ221とを照合することで、精度の高い自己位置推定が可能となる。そして、コスト付与部218が、推定された自己位置を基準として、周辺物体のコストをマップに投影している。つまり、2次元測距結果で照合されたマップ上に、コストマップが投影される。
そして、演算処理部21がコストマップに基づいて、経路計画を修正する(S16)。例えば、元の経路において、コストが所定値以上となっている箇所を通過する場合、経路を変更する。つまり、コストが高くなっている箇所を迂回するように経路を修正する。これにより、効率良く移動することができる。さらに、測距センサ24A,又は測距センサ24Bの測距結果に基づいて、移動計画を立案することで、より効率よく移動することが可能となる。そして、移動ロボット20は、修正された経路に沿って移動する。
このように、本実施の形態にかかるシステムは、マップを参照して自律移動する移動ロボットを制御する。まず、移動ロボット20が、測距センサ24A、24Bを用いて測定された周辺物体までの距離を取得する。推定部216が、周辺物体までの距離の変化に応じて、移動ロボット20の進行方向を基準とする左右方向における前記周辺物体の移動方向を推定する。経路変更部217が、周辺物体の移動方向と反対側を通過するように経路を変更する。
変形例1
図7では、ロボット制御システムが、コストを用いずに移動ロボットを制御している。図7を用いて、変形例1にかかるロボット制御を説明する。図7は移動ロボット20の動作を説明するための図であり、移動ロボット20が移動する動作を示す上面図である。なお、変形例1では、コストを用いないため、図2のコスト付与部118,218と、コストマップ128、228等を不要とすることができる。
ここでは、移動ロボット20の前方に周辺物体として、ユーザUAと移動ロボット20Aが存在している。移動ロボット20は、通路の右側を通過するような経路P1が設定されている。つまり、上位管理装置10は、経路P1を移動ロボット20に送信している。変更前の経路P1では、移動ロボット20が通過ポイントM11、M12の順に移動する。通過ポイントM11と通過ポイントM12は、前後方向(図中の上下方向)と平行な直線状に配置されている。
推定部216が、ユーザUAと移動ロボット20Aの移動方向を推定する。ユーザUAと移動ロボット20A、移動ロボット20の移動方向を基準として、右斜め後方に移動している。つまり、推定部216は、左右方向におけるユーザUAと移動ロボット20Aの移動方向を右方向と推定する。ここでは、ユーザUAの移動ベクトルを移動ベクトルV1とし、移動ロボット20Aの移動ベクトルを移動ベクトルV2として示している。
ユーザUAと移動ロボット20Aとが経路P1に向かって移動している。推定部216で推定された移動方向にユーザUAと移動ロボット20Aが移動すると移動ロボット20の移動の障害となる。経路変更部217は、推定された移動方向に基づいて、経路P1を経路P2に変更する。経路P2では、通過ポイントM11、M22、M23、M24の順に設定されている。
したがって、移動ロボット20がユーザUAと移動ロボット20Aの左側を通過することができる。移動ロボット20の進行方向に沿って延びる通路において、移動ロボット20が周辺物体の移動先の反対側を通過することができる。このようにすることで、移動ロボット20が移動速度を低下させずに移動することが可能になる。例えば、移動ロボット20AやユーザUAが減速や停止をするための閾値距離内に進入するのを防ぐことができる。よって、高速での移動が可能となる。また、閾値距離を小さくすることも可能である。
変形例1にかかるロボット制御方法について説明する。図8は、ロボット制御方法を示すフローチャートである。まず、推定部216が、測距センサ24A、測距センサ24Bで測定された測距データを取得する(S31)。測距センサ24A又は測距センサ24Bが移動ロボット20の周辺にある周辺物体までの距離を測定すると、推定部216がその距離を示す測距データを取得する。
推定部216は、周辺物体の移動方向を推定する(S32)。推定部216は、移動ロボット20の移動方向を基準として、左右方向における周辺物体の移動方向を推定する。測距センサ24A、又は測距センサ24Bは、周辺物体までの距離を繰り返し測定している。さらに、移動ロボット20はフロアマップ221における自己の現在位置を推定している。よって、推定部216は、測距データの取得毎に、フロアマップ221上における周辺物体の位置を推定する。推定部216は、フロアマップ221上における周辺物体の位置の変化によって、移動方向を推定する。推定部216は、周辺物体が右方向に移動しているか、左方向に移動しているかを推定する。
経路変更部217は、推定結果に基づいて、経路を変更する(S33)。具体的には、周辺物体が右方向に移動している場合、経路変更部217は、移動ロボット20が周辺物体の左側を通過するように経路を変更する(例えば、図7参照)。周辺物体が左方向に移動している場合、経路変更部217は、移動ロボット20が周辺物体の右側を通過するように経路を変更する(例えば、図5参照)。つまり、周辺物体が通路の左側に向かって移動している場合、移動ロボット20が、通路の右側を移動する。周辺物体が通路の右側に向かって移動している場合、移動ロボット20が、通路の左側を移動する。
このようにすることで、推定部216は、周辺物体の移動方向から移動先を予測している。したがって、移動ロボット20は、周辺物体の移動先を回避するように移動することができる。移動ロボット20の移動速度を落とさずに移動することができるため、効率のよい移動が可能となる。
特に、移動ロボット20が、通路に沿って移動する場合において、周辺物体の移動先を避けて、移動することができる。移動ロボット20が通路に沿って移動する場合において、ルート計画部115が通路の片側を通行するように予め経路を設定している。例えば、図5では、ルート計画部115は移動ロボット20が左側通行で通路を移動するように経路を計画する。図7では、ルート計画部115は移動ロボット20が右側通行で通路を移動するように経路を計画する。
周辺物体が通路の片側に向かって移動していると判定された場合に、経路変更部217は、周辺物体を回避するように、移動ロボットが通路の片側と反対側を通過するように経路を変更する。複数台の移動ロボット20が通路の片側を通行するように予め経路を設定されている場合、2台以上の移動ロボット20が幅の狭い通路でもすれ違うことができる。
本実施のかかる制御方法は、移動ロボット20単体で行われていてもよく、上位管理装置10で行われていてもよい。また、移動ロボット20及び上位管理装置10が共同して、ロボット制御方法を実行してもよい。つまり、本実施の形態にかかるロボット制御システムは、移動ロボット20内に搭載されていてもよい。あるいは、ロボット制御システムの少なくとも一部又は全部は、移動ロボット20以外の装置、例えば、上位管理装置10に搭載されていてもよい。
また、上述した上位管理装置10、又は移動ロボット20等における処理の一部又は全部は、コンピュータプログラムとして実現可能である。このようなプログラムは、様々なタイプの非一時的なコンピュータ可読媒体を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD-ROM(Read Only Memory)、CD-R、CD-R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述の実施の形態は病院内を搬送ロボットが自律移動するシステムについて説明したが、上述のシステムは、ホテル、レストラン、オフィスビル、イベント会場または複合施設において所定の物品を荷物として搬送できる。