JP7393217B2 - ロボットシステムおよびその位置推定方法 - Google Patents

ロボットシステムおよびその位置推定方法 Download PDF

Info

Publication number
JP7393217B2
JP7393217B2 JP2020007365A JP2020007365A JP7393217B2 JP 7393217 B2 JP7393217 B2 JP 7393217B2 JP 2020007365 A JP2020007365 A JP 2020007365A JP 2020007365 A JP2020007365 A JP 2020007365A JP 7393217 B2 JP7393217 B2 JP 7393217B2
Authority
JP
Japan
Prior art keywords
robot
reflection rate
sensor
irradiation
robot system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020007365A
Other languages
English (en)
Other versions
JP2021114222A (ja
Inventor
定樹 中野
宣隆 木村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi GE Nuclear Energy Ltd
Original Assignee
Hitachi GE Nuclear Energy Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi GE Nuclear Energy Ltd filed Critical Hitachi GE Nuclear Energy Ltd
Priority to JP2020007365A priority Critical patent/JP7393217B2/ja
Publication of JP2021114222A publication Critical patent/JP2021114222A/ja
Application granted granted Critical
Publication of JP7393217B2 publication Critical patent/JP7393217B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)

Description

本発明は、移動体(以下、ロボットと称する)の位置を推定するロボット位置推定技術に関する。その中でも特に、ロボット位置推定のために、ロボットのセンサにおける照射等(含むスキャン)する方向を算出する技術に関する。なお、その位置の推定には、姿勢の推定を含む。
現在、人手不足や危険地帯など人での作業が困難な場所での作業を行うため、ロボットを利用することがなされている。この場合、ロボットが地図情報を参照して自身の自己位置を推定しながら、移動を制御する技術が提案されている。この技術の一例として、特許文献1が提案されている。
特許文献1には、ロボットの姿勢同定と地図生成を同時に行う場合の負荷増加を課題とする技術が開示されている。具体的には、「地図データを有するコントローラと移動するロボットから構成されるロボットシステムであって、前記ロボットは周囲の物体との距離を複数計測する距離センサと、前記地図データと照合することで前記ロボットの位置と角度を同定する同定装置を備え、前記コントローラは前記ロボットの位置と角度、及び、計測した前記距離を基に、前記地図データを生成又は更新する地図生成装置を備える」ロボットシステムが開示されている。
特開2009-93308号公報
ここで、ロボットの位置推定おいては、地図情報と推定の際の検知情報(センサから得られた周囲形状)をマッチングした結果を用いることになる(例えば、スキャンマッチング手法)。このため、検知情報にノイズが含まれる場合、正確な位置推定ができないとの課題が生じる。ノイズとしては、例えば、地図作成の際に存在しないオブジェクト(物体)がある。さらに、ロボットの動作においては、複数のロボットが連動して動作することがある。この場合、他のロボットが検知されると、ノイズとなり正確な位置推定ができないおそれがある。
ここで、特許文献1では、センサを有する複数のロボットを用いて検知した結果と地図を用いて、ロボットの位置、角度、地図データを生成するロボットシステムが開示されている。この場合、1つのロボットのセンサで他のロボットが検知されてしまい、センシングができない場所が発生し、位置推定の精度が下がってしまうという課題が生じる。
上記の課題を解決するために、本発明では、他のロボット等のオブジェクトが映り込む確率を示す映り込み率が低い方向に向けて、ロボットの位置推定のための照射処理を実行する。なお、この際、映り込み率が低い方向については、オブジェクトの位置情報を用いて、照射角度を所定角度ずつずらしたシミュレーションを実行して映り込み率を算出することが好適である。
より具体的な本発明の構成は、以下のとおりである。
複数のロボットが連携することで、所定の機能を実行するロボットシステムにおいて、
センサを有する第1のロボット、第2のロボットおよび、前記第1のロボットおよび前記第2のロボットと通信回線を介して接続されるサーバを有し、前記サーバが、地図情報と前記センサで検知された検知情報を照合して、前記第1および第2のロボットの位置を推定する位置推定部と、前記第1のロボットおよび前記第2のロボットの位置関係を示す位置関係情報を用いて、前記第2のロボットが前記第1のロボットのセンサの照射範囲で映り込む確率を示す映り込み率を算出し、算出された前記映り込み率に応じて、前記第1のロボットのセンサを向けようとする照射方向を特定するセンサ方向制御部とを有する。
本発明でのロボット(移動体)には、狭義のロボット以外も含まれる。例えば、自動運転ないし運転支援で制御される車両、飛行物体、船舶が含まれ、これらの隊列制御への適用も可能である。車両については、トラック、バスなどが含まれる。
また、ロボットの位置推定には、ロボットでの自己位置推定が含まれる。
本発明によれば、ノイズの影響を低減したより精度の高いロボットの位置推定を実現可能である。
実施例1における全体システム構成を示す図 実施例1で用いられるロボットの外観を示す図 実施例1で用いられるロボットのソフトウェア構成を示す図 実施例1での映り込み率の算出を説明するための図 実施例1における最小映り込み率角度を求めるフローチャート 実施例1におけるロボットの照射範囲を説明する図 実施例2におけるロボットの移動経路を説明する図 実施例1の全体の処理シーケンス図 実施例2の処理を示すフローチャート
以下、本発明の実施例1について説明する。
まず、図1を用いて、本実施例の全体システム構成を説明する。本実施例では、ロボット100が、無線ルータ120を介して、サーバ110と接続されている。ここで、ロボット100は「×3」、つまり、3台など複数存在し、これらが連携して、所定の動作を実行する。例えば、あるロボット100が他のロボット100と連携し、サーバ110からの指示に従い、または、サーバ110へ動作状況を報告しながら動作する。動作の具体的な例は、後述する。
ここで、全体システムの各構成を説明する。ロボット100は、LiDAR(Light Detection and Ranging、Laser Imaging Detection and Ranging)センサ101、回転台102、クローラ103、アーム104、ステレオカメラ105、モータ駆動回路106およびPC107を有する。LiDARセンサ101は、ロボット位置推定のために一定の幅を有する照射範囲で照射を実行し、計測データを取得する。照射範囲は、2次元でも3次元でも構わない。また、LiDARセンサ101(レーダ)の代わりに、赤外線を用いたり、ステレオカメラを用いてもよい。
回転台102は、LiDARセンサ101を搭載し、その照射方向を変更するために回転する機能を有する。クローラ103は、無限軌道とも呼ばれ、ロボット100を移動するものである。なお、クローラ103の代わりに車輪や移動用アーム(脚)を用いてもよい。
アーム104は、ロボット100が物体を移動させるために用いるものである。ステレオカメラ105は、障害物の検知を行ったり、他のロボット100の移動のために画像を撮影するものである。ここで、図2で後述するように、各ロボット100は、アーム104およびステレオカメラ105のいずれか一方を備える構成としてもよい。
モータ駆動回路106は、回転台102、クローラ103、アーム104に搭載されるモータ(例えば、サーボモータ)を駆動させるための回路であり、PC107からの制御信号に従ってこれらの動作を制御する。
PC107は、サーバ110と通信し、当該ロボット100の制御を行ったり、ロボット100での動作状況を通信する機能を有する。このために、PC107は、CPU1071、メモリ1072、ストレージ1073、ネットワーク通信部1074および電源1075を有する。つまり、PC107は、いわゆるコンピュータで実現されるもので、メモリ1072に格納されるプログラムに従った演算をCPU1071で実行して、各機能を実行する。バッテリー108は、ロボット100の電源となるもので、充電式か否かは問わない。
サーバ110は、いわゆるコンピュータで実現されるもので、CPU111、メモリ112、ストレージ113、ネットワーク通信部114および電源115を有する。そして、サーバ110は、いわゆるコンピュータで実現されるもので、メモリ112に格納されるプログラムに従った演算をCPU111で実行して、上述したロボット100を制御するための各機能を実行する。
無線ルータ120は、サーバ110とロボット100(PC107)を無線通信回線で接続する機能を有する。無線ルータ120は、通信機能を有すればよく、通信回線における通信形式は問わない。この場合、有線通信であってもよい。なお、通信経路は、TCP/IPベースとすることが好適である。
ディスプレイ130は、サーバ110と接続され、サーバ110からの情報を表示する。ディスプレイ130で表示される情報としては、ロボット100のステレオカメラ105の画像やロボット100の動作状況が含まれる。入力デバイス140は、操作者がサーバ110に対する入力を受け付けるもので、キーボード、マウス、Joystickなどで実現される。入力デバイス140からの入力により、ロボット100の動作を制御可能である。なお、ディスプレイ130と入力デバイス140は、端末装置として実現してもよい。
次に、図2を用いて、ロボット100の外観を説明する。ここでは、アームロボット100-1とカメラロボット100-2を例に説明する。
アームロボット100-1は、LiDARセンサ101-1、回転台102-1、クローラ103-1、アーム104-1およびロボット筐体109-1を有する。ここで、ロボット筐体109-1の左右にクローラ103-1、上部にアーム104-1と回転台102-1とその上にLiDARセンサ101-1を搭載する。
また、LiDARセンサ101-1は車体後方、後ろ向きにレーザを照射するように(測距可能なように)設置されている。さらに、LiDARセンサ101-1は左右80度、合計約160度の範囲など一定の照射範囲の測距が可能である。またさらに、LiDARセンサ101-1は回転機構の付いた回転台102-1の上に搭載されているので、LiDARセンサ101-1の向きを変えることができ、上述の照射範囲より広範囲の計測が可能になっている。
なお、LiDARセンサ101-1、回転台102-1、クローラ103-1、アーム104-1の機能は図1で説明した構成と同じであるため、その説明を省略する。そして、ロボット筐体109-1内に、モータ駆動回路106、PC107、バッテリー108を保持している。
カメラロボット100-2は、LiDARセンサ101-2、回転台102-2、クローラ103-2、ステレオカメラ105-2およびロボット筐体109-2を有する。つまり、アームロボット100-1と比較して、アーム104-1の代わりに、ステレオカメラ105-2が設けられている。このステレオカメラ105-2は、カメラロボット100-2の車体前方、前向きに取り付けられおり、ステレオ視による周囲の3次元点群の取得や、物体の3次元測量が可能である。なお、その他機能は、図1およびアームロボット100-1の各構成と同じであるため、その機能の説明は省略する。
ここで、アームロボット100-1とカメラロボット100-2とは、互いに連携し、動作する。つまり、カメラロボット100-2のステレオカメラ105-2で撮像した画像に基づき、アームロボット100-1のアーム104-1に搭載されているモータ(例えば、サーボモータ)を駆動し、画像内の物体を掴む等の動作を行う。ロボットの位置関係により、自身のLiDARセンサに他のロボットが映りこんでしまうと、それがノイズとなりロボットの正確な位置推定ができなくなるおそれがある。例えば、アームロボット100-1がカメラロボット100-2の前方に位置している場面では、アームロボット100-1のLiDARセンサ101-1の照射方向を、アームロボット100-1の位置およびカメラロボット100-2の位置情報に基づいて、カメラロボット100-2の映り込み率に従った制御を行う。
これら各ロボットおよびサーバ110の機能の詳細について、引き続き図3を用いて説明する。なお、ここでは、図1と同様に、ロボットをアームロボット100-1とカメラロボット100-2に区別しない形で説明する。また、本実施例では、3台のロボット100とサーバ110で構成されるシステムを例に説明する。
ここで、各ロボット100とサーバ110は、それぞれ図示した各種プログラムを有する。これら各プログラムは、OS/ミドルウェア300、310上で演算を行う。また、本実施例では、ミドルウェアとして、ロボット制御用ミドルウェア(ROS:Robot Operating System)を用いる。ROSを用いた各プログラムは、トピック(ROSトピック)と呼ばれる名前付きのデータを送受信し合うことで処理を行う。具体的には、プログラムの入力データをトピックとして受け取り、処理結果をトピックとして出力する。また、プログラム間は相互にトピックの送受信を繰り返す。このように、ROSでは、分散処理のアーキテクチャを採用している。
次に、ロボット100およびサーバ110それぞれのソフトウェア構成を説明する。まず、ロボット100は、それぞれPC107で用いるプログラムとして、LiDARセンサデータ送信プログラム1010、回転台駆動プログラム1020、クローラ駆動プログラム1030、アーム駆動プログラム1040、ステレオカメラ画像送信プログラム1050を有する。これらは、図1に示すストレージ1073ないしメモリ1072に格納され、CPU1071でその内容に従った演算が実行される。
また、これらは、サーバ110や他のロボット100との通信した結果も用いて、演算される。
そして、LiDARセンサデータ送信プログラム1010は、LiDARセンサ101で検知した計測データを取得し、サーバ110など外部に送信するプログラムであり、そのROSトピックは以下のとおりである。
入力トピック:なし
出力トピック:LiDARセンサ101での計測データ
回転台駆動プログラム1020は、モータ駆動回路106に対して制御信号を出力し、回転台102の回転を制御するプログラムであり、そのROSトピックは以下のとおりである。
入力トピック:回転台102の向き
出力トピック:なし
クローラ駆動プログラム1030は、モータ駆動回路106に対して制御信号を出力し、クローラ103の駆動を制御するプログラムであり、そのROSトピックは以下のとおりである。また、クローラ103の駆動には、ロボット100の移動量と回転角度を左右のクローラ103の回転量に変換し、左右のクローラ103を回転させることが含まれる。
入力トピック:ロボット100の移動量と回転角度
出力トピック:なし
アーム駆動プログラム1040は、モータ駆動回路106に対して制御信号を出力し、アーム104の駆動(例えば、関節の回転、移動)を制御するプログラムであり、そのROSトピックは以下のとおりである。
入力トピック:アーム104関節の回転角
出力トピック:なし
ステレオカメラ画像送信プログラム1050は、ステレオカメラ105で撮像された画像を取得し、サーバ110など外部に送信するプログラムであり、そのROSトピックは以下のとおりである。
入力トピック:なし
出力トピック:ステレオカメラ105の画像
なお、アームロボット100-1ではステレオカメラ画像送信プログラム1050を、カメラロボット100-2ではアーム駆動プログラム1040の保持をそれぞれ省略してもよい。
次に、サーバ110のソフトウェア構成を説明する。サーバ110は、プログラムとして、点群地図管理プログラム1101、自己位置推定プログラム1102、回転台制御プログラム1103、経路生成プログラム1104、クローラ制御プログラム1105、アーム制御プログラム1106、ステレオマッチングプログラム1107および画面表示プログラム1108を有する。これらは、図1に示すストレージ113ないしメモリ112に格納され、CPU111でその内容に従った演算が実行される。
点群地図管理プログラム1101は、ストレージ113に格納された点群地図のうち、ロボット100の移動空間における点群地図を管理する。この管理には、他のプログラム(含むロボット100のプログラム)への点群地図の配信が含まれる。なお、点群地図とは、無数の点(x,y,z)で示される点群により構成された地図である。また、本プログラムでのROSトピックは以下のとおりである。
入力:ファイルに格納された点群地図
出力トピック:点群地図
自己位置推定プログラム1102は、ロボットの位置を推定する処理を実行するプログラムである。その内容は、点群地図と、LiDARセンサ101からの計測データ(点群)とを、スキャンマッチングと呼ばれる手法を用いて照合することで行う。スキャンマッチングアルゴリズムとして、NDT(Normal Distributions Transform)やICP(Iterative Closest Point)等を用いることが可能である。これらにおいては、短い時間間隔で取得した点群A、点群B、…、点群Zの位置合わせを行うことで、点群A、点群B、…、点群Zそれぞれに対するロボットの相対位置・姿勢を推定することになる。また、この技術を用いることで、点群地図を作成できる。さらに、NDTでは、地図空間をボクセル(立方体)に区切り、ボクセル毎の点の集合を正規分布で近似する。このため、計算量はセンサから得られる点群のサイズに比例し地図の大きさに依存しない処理ができる。
なお、これらスキャンマッチングアルゴリズムにおける際の出力トピックのロボットの位置と姿勢は、位置(x,y,z)とクォータニオンと呼ばれる姿勢パラメータ(qx,qy,qz,qw)からなる、7つのパラメータで表現される。なお、本プログラムでのROSトピックは以下のとおりである。
入力トピック:点群地図
入力トピック:LiDARセンサ101の計測データ
出力トピック:ロボット100の位置と姿勢
回転台制御プログラム1103は、回転台102に乗ったLiDARセンサ101-1あるいは101-2の方向を指示するプログラムある。回転台制御プログラム1103は、センサLiDAR101の照射範囲内に存在する他のロボット100の映り込み率を算出し、それが低くなるような(例えば、一定値以下や算出される映り込み率が最小)、回転台102の向きを求めて送信する。ここで、回転台102の向きは、後述するように最小映り込み率角度として算出される。なお、本プログラムの処理の詳細(映り込み率の算出)についても後述する。送信された回転台102の向きは、前述した、回転台駆動プログラム1020で受信され、回転台102の向きへと反映される。本プログラムでのROSトピックは以下のとおりである。
入力トピック:ロボット100の位置と姿勢
出力トピック:回転台102の向き(最小映り込み率角度)
経路生成プログラム1104は、点群地図上でロボット100の移動経路を求める。移動経路を求めるため、まずロボット100の目的地を入力デバイス140からの指定を受け付ける(例えば、マウスクリック)。そして、現在位置から目的値までの経路を10cm等の一定間隔の点でつないだリストとして出力する。また、点群地図上、点が一定以上密集している場所をロボット100が通行不能な障害物(壁)とみなし、障害物がない空間を対象に、ダイクストラ法、エースター法などのアルゴリズムを用い経路を求める。なお、本プログラムでのROSトピックは以下のとおりである。
入力トピック:点群地図
入力トピック:ロボット100の位置と姿勢
入力トピック(マウスクリック等の受け付け):目的地
出力トピック:経路(10cm間隔の点のリスト)
クローラ制御プログラム1105は、現在のロボット100の位置・姿勢から次の点に向かわせるのに必要なロボット100の移動量と回転角度を求める。つまり、クローラ103の動作を制御するために必要な情報を求める。なお、ロボット100の移動量と回転角度は、ロボット100のクローラ駆動プログラム1030で出力される制御信号を生成するために用いられる。また、クローラ制御プログラム1105が制御信号を生成したり、ロボット100の移動量と回転角度に基づく制御指令を生成したりしてもよい。なお、ロボット100の駆動方式は、クローラに限定されないため、クローラ制御プログラム1105は移動制御プログラムとも称することが可能である。また、本プログラムでのROSトピックは以下のとおりである。
入力トピック:経路
入力トピック:ロボットの位置と姿勢
出力トピック:ロボットの移動量と回転角度
アーム制御プログラム1106は、入力デバイス140の例えば、Joystickを用いた、アーム104の関節角度の指定を受け付け、その回転角を算出する。なお、本プログラムでのROSトピックは以下のとおりである。
入力トピック:ジョイスティックからの入力情報
出力トピック:アーム関節の回転角
ステレオマッチングプログラム1107は、ステレオカメラ105の画像からステレオマッチングアルゴリズムを用いて3D点群を生成する。なお、本プログラムでのROSトピックは以下のとおりである。
入力トピック:ステレオカメラ105の画像
出力トピック:3D点群
画面表示プログラム1108は、ディスプレイ130の画面に、点群地図、ロボット100の位置・姿勢、経路、回転台102の向き、3D点群などの情報を重畳表示する。なお、表示する情報はこれらに限定されず、また、表示の形式も重畳表示に限定されない。また、本プログラムでのROSトピックは以下のとおりである。
入力トピック:点群地図
入力トピック:ロボット100の位置・姿勢
入力トピック:経路
入力トピック:回転台102の向き
入力トピック:3D点群
出力トピック:なし
なお、上述のロボット100、サーバ110の各プログラムは1つのプログラムとして構成し、それぞれをプログラムモジュールとしてもよい。さらに、サーバ110の機能(プログラム)を、ロボット100の少なくとも1つに設け、自律的にロボット100が他のロボットも含め制御してもよい。
次に、図8を用いて、本実施例の全体の処理シーケンスを説明する。ここでは、アームロボット100-1における回転台102の制御を例に説明する。
まず、ステップS801、S802において、アームロボット100-1、カメラロボット100-2、3のLiDARのセンサそれぞれの計測値を無線ルータ120を介して、サーバ110に送信する。LiDARセンサの計測値とは、周囲形状の点群情報である。サーバ110では、S803においてこれら受信した点群情報と、点群地図管理プログラム1101内の点群地図とを、スキャンマッチングアルゴリズムを用いて照合することで、アームロボット100-1、カメラロボット100-2,3の自己位置推定結果を得る。
次に、ステップS804において、サーバ110が映り込み率を算出する。この算出方法の詳細は、図4を用いて後述する。
次に、ステップS805において、サーバ110が映り込み率を用いて、最小映り込み率角度を算出する。そして、ステップS806において、サーバ110が求められた最小映り込み率角度ないし回転台102に対する当該角度への制御指令を、アームロボット100-1に送信する。これを受けて、ステップS807において、アームロボット100-1では回転台102を回転させる。つまり、アームロボット100-1のLiDARセンサ101をカメラロボット100-2、3が映り込みを低下させる方向へ向けることになる。これらステップS805~S807の詳細は、図5を用いて後述する。
なお、図8では、アームロボット100-1についての処理だが、カメラロボット10-2、3のそれぞれについても同様の処理を実行する。
次に、図4を用い、図1~3を適宜参照しながら、映り込み率の算出について説明する。つまり、図8のステップS804の詳細を説明する。この算出は、回転台制御プログラム1103により実行される。
ここで、映り込み率の考え方について、まず説明する。図4に示すように、複数のロボット(100-1~3)が同じ空間に存在して動作させる場合、以下の課題がある。ロボットの位置推定に用いる地図データの作成の際に、その空間に配置されていなかったロボットがいるという状況は、照合失敗の原因となる。これは、地図データ作成の際と、ロボットの位置推定の際に矛盾を生じるノイズが存在するため、マッチングが失敗する可能性が高いことを示す。そこで、他のロボットが配置されているという状況が、観測されなければノイズを除去することが可能になる。つまり、他のロボットが観測されなければ照合されることもなく、ノイズとなることもない。そこで、他のロボットがいない方向(存在する可能性が低い)にLiDARセンサ101を向けて得られた点群に対して地図データと照合を行うこととした。
本実施例では、この他のロボットがいない方向を判定するために、映り込み率を評価指標として用いることとした。ここで、映り込み率とは、照射範囲で検知ないし映り込む確率である。例えば、照射範囲に1度ずつの視線を設定した場合、他のロボットがヒットする視線数÷視線全体の視線数で求められる。
以下、映り込み率の算出の手順を説明する。なお、本手順では、アームロボット100-1のLiDARセンサ101-1での計測データを用い、カメラロボット100-2、3の映り込み率を算出することを例示して説明する。但し、カメラロボット100-2や100-3におけるアームロボット100-1や他のカメラロボット100-3や100-2に対する映り込み率および図5に示す最小映り込み率の算出を、それぞれが独立ない並行して実行してもよい。
なお、図4に示す事例は、何らかの方法を用いて、点群地図をあらかじめ作成しておき、この結果を用いてアームロボット100-1の稼働を制御することを想定している。何らかの方法としては、アームロボット100-1、カメラロボット100-2、3のいずれかがによって予め地図を作成しておいても良い。また、別のロボットでの作成や人手での作業に基づき作成してもよい。
まず、本算出における前提処理について説明する。サーバ110の自己位置推定プログラム1102(図3)おいて、点群地図管理プログラム1101(図3)から配信される点群地図とLiDARセンサ101-1(図2)から得られた点群の形状を照合する。そして、最もマッチする場所を、アームロボット100-1(図2)の位置として出力する。
ここで、映り込み率の算出で理由される図4に示す空間のLiDARセンサ座標系を説明する。LiDARセンサ座標系とは、図4のようにLiDARセンサ101-1の中心を原点、正面をX軸、左側90度の位置をY軸とする座標系と定義する。
(処理1)
次に、回転台制御プログラム1103は、点群地図管理プログラム1101で配信される点群地図を座標変換し、LiDAR座標系上に、オブジェクトを描画する。ここでの描画されるオブジェクトは、図4の壁オブジェクト420と柱オブジェクト421である。なお、本実施例での描画、線を引くなどは、可視化しなくともよく、シミュレーションでの演算上の処理であればよい。
次に、回転台制御プログラム1103は、各カメラロボット100-2、3の現在位置を座標変換して、LiDAR座標系上にオブジェクトとして描画する。ここでのオブジェクトは、図4に示すカメラロボット100-2のオブジェクト401(以下、カメラロボットオブジェクト401)およびカメラロボット100-3のオブジェクト402(以下、カメラロボットオブジェクト402)である。
その際、ロボットの上面積に相当する面積を持った円をロボットの射影として描画する。なお、本オブジェクトの形状は、円以外の矩形、楕円などとしてもよい。
このように、オブジェクトを描画するために、回転台制御プログラム1103は、アームロボット100-1や各カメラロボット100-2の位置情報を自己位置推定プログラム1102より取得する。
ここで、回転台制御プログラム1103は、LiDARセンサ101-1の向きによっては、自身のアーム104-1がセンサに映ってしまうことがある。そこで、アーム104-1の付け根の位置を座標変換し、LiDAR座標系上に、当該アーム104-1のオブジェクトを描画する。ここでのオブジェクトは、図4に示すアームロボット100-1のアーム104-1のオブジェクト403(以下、アームオブジェクト403)である。その際、アーム断面積に相当するする面積を持った円をアームの射影として描画する。なお、本オブジェクトの形状は、円以外の矩形、楕円などとしてもよい。
(処理2)
回転台制御プログラム1103は、LiDARセンサ101-1のレーザ照射を計算機上でシミュレートして、センサ照射範囲のうち、カメラロボットオブジェクト401、402それぞれが映り込む割合を求める。
ここで、本実施例のLiDARセンサ101-1のレーザ照射角度がX軸に対して-80度~+80度の範囲と仮定する。そして、回転台制御プログラム1103は、-80度から+80度まで1度刻みで原点から放射状に線を引いていく。161本の線が引ける。この線は、図4に示す破線矢印(404)である。この161本の線に対し、処理1で描いたオブジェクト(401、402、403、420、421)に対して衝突判定を行う。衝突判定は、衝突したら1、しなかったら0とする。また、衝突判定とは、破線矢印(404)に、各オブジェクトのいずれかが座標上で重なるかを判定する。各破線矢印(404)がカメラロボット100-2、3の到達する前に、点群(壁オブジェクト420や柱オブジェクト421)にぶつかった場合は、ロボットに衝突しない(0)と判定する。なお、衝突判定の対象には、アームオブジェクト403を含めないでもよい。
この判定を161本分行った後、回転台制御プログラム1103は、161本の衝突判定のうち衝突する(1)の総和を求め、それを161で割った値を映り込み率として算出する。
ここで、アームロボット100-1には回転台102-1が設けられ、その上にLiDARセンサ101-1が設置されている。この回転台102-1の角度に応じて、映り込み率は異なってくる。回転台102-1の各角度(例えば、1度ずつの全角度)に対して、映り込み率を求めることで、最も映り込み率が小さくなる回転台102-1の角度(最小映り込み率角度)を求めることができる。なお、衝突判定を161本分、各角度について実行するため、直前の衝突判定の結果を用いてもよい。例えば、1度~160度までの衝突判定を行った後に、2度~161度の衝突判定を行うと、2度~160度の各衝突判定が重複する。このため、これらは直前の判定結果を用い、次は161度分の衝突判定を行えばよい。また、本手法は直前だけでなく、それ以前の判定結果との重複(最大公約)部分の結果を流用してもよい。
このように、計算することで、回転台102-1を得られた角度にセットすることで、カメラロボット100-2、3ロボットの存在による照合処理に与える影響を排除、または最小化できる。
このため、回転台制御プログラム1103は、図5に示すフローチャートに従って、最小映り込み率角度を求める(図8のステップS805の処理)。以下ではアームロボット100-1における最小映り込み率角度を求める例を示す。但し、上述したように、カメラロボット(100-2や100-3)が、アームロボット100-1や他のカメラロボット(100-3や100-2)に対する最小映り込み率の算出を、それぞれが独立ない並行して実行してもよい。
まず、ステップS500において、回転台制御プログラム1103は、回転台102-1の回転範囲をその一例として、-90度~+90度と設定する。
そして、ステップS501において、回転台制御プログラム1103は、回転角度を変数(i)(以下、単に角度(i))として、-90度~+90度まで1度刻みでループさせる。つまり、-90度~+90度の範囲外(No)であれば処理を終了し、範囲内(Yes)であればステップS502以降の処理を繰り返す。
次に、ステップS502において、回転台制御プログラム1103は、夫々の角度(i)について、それぞれ映り込み率(ratio)、つまり、個別映り込み率を求める。
そして、ステップS503において、回転台制御プログラム1103は、それまで求められた映り込み率の最小値(min_ratio)とステップS502で求められた個別映り込み率(ratio)を比較する。この結果、最小値(min_ratio)が小さい場合(No)、ステップS505に進む。最小値(min_ratio)が大きい場合(Yes)、ステップS504に進む。
そして、ステップS503において、回転台制御プログラム1103は、ステップS502での角度(i)の値をmin_iとして保持する。また、この際、ステップS502で求められた個別映り込み率(ratio)をmin_iと対応付けて保持する。なお、ステップS503での保持は、メモリ112に保持する。
次に、ステップS505において、回転台制御プログラム1103は、角度の変数(i)に1加え、i+1としてステップS501へ戻る。
そして、回転台制御プログラム1103は、Endの時点の min_iに示される回転台102-1の向き(角度)を最小映り込み率角度として、特定する。
ここで、最小映り込み率角度の別案について説明する。映り込み率が十分小さければ、ロボットが映っていても、ロボットの位置推定における影響は軽微といえる。このため、予め映り込み率の閾値をストレージ113に格納しておき、ステップS502で求めた映り込み率が、閾値を超えていなければ、ステップS502での角度(i)を最小映り込み率角度とする。
また、閾値を超えていれば、その時点のステップS502での角度(i)の近傍から探索していく。例えば、角度(i)に対して、+1度、-1度、+2度、-2度と探索していき、映り込み率が閾値を満たした時点の角度を、最小映り込み率角度とする。このようにすることで、回転台102-1を回転量や頻度あるいは最小映り込み率角度を算出するための計算量を抑止できる。さらに、回転台102を備えないロボットについても、実施例1を適用することが可能である。この場合、角度(i)を-0度~+0度と設定し、上記の処理を実行する。
以上で、図5の説明を終了するが、本実施例では、引き続き以下の処理を行う。回転台制御プログラム1103は、ネットワーク通信部114を利用し、無線ルータ120を介して、最小映り込み率角度を、アームロボット100-1に送信する。アームロボット100-1の回転台駆動プログラム1020は、最小映り込み率角度に従って制御信号を生成する。そして、モータ駆動回路106は制御信号に従って、回転台102-1のモータを、最小映り込み率角度の示す角度に制御する。
次に、LiDARセンサデータ送信プログラム1010はLiDARセンサ101より得られた計測データを、ネットワーク通信部1074を利用し無線ルータ120を介して、サーバ110に送信する。
サーバ110では、自己位置推定プログラム1102により、上述のスキャンマッチング手法などを用いて、アームロボット100-1の位置を推定する。以降、この位置に基づいて、アームロボット100-1やカメラロボット100-2、3の移動を制御する。
上述の処理により、アームロボット100-1、カメラロボット100-2およびカメラロボット100-3のそれぞれで、算出された回転角度でLiDARセンサ101により照射された状況を図6に示す。アームロボット100-1は、瓦礫611をアーム104-1でつかもうとする状況である。2台のカメラロボット100-2、3が、アームロボット100-1の両サイドに配置されている。この配置において、各ロボット100のLiDARセンサ101の照射範囲は、601に示す範囲となる(グレー地と破線矢印)。また、図6に示すように、各ロボット100は、互いにLiDARセンサ101の照射範囲601から外れていることがわかる。これは、上述の処理により、各LiDARセンサ101の照射範囲外としつつ、以下の制御を行う。各カメラロボット100-2、3がアームロボット100-1の作業風景をステレオカメラ105で映る場所に移動し、その車体を瓦礫611やアームロボット100-1の方向へ向けていることで実現する。その上で、カメラロボット100-2、3のLiDARセンサ101を、お互いの車体が映りこまない方向へ向けている。なお、本例における移動経路の算出については、実施例2で説明する。
次に、実施例2として、ロボットの移動経路を算出する方法を説明する。実施例2では、実施例1で算出した最小映り込み率角度を利用して、各ロボット100の移動経路を算出する。このため、各ロボット100の構成および最小映り込み率角度の算出は、実施例1と同じである。そこで、これらの説明は省略し、移動経路算出に絞って説明する。
図7は、各ロボット100の移動経路を示す図である。100-1c、100-2c、100-3cがそれぞれアームロボット100-1、カメラロボット100-2、カメラロボット100-3の移動における終点(作業位置)を示す。これは、図6に示す各ロボットの位置に対応している。ここに対し、アームロボット100-1、カメラロボット100-2、カメラロボット100-3それぞれの移動の出発点(現在位置)である100-1a、100-2a、100-3cからの経路を算出する。各経路は、100-1b、100-2b、100-3bで表している。つまり、各ロボット100は、作業のために、出発始点から終点へ移動する必要がある。ここで、単に移動すると、各ロボット100の移動順やその経路によっては、映り込み率が上昇することがあり得る。そこで、本実施例では、映り込み率を考慮した移動経路、特にロボット100の移動順の算出を行う。以下、その内容を説明する。
まず、処理の前提として、処理ステップを単位時間ごとに行い、各ロボット100は単位時間において、移動に関して現在位置から「進む」「留まる」のいずれかの動作を行うとする。また、「進む」については、「終点」への方向に、予め定めた単位距離分進むとする。
以下、図9を用いて、本実施例の処理フローを説明する。
まず、ステップS901において、サーバ110の経路生成プログラム1104が、夫々のロボット100を進めるか、留まらせるかの動作を決定するための乱数を発生する。
次に、ステップS902において、経路生成プログラム1104が、発生した乱数により各ロボットが「留まる」ことを示すかを判定する。この結果、「留まる」ことを示す(Yes)の場合、ステップS901に戻り、再度乱数を発生させ、引き直す。また、Noの場合は、ステップS903に進む。
次に、ステップS903において、経路生成プログラム1104は、各ロボット100の映り込み率(min_ratio)を算出する。これは、実施例1(図4)に示す方法で算出する。
そして、ステップS904において、経路生成プログラム1104は、各ロボット100の映り込み率(min_ratio)のそれぞれを足し合わせて、映り込み率の合算値(ratio_sum)を算出する。
ステップS905において、経路生成プログラム1104は、この処理を複数回繰り返し実行し、その中で、ratio_sumが最も小さくなる、各ロボット100の移動順序を採用する。この複数回とは、所定の回数としてもよいし、各ロボットの移動(「進む」「留まる」)の組み合わせの数としてもよい。
そして、図9に示す処理フローを、ロボットが終点に到着するまで実行する。つまり、ステップS906において、経路生成プログラム1104は、ロボットが終点に到着したかを判断し、到着した(Yes)の場合は処理を終了し、到着していない場合はステップS901に戻る。なお、図9のフローチャートでは、ロボットが終点に到着するまで実行したが、一定回数の処理ステップ(単位時間)分を処理してもよい(経路の途中まで)。この場合、一定回数の処理ステップ(単位時間)分の処理を積み上げて、終点までの処理を行うことがより好適である。
ここで、終点に到着するとは、いずれのロボットが最も早く到着するまでとしてもよいし、各ロボットが終点に到着するまで実行するとしてもよい。後者の場合、先行して終点に到着したロボットについては、上記の経路生成プログラム1104の処理の対象から外す、つまり、未着のロボットに対して実行することはより望ましい。この場合、終点に到着したロボットについては、乱数の代わりに「留まる」となるように制御してもよい。
以上のように、実施例2では、どのロボットを「進む」とし、どのロボットを「留まる」とするかを決定していく。このことにより、各処理ステップ(単位時間)において「進む」のロボットの移動順序が「留まる」のロボットより移動順序が先になる。また、各処理ステップの結果の積み重ねにより、ロボット100の移動順序も全体として特定できる。
さらに、実施例2は、組み合わせ最適化問題と捉えることが可能である。このため、高速に解くための様々な方式を採用できる。例えば、遺伝学的アルゴリズムを用いることを採用できる。
さらに、回転台102乃至回転機能を有さないロボットについても、本実施例を適用することが可能である。これは、実施例1でも言及したように、回転台102の回転角度範囲における角度(i)を-0度~+0度(回転範囲0度)と設定して、ロボットの映り込み率の合算値(ratio_sum)を算出することで対応できる。
以上で、実施例1および2の説明を終了する。なお、実施例1および2では、サーバ110が各処理を実行していたが、ロボット100で実行してもよい。この場合、各ロボットから代表ロボットを特定して、当該ロボットでサーバ110の処理(実施例1、2)を実行することが好適である。その際、ロボット100に搭載したPC107で実行される。
さらに、実施例1、2は、狭義のロボット以外の移動体(車両等)や、自身では移動機能を有さず他装置により移動させる物体にも適用可能である。これらの場合でも、各移動体は、位置推定を行う機能を有することが望ましい。
100…ロボット、101…LiDARセンサ、102…回転台、103…クローラ、104…アーム、105…ステレオカメラ、106…モータ駆動回路、107…PC、108…バッテリー、110…サーバ、111…CPU、112…メモリ、113…ストレージ、114…ネットワーク通信部、115…電源、120…無線ルータ、130…ディスプレイ、140…入力デバイス

