(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-04-16
(45)【発行日】2025-04-24
(54)【発明の名称】ロボット制御装置、ロボットシステム及びロボット制御方法
(51)【国際特許分類】
G05D 1/43 20240101AFI20250417BHJP
【FI】
G05D1/43
(21)【出願番号】P 2021071236
(22)【出願日】2021-04-20
【審査請求日】2024-02-22
(73)【特許権者】
【識別番号】507250427
【氏名又は名称】日立GEニュークリア・エナジー株式会社
(74)【代理人】
【識別番号】110000279
【氏名又は名称】弁理士法人ウィルフォート国際特許事務所
(72)【発明者】
【氏名】中野 定樹
(72)【発明者】
【氏名】木村 宣隆
(72)【発明者】
【氏名】梁 宰誠
【審査官】大古 健一
(56)【参考文献】
【文献】国際公開第2015/097909(WO,A1)
【文献】米国特許出願公開第2018/0211119(US,A1)
【文献】国際公開第2021/024685(WO,A1)
【文献】国際公開第2017/159620(WO,A1)
【文献】特開2019-168984(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05D 1/00 - 1/87
(57)【特許請求の範囲】
【請求項1】
ロボットによる作業を制御するロボット制御装置であって、
前記ロボットは、このロボットの周囲の領域に存在する物体
を撮像する撮像装置と、前記物体までの距離を測距する測距デバイスと、前記ロボットを作業させる作業部とを有し、
前記ロボット制御装置はプロセッサとメモリとを有し、
前記メモリには、
前記測距デバイスから射出される光が当たる角度によっては認識されたりされなかったりする、自己位置推定結果に影響を及ぼす可能性のある
網状物体を認識するための物体認識情報が格納され、
前記プロセッサは、
前記
撮像装置から出力される撮像信号を受け付け、
受け付けた前記
撮像信号と
、前記物体認識情報とに基づいて前記ロボットの周囲の領域内において前記
網状物体を検出し、
前記測距デバイスから出力される前記ロボットの周囲の領域の
測距信号から、前記
網状物体を検出した領域の
測距信号を除いて自己位置推定を行い、
前記ロボットによる作業を実行させるように前記作業部を制御する
ことを特徴とするロボット制御装置。
【請求項2】
前記
撮像装置は、前記ロボットの周囲の領域を撮像する
RGBカメラを含
み、
前記測距デバイスは、前記ロボットの周囲の領域に対して光線を照射して前記物体からの反射光を検出することでこの物体までの距離を測距するLiDARを含む
ことを特徴とする請求項1に記載のロボット制御装置。
【請求項3】
前記メモリには、前記ロボットの周囲の領域に存在し、前記ロボットの作業空間に存在する前記物体の位置を特定するための位置特定情報が格納される
ことを特徴とする請求項2に記載のロボット制御装置。
【請求項4】
前記作業部は、前記撮像装置による撮像範囲を少なくとも水平方向に回転させる回転機構を有し、
前記撮像装置及び前記測距デバイスは、前記回転機構が付いた回転台に搭載され、
前記プロセッサは、前記撮像範囲内において前記
網状物体が最も映らなくなるように前記回転機構を制御して前記自己位置推定を行う
ことを特徴とする請求項
1に記載のロボット制御装置。
【請求項5】
前記プロセッサは、前記
網状物体を検出した領域の
測距信号をマスキングして自己位置推定を行うことを特徴とする請求項1に記載のロボット制御装置。
【請求項6】
前記物体認識情報は機械学習により生成されることを特徴とする請求項1に記載のロボット制御装置。
【請求項7】
ロボットと、このロボットによる作業を制御するロボット制御装置とを有するロボットシステムであって、
前記ロボットは、このロボットの周囲の領域に存在する物体
を撮像する撮像装置と、前記物体までの距離を測距する測距デバイスと、前記ロボットを作業させる作業部とを有し、
前記ロボット制御装置はプロセッサとメモリとを有し、
前記メモリには、
前記測距デバイスから射出される光が当たる角度によっては認識されたりされなかったりする、自己位置推定結果に影響を及ぼす可能性のある
網状物体を認識するための物体認識情報が格納され、
前記プロセッサは、
前記
撮像装置から出力される撮像信号を受け付け、
受け付けた前記
撮像信号と
、前記物体認識情報とに基づいて前記ロボットの周囲の領域内において前記
網状物体を検出し、
前記測距デバイスから出力される前記ロボットの周囲の領域の
測距信号から、前記
網状物体を検出した領域の
測距信号を除いて自己位置推定を行い、
前記ロボットによる作業を実行させるように前記作業部を制御する
ことを特徴とするロボットシステム。
【請求項8】
ロボットによる作業を制御するロボット制御装置により実行されるロボット制御方法であって、
前記ロボットは、このロボットの周囲の領域に存在する物体
を撮像する撮像装置と、前記物体までの距離を測距する測距デバイスと、前記ロボットを作業させる作業部とを有し、
前記ロボット制御装置はプロセッサとメモリとを有し、
前記メモリには、
前記測距デバイスから射出される光が当たる角度によっては認識されたりされなかったりする、自己位置推定結果に影響を及ぼす可能性のある
網状物体を認識するための物体認識情報が格納され、
前記プロセッサは、
前記
撮像装置から出力される撮像信号を受け付け、
受け付けた前記
撮像信号と
、前記物体認識情報とに基づいて前記
網状物体を検出し、
前記測距デバイスから出力される前記ロボットの周囲の領域の
測距信号から、前記
網状物体を検出した領域の
測距信号を除いて自己位置推定を行い、
前記ロボットによる作業を実行させるように前記作業部を制御する
ことを特徴とするロボット制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボット制御装置、ロボットシステム及びロボット制御方法に関する。
【背景技術】
【0002】
ロボットの作業空間に存在する構造物、障害物等のロボット作業空間内の位置(少なくとも2次元位置)が記述された環境地図データに基づき、カメラやLiDAR(Laser Imaging Detection and Ranging)などの測距デバイスをロボットに搭載し、この測距デバイスを用いて自己位置推定処理を行いながら、オペレータなどがロボット作業空間内において指定された経路に沿ってロボットを動作させるロボット制御装置は既知である。
【0003】
特許文献1には、自己位置推定を行う際、移動物体のマスクを目的とし移動ベクトルから移動物を判定する手法が開示されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上述した特許文献1には、自己位置推定結果に影響を及ぼす物体がロボット作業空間内に存在した場合、この物体の影響をできるだけ除外することについての開示はない。
【0006】
自己位置推定結果に影響を及ぼす物体の一例について、
図8及び
図9を参照して説明する。
【0007】
図8は、自己位置推定結果に影響を及ぼす物体の一例及び自己位置推定結果に及ぼす影響の一例を示す図であり、
図8(a)は物体の上面図、
図8(b)は物体の側面図である。
【0008】
図8(a)、(b)において、601はロボット作業空間内に存在する柱、600はこの柱601の側方を覆う防護ネットである。防護ネット600は柱601から一定の距離を置いて配置された支柱602に巻かれている。
【0009】
このような柱601及び防護ネット600が設けられたロボット作業空間内において、
図8(c)に示すように、ロボット100が自身が有する測距デバイスにより自己位置推定動作を行うと、測距デバイスから射出される光(含むレーザー)は、ロボット100と防護ネット600との相対的位置によって、防護ネット600を透過したりしなかったりする。
【0010】
より詳細に言えば、
図8(c)に示す相対的位置関係において、ロボットの測距デバイスから射出される光は、
図8(c)の下方に位置する防護ネット600を透過して柱601にまで到達し、この柱601により反射されて測距デバイスに戻る。一方、
図8(c)の右側方に位置する防護ネット600はロボット100から見て鋭角であるため、ロボットの測距デバイスから射出される光は、この防護ネット600により反射されて測距デバイスに戻る。つまり、ロボット100は、
図8(c)の右側方に位置する防護ネット600を環境地図データにおける柱601の右側面であると誤認し、自己位置推定動作が正しく行えない可能性が生じる。
【0011】
自己位置推定動作が正しく行えない可能性についてさらに
図9を参照して説明する。
【0012】
自己位置推定処理は、環境地図の特徴的な形状とその相対位置(l,θ)よりロボット100自身の位置を推定する。
図9(a)に示すように、ロボット100の測距デバイスからの光が正しく柱601の隅(図中右下隅)に当たれば、この反射光から得られる柱601の隅とロボット100との相対位置(l,θ)よりロボット100自身の正しい位置を求めることができる。これが自己位置推定の正解値となる。一方、
図9(b)に示すように、ロボット100の測距デバイスからの光が柱601の隅(図中右下隅)ではなく防護ネット600の右側面に当たって反射すると、ロボット100の測距デバイスはこの防護ネット600の右側面を柱601の右側面と誤認し、結果、自己位置推定結果にズレが生じる可能性がある。
【0013】
このように、防護ネット600等、ロボット100との相対的な位置関係により、透けたり、透けなかったりする防護ネット600のような物体がロボットの作業空間内に存在する場合、自己位置推定に誤差を生じる可能性があった。
【0014】
本発明は上記の課題に鑑みてなされたもので、自己位置推定結果に影響を及ぼす可能性がある特定の物体を判定し、その影響を可能な限り除外することが可能なロボット制御装置、ロボットシステム及びロボット制御方法を提供することにある。
【課題を解決するための手段】
【0015】
上記課題を解決すべく、本発明の一つの観点に従うロボット制御装置は、ロボットによる作業を制御するロボット制御装置であって、ロボットは、このロボットの周囲の領域に存在する物体を撮像する撮像装置と、前記物体までの距離を測距する測距デバイスと、ロボットを作業させる作業部とを有し、ロボット制御装置はプロセッサとメモリとを有し、メモリには、前記測距デバイスから射出される光が当たる角度によっては認識されたりされなかったりする、自己位置推定結果に影響を及ぼす可能性のある網状物体を認識するための物体認識情報が格納され、プロセッサは、撮像装置から出力される撮像信号を受け付け、受け付けた撮像信号と、物体認識情報とに基づいてロボットの周囲の領域内において網状物体を検出し、測距デバイスから出力されるロボットの周囲の領域の測距信号から、網状物体を検出した領域の測距信号を除いて自己位置推定を行い、ロボットによる作業を実行させるように前記作業部を制御することを特徴とする。
【発明の効果】
【0016】
本発明によれば、自己位置推定結果に影響を及ぼす可能性がある特定の物体を判定し、その影響を可能な限り除外することが可能なロボット制御装置、ロボットシステム及びロボット制御方法を実現することができる。
【図面の簡単な説明】
【0017】
【
図1】実施例1に係るロボットシステムの概要を示す図である。
【
図2】実施例1に係るロボットシステムに用いられるロボットを示す斜視図である。
【
図3】実施例1に係るロボットシステムの機能構成を示す図である。
【
図4】実施例1に係るロボット制御装置における機械学習器及び物体検出器を示す図である。
【
図5】実施例1に係るロボット制御装置における回転台制御動作の一例を示す図である。
【
図6】実施例1に係るロボット制御装置における回転台制御動作の一例を示す図である。
【
図7】実施例2に係るロボット制御装置におけるマスキング動作の一例を説明するための図である。
【
図8】一般的なロボット制御装置における自己位置推定動作の一例を示す図である。
【
図9】一般的なロボット制御装置における自己位置推定動作の一例を示す図である。
【発明を実施するための形態】
【0018】
以下、本発明の実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0019】
なお、実施例を説明する図において、同一の機能を有する箇所には同一の符号を付し、その繰り返しの説明は省略する。
【0020】
また、以下の説明では、情報の一例として「xxxデータ」といった表現を用いる場合があるが、情報のデータ構造はどのようなものでもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxxデータ」を「xxxテーブル」と言うことができる。さらに、「xxxデータ」を単に「xxx」と言うこともある。そして、以下の説明において、各情報の構成は一例であり、情報を分割して保持したり、結合して保持したりしても良い。
【0021】
なお、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インターフェースデバイス(例えばポート)を用いながら行うため、処理の主語がプログラムとされても良い。プログラムを主語として説明された処理は、プロセッサ或いはそのプロセッサを有する計算機が行う処理としても良い。
【0022】
本実施形態のロボット制御装置は、一例として以下のような構成を有する。
【0023】
既に説明したように、ロボットの作業空間内に存在する柱の周辺に防護ネットが貼られている箇所があり、その近傍をロボットが通過する時、自己位置推定の「飛び」が発生することがある。これは、ロボットの位置や測距デバイスから射出される光が柱及び防護ネットに当たる角度によっては、防護ネットが測距デバイスにより認識されたりされなかったりするためであると推測できる。
【0024】
そこで、本実施形態のロボット制御装置は、防護ネットに代表される網状の物体を含むロボット近傍の特定の物体を検出し、それを避ける方向へLiDARセンサを向け自己位置推定する。
【0025】
より詳細には、本実施形態のロボット制御装置は、360度回転機構のついた単眼カメラとLiDARセンサをロボットに搭載し、単眼カメラを回転させながら特定の物体をYOLO(You Only Look Once)等の物体認識器で認識させる(あらかじめ学習させておく)。そして、上記認識物体がない方向へLiDARセンサを向けて自己位置推定を行う。
【0026】
また、LiDARセンサを向ける以外の手法として、LiDARセンサの計測エリアと物体認識により得られるバウンディングボックスとが一致する領域のセンシング結果を無視した上で自己位置推定を行うこともできる。
【0027】
上述した手法は、網状物体(防護ネット、グレーチング、手すり)、反射物体(金属むき出しのダクト、グレーチング、搬入機材、他のロボット)、黒色物体(黒い壁)などLiDARセンサが不得意とする物体に対しても適用が可能である。
【0028】
本実施形態のロボット制御装置によれば、自己位置推定失敗の原因となる特定の物体を識別器により検出することで、当該物体を含む領域を除いて自己位置推定を行うことができ、自己位置推定の失敗を防ぐことができる。
【実施例1】
【0029】
図1~
図6を参照して、実施例1に係るロボットシステムについて説明する。
図1は、実施例1に係るロボットシステムの全体構成を示す図である。
【0030】
本実施例のロボットシステムは、主に、ロボット100と、サーバ(ロボット制御装置)101と、WIFI(登録商標)ルータ104と、ディスプレイ102と、キーボード、ジョイスティックを含む入力装置103とから構成される。
【0031】
サーバ101は、各種情報処理が可能な装置、一例としてコンピュータ等の情報処理装置である。サーバ101は、CPUに代表されるプロセッサ101a及びメモリ101bを有し、さらに、ストレージ101c、ネットワーク101d及び電源101eを有する。
【0032】
プロセッサ101aは、例えばCPU(Central Processing Unit)、GPU(Graphics Processing Unit)、FPGA(Field-Programmable Gate Array)等である。メモリ101bは、例えばHDD(Hard Disk Drive)などの磁気記憶媒体、RAM(Random Access Memory)、ROM(Read Only Memory)、SSD(Solid State Drive)などの半導体記憶媒体等を有する。また、DVD(Digital Versatile Disk)等の光ディスク及び光ディスクドライブの組み合わせもメモリとして用いられる。その他、磁気テープメディアなどの公知の記憶媒体もメモリとして用いられる。
【0033】
メモリ101bには、ファームウェアなどのプログラムが格納されている。サーバ101の動作開始時(例えば電源投入時)にファームウェア等のプログラムをこのメモリから読み出して実行し、サーバ101の全体制御を行う。また、メモリ101bには、プログラム以外にも、サーバ101の各処理に必要なデータ等が格納されている。メモリ101bに格納されているプログラムの詳細については、
図3を参照して後述する。
【0034】
ディスプレイ102は、サーバ101から送出される表示制御信号に基づいて所定の画面を表示する。入力装置103は、サーバ101のオペレータ(図略)からの入力指示動作に基づいて入力指示信号をサーバ101に送出する。WIFIルータ104は、サーバ101のネットワーク101dと連携して、サーバ101とその周辺機器との間の通信を行う。
【0035】
なお、本実施例のサーバ101は、複数の情報処理装置が通信ネットワークを介して通信可能に構成された、いわゆるクラウドにより構成されてもよい。
【0036】
ロボット100は、PC105、LiDARセンサ100a、回転台100b、クローラ100c、アーム100d、RGBカメラ(撮像装置)100e、バッテリー100f、及びモータ駆動回路100gを有する。
【0037】
PC105は、サーバ101と同様に、各種情報処理が可能な装置、一例としてコンピュータ等の情報処理装置である。PC105は、CPUに代表されるプロセッサ105a及びメモリ105bを有し、さらに、ストレージ105c、ネットワーク105d及び電源105eを有する。PC105を構成する各種構成要素はサーバ101のそれと同様であるので、ここでの説明は省略する。
【0038】
ロボット100を構成するPC105以外の構成要素のうち、モータ駆動回路100g以外の詳細な構成は、
図2を参照して後述する。
【0039】
モータ駆動回路100gは、回転台100b、クローラ100c、アーム100dに搭載されている図略のモータやサーボモータの駆動を行う回路である。また、LiDARセンサ100aとRGBカメラ100eは回転台100bの上に載っており、それぞれ独立に向きを変えることができる。
【0040】
PC105及びサーバ101上では、Linux(登録商標)OSが稼働しており(
図3参照)、OSの制御の下、TCP/IPベースのWiFiネットワークでPC105及びサーバ101が相互に接続されている。
【0041】
図2は、本実施形態のロボットシステムに用いられるロボット200の外観を示す斜視図である。
【0042】
ロボット200は、ロボット筐体210の左右にクローラ211を備え、ロボット筐体210の上部にロボットアーム220と回転台212とを備える。回転台212の上部にはLiDARセンサ213とRGBカメラ214とが搭載されている。また、ロボット筐体210の内部には、
図1で説明したPC105、バッテリー100f及びモータ駆動回路100g(
図2において図略)が搭載されている。
【0043】
LiDARセンサ213は、車体後方(
図2において「back」と記載されている方向)から後ろ向き(
図2において右斜め下方)にレーザを照射するように(測距可能なように)設置されている。LiDARセンサ213は、一例として左右210度、上下40度の範囲の測距が可能である。
【0044】
LiDARセンサ213及びRGBカメラ214は、回転機構(図略)の付いた回転台212の上に搭載されており、これらLiDARセンサ213及びRGBカメラ214の向きを変えることができ、より広範囲の計測が可能になっている。
【0045】
LiDARセンサ213は、一例として、製品名で北陽電機UST-10/20LXのような2次元で空間をスキャンするセンサや、同様に製品名で北陽電機YVT35-LXのような3次元LiDARと呼ばれるもの(3次元スキャン)が存在し、いずれのLiDARセンサであっても本実施例のロボットシステムに適用可能である。類似の測距デバイスとして、レーザではなく赤外線を使ったもの(Microsoft(登録商標) Kinect(登録商標)2)などがあり、赤外線を用いた測距デバイスであっても本実施形態のロボットシステムに適用可能である。
【0046】
図3は、本実施形態のロボットシステムのソフトウェア構成を示す図である。
図3では、1台のロボットと1台のサーバとでロボットシステムが構成される例を用いて説明する。
【0047】
図3において、300はロボットに搭載されるソフトウェアであり、301はサーバに搭載されるソフトウェアである。本実施例のロボットシステムでは、ロボット、サーバ共に、Linux OSと、このLinux OS上で動作するロボット制御用ミドルウェア(ROS:Robot Operating System)(まとめて符号310で示す)により全体動作が管理されている。
【0048】
ROSを用いた(ROS上で動作する)各プログラムは、トピックと呼ばれる名前付きのデータを送受信し合うことで処理を行う。具体的には、プログラムの入力データをトピックとして受け取り、処理結果をトピックとして出力する。プログラム間は相互にトピックの送受信を繰り返す。ROSは分散処理のアーキテクチャを採用している。
【0049】
ロボット上では、LiDARセンサデータ送信プログラム311、回転台駆動プログラム312、クローラ駆動プログラム313、アーム駆動プログラム314、及びRGBカメラ画像配信プログラム315が動作している。また、サーバ上では、点群地図配信プログラム320、自己位置推定プログラム321、回転台制御プログラム322、経路生成プログラム323、クローラ制御プログラム324、アーム制御プログラム325、物体検出器326、及び画面表示プログラム327が動作している。
【0050】
点群地図配信プログラム320は、入力データとしてファイルに格納された点群地図(
図3において図略、サーバ101のメモリ101bに格納されている)を用い、点群地図を出力トピックとして出力する。点群地図配信プログラム320は、ファイルより与えられたロボット作業空間の点群地図を読み込み、自己位置推定プログラム321に配信する。ここで、点群地図とは、無数の点(x,y,z)で示される点群により構成された地図である。
【0051】
自己位置推定プログラム321は、入力トピックとして点群地図及びLiDARセンサの計測データを用い、ロボットの位置と姿勢とを出力トピックとして出力する。自己位置推定プログラム321は自己位置推定処理を行う。自己位置推定処理は、点群地図と、LiDARセンサからの計測データ(点群)とを、スキャンマッチングと呼ばれる手法を用いて照合することで行う。スキャンマッチングアルゴリズムとしては、NDT(Normal Distributions Transform)、ICP(Iterative Closest Point)等、公知のアルゴリズムが好適に用いられる。自己位置推定プログラム321の出力トピックであるロボットの位置と姿勢は、位置(x,y,z)と、クォータニオンと呼ばれる姿勢パラメータ(qx,qy,qz、qw)とからなる、7つのパラメータで表現される。
【0052】
回転台制御プログラム322は、入力トピックとして後述する物体検出器326の出力トピックである物体検出結果を用い、ロボットの回転台の向きを出力トピックとして出力する。回転台制御プログラム322は、物体検出器326の出力トピックである物体検出結果から、物体が映らない、あるいは、もっとも物体の映る面積が小さいくなる回転台の向きを求め配信する。回転台制御プログラム322の動作の詳細については
図5及び
図6を参照して後述する。
【0053】
経路生成プログラム323は、入力トピックとして点群地図、及び自己位置推定プログラム321の出力トピックであるロボットの位置と姿勢を用いる。また、経路生成プログラム323は、サーバに接続された入力装置(マウス)をオペレータが操作する(クリックする)ことにより入力される目的地も入力データとする。また、経路生成プログラム323は、現在位置から目的地までの経路(10cm間隔の点のリスト)を出力トピックとして出力する。
【0054】
経路生成プログラム323は、サーバのオペレータがマウスをクリックする等の操作を行うことにより指定された、点群地図上でのロボットの目的地が入力されると、現在位置から目的地までの経路を10cm間隔の点でつないだリストとして出力する。この際、経路生成プログラム323は、点群地図上、点が密集している場所をロボットが通行不能な障害物(壁)とみなす。そして、経路生成プログラム323は、障害物がない空間を対象に、ダイクストラ法、エースター法などの既知のアルゴリズムを用い経路を求める。経路生成プログラム323の動作は既知のものであるので、これ以上の詳細な説明は省略する。
【0055】
クローラ制御プログラム324は、入力トピックとして経路生成プログラム323の出力トピックである経路と、自己位置推定プログラム321の出力トピックであるロボットの位置と姿勢とを用い、ロボットの移動量と回転角度とを出力トピックとして出力する。クローラ制御プログラム324は、現在のロボットの位置・姿勢から経路上の次の点に向かわせるために必要な移動量と回転角度を求める。クローラ制御プログラム324の動作は既知のものであるので、これ以上の詳細な説明は省略する。
【0056】
アーム制御プログラム325は、サーバに接続されたジョイスティック等の入力装置からの操作入力を受け入れ、ロボットのアームの関節の回転角を出力トピックとして出力する。アーム制御プログラム325は、ジョイスティック等の入力デバイスからの操作入力に基づいて、アームの関節の角度を指定する。アーム制御プログラム325の動作は既知のものであるので、これ以上の詳細な説明は省略する。
【0057】
物体検出器326は、RGBカメラにより撮像された結果出力される画像信号を受け入れ、物体検出結果を出力トピックとして出力する。物体検出器326は、RGBカメラから出力された画像信号に基づいて、RGBカメラの画像内に映っている特定の物体を検出し、物体検出結果を出力する。物体検出器326により検出する特定の物体については予め学習させておく。物体検出器326の動作の詳細については、
図4を参照して後述する。
【0058】
画面表示プログラム327は、入力トピックとして点群地図、ロボットの位置・姿勢、経路、回転台の向き、RGBカメラの画像、物体検出結果を用いる。画面表示プログラム327は、サーバに接続されたディスプレイの画面に、点群地図、ロボットの位置・姿勢、経路、回転台の向き、RGBカメラの画像、物体検出結果などの情報を重畳表示させる。
【0059】
LiDARセンサデータ送信プログラム311は、ロボットに搭載されているLiDARセンサにより計測されたデータを取得し、この計測データを出力トピックとして出力する。
【0060】
回転台駆動プログラム312は、入力トピックとして回転台制御プログラム322の出力トピックである回転台の向きを用い、この回転台の向きに基づいて回転台を回転させる。
【0061】
クローラ駆動プログラム313は、入力トピックとしてクローラ制御プログラム324の出力トピックであるロボットの移動量と回転角度とを用い、ロボットの移動量と回転角度を左右のクローラの回転量に変換して左右のクローラを回転させる。
【0062】
アーム駆動プログラム314は、入力トピックとしてアーム制御プログラム325の出力トピックであるアームの関節の回転角を用い、指定されたアームの関節の回転角となるようにアームの関節を回転させる。
【0063】
RGBカメラ画像配信プログラム315は、ロボットに搭載されたRGBカメラから画像信号を取得し、出力トピックとしてこの画像信号を出力する。
【0064】
図4は、本実施例のロボットシステムにおける物体検出器326に入力される機械学習結果の生成方法を説明するための図である。
【0065】
学習用画像410とアノテーション情報411のペアを数百~数万枚用意し、機械学習器400にて機械学習を行い、学習結果420を得る。学習用画像410は、本実施形態の物体検出器326において検出すべき特定の物体が少なくとも一部に含まれる画像であり、アノテーション情報は、学習用画像410においてどの位置に特定の物体が映り込んでいるかを示す情報である。
【0066】
検出すべき特定の物体は事前に決定しておくことが好ましい。本実施例では特定の物体として防護ネット600を用いている。それ以外に、特定の物体の一例として、網状物体(防護ネット、グレーチング、手すり)、反射物体(金属むき出しのダクト、グレーチング、搬入機材、他のロボット)、黒色物体(黒い壁)などLiDARセンサ213が不得意とする物体が挙げられる。
【0067】
そして、物体検出器326に学習結果420をセットし、RGBカメラから得られたRGB画像430を入力すると、物体検出結果(物体の領域)440を得ることができる。
【0068】
ここで、機械学習器400及び物体検出器326には、Yolo、SSD(Single Shot MultiBox Detector)等のOSS(Open Source Software)が好適に採用可能である。
【0069】
次に、
図5及び
図6を参照して、回転台制御プログラム322の動作について説明する。
【0070】
回転台制御プログラム322は、
図5(b)に示すように、物体検出率ratioを求める(520)。物体検出率ratioの求め方については後述する。次に、回転台制御プログラム322は、520で求めた物体検出率ratioがある閾値以上であるか否かを判定する(511)。閾値は適宜決定されればよいが、物体検出器326により検出された特定の物体がLiDARセンサ213による測距結果に影響を及ぼすことが予想される位置にこの特定の物体が存在することがRGBカメラ214の画像から推測される(つまりロボット100と特定の物体との相対的位置関係から推測される)ことが判別できる閾値であることが好ましい。
【0071】
そして、判定の結果、物体検出率ratioが閾値以上であると判定されたら(511においてYES)、以降の制御が必要であると判断して530に進み、物体検出率ratioが閾値を下回ると判定されたら(511においてNO)、以降の制御は不要であるとして520に戻り、引き続き物体検出率ratioを求める処理を継続する。530において、回転台制御プログラム322は回転台駆動処理を行う。
【0072】
回転台制御プログラム322による物体検出率ratioの算出手順について
図5(c)を参照して説明する。
【0073】
まず、回転台制御プログラム322は、RGBカメラ214からの画像を得る(521)。次に、回転台制御プログラム322は、物体検出器326から物体検出結果を得る(522)。一例として、
図5(a)に示すように、RGBカメラ214から出力された画像500に基づいて、物体検出器326からの物体検出結果501が出力されたものとする。
図5(a)に示す例では、RGBカメラ214からの画像中に、特定の物体である防護ネット600が映り込んでいる。
【0074】
次いで、回転台制御プログラム322は、次式に基づいて物体検出率ratioを算出する(523)。
物体検出率ratio=物体検出領域の画素数/RGBカメラ214の画像の画素数
【0075】
図6を参照して、回転台制御プログラム322による回転台駆動処理を説明する。
【0076】
本実施形態では、回転台212の回転範囲が-90度~90度であると仮定する。まず、回転台制御プログラム322は、回転台212の回転角度iの初期値、物体検出率ratioの最小値min_ratio及びその時の回転台212の回転角度min_iを設定する(531)。これ以降、回転台212の回転角度を変数iとして -90度~90度まで1度刻みで回転させ、各回転角度における物体検出率ratioを求める。
【0077】
回転台制御プログラム322は、変数iが90度以下であるかを判定する(532)。その結果、変数iが90度以下であれば(532においてYES)533に進み、変数iが90度を超えたら(532においてNO)538に進む。
【0078】
533では、回転台制御プログラム322が回転台212の回転角度を変数iにセットする。次いで、回転台制御プログラム322は、
図5(c)に示す手順により物体検出率ratioを求める(534)。
【0079】
次いで、回転台制御プログラム322は、534で求めた物体検出率ratioが最小値min_ratioを下回るか否かを判定する(535)。そして、判定の結果、物体検出率ratioが最小値min_ratioを下回ると判定したら(535においてYES)536に進み、物体検出率ratioが最小値min_ratio以上であると判定したら(535においてNO)537に進む。536では、最小値min_ratioの値を534で求めた物体検出率ratioに書き換え、回転角度min_iの値をその時の回転角iに書き換える。
【0080】
537では回転台212の回転角度iを1度だけ増加させ、その後、532に戻って以降の処理を繰り返す。
【0081】
一方、538では回転台212の回転角度をmin_iに設定する。これにより、物体検出率ratioが最小min_ratioの時の回転角度min_iに回転台212を回転させることができ、LiDARセンサ213による測距動作において特定の物体による影響を極小にする方向にLiDARセンサ213を向けることができる。
【0082】
以上詳細に説明したように、本実施形態のロボットシステムによれば、自己位置推定結果に影響を及ぼす可能性がある特定の物体を判定し、その影響を可能な限り除外することが可能となる。
【実施例2】
【0083】
本実施例のロボットシステムでは、LiDARセンサ213の測距結果から、物体検出器326により検出された特定の物体が存在する領域を除外(マスキング)することで、特定の物体による影響を極小にするものである。
【0084】
物体検出器326は、
図7(a)に示すように、RGBカメラ214の画像500に基づいて特定の物体を検出した物体検出結果501を出力したものとする。また、LiDARセンサ213からは、
図7(b)に示すような計測点群700が測距結果として得られたものとする。
【0085】
自己位置推定プログラム321は、これら物体検出結果501及び計測点群700に基づいて、特定の物体が検出された領域の計測点群700をマスキング(除去)した点群701を作成し、この点群701に基づいて自己位置推定動作を行う。
【0086】
従って、本実施例によっても、自己位置推定結果に影響を及ぼす可能性がある特定の物体を判定し、その影響を可能な限り除外することが可能となる。
【0087】
なお、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
【0088】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD-ROM、DVD-ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD-R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
【0089】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Java(登録商標)、Python等の広範囲のプログラムまたはスクリプト言語で実装できる。
【0090】
さらに、各実施例の機能を実現するソフトウェアのプログラムコードのすべてまたは一部は、予めメモリ101bに格納されていてもよいし、必要に応じて、ネットワークに接続された他の装置の非一時的記憶装置から、またはサーバ101が備える図略の外部I/Fを介して、非一時的な記憶媒体から、メモリ101bに格納されてもよい。
【0091】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段またはCD-RW、CD-R等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【0092】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【符号の説明】
【0093】
100、200…ロボット 100a、213…LiDARセンサ 100b、212…回転台 100e、214…RGBカメラ 101…サーバ 101a…プロセッサ 101b…メモリ 311…LiDARセンサデータ送信プログラム 312…回転台駆動プログラム 313…クローラ駆動プログラム 314…アーム駆動プログラム 315…RGBカメラ画像配信プログラム 320…点群地図配信プログラム 321…自己位置推定プログラム 322…回転台制御プログラム 323…経路生成プログラム 324…クローラ制御プログラム 325…アーム制御プログラム 326…物体検出器 327…画面表示プログラム 400…機械学習器 600…防護ネット 601…柱