IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立インダストリアルプロダクツの特許一覧

特開2023-167780ロボット制御システム、搬送システム及びロボット制御方法
<>
  • 特開-ロボット制御システム、搬送システム及びロボット制御方法 図1A
  • 特開-ロボット制御システム、搬送システム及びロボット制御方法 図1B
  • 特開-ロボット制御システム、搬送システム及びロボット制御方法 図2
  • 特開-ロボット制御システム、搬送システム及びロボット制御方法 図3A
  • 特開-ロボット制御システム、搬送システム及びロボット制御方法 図3B
  • 特開-ロボット制御システム、搬送システム及びロボット制御方法 図3C
  • 特開-ロボット制御システム、搬送システム及びロボット制御方法 図4
  • 特開-ロボット制御システム、搬送システム及びロボット制御方法 図5
  • 特開-ロボット制御システム、搬送システム及びロボット制御方法 図6
  • 特開-ロボット制御システム、搬送システム及びロボット制御方法 図7A
  • 特開-ロボット制御システム、搬送システム及びロボット制御方法 図7B
  • 特開-ロボット制御システム、搬送システム及びロボット制御方法 図7C
  • 特開-ロボット制御システム、搬送システム及びロボット制御方法 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023167780
(43)【公開日】2023-11-24
(54)【発明の名称】ロボット制御システム、搬送システム及びロボット制御方法
(51)【国際特許分類】
   G05D 1/02 20200101AFI20231116BHJP