Claims (12)

  1. 複数のロボットが連携することで、所定の機能を実行するロボットシステムにおいて、
    センサを有する第1のロボット、第2のロボットおよび、前記第1のロボットおよび前記第2のロボットと通信回線を介して接続されるサーバを有し、
    前記サーバが、
    地図情報と前記センサで検知された検知情報を照合して、前記第1および前記第2のロボットの位置を推定する位置推定部と、
    前記第1のロボットおよび前記第2のロボットの位置関係を示す位置関係情報を用いて、前記第2のロボットが前記第1のロボットのセンサの照射範囲で映り込む確率を示す映り込み率を算出し、算出された前記映り込み率に応じて、前記第1のロボットのセンサを向けようとする照射方向を特定するセンサ方向制御部とを有することを特徴とするロボットシステム。
  2. 請求項1に記載のロボットシステムにおいて、
    前記センサ方向制御部は、
    複数の照射方向それぞれにおいて、前記第2のロボットが前記照射範囲において映り込む個別映り込み率を求め、求められた前記個別映り込み率から前記映り込み率を算出することを特徴とするロボットシステム。
  3. 請求項2に記載のロボットシステムにおいて、
    前記センサ方向制御部は、
    前記映り込み率として、前記個別映り込み率のうち最も小さい個別映り込み率を用い、
    前記センサを向けようとする照射方向として、前記最も小さい個別映り込み率の照射方向である最小映り込み率角度を用いることを特徴とするロボットシステム。
  4. 請求項1に記載のロボットシステムにおいて、
    前記サーバは、
    さらに、前記第2のロボットを、前記センサを向けようとする照射方向での照射範囲を特定する情報を用いて、前記照射範囲を避けて移動する移動方向を特定する移動制御部を有することを特徴とするロボットシステム。
  5. ロボットシステムを構成する少なくとも1つのロボットの位置を推定するロボットシステムでの位置推定方法において、
    前記ロボットシステムは、センサを有する第1のロボット、第2のロボットおよび、前記第1のロボットおよび前記第2のロボットと通信回線を介して接続されるサーバを有し、
    前記サーバによる、
    地図情報と前記センサで検知された検知情報を照合して、前記第1および第2のロボットの位置を推定するステップと、
    前記第1のロボットおよび前記第2のロボットの位置関係を示す位置関係情報を用いて、前記第2のロボットが前記第1のロボットのセンサの照射範囲で映り込む確率を示す映り込み率を算出するステップと、
    算出された前記映り込み率に応じて、前記第1のロボットのセンサを向けようとする照射方向を特定するステップを有することを特徴とするロボットシステムでの位置推定方法。
  6. 請求項に記載のロボットシステムでの位置推定方法において、
    前記サーバによる、
    複数の照射方向それぞれにおいて、前記第2のロボットが前記照射範囲において映り込む個別映り込み率を求め、求められた前記個別映り込み率から前記映り込み率を算出するステップを有することを特徴とするロボットシステムでの位置推定方法。
  7. 請求項に記載のロボットシステムでの位置推定方法において、
    前記映り込み率として、前記個別映り込み率のうち最も小さい個別映り込み率を用い、
    前記センサを向けようとする照射方向として、前記最も小さい個別映り込み率の照射方向である最小映り込み率角度を用いることを特徴とするロボットシステムでの位置推定方法。
  8. 請求項に記載のロボットシステムでの位置推定方法において、
    前記サーバによる、
    前記第2のロボットを、前記センサを向けようとする照射方向での照射範囲を特定する情報を用いて、
    前記照射範囲を避けて移動する移動方向を特定するステップを有することを特徴とするロボットシステムでの位置推定方法。
  9. 複数のロボットが連携することで、所定の機能を実行するロボットシステムを構成するサーバ装置において、
    前記ロボットシステムを構成するセンサを有する第1のロボットおよび第2のロボットとネットワークを介して接続するネットワーク接続部と、
    地図情報と前記センサで検知された検知情報を照合して、前記第1および第2のロボットの位置を推定する位置推定部と、
    前記第1のロボットおよび前記第2のロボットの位置関係を示す位置関係情報を用いて、前記第2のロボットが前記第1のロボットのセンサの照射範囲で映り込む確率を示す映り込み率を算出し、算出された前記映り込み率に応じて、前記第1のロボットの前記センサを向けようとする照射方向を特定するセンサ方向制御部とを有することを特徴とするサーバ装置。
  10. 請求項に記載のサーバ装置において、
    前記センサ方向制御部は、
    複数の照射方向それぞれにおいて、前記第2のロボットが前記照射範囲において映り込む個別映り込み率を求め、求められた前記個別映り込み率から前記映り込み率を算出することを特徴とするサーバ装置。
  11. 請求項10に記載のサーバ装置において、
    前記センサ方向制御部は、
    前記映り込み率として、前記個別映り込み率のうち最も小さい個別映り込み率を用い、
    前記センサを向けようとする照射方向として、前記最も小さい個別映り込み率の照射方向である最小映り込み率角度を用いることを特徴とするサーバ装置。
  12. 請求項に記載のサーバ装置において、
    さらに、前記第2のロボットを、前記センサを向けようとする照射方向での照射範囲を特定する情報を用いて、前記照射範囲を避けて移動する移動方向を特定する移動制御部を有することを特徴とするサーバ装置。
JP2020007365A 2020-01-21 2020-01-21 ロボットシステムおよびその位置推定方法 Active JP7393217B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020007365A JP7393217B2 (ja) 2020-01-21 2020-01-21 ロボットシステムおよびその位置推定方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020007365A JP7393217B2 (ja) 2020-01-21 2020-01-21 ロボットシステムおよびその位置推定方法

Publications (2)

Publication Number Publication Date
JP2021114222A JP2021114222A (ja) 2021-08-05
JP7393217B2 true JP7393217B2 (ja) 2023-12-06

Family

ID=77077066

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020007365A Active JP7393217B2 (ja) 2020-01-21 2020-01-21 ロボットシステムおよびその位置推定方法

Country Status (1)

Country Link
JP (1) JP7393217B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102562044B1 (ko) * 2021-10-22 2023-07-31 롯데정보통신 주식회사 로봇 관제 시스템 및 이의 제어 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011150443A (ja) 2010-01-20 2011-08-04 Hitachi Plant Technologies Ltd ロボットおよびロボットシステム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5314548B2 (ja) * 2009-09-16 2013-10-16 株式会社日立製作所 自律移動システム及び自律移動装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011150443A (ja) 2010-01-20 2011-08-04 Hitachi Plant Technologies Ltd ロボットおよびロボットシステム