【FI】
G05D1/02 H
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2022079239
(22)【出願日】2022-05-13
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
(71)【出願人】
【識別番号】319007240
【氏名又は名称】株式会社日立インダストリアルプロダクツ
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】中野 定樹
(72)【発明者】
【氏名】木村 宣隆
(72)【発明者】
【氏名】遠藤 久
【テーマコード(参考)】
5H301
【Fターム(参考)】
5H301BB05
5H301GG14
5H301GG24
5H301KK08
(57)【要約】
【課題】第1のセンサと第2のセンサを有するロボットで、第1のセンサからの位置情報が利用できない場合に第2のセンサから算出した情報を用いて自己位置を推定する精度を向上させる。
【解決手段】プロセッサとメモリを有するサーバがロボットの位置を推定するロボット制御システムであって、ロボットは第1センシング情報を取得する第1センサと、第2センシング情報を取得する第2センサと、を有し、サーバは、第1センシング情報から得られる第1位置と、第1姿勢を含む第1走行状態情報と、第2センシング情報から取得するロボットの第2速度及び第2角速度を含む第2走行状態情報と、第1走行状態情報と第2走行状態情報の対応関係を示す対応関係情報を、第1位置と関連付けて格納する記憶部と、第1走行状態情報及び第2走行状態情報に基づいてロボットの推定位置を算出する演算部を有する。
【選択図】図3A
【特許請求の範囲】
【請求項1】
プロセッサとメモリを有するサーバが移動ロボットの位置を推定するロボット制御システムであって、
前記移動ロボットは、
前記移動ロボットの走行状態から第1のセンシング情報を取得する第1のセンサ部と、
前記第1のセンサ部とは異なるセンサを有して前記移動ロボットの走行状態から第2のセンシング情報を取得する第2のセンサ部と、を有し、
前記サーバは、
前記第1のセンシング情報から得られる第1の位置と当該第1の位置における第1の姿勢を含む第1の走行状態の情報と、前記第2のセンシング情報から得られる前記移動ロボットの第2の速度及び第2の角速度を含む第2の走行状態の情報と、の対応関係を示す対応関係情報を、前記第1の位置と関連付けて格納する記憶部と、
前記第1の走行状態の情報及び前記第2の走行状態の情報に基づいて前記移動ロボットの推定位置を算出可能な演算部と、を有し、
前記演算部は、
前記第1のセンサ部から取得した第1のセンシング情報に基づいて前記第1の位置と前記第1の姿勢を算出し、前記第1の位置の算出の際にエラーが生じた場合には、前記第2のセンシング情報から取得した第2の走行状態の情報と前記対応関係情報に基づいて、前記移動ロボットの推定位置を算出することを特徴とするロボット制御システム。
【請求項2】
請求項1に記載のロボット制御システムであって、
前記対応関係情報は、
前記第1の位置における第1の速度と前記第2の速度の速度比と、前記第1の姿勢における第1の角速度と前記第2の角速度の角速度比を含むことを特徴とするロボット制御システム。
【請求項3】
請求項2に記載のロボット制御システムであって、
前記演算部は、
前記エラーがなく、かつ予め設定された登録情報が有効の場合には、前記第1の速度と前記第1の角速度を取得し、前記第1の速度と前記第2の速度から前記速度比を算出し、前記第1の角速度と前記第2の角速度から前記角速度比を算出し、前記第1の位置と前記第1の姿勢に対応づけて、前記第2の速度と前記第2の角速度と前記速度比と前記角速度比を前記対応関係情報に登録することを特徴とするロボット制御システム。
【請求項4】
請求項2に記載のロボット制御システムであって、
前記演算部は、
前記エラーが生じた場合には、前記エラー発生前の前記移動ロボットの前記第1の位置及び前記第1の姿勢の情報と、前記第2の速度と、前記第2の角速度とで前記対応関係情報を検索し、検索結果から速度比及び角速度比とを取得して、当該取得した速度比及び角速度比と前記第2の速度と前記第2の角速度とから前記第1の速度の推定値及び前記第1の角速度の推定値を算出し、前記算出された前記第1の速度の推定値及び前記第1の角速度の推定値に基づいて、前記移動ロボットの位置及び姿勢を推定位置及び推定姿勢として算出することを特徴とするロボット制御システム。
【請求項5】
請求項4に記載のロボット制御システムであって、
前記演算部は、
前記エラーが生じた場合には、前記演算部の算出した前記推定位置及び前記推定姿勢と、前記推定位置における前記第2の速度と、前記推定姿勢における前記第2の角速度とで前記対応関係情報を検索し、検索結果から速度比及び角速度比を取得して、当該取得した速度比及び角速度比と前記推定位置における前記第2の速度と前記推定姿勢における前記第2の角速度とから前記推定位置における前記第1の速度の推定値と前記推定姿勢における前記第1の角速度の推定値とを算出し、前記算出された前記推定位置における前記第1の速度の推定値及び前記推定姿勢における前記第1の角速度の推定値に基づいて、前記移動ロボットの位置及び姿勢を算出することを特徴とするロボット制御システム。
【請求項6】
請求項4に記載のロボット制御システムであって、
前記演算部は、
前記対応関係情報を検索する際に、前記第1の位置を表す第1のキーで検索を行って、当該検索の結果に対して前記第1の姿勢と前記第2の速度と前記第2の角速度を表す第2のキーで検索を行うことを特徴とするロボット制御システム。
【請求項7】
請求項2に記載のロボット制御システムであって、
前記対応関係情報は、
前記第1の位置と、前記第1の姿勢と、前記速度比と、前記角速度比を含むことを特徴とするロボット制御システム。
【請求項8】
請求項7に記載のロボット制御システムであって、
前記対応関係情報は、
前記第1の位置と、前記第1の姿勢と、前記速度比と、前記角速度比に加えて、日時、加速度、角加速度、積載物の重量、車輪の空気圧、車輪の周長、車輪のトルク、温度、湿度、移動ロボット固有IDのうち、少なくともひとつを含むことを特徴とするロボット制御システム。
【請求項9】
請求項1に記載のロボット制御システムであって、
前記演算部は、
前記エラーによって前記第1の位置が取得できない場合には、前記移動ロボットに設けたランプの点滅、前記移動ロボットに設けたホーンからの音声出力、前記移動ロボットの減速及び停止の少なくともひとつを前記移動ロボットに指令することを特徴とするロボット制御システム。
【請求項10】
プロセッサとメモリを有するサーバと、
前記サーバに接続されて物体を搬送する移動ロボットと、を有する搬送システムであって、
前記移動ロボットは、
前記移動ロボットの走行状態から第1のセンシング情報を取得する第1のセンサ部と、
前記第1のセンサ部とは異なるセンサを有して前記移動ロボットの走行状態から第2のセンシング情報を取得する第2のセンサ部と、を有し、
前記サーバは、
前記第1のセンシング情報から得られる第1の位置と、当該第1の位置における第1の姿勢を含む第1の走行状態の情報と、前記第2のセンシング情報から得られる前記移動ロボットの第2の速度及び第2の角速度を含む第2の走行状態の情報と、の対応関係を示す対応関係情報を、前記第1の位置と関連付けて格納する記憶部と、
前記第1の走行状態の情報及び前記第2の走行状態の情報に基づいて前記移動ロボットの推定位置を算出可能な演算部と、を有し、
前記演算部は、
前記第1のセンサ部から取得した第1のセンシング情報に基づいて前記第1の位置と前記第1の姿勢を算出し、前記第1の位置の算出の際にエラーが生じた場合には、前記第2のセンシング情報から取得した第2の走行状態の情報と前記対応関係情報とに基づいて前記移動ロボットの推定位置を算出することを特徴とする搬送システム。
【請求項11】
プロセッサとメモリを有するサーバが移動ロボットの位置を推定するロボット制御方法であって、
前記サーバが、前記移動ロボットの第1のセンサ部が検出した第1のセンシング情報を取得する第1のステップと、
前記サーバが、前記移動ロボットの前記第1のセンサ部とは異なる第2のセンサ部が検出した第2のセンシング情報を取得する第2のステップと、
前記サーバが、前記第1のセンシング情報から得られる第1の位置と当該第1の位置における第1の姿勢を含む第1の走行状態の情報と、前記第2のセンシング情報から取得する前記移動ロボットの第2の速度及び第2の角速度を含む第2の走行状態の情報と、の対応関係を示す対応関係情報を、前記第1の位置と関連付けて記憶部へ格納する第3のステップと、
前記サーバが、前記第1のセンサ部から取得した第1のセンシング情報に基づいて前記第1の位置と前記第1の姿勢を算出する第4のステップと、
前記サーバが、前記第1の位置の算出の際にエラーが生じた場合、前記第2のセンシング情報から取得した第2の走行状態の情報と前記対応関係情報とに基づいて前記移動ロボットの推定位置を算出する第5のステップと、
を含むことを特徴とするロボット制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボットの自己位置を補正する技術に関する。
【背景技術】
【0002】
無人搬送車(AGV:Automatic Guided Vehicle)の自己位置推定方式として、複数の自己位置推定方式を組み合わせて精度向上やロバスト性の向上を行う方式、例えば、画像特徴点を用いたVisual SLAM(SLAM:Simultaneous Localization and Mapping)方式(第1の自己位置推定方式)と、車輪回転情報(エンコーダ情報)を用いたWheel Odometry(以下、オドメトリ)方式(第2の自己位置推定方式)を組み合わせる技術が知られている。
【0003】
特許文献1には、画像処理方式の自己位置推定処理により得られる第1の自己位置と、オドメトリ方式の自己位置推定処理により得られる第2の自己位置との算出精度マップを予め作成しておき、算出精度マップに記された算出精度を用いて、第1の自己位置と第2の自己位置との組み合わせ比率を決定する自己位置推定方式が開示されている。
【0004】
一方、特許文献1の図5によると、所定数以上のランドマークが検出できなかった場合、即ち、第1の自己位置がエラーにより得られなかった場合は、第2の自己位置のみを用いて自己位置の推定を行う方式が開示されている。
【0005】
特許文献2、又は、非特許文献1には、画像特徴点を用いたVisual SLAMの基本機能、具体的には、連続的なカメラ画像から画像特徴点群を検出し、本特徴点群を複数フレーム間にわたりトラッキングすることで自己位置を推定しながら、地図を作成する機能が開示されている。さらには、Visual SLAMの基本機能を用いて作成した地図に対して、カメラ画像を照合することにより高精度で自己位置を推定する機能についても開示されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2021―96731号公報
【特許文献2】特開2017―146952号公報
【非特許文献】
【0007】
【非特許文献1】Shinya Sumikura、Mikiya Shibuya、Ken Sakurada 共著、"OpenVSLAM: A Versatile Visual SLAM Framework"、Open Source Software Competition、October 21-25, 2019, Nice
【発明の概要】
【発明が解決しようとする課題】
【0008】
特許文献1には、第1の自己位置がエラーにより得られない場合は第2の自己位置のみを用いて自己位置推定を行う方式が開示されている。オドメトリ方式の自己位置推定処理により得られる第2の自己位置は、路面(又は床面)の摩擦や凸凹あるいは車輪の損耗などの影響を受けやすく、画像処理方式の自己位置推定処理により得られる第1の自己位置よりも位置推定の精度が低い。
【0009】
そのため、第2の自己位置を使用すると、エラーが発生しなかった場合に得られたであろう第1の自己位置に対して誤差が累積していくという課題があった。
【0010】
そこで本発明は、上記問題点に鑑みてなされたもので、種類の異なる第1のセンサと第2のセンサを有するロボットを制御する際に、第1のセンサから算出した第1の自己位置が利用できない場合に第2のセンサから算出した情報を用いて自己位置を推定する精度を向上させることを目的とする。
【課題を解決するための手段】
【0011】
本発明は、プロセッサとメモリを有するサーバが移動ロボットの位置を推定するロボット制御システムであって、前記移動ロボットは、前記移動ロボットの走行状態から第1のセンシング情報を取得する第1のセンサ部と、前記第1のセンサ部とは異なるセンサを有して前記移動ロボットの走行状態から第2のセンシング情報を取得する第2のセンサ部と、を有し、前記サーバは、前記第1のセンシング情報から得られる第1の位置と当該第1の位置における第1の姿勢を含む第1の走行状態の情報と、前記第2のセンシング情報から得られる前記移動ロボットの第2の速度及び第2の角速度の情報を含む第2の走行状態の情報と、の対応関係を示す対応関係情報を、前記第1の位置と関連付けて格納する記憶部と、前記第1の走行状態の情報及び前記第2の走行状態の情報に基づいて前記移動ロボットの推定位置を算出可能な演算部と、を有し、前記演算部は、前記第1のセンサ部から取得した第1のセンシング情報に基づいて前記第1の位置と前記第1の姿勢の情報を算出し、前記第1の位置の算出の際にエラーが生じた場合には、前記第2のセンシング情報から取得した第2の走行状態の情報と前記対応関係情報に基づいて前記移動ロボットの推定位置を算出する。
【発明の効果】
【0012】
したがって、本発明は、第1のセンサ部の第1のセンシング情報から第1の位置がエラーによって得られなかった場合でも、第2のセンサ部の第2のセンシング情報と対応関係情報の速度比及び角速度比を用いて第1の位置と同等の精度で移動ロボットの位置を算出することができる。
【0013】
本明細書において開示される主題の、少なくとも一つの実施の詳細は、添付されている図面と以下の記述の中で述べられる。開示される主題のその他の特徴、態様、効果は、以下の開示、図面、請求項により明らかにされる。
【図面の簡単な説明】
【0014】
図1A】本発明の実施例1を示し、ロボットの運動モデルを示す図である。
図1B】本発明の実施例1を示し、ロボットの軌跡と自己位置の関係を示す図である。
図2】本発明の実施例1を示し、ロボットの速度と角速度を示す図である。
図3A】本発明の実施例1を示し、ロボット制御システムのハードウェアの一例を示すブロック図である。
図3B】本発明の実施例1を示し、ロボットの斜視図である。
図3C】本発明の実施例1を示し、ロボットの側面図である。
図4】本発明の実施例1を示し、ロボット制御システムのソフトウェアの一例を示すブロック図である。
図5】本発明の実施例1を示し、自己位置補正処理の一例を示すフローチャートである。
図6】本発明の実施例1を示し、データベース検索処理の一例を示すフローチャートである。
図7A】本発明の実施例1を示し、直進の場合の補正情報の一例を示す図である。
図7B】本発明の実施例1を示し、右折の場合の補正情報の一例を示す図である。
図7C】本発明の実施例1を示し、データベースの補正情報の一例を示すフローチャートである。
図8】本発明の実施例1を示し、右折の場合の運動種別毎の補正情報の一例を示す図である。
【発明を実施するための形態】
【0015】
以下、図面を参照して本発明の実施形態を説明する。実施例は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略及び簡略化がなされている。本発明は、他の種々の形態でも実施することが可能である。特に限定しない限り、各構成要素は単数でも複数でも構わない。図面において示す各構成要素の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面に開示された位置、大きさ、形状、範囲などに限定されない。
【0016】
各種情報の例として、「テーブル」、「リスト」、「キュー」等の表現にて説明することがあるが、各種情報はこれら以外のデータ構造で表現されてもよい。例えば、「XXテーブル」、「XXリスト」、「XXキュー」等の各種情報は、「XX情報」としてもよい。識別情報について説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
【0017】
同一あるいは同様の機能を有する構成要素が複数ある場合には、同一の符号に異なる添え字を付して説明する場合がある。また、これらの複数の構成要素を区別する必要がない場合には、添え字を省略して説明する場合がある。
【0018】
実施例において、プログラムを実行して行う処理について説明する場合がある。ここで、計算機は、プロセッサ(例えばCPU、GPU)によりプログラムを実行し、記憶資源(例えばメモリ)やインターフェースデバイス(例えば通信ポート)等を用いながら、プログラムで定められた処理を行う。そのため、プログラムを実行して行う処理の主体を、プロセッサとしてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノードであってもよい。プログラムを実行して行う処理の主体は、演算部であればよく、特定の処理を行う専用回路を含んでいてもよい。ここで、専用回路とは、例えばFPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)、CPLD(Complex Programmable Logic Device)等である。
【0019】
プログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサと配布対象のプログラムを記憶する記憶資源を含み、プログラム配布サーバのプロセッサが配布対象のプログラムを他の計算機に配布してもよい。また、実施例において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
【実施例0020】
本発明は、自律的に走行する無人搬送車が、第1のセンサから算出した第1の自己位置(自己位置1)がエラーにより得られなかった場合でも、第2のセンサから算出した走行状態から第1の自己位置と同等の精度で自己位置を復元するものである。
【0021】
なお、無人搬送車(AGV:Automatic Guided Vehicle)を本実施例ではロボットと表記する。また、第1のセンサと第2のセンサは種類が異なるセンサで構成され、かつ、第1のセンサから算出する位置精度は、第2のセンサから算出する位置精度よりも高いものとする。
【0022】
図1Aを用いて自己位置の復元方式について説明する。図1Aに示す式100は2輪差動駆動型のロボット300の運動モデルである。ロボット300はX-Yの2次元空間を走行し、旋回によって進行方向を変更する。ロボット300は、位置をx、yの座標で示し、向きをθ、速度をν、角速度をωで示す。
【0023】
上記の式100は、時刻t=1,2,3,4,…の状態におけるロボット300の位置と姿勢(x(t-1),y(t-1),θ(t-1))、速度(ν(t))、角速度(ω(t))を入力とし、次のステップ(時刻)のロボット300の位置と姿勢(x(t),y(t),θ(t))を算出する式、即ち、ロボット300の軌跡を表現する式である。
【0024】
なお、本実施例では、式100中のような変数xと下付き添え字tをx(t)と表記する。変数y,θ等と下付き添え字についても同様にy(t)、θ(t)と表記する。また下付き添え字(t)を省略する場合もある。
【0025】
図1Bは、ロボット300の軌跡と自己位置の関係を示す図である。図中軌跡101は第1のセンサ(後述)から得られる速度1(ν1)、角速度1(ω1)(110)から計算される自己位置1の軌跡である。軌跡102は第2のセンサから得られる速度2(ν2)、角速度2(ω2)(111)から計算される自己位置2の軌跡である。
【0026】
自己位置1用のセンサは高精度であるが、自己位置1を見失う自己位置ロストと呼ばれるエラーが発生しやすい。一方、自己位置2用のセンサはエラーを発生しないが、自己位置に誤差が生じやすい。
【0027】
このように性能や精度の異なる2種類のセンサから得られる速度と角速度は必ずしも一致しないので、両者の軌跡にはズレ103が生じる。ズレ103は、各ステップ(t=1,2,3,4,…)において入力される、速度1(ν1)と速度2(ν2)の差と、角速度1(ω1)と角速度2(ω2)の差に起因する距離が累積したものである。
【0028】
仮に上記軌跡101、102を完全にマッチさせるには、図1Bの式112に示すように、速度2(ν2)=速度1(ν1)、角速度2(ω2)=角速度1(ω1)となるような、速度比(ν1/ν2)、角速度比(ω1/ω2)を速度2(ν2)、角速度比(ω2)をそれぞれ乗算すればよい。
【0029】
しかし、実際には軌跡101と軌跡102を完全マッチさせることは困難であるため、以下の手法により軌跡の近似を試みる。
【0030】
まず、自己位置1が正常に得られたときの速度比(ν1/ν2)と角速度比(ω1/ω2)を、ロボット300の位置と姿勢、速度2、角速度2(x,y,θ,ν2,ω2)と紐づけてデータベース(以下、DB)の補正情報へ登録しておく。
【0031】
そして、自己位置1がエラー等により得られなかった場合に、DBに登録してある速度比、角速度比の中から現在のロボットの状態(x,y,θ,ν2,ω2)に最も近い速度比、角速度比を検索して補正に用いる。具体的には、エラーが発生しなかった場合に得られたであろう速度1と角速度1を以下の式で近似して算出する。
【0032】
速度1(近似)=速度2×DBから検索により得られた速度比
角速度1(近似)=角速度2×DBから検索により得られた角速度比
【0033】
上記式から算出された速度1(近似)と角速度1(近似)を上記式100に適用することで、自己位置1(近似)が計算できる。したがって、本手法により、自己位置1がエラーにより得られなかった場合でも、自己位置2における速度及び角速度から自己位置1と同等精度の自己位置(補正自己位置)が復元できる。なお、自己位置2は、ロボット300が自己位置1を取得するタイミングでエラーが発生したときの位置及び向きを示す。
【0034】
本発明の実施例におけるロボット300及びロボット制御システムのハードウェア構成について図3A図3Cを用いて説明する。図3Aは、ロボット制御システムのハードウェアの一例を示すブロック図である。図3Bは、ロボット300の斜視図で、図3Cは、ロボット300の側面図である。
【0035】
本発明のロボット制御システムはロボット300とサーバ320で構成される。なお本実施例では、ロボット1台、サーバ1台のシンプルな例で説明するが、複数台のロボット300と複数台のサーバ1による大規模なロボット制御システムへも適用可能である。
【0036】
ロボット300は、物流倉庫で荷物の搬送を目的とする無人搬送車(AGV:Automatic Guided Vehicle)である。ロボット300は、ステレオカメラ301、車輪303(駆動輪)、エンコーダ302、荷物を昇降するためのリフター304、車輪駆動用の車輪モータ306、バッテリ305、PC1(307)、電源308及び荷重を支持する従動輪(図示省略)より構成される。
【0037】
PC1(307)は、CPU、メモリ、SSD(Solid State Drive)等のストレージ装置及びWiFi(又は無線通信部)等で構成される周知のコンピュータである。本実施例のロボット300は2個の車輪303で直進、回転を行う差動二輪型ロボットであり、車輪303、エンコーダ302、車輪モータ306を各2セット含んでいる。
【0038】
なお、2つの車輪303は直進方向に対して並列に配置され、2つのエンコーダ302がそれぞれ取り付けられている。バッテリ305は車輪モータ306へ電力を供給し、電源308はPC1(307)に電力を供給する。
【0039】
サーバ320は、PC2(321)、電源322により構成される。PC2(321)は、CPU,メモリ、SSD、WiFi等で構成される周知のコンピュータである。
ロボット300とサーバ320とは無線LANで接続されており、所定のプロトコル(例えば、TCP)で通信することが可能である。
【0040】
本実施例のロボット300には自己位置を認識するためのセンサが2種類搭載されている。第1のセンサはステレオカメラ301である。本実施例ではサーバ320がステレオカメラ301の画像から非特許文献1に記載されているVisual SLAMの機能を用いて自己位置(自己位置1)を計算する。Visual SLAM機能については後述する。
【0041】
第2のセンサは一対のエンコーダ302である。一対のエンコーダ302からは左右の車輪303の回転角度が得られ、サーバ320はエンコーダ値から速度及び角速度を計算する。自己位置1の計算方法については後述する。
【0042】
次に本発明の実施例1におけるロボット300及びロボット制御システムのソフトウェア構成について図4を用いて説明する。図4は、ロボット制御システムのソフトウェアの一例を示すブロック図である。
【0043】
図中ブロック400はロボット300で稼働するソフトウェア構成を示し、ブロック420はサーバ320で稼働するソフトウェア構成である。これらのソフトウェアは図示しないLinux OSの上で稼働する。
【0044】
まず、自己位置1を算出する手法について説明する。画像取得及び配信部401は、ステレオカメラ301からステレオ画像を取得し、Visual SLAM422へ配信するプログラムである。
【0045】
Visual SLAM422は、ステレオ画像から抽出した画像特徴点を用いて自己位置1を算出するプログラムで、自己位置1算出部として機能する。代表的なVisual SLAMプログラムとして前記非特許文献1の「OpenVSLAM: A Versatile Visual SLAM Framework」が挙げられる。
【0046】
本プログラムは地図作成と自己位置推定を同時実行するモードと、前記モードで作成した地図を読み込んで、地図とカメラ画像を照合することで自己位置推定を実行するモードを有している。本実施例におけるVisual SLAM422は、後者のモードで稼働することを想定している。
【0047】
具体的には、Visual SLAM422は、予め作成しておいた地図421を読み込んで、地図421とステレオカメラ301から得られたステレオ画像とを照合して自己位置1の推定を行う。
【0048】
Visual SLAM422は、プログラム処理の結果として自己位置1とエラー信号を出力する。自己位置1は(x、y、θ)で表される。x、yは地図421上のロボット300の座標を示し、θはロボット300の向きである(図1Aの式100)。
【0049】
エラー信号は、地図421とステレオカメラ画像との照合に失敗した場合にVisual SLAM422から出力される。即ち、Visual SLAM422は、自己位置1が得られなかった場合はエラー信号に「1」を設定し、自己位置1が得られた場合はエラー信号に「0」を設定して出力する。自己位置1とエラー信号は、例えば、1秒間に30回の頻度で、自己位置補正部426へ配信される。
【0050】
次に、エンコーダ302から速度2、角速度2を算出する手法について説明する。エンコーダ値取得及び配信部402は、車輪303の回転角度を表すエンコーダ値をエンコーダ302から読み取り、速度2及び角速度2算出部423へ配信するプログラムである。
【0051】
速度2及び角速度2算出部423は、左右それぞれの車輪303のエンコーダ値を、1秒間に100回程度取得して配信する。速度2及び角速度2算出部423では、単位時間あたりのエンコーダ値の増加量又は減少量から各車輪303の単位時間あたりの走行距離を算出する。
【0052】
車輪303が1回転(360度)したときの走行距離は、車輪303の直径×円周率で計算できるので、車輪303の回転角度をエンコーダ302の出力から算出することでロボット300の走行距離が計算できる。
【0053】
速度2及び角速度2算出部423では、左車輪の走行距離をdl、右車輪の走行距離をdrとした場合のロボット300の速度2(ν2)、角速度2(ω2)を図2の式200から算出して、速度2(ν2)、角速度2(ω2)を自己位置補正部426へ配信する。
【0054】
自己位置補正部426はVisual SLAM422から配信される自己位置1及びエラー信号と、速度2及び角速度2算出部423から配信される速度2、角速度2を入力とし、データベース(DB)425に格納された補正情報702を用いて、自己位置1がエラーにより得られなかった場合に、補正自己位置(推定位置及び推定姿勢)を出力するプログラムである。本プログラムの詳細については後述する。
【0055】
一方、経路追従プログラム427は、補正自己位置と経路情報を用いて、ロボット300を予め設定された経路に従って走行させるプログラムである。経路追従プログラム427は車輪モータ306の駆動を行うための情報を生成し、モータ駆動情報配信部424とモータ駆動部403を介して、車輪モータ306を駆動する。なお、経路追従プログラム427、モータ駆動情報配信部424、モータ駆動部403は周知又は公知の技術を適用すればよいので、詳細機能についての説明は割愛する。以上がソフトウェアブロックの説明である。
【0056】
次に、図5を用いて、自己位置補正部426が行う処理の詳細を説明する。図5は、自己位置補正処理の一例を示すフローチャートである。本処理は、メインループ処理(500)と補正情報登録処理510と自己位置補正処理520の3つの処理からなる。
【0057】
補正情報登録処理510は、エラー信号が「1」となった場合に速度及び角速度から第1の自己位置(自己位置1)と同等の精度の自己位置(補正自己位置)を復元するための補正情報702(図7C参照)を登録する処理であり、自己位置補正処理520は、登録された補正情報を用いて自己位置を補正する処理である。
【0058】
まず初めに、メインループ処理(開始500から終了508)について説明する。プログラムは開始500より開始され、後続する処理501において、自己位置補正部426は変数「前回自己位置」を(0、0、0)に初期化する。「前回自己位置」は、ロボット300の位置と姿勢(x、y、θ)を表す変数であり、1ステップ前のロボット300の位置と姿勢が格納されている。
【0059】
次の処理502において、自己位置補正部426は、自己位置1とエラー信号を受信するまで待機する。自己位置1とエラー信号は、例えば、Visual SLAM422から1秒間に30回の頻度で送信される。
【0060】
自己位置1は、Visual SLAM422から得られたロボット300の位置と姿勢(x、y、θ)である。エラー信号は、「0」の場合はエラーが発生していないことを示し、「1」の場合はエラー発生のため自己位置1には無効な値が設定されていることを示す信号である。
【0061】
自己位置補正部426は、自己位置1とエラー信号を受信した後、処理503へ進む。処理503では自己位置補正部426が速度2及び角速度2算出部423から送信される速度2と角速度2を取得する。速度2と角速度2は、前述のとおり、車輪303の回転情報から計算されたロボット300の速度2と角速度2である。
【0062】
処理504ではエラー信号が「0」(エラーが発生せずに自己位置1が得られた)、かつ、DB登録フラグ(後述)が「1」(データベース425の補正情報702へ登録を行う)の条件を判定し、判定結果がYesの場合、補正情報登録処理510が実行される。
【0063】
DB登録フラグは、プログラム起動引数でユーザが「0」又は「1」を指定することを想定しているが、プログラム実行中に、所定の条件に従って「0」又は「1」へ設定してもよい。補正情報登録処理510の詳細については後述する。
【0064】
処理504の判定結果がNoの場合、処理505において、自己位置補正処理520を実行するか否かの判定が行われる。具体的には、エラー信号が「1」(エラーが発生し自己位置1が得られなかった)の場合、自己位置補正処理520が実行される。自己位置補正処理520の詳細については後述する。
【0065】
次の処理506では、自己位置1を次のステップにおいて前回自己位置として用いるために、自己位置補正部426は前回自己位置を更新する。また、自己位置補正部426は自己位置1を補正自己位置として出力する。補正自己位置は、自己位置補正処理520で補正後のロボット300の位置と姿勢(x、y、θ)であり、エラー信号=「0」の場合は、補正を行わない自己位置1となる。
【0066】
次の処理507では、プログラム終了判定が実行され、Yesの場合は終了508へ進み、プログラムは終了する。Noの場合は、処理502に戻り、プログラムは続行される。プログラム終了判定は、自己位置補正部426が予め設定された終了条件を満たしたか否かを判定する。
【0067】
本実施例では処理502から処理507までの一連の処理を1ステップと表記する。1ステップは、例えば、自己位置1の受信周期である30分の1秒周期で実行される。以上がメインループの処理である。
【0068】
次に補正情報登録処理510について説明する。処理504においてエラーが発生せずに正しく自己位置1が得られ、かつDB登録フラグに「1」(有効)がセットされている場合、本処理が実行される。
【0069】
処理511では、自己位置補正部426が次の式201を用いて、前回自己位置と自己位置1から速度1(ν1)、角速度1(ω1)を各時刻tにおいて計算する。
【0070】
【数1】
【0071】
具体的には、前回自己位置=(x(t-1)、y(t-1)、θ(t-1))とし、自己位置1=(x(t)、y(t)、θ(t))とし、Δt=30分の1秒を上記式201へ代入して、速度1(ν1)、角速度1(ν1)を計算する。
【0072】
次の処理512では、自己位置補正部426が速度1と速度2から速度比を、角速度1と角速度2から角速度比を計算する。さらに、次の処理513では、自己位置補正部426が速度比と角速度比を、前回自己位置(x(t-1)、y(t-1)、θ(t-1))、速度2(ν2)、角速度2(ω2)へ紐づけてDB425の補正情報702に登録する。以上が補正情報登録処理510である。
【0073】
次に、自己位置補正処理520について説明する。自己位置補正処理520は、処理505において、エラーが発生して自己位置1が得られなかった場合に本処理が実行される。
【0074】
処理521では、自己位置補正部426が前回自己位置(x、y、θ)、速度2(ν2)、角速度2(ω2)を検索キーとして、最もマッチする速度比、角速度比をDB425の補正情報702から検索する。本処理の詳細については後述する。
【0075】
検索結果として速度比、角速度比が得られた場合、処理522の判定においてYes側に分岐する。速度比及び角速度比が得られなかった場合は、No側に分岐し、処理532において、速度比=1.0と角速度比=1.0がセットされる。次の処理524では、エラーが発生しなかった場合に、得られたであろう速度1の推定値と角速度1の推定値を次式202を用いて計算する。
【0076】
速度1=速度2×速度比
角速度1=角速度2×角速度比 ・・・(202)
【0077】
次の処理525では、自己位置補正部426が前回自己位置、速度1の推定値、角速度1の推定値から自己位置1(推定位置及び推定姿勢)を図1の式100を用いて計算する。具体的には、(x(t-1)、y(t-1)、θ(t-1))=前回自己位置、ν(t)=速度1(ν1)、ω(t)=角速度1(ω1)、Δt=30分の1秒として自己位置1(x(t)、y(t)、θ(t))を計算する。
【0078】
処理525が終了すると処理506に進む。以上が自己位置補正処理520である。
【0079】
なお、エラーが継続して発生する場合、自己位置補正部426は自己位置1(推定位置及び推定姿勢)と、推定位置における速度2(ν2)と、推定姿勢における角速度2(ω2)で補正情報702を検索して上述したように検索結果から速度比及び角速度比を取得する。
【0080】
そして、自己位置補正部426は取得した速度比及び角速度比と推定位置における速度2(ν2)と推定姿勢における角速度(ω2)とから推定位置における速度1(ν1)の推定値と推定姿勢における角速度1(ω1の推定値とを算出し、算出された推定位置における速度1(ν1)の推定値及び推定姿勢における角速度1(ω1)の推定値に基づいて、自己位置1を算出する。
【0081】
次に図5の処理521のDB検索処理の詳細について図6を用いて説明する。本処理は例えば、関数として実装されており、図中の引数600は当該関数の引数である。
【0082】
引数の検索キーix、iy、iθにはロボット300の位置と姿勢(x、y、θ)を設定し、iν2、iω2には速度2(ν2)と角速度2(ω2)を設定し、検索範囲s1、s2、s3、s4、s5には、ix、iy、iθ、iν2、iω2の検索範囲を設定し、modeには、マッチ度の最も高い速度と角速度を返す場合はmode=0を設定し、マッチした速度、角速度の平均を返す場合はmodo=1を引数に設定して本関数を実行する。
【0083】
処理601では、自己位置補正部426がDB425の補正情報702に格納されている速度比、角速度比の中から、ロボット300の現在位置(x、y)付近の速度比と角速度比を次の条件式203で検索する。
【0084】
(ix-s1<x<ix+s1) and (iy-s2<y<iy+s2)
・・(203)
【0085】
なお、s1、s2は検索キーとなる位置ix、iyの近傍(所定の範囲)のデータを検索するための定数で、予め設定される。
自己位置補正部426は、速度比と角速度比が1件でも見つかった場合は、処理602においてYes側に分岐し、見つからなかった場合はNo側に分岐する。
【0086】
処理603では、自己位置補正部426が上記検索でヒットした補正情報702の中から、向き、速度比、角速度比について以下の条件式204を満足するレコードをさらに絞り込んで検索する。
【0087】
(iθ-s3 < θ < iθ+s3) and
(iν2-s4 < ν2 < iν2+s4) and
(iω2-s5 < ω2 < iω2+s5) ………(204)
【0088】
なお、s3、s4、s5は第2の検索キーとなる向きθ、速度2ν2、角速度2ω2の近傍(所定の範囲)のデータを検索するための定数で、予め設定される。
【0089】
多数の検索キーを用いたDB検索は検索速度が遅くなるため、本実施例では、DB425の補正情報702を荒く検索した結果に対し、プログラム(自己位置補正部426)で絞り込み検索を行っている。絞り込み検索の結果、速度比と角速度比が1件でも見つかった場合は、処理604においてYes側に分岐し、見つからなかった場合はNo側に分岐する。
【0090】
処理605では、自己位置補正部426が検索モード(mode)により分岐する。modo=0の場合は、処理608においてマッチ度の最も高い速度比と角速度比を返す。
【0091】
具体的には、自己位置補正部426が絞り込み検索により得られた結果のうち、各変数間のユークリッド距離が最小となる速度比と角速度比を選択して返す。
【0092】
modo=1の場合は、処理607において、自己位置補正部426が絞り込み検索により得られた結果から、速度比、角速度比の平均を算出して返す。処理602、604にてNo側に分岐した場合は、自己位置補正部426が「検索失敗」を返す。以上が、処理521のDB検索処理の詳細である。
【0093】
次にロボットの動作と自己位置補正部426の例について図7A図7Bを用いて説明する。図7Aは、ロボット300が直進する場合の補正情報の一例を示す図で、図7Bは、ロボット300が右折する場合の補正情報の一例を示す図である。
【0094】
図7Aにおいて、軌跡700はロボットが矢印の向きに直進した例を示し、図7Bにおいて、軌跡701はロボット300が右折する例を示している。
【0095】
補正情報702の登録の際には、ロボット300を図中軌跡700、701に沿って図中矢印方向へ走行させながら、補正情報(前回自己位置、速度2、角速度2、速度比、角速度比)702をDB425へ登録する。
【0096】
補正情報702は走行中にロボット300から取得した位置情報(図7AのP100からP120、図7BのP200からP260)と各位置における走行状態を登録した情報である。
【0097】
図7Cは補正情報702の一例を示す図である。補正情報702は、凡例7021、位置7022、向き7023、速度7024、速度比7025、角速度比7026及び備考7027をひとつのレコードに含む。
【0098】
凡例7021は、サーバ320が設定した識別子を格納する。位置7022は。ロボット300の位置(x、y)を格納し、向き7023はロボット300の向きθを格納する。
【0099】
速度7024は、エンコーダ302から得られた速度2(ν2)と角速度2(ω2)からなる検索キーを格納する。速度比7025は上記式200で算出された速度2を格納する。角速度比7026は上記式200で算出された角速度ω2を格納する。備考7027は、サーバ320が指定した事項を格納する。
【0100】
補正情報702は、ロボット300の位置7022、向き7023、エンコーダ302から得られた速度2(ν2)、角速度2(ω2)からなる検索キーに対して、速度比7025及び角速度比7026を紐づけて格納する。
【0101】
図示の例では説明の都合上、補正情報702の項目のうち少数しか登録されていないが、実際には、ロボット300を所定の経路に沿って走行させながら秒間30回、ロボットの走行距離に換算して約2、3cm毎に、補正情報702が登録されている。
【0102】
図7A図7Bに示す補正情報(P110、P220、P230、P240)は、ほぼ同じ場所の補正情報であるが、ロボット300の向きや、速度2(ν2)、角速度2(ω2)が異なり、それぞれの状態に応じて補正情報(速度比、角速度比)が登録されている。おおまかには、図中P110は直進時の補正情報を示し、図中P210は減速時の補正情報を示し、図中P220は右回転時の補正情報、図中P240は減速しながら右回転したときの補正情報である。
【0103】
物流倉庫でのロボット300は予め定められた経路上を走行すると考えられる。したがって定められた経路上を走行させながら補正情報702を収集してDB425へ登録することで、エラー発生時のロボット300近傍の補正情報702が確実に得られる。
【0104】
図8は右折等の場合の運動種別毎の補正情報の一例を示す図である。直進や右折等では、ロボット300の運動種別に応じた補正情報702が必要と考えられる。
【0105】
図中軌跡800Lと800Rはロボット300の直進時の左右の車輪303の軌跡である。軌跡801Lと801Rはロボット300の右折時の左右の車輪303の軌跡である。
【0106】
エリア803は、路面の摩擦係数が小さく車輪303が滑りやすい箇所である。図示の例では、ロボットは300、直進時はエリア803の上を通過しないが、右折時は通過する。
【0107】
右折時は、車輪303がスリップしやすくなるため、角速度比(ν1/ν2)が1より幾分小さくなると考えられる。一方、直進時は1に限りなく近い角速度比が得られると考えられる。したがって、ポイント802において、ロボット300の運動種別(直進、右折等)に応じた補正情報702を登録しておくことで、同じ場所であっても、直進や右折といった運動種別や路面の状態に応じて、より高い精度で自己位置を補正できると考えられる。
【0108】
以上のことから、本発明による実施例1において、第1の自己位置がエラーにより得られなかった場合でも、補正情報702を用いて第2の自己位置を補正することで第1の自己位置を算出することができる。その際、同じ場所であっても、ロボット300の位置と姿勢や運動種別(方向、直進、回転)に応じて高い精度で自己位置を算出することができる。
【0109】
なお、上記実施例1では、第1のセンサとしてステレオカメラ301を採用し、第2のセンサとしてオドメトリを採用する例を示したがこれに限定されるものではなく、ロボット300の位置を高精度で検出可能であればよい。例えば、第1のセンサとしてLiDAR(Light Detection And Ranging)を採用し、ロボット300を稼働させる場所が衛星と通信可能な場所であればGNSS(Global Navigation Satellite System)を第2のセンサとしてもよい。
【0110】
また、上記実施例1では、サーバ320で自己位置1の算出と、自己位置補正を実施して、補正後の自己位置1で車輪モータ306を駆動する例を示したが、これに限定されるものではない図示はしないが、地図421、Visual SLAM422、速度2及び角速度2算出部423、データベース425(補正情報702)、自己位置補正部426、経路追従プログラム427、モータ駆動情報配信部424をロボット300で稼働させて自己位置の補正を行うようにしてもよい。
【0111】
また、上記実施例1は、ロボット300が荷物や商品等の物体を搬送する搬送システムに適用することができる。
【実施例0112】
実施例2は、前記実施例1との差分について記す。
【0113】
(1)DB425へ登録する補正情報702として、以下の項目の追加が考えられる。
【0114】
項目「日時」の追加により、最新の補正情報702を選択的に検索できるようになる。また、路面の痛み具合による摩擦係数の経年変化やロボットの経年劣化等に対して、補正が可能になる。
【0115】
項目「加速度」及び「角加速度」の追加により、より細かい運動種別に応じたロボット300の位置の補正が可能になる。
【0116】
項目「積載物の重量」の追加により、ロボット300の重さで車輪303の周長が変わる場合に位置の補正が可能になる。ただし、「積載物の重量」の項目は車輪303が弾性変形する場合に適用可能である。また、車輪303が空気タイヤの場合、項目「車輪の空気圧」の追加により、車輪303の空気圧に応じて車輪303の周長が変化する場合の補正が可能になる。項目「車輪の周長」の追加により、車輪303の摩耗により車輪303の周長が変化する場合の補正が可能になる。
【0117】
項目「車輪のトルク」の追加により、路面の摩擦係数に応じた補正が可能になる。項目「温度」、「湿度」の追加により、路面の湿り具合による補正が可能になる。
【0118】
項目「ロボット固有ID」の追加により、個々のロボット300の癖や特徴に応じた補正が可能になる。
【0119】
(2)前記実施例1の図5の処理504において、前記実施例1では、速度比と角速度比のDB登録フラグを「プログラム実行中に、ある条件に従ってDB登録フラグを「0」又は「1」へ設定してもよい」と記した。DB登録フラグを動的に「1」にする条件について記す。
【0120】
物流倉庫では、作業者の勤務時間外や休憩時間にロボット300を停止させる運用を行う場合がある。そのようなロボット300が搬送作業を行わない時間帯において、DB登録フラグ=1としてロボット300を経路上で走行させてDB425の補正情報702を更新する案が考えられる。
【0121】
Visual SLAM422は、予め作成した地図421を読み込んで、地図421とステレオカメラ301から得られたステレオ画像とを照合して自己位置推定を行う。
【0122】
具体的には、Visual SLAM422が、ステレオ画像から画像特徴点を抽出し、地図421内の特徴点(地図特徴点)と照合することで自己位置推定を行う。その際、ステレオカメラ301から得られた画像特徴点数と地図421内の特徴点数とを比較し、特徴点数に一定数以上の差が生じている場合、環境に変化が生じていると判断し、DB425の補正情報702を更新する案が考えられる。
【0123】
一方、常にDB登録フラグ=1として、常時、速度比、加速度比等の補正情報702を、DB425へ登録し続ける案が考えられる。
【0124】
(3)処理513のDB登録フラグに関し、速度比、角速度比以外に、これらを計算可能な速度1(ν1)、角速度1(ω1)、速度2(ν2)、角速度2(ω2)を格納することも考えられる。データベースの形態として、キーバリューストア型やJSON形等のドキュメント構造を格納する形態も考えられる。また実施例1に示したルールベースの手法だけではなく、位置情報、向き、速度(x、y、θ、ν2、ω2)を入力として速度比、角速度比を機械学習等の手法を用いて算出してもよい。
【0125】
(4)前記実施例1の図5に示した自己位置補正処理520を行う際のユーザへの通知を目的としたロボット300のアクションについて記載する。本アクションは、処理525の直後等、自己位置補正処理520の中で実行される。
【0126】
具体的には、自己位置補正処理520が実行される場合、一定の距離を超えて自己位置補正処理520が継続される場合、ロボット300を停止させる。あるいは、自己位置補正処理520が継続して実行されている間、通常よりも速度を落としてロボット300を走行させる。あるいは、ロボット300の車体のランプ(テールランプやウインカー309等)を点灯、あるいは点滅、点滅パターンを早めたり遅めたりしながら走行させる。あるいは、ホーン310で音を鳴らす、音楽を鳴らしながら走行させる等、考えられる。
【0127】
このように、自己位置補正処理520が頻発する区間では、ロボット300が光や音を発生することで、何らかの異常が発生した可能性を報知することが可能となる。
【0128】
<結び>
以上のように、上記各実施例のロボット制御システムは以下のような構成とすることができる。
【0129】
(1)プロセッサとメモリを有するサーバ(320)が移動ロボット(300)の位置を推定するロボット(300)制御システムであって、前記移動ロボット(300)は、前記移動ロボット(300)の走行状態から第1のセンシング情報(ステレオ画像)を取得する第1のセンサ部(ステレオカメラ301)と、前記第1のセンサ部(301)とは異なるセンサを有して前記移動ロボット(300)の走行状態から第2のセンシング情報(車輪303の回転角)を取得する第2のセンサ部(エンコーダ302)と、を有し、前記サーバ(320)は、前記第1のセンシング情報(ステレオ画像)から得られる第1の位置と当該第1の位置における第1の姿勢(θ)を含む第1の走行状態の情報と、前記第2のセンシング情報(車輪303の回転角)から得られる前記移動ロボット(300)の第2の速度(ν2)及び第2の角速度(ω2)の情報を含む第2の走行状態の情報と、の対応関係を示す対応関係情報(補正情報702)を、前記第1の位置と関連付けて格納する記憶部(DB425)と、前記第1の走行状態の情報及び前記第2の走行状態の情報に基づいて前記移動ロボット(300)の推定位置(補正自己位置)を算出可能な演算部(自己位置補正部426)と、を有し、前記演算部(426)は、前記第1のセンサ部(301)から取得した第1のセンシング情報(ステレオ画像)に基づいて前記第1の位置と前記第1の姿勢(θ)を算出し、前記第1の位置の算出の際にエラーが生じた場合には、前記第2のセンシング情報(車輪303の回転角)から取得した第2の走行状態の情報(速度2、角速度2)と前記対応関係情報(補正情報702)に基づいて前記移動ロボット(300)の推定位置(補正自己位置)を算出することを特徴とするロボット制御システム。
【0130】
上記構成により、自律的に走行する無人搬送車(移動ロボット)が、ステレオカメラ301(第1のセンサ部)のステレオ画像(第1のセンシング情報)から算出した自己位置1(第1の位置)がエラーにより得られなかった場合でも、エンコーダ302(第2のセンサ)の情報から算出した第2の走行状態(速度2、角速度2)と補正情報702(対応関係情報)から第1の位置と同等の精度で自己位置(補正自己位置)を復元することが可能となる。
【0131】
(2)上記(1)に記載のロボット制御システムであって、前記対応関係情報(補正情報702)は、前記第1の位置(自己位置1)における第1の速度(ν1)と前記第2の速度(ν2)の速度比(ν1/ν2)と、前記第1の姿勢(θ)における第1の角速度(ω1)と前記第2の角速度(ω2)の角速度比(ω1/ω2)を含むことを特徴とするロボット制御システム。
【0132】
上記構成により、エンコーダ302から取得した速度2(ν2)と補正情報702に記録された速度比(ν1/ν2)から速度1(ν1)を算出し、エンコーダ302から取得した第2の角速度(ω2)と補正情報702に記録された角速度比(ω1/ω2)から角速度1(ω1)を算出することができ、速度1(ν1)と角速度1(ω1)から補正自己位置(自己位置1)を算出することができる。これにより、ステレオ画像による自己位置1がエラーにより得られなかった場合でも、エンコーダ302から取得した速度2及び角速度2に基づいて補正自己位置を算出し、自己位置1と同等精度の自己位置1(補正自己位置)が復元できる。
【0133】
(3)上記(2)に記載のロボット制御システムであって、前記演算部(自己位置補正部426)は、前記エラーがなく、かつ予め設定された登録情報(DB登録フラグ)が有効(「1」)の場合には、前記第1の速度(ν1)と前記第1の角速度(ω1)を取得し、前記第2の速度(ν2)と前記第2の角速度(ω2)から前記速度比(ν1/ν2)と前記角速度比(ω1/ω2)を算出し、前記第1の位置(自己位置1)と前記第1の姿勢(θ)に対応づけて、前記第2の速度(ν2)と前記第2の角速度(ω2)と前記速度比(ν1/ν2)と角速度比(ω1/ω2)を前記対応関係情報(補正情報702)に登録することを特徴とするロボット制御システム。
【0134】
上記構成により、自己位置補正部426は、自己位置1の算出にエラーがなく、かつ、DB登録フラグが有効な場合には、速度1と角速度1を取得して速度2(ν2)と角速度2(ω2)から速度比(ν1/ν2)と角速度比(ω1/ω2)を自己位置1と第1の姿勢(θ)に対応づけて、対応関係情報(補正情報702)に登録しておくことで、エラー発生時の自己位置1の復元に利用することができる。なお、前回値と現在値の自己位置1の差分から速度1と角速度1を算出してもよい。
【0135】
(4)上記(2)に記載のロボット制御システムであって、前記演算部(自己位置補正部426)は、前記エラーが生じた場合には、前記エラー発生前の前記移動ロボットの前記第1の位置(自己位置1)及び前記第1の姿勢(θ)の情報と、前記第2の速度(ν2)と、前記第2の角速度(ω2)とで前記対応関係情報(補正情報702)を検索し、検索結果から速度比(ν1/ν2)及び角速度比(ω1/ω2)とを取得して、当該取得した速度比(ν1/ν2)及び角速度比(ω1/ω2)と前記第2の速度(ν2)と前記第2の角速度(ω2)とから前記第1の速度(ν1)の推定値及び前記第1の角速度(ω1)の推定値に基づいて、前記移動ロボットの位置及び姿勢を推定位置及び推定姿勢として算出することを特徴とするロボット制御システム。
【0136】
上記構成により、自己位置1の算出にエラーが発生した場合、自己位置補正部426は、前記自己位置1とエンコーダ302の情報から算出した速度2及び角速度2で補正情報702を検索し、検索結果から速度比と角速度比を取得する。そして、自己位置補正部426は速度比と速度2から速度1を算出し、角速度比と角速度2から角速度1を算出し、前記自己位置1と算出された速度1と角速度1から自己位置1と姿勢を算出することができる。
【0137】
(5)上記(4)に記載のロボット制御システムであって、前記演算部(自己位置補正部426)は、前記エラーが生じた場合には、前記演算部(426)の算出した前記推定位置及び前記推定姿勢と、前記推定位置における前記第2の速度(ν2)と、前記推定姿勢における前記第2の角速度(ω2)とで前記対応関係情報(補正情報702)を検索し、検索結果から速度比(ν1/ν2)及び角速度比(ω1/ω2)を取得して、当該取得した速度比(ν1/ν2)及び角速度比(ω1/ω2)と前記推定位置における前記第2の速度(ν2)と前記推定姿勢における前記第2の角速度(ω2)とから前記推定位置における前記第1の速度(ν1)の推定値と前記推定姿勢における前記第1の角速度(ω1)の推定値とを算出し、前記算出された前記推定位置における前記第1の速度(ν1)の推定値及び前記推定姿勢における前記第1の角速度(ω1)の推定値に基づいて、前記移動ロボットの位置及び姿勢を算出することを特徴とするロボット制御システム。
【0138】
上記構成により、自己位置1の算出でエラーが継続して発生した場合、自己位置補正部426は算出した推定位置や推定姿勢を用いることで、エラーが継続中でも継続して移動ロボットの位置及び姿勢の推定を行うことができる。
【0139】
(6)上記(4)に記載のロボット制御システムであって、前記演算部(自己位置補正部426)は、前記対応関係情報(補正情報702)を検索する際に、前記第1の位置(自己位置1)を表す第1のキーで検索を行って、当該検索の結果に対して第1の姿勢(θ)と第2の速度(ν2)と第2の角速度(ω2)を表す第2のキーでさらに検索を行うことを特徴とするロボット制御システム。
【0140】
上記構成により、自己位置補正部426は、第1のキーで大まかに検索した結果に対して、第2の検索キーで絞り込むことで、多数の検索キーを用いてDB検索速度が遅くなるのを抑制することができる。
【0141】
(7)上記(2)に記載のロボット制御システムであって、前記対応関係情報(補正情報702)は、前記第1の位置(自己位置1)と、前記第1の姿勢(θ)と、前記速度比(ν1/ν2)と、前記角速度比(ω1/ω2)を含むことを特徴とするロボット制御システム。
【0142】
上記構成により、対応関係情報(補正情報702)は、第1の位置(自己位置1)と、第1の姿勢(θ)と、速度比(ν1/ν2)と、角速度比(ω1/ω2)を含むことができる。
【0143】
(8)上記(7)に記載のロボット制御システムであって、前記対応関係情報(補正情報702)は、前記第1の位置(自己位置1)と、前記第1の姿勢(θ)と、前記速度比(ν1/ν2)と、前記角速度比(ω1/ω2)に加えて、日時、加速度、角加速度、積載物の重量、車輪の空気圧、車輪の周長、車輪のトルク、温度、湿度、移動ロボット(300)固有IDのうち、少なくともひとつを含むことを特徴とするロボット制御システム。
【0144】
上記構成により、「日時」の追加により、最新の補正情報702を選択的に検索できる。「加速度」及び「角加速度」の追加により、より細かい運動種別に応じたロボット300の位置の補正が可能になる。「積載物の重量」の追加により、ロボット300の重さで車輪303の周長が変わる場合に位置の補正が可能になる。車輪303が空気タイヤの場合、「車輪の空気圧」の追加により、車輪303の空気圧に応じて車輪303の周長が変化する場合の補正が可能になる。「車輪の周長」の追加により、車輪303の摩耗により車輪303の周長が変化する場合の補正が可能になる。「車輪のトルク」の追加により、路面の摩擦係数に応じた補正が可能になる。「温度」、「湿度」の追加により、路面の湿り具合による補正が可能になる。「ロボット固有ID」の追加により、個々のロボット300の癖や特徴に応じた補正が可能になる。
【0145】
(9)上記(1)に記載のロボット制御システムであって、前記演算部(自己位置補正部426)は、前記エラーによって前記第1の位置(自己位置1)が取得できない場合には、前記移動ロボット(300)に設けたランプ(ウインカー309)の点滅、前記移動ロボット(300)に設けたホーン(310)からの音声出力、前記移動ロボット(300)の減速及び停止の少なくともひとつを前記移動ロボット(300)に指令することを特徴とするロボット制御システム。
【0146】
上記構成により、自己位置1の算出でエラーが発生する場合には、ロボット300のウインカー309を点滅させたりホーン310を鳴らしたり車輪モータ306を減速や停止させることで、自己位置1の算出に異常が発生したことを報知することができる。
【0147】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を含むものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
【0148】
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD等の記録装置、又は、ICカード、SDカード、DVD等の記録媒体に置くことができる。
【0149】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【0150】
300 ロボット
302 ステレオカメラ
302 エンコーダ
303 車輪
421 地図
422 Visual SLAM
423 速度2、角速度2算出部
425 データベース
426 自己位置補正部
702 補正情報
図1A
図1B
図2
図3A
図3B
図3C
図4
図5
図6
図7A
図7B
図7C
図8