Also Published As

Publication number Publication date
JP2021114222A (ja) 2021-08-05

Similar Documents

Publication Publication Date Title
US10705528B2 (en) Autonomous visual navigation
EP3086196B1 (en) Method and control system for surveying and mapping a terrain while operating a bulldozer
Surmann et al. An autonomous mobile robot with a 3D laser range finder for 3D exploration and digitalization of indoor environments
Stiller et al. Multisensor obstacle detection and tracking
US8725273B2 (en) Situational awareness for teleoperation of a remote vehicle
JP4738472B2 (ja) 障害物回避機能を有する移動制御装置
JP6406289B2 (ja) 路面形状測定装置、測定方法、及び、プログラム
US10131446B1 (en) Addressing multiple time around (MTA) ambiguities, particularly for lidar systems, and particularly for autonomous aircraft
KR102056147B1 (ko) 자율주행차량을 위한 거리 데이터와 3차원 스캔 데이터의 정합 방법 및 그 장치
EP2041516A2 (en) Method and apparatus for robotic path planning, selection, and visualization
US11340620B2 (en) Navigating a mobile robot
CN113753028B (zh) 驾驶辅助装置、驾驶辅助方法及电脑可读取记录介质
JP7032062B2 (ja) 点群データ処理装置、移動ロボット、移動ロボットシステム、および点群データ処理方法
JP7393217B2 (ja) ロボットシステムおよびその位置推定方法
Smith et al. PiPS: Planning in perception space
JP6947563B2 (ja) 移動ロボットの制御装置と制御方法
CN113125795A (zh) 一种障碍物速度检测方法、装置、设备和存储介质
WO2021246170A1 (ja) 情報処理装置、情報処理システム、および方法、並びにプログラム
JP5895682B2 (ja) 障害物検出装置及びそれを備えた移動体
JP7396353B2 (ja) 地図作成システム、信号処理回路、移動体および地図作成方法
JP2021182177A (ja) 車両操縦システムと車両操縦方法
Hu et al. Solution of camera registration problem via 3d-2d parameterized model matching for on-road navigation
US20240061436A1 (en) Moving apparatus and moving apparatus control method
WO2023219058A1 (ja) 情報処理方法、情報処理装置及び情報処理システム
JP7199337B2 (ja) 位置推定装置、位置推定方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220413

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230315

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230328

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230523

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230815

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230920

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20231114

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231124

R150 Certificate of patent or registration of utility model

Ref document number: 7393217

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150