(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-03-28
(45)【発行日】2025-04-07
(54)【発明の名称】ロボット制御装置、ロボット制御システム、及びロボット制御方法
(51)【国際特許分類】
B25J 9/10 20060101AFI20250331BHJP
【FI】
B25J9/10 A
(21)【出願番号】P 2023540394
(86)(22)【出願日】2022-08-03
(86)【国際出願番号】 JP2022029851
(87)【国際公開番号】W WO2023013698
(87)【国際公開日】2023-02-09
【審査請求日】2024-02-01
(31)【優先権主張番号】P 2021127715
(32)【優先日】2021-08-03
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000006633
【氏名又は名称】京セラ株式会社
(74)【代理人】
【識別番号】100147485
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】230118913
【氏名又は名称】杉村 光嗣
(74)【代理人】
【識別番号】100132045
【氏名又は名称】坪内 伸
(74)【代理人】
【識別番号】100195534
【氏名又は名称】内海 一成
(72)【発明者】
【氏名】グラシア フィデリア
(72)【発明者】
【氏名】石田 敬之
(72)【発明者】
【氏名】森 雅人
(72)【発明者】
【氏名】内竹 真洋
【審査官】杉山 悟史
(56)【参考文献】
【文献】特開2009-125857(JP,A)
【文献】特開2020-116717(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00 ~ 21/02
(57)【特許請求の範囲】
【請求項1】
ロボットを制御する制御部を備え、
前記制御部は、
前記ロボットの移動先の計測位置を取得し、
空間情報取得部で取得した前記ロボットの動作空間に関する空間情報に基づいて算出された前記ロボットの位置の計測結果を取得し、
前記計測位置と前記計測結果とに基づいて
、前記空間情報取得部の座標系と前記ロボットを制御する座標系の関係を補正するかを判定し、さらに前記ロボットのキャリブレーションを実行するか
を判定する、
ロボット制御装置。
【請求項2】
前記制御部は、前記計測位置と前記計測結果との差
が所定の閾値より大きい場合に、前記空間情報取得部の座標系又は前記ロボットを制御する座標系を補正する、請求項1に記載のロボット制御装置。
【請求項3】
前記制御部は、前記空間情報取得部の座標系又は前記ロボットを制御する座標系を、回転、並進、拡大若しくは縮小、又は、歪みについて補正する、請求項2に記載のロボット制御装置。
【請求項4】
前記制御部は、
補正した座標系において前記ロボットを計測位置に移動させて前記ロボットの位置を補正後計測結果として算出し、
前記計測位置と前記補正後計測結果との差が所定値以上である場合、前記ロボットのキャリブレーションを実行する、請求項2に記載のロボット制御装置。
【請求項5】
前記制御部は、前記ロボットのうち、前記キャリブレーションを少なくとも1回実行しているロボットに対して、前記キャリブレーションを再実行するか否か判定することができる、請求項
4に記載
のロボット制御装置。
【請求項6】
請求項1から4までのいずれか一項に記載のロボット制御装置と、前記ロボットとを備える、ロボット制御システム。
【請求項7】
ロボットを制御する制御部が、前記ロボットの移動先の計測位置を取得し、
空間情報取得部で取得した前記ロボットの動作空間に関する空間情報に基づいて算出された前記ロボットの位置の計測結果を取得することと、
前記計測位置と前記計測結果とに基づいて
、前記空間情報取得部の座標系と前記ロボットを制御する座標系の関係を補正するかを判定し、さらに前記ロボットのキャリブレーションを実行するか
を判定することと
を含む、ロボット制御方法。
【発明の詳細な説明】
【関連出願へのクロスリファレンス】
【0001】
本出願は、日本国特許出願2021-127715号(2021年8月3日出願)の優先権を主張するものであり、当該出願の開示全体を、ここに参照のために取り込む。
【技術分野】
【0002】
本開示は、ロボット制御装置、ロボット制御システム、及びロボット制御方法に関する。
【背景技術】
【0003】
従来、キャリブレーション時のマーク部の位置に基づいて異常診断を行うロボット制御システムが知られている(例えば特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【0005】
本開示の一実施形態に係るロボット制御装置は、ロボットを制御する制御部を備える。前記制御部は、前記ロボットの移動先の計測位置を取得し、空間情報取得部で取得した前記ロボットの動作空間に関する空間情報に基づいて算出された前記ロボットの位置の計測結果を取得し、前記計測位置と前記計測結果とに基づいて前記ロボットのキャリブレーションを実行するか判定する。
【0006】
本開示の一実施形態に係るロボット制御システムは、前記ロボット制御装置と、前記ロボットとを備える。
【0007】
本開示の一実施形態に係るロボット制御方法は、ロボットを制御する制御部によって実行される。前記ロボット制御方法は、前記ロボットの移動先の計測位置を取得することを含む。前記ロボット制御方法は、空間情報取得部で取得した前記ロボットの動作空間に関する空間情報に基づいて前記ロボットの位置の計測結果を取得することを含む。前記ロボット制御方法は、前記計測位置と前記計測結果とに基づいて前記ロボットのキャリブレーションを実行するか判定することを含む。
【図面の簡単な説明】
【0008】
【
図1】一実施形態に係るロボット制御システムの構成例を示すブロック図である。
【
図2】一実施形態に係るロボット制御システムの構成例を示す模式図である。
【
図3】センサに基づく先端位置姿勢と画像に基づく先端位置姿勢との差の一例を示す模式図である。
【
図4】一実施形態に係るロボット制御方法の手順例を示すフローチャートである。
【発明を実施するための形態】
【0009】
異常発生時にキャリブレーションを再度実行することは、作業負荷を増大させる。異常発生時の作業負荷の低減が求められる。本開示の一実施形態に係るロボット制御装置、ロボット制御システム、及びロボット制御方法によれば、異常発生時の作業負荷が低減され得る。
【0010】
(ロボット制御システム1の概要)
図1及び
図2に例示されるように、一実施形態に係るロボット制御システム1は、ロボット40と、ロボット制御装置10と、空間情報取得部20とを備える。ロボット40は、所定の動作空間において動作する。空間情報取得部20は、ロボット40が動作する動作空間のデプス情報を生成する。空間情報取得部20は、後述するように、動作空間に存在する物体50の表面に位置する測定点までの距離を算出する。空間情報取得部20から測定点までの距離は、デプスとも称される。デプス情報は、各測定点について測定したデプスに関する情報である。言い換えれば、デプス情報は、動作空間に存在する物体50の表面に位置する測定点までの距離に関する情報である。デプス情報は、空間情報取得部20から見た方向とその方向のデプスとを関連づけたデプスマップとして表されてもよい。空間情報取得部20は、(X,Y,Z)座標系に基づいて動作空間のデプス情報を生成する。ロボット制御装置10は、空間情報取得部20で生成されたデプス情報に基づいてロボット40を動作させる。ロボット制御装置10は、(X_RB,Y_RB,Z_RB)座標系に基づいてロボット40を制御し、動作させる。
【0011】
(X_RB,Y_RB,Z_RB)座標系は、ロボット40の座標系とも称される。(X,Y,Z)座標系は、空間情報取得部20の座標系とも称される。ロボット40の座標系は、空間情報取得部20の座標系と同じ座標系として設定されてもよいし、異なる座標系として設定されてもよい。ロボット40の座標系が空間情報取得部20の座標系と異なる座標系として設定される場合、ロボット制御装置10は、空間情報取得部20の座標系で生成されたデプス情報を、ロボット40の座標系に変換して用いる。
【0012】
ロボット40及びロボット制御装置10の数は、例示されるように1台に限られず2台以上であってもよい。空間情報取得部20の数は、例示されるように、1つの動作空間に対して1台であってもよいし、2台以上であってもよい。以下、各構成部が具体的に説明される。
【0013】
<ロボット制御装置10>
ロボット制御装置10は、制御部11と、記憶部12とを備える。
【0014】
制御部11は、ロボット制御装置10の種々の機能を実現するために、少なくとも1つのプロセッサを含んで構成されてよい。プロセッサは、ロボット制御装置10の種々の機能を実現するプログラムを実行しうる。プロセッサは、単一の集積回路として実現されてよい。集積回路は、IC(Integrated Circuit)とも称される。プロセッサは、複数の通信可能に接続された集積回路及びディスクリート回路として実現されてよい。プロセッサは、CPU(Central Processing Unit)を含んで構成されてよい。プロセッサは、DSP(Digital Signal Processor)又はGPU(Graphics Processing Unit)を含んで構成されてもよい。プロセッサは、他の種々の既知の技術に基づいて実現されてよい。
【0015】
記憶部12は、磁気ディスク等の電磁記憶媒体を含んで構成されてよいし、半導体メモリ又は磁気メモリ等のメモリを含んで構成されてもよい。記憶部12は、HDD(Hard Disk Drive)として構成されてもよいしSSD(Solid State Drive)として構成されてもよい。記憶部12は、各種情報及び制御部11で実行されるプログラム等を格納する。記憶部12は、制御部11のワークメモリとして機能してよい。制御部11が記憶部12の少なくとも一部を含んで構成されてもよい。
【0016】
ロボット制御装置10は、空間情報取得部20及びロボット40と有線又は無線で通信可能に構成される通信デバイスを更に備えてもよい。通信デバイスは、種々の通信規格に基づく通信方式で通信可能に構成されてよい。通信デバイスは、既知の通信技術により構成することができる。通信デバイスのハードウェア等の詳細な説明は省略される。通信デバイスの機能は、1つのインタフェースによって実現されてもよいし、接続先別にそれぞれ別体のインタフェースによって実現されてもよい。制御部11が空間情報取得部20及びロボット40と通信可能に構成されてもよい。制御部11が通信デバイスを含んで構成されてもよい。
【0017】
<ロボット40>
ロボット40は、
図2に例示されるように、アーム42と、アーム42に取り付けられるエンドエフェクタ44と、エンドエフェクタ44に設置されているマーク46とを備える。なお、マーク46は、エンドエフェクタ44ではなく、アーム42に設置されていてもよい。
【0018】
アーム42は、例えば、6軸又は7軸の垂直多関節ロボットとして構成されてよい。アーム42は、3軸又は4軸の水平多関節ロボット又はスカラロボットとして構成されてもよい。アーム42は、2軸又は3軸の直交ロボットとして構成されてもよい。アーム42は、パラレルリンクロボット等として構成されてもよい。アーム42を構成する軸の数は、例示したものに限られない。
【0019】
エンドエフェクタ44は、例えば、作業対象物を把持できるように構成される把持ハンドを含んでよい。把持ハンドは、複数の指を有してよい。把持ハンドの指の数は、2つ以上であってよい。把持ハンドの指は、1つ以上の関節を有してよい。エンドエフェクタ44は、作業対象物を吸着できるように構成される吸着ハンドを含んでもよい。エンドエフェクタ44は、作業対象物を掬うことができるように構成される掬いハンドを含んでもよい。エンドエフェクタ44は、ドリル等の工具を含み、作業対象物に穴を開ける作業等の種々の加工を実施できるように構成されてもよい。エンドエフェクタ44は、これらの例に限られず、他の種々の動作ができるように構成されてよい。
【0020】
ロボット40は、アーム42を動作させることによって、エンドエフェクタ44の位置を制御できる。エンドエフェクタ44は、作業対象物に対して作用する方向の基準となる軸を有してもよい。エンドエフェクタ44が軸を有する場合、ロボット40は、アーム42を動作させることによって、エンドエフェクタ44の軸の方向を制御できる。ロボット40は、エンドエフェクタ44が作業対象物に作用する動作の開始及び終了を制御する。ロボット40は、エンドエフェクタ44の位置、又は、エンドエフェクタ44の軸の方向を制御しつつ、エンドエフェクタ44の動作を制御することによって、作業対象物を動かしたり加工したりすることができる。
【0021】
ロボット40は、ロボット40の各構成部の状態を検出するセンサを更に備えてよい。センサは、ロボット40の各構成部の現実の位置若しくは姿勢、又は、ロボット40の各構成部の速度若しくは加速度に関する情報を検出してよい。センサは、ロボット40の各構成部に作用する力を検出してもよい。センサは、ロボット40の各構成部を駆動するモータに流れる電流又はモータのトルクを検出してもよい。センサは、ロボット40の実際の動作の結果として得られる情報を検出できる。ロボット制御装置10は、センサの検出結果を取得することによって、ロボット40の実際の動作の結果を把握することができる。つまり、ロボット制御装置10は、センサの検出結果に基づいてロボット40の状態を取得できる。
【0022】
ロボット制御装置10は、空間情報取得部20でマーク46を撮影した画像に基づいてマーク46の位置、又は、マーク46が設置されているエンドエフェクタ44の位置を認識する。また、ロボット制御装置10は、空間情報取得部20でマーク46を撮影した画像に基づいてロボット40の状態を認識する。ロボット制御装置10は、センサの検出結果に基づいて取得したロボット40の状態と、マーク46を写した画像に基づいて取得したロボット40の状態とを比較することによって、ロボット40のキャリブレーションを実行できる。
【0023】
<空間情報取得部20>
空間情報取得部20は、ロボット40の動作空間に関する空間情報を取得する。空間情報取得部20は、動作空間を撮影し、空間情報として動作空間の画像を取得してよい。空間情報取得部20は、
図2に例示されるように、動作空間に存在する物体50を撮影してよい。空間情報取得部20は、カメラとして構成されてよい。空間情報取得部20は、3Dステレオカメラとして構成されてもよい。3Dステレオカメラは、動作空間に存在する物体50を撮影し、動作空間に存在する物体50の表面に位置する測定点までの距離をデプスとして算出し、デプス情報を生成する。空間情報取得部20は、LiDAR(light detection and ranging)として構成されてもよい。LiDARは、動作空間に存在する物体50の表面に位置する測定点までの距離を測定し、デプス情報を生成する。つまり、空間情報取得部20は、空間情報として動作空間のデプス情報を取得してよい。空間情報取得部20は、これらに限られず種々のデバイスとして構成されてもよい。空間情報取得部20は、空間情報として、動作空間の画像又はデプス情報に限られず他の種々の情報を取得してよい。空間情報取得部20は、撮像素子を備えてよい。空間情報取得部20は、光学系を更に備えてよい。空間情報取得部20は、動作空間を撮影した画像をロボット制御装置10に出力してよい。空間情報取得部20は、ロボット40の動作空間におけるデプス情報を生成してロボット制御装置10に出力してもよい。空間情報取得部20は、ロボット40の動作空間における点群情報を生成してロボット制御装置10に出力してもよい。すなわち、空間情報は、点群データの形式で出力されてもよい。言い換えれば、点群情報は、空間情報を有していてもよい。点群情報は、動作空間に存在する物体50の表面に位置する各測定点の集合の情報であり、各測定点の座標情報又は色情報を含む情報である。点群情報は、測定空間内の物体50を複数の点で表すデータであるともいえる。空間情報が点群データの形式であることによって、空間情報取得部20で取得された初期データに基づく空間情報よりも、データ密度を小さくすることができる。
【0024】
空間情報取得部20は、FOV(Field Of View)を有する。FOVは、空間情報取得部20の撮影範囲に対応する。空間情報取得部20は、FOVに含まれる範囲を撮影できる。空間情報取得部20の実視野サイズは、空間情報取得部20のFOVと、デプス情報とに基づいて定まる。ロボット制御装置10は、空間情報取得部20の実視野サイズと、空間情報取得部20が撮影したロボット40のマーク46を含む画像とに基づいて、ロボット40のマーク46の位置及び姿勢を取得できる。具体的に、ロボット制御装置10は、マーク46を写した画像を所定のアルゴリズムで解析することによって、画像に基づいてマーク46の位置及び姿勢を算出できる。所定のアルゴリズムは、例えば、数式又はテーブル等を含んでよいし、演算処理を特定するプログラムを含んでもよい。所定のアルゴリズムは、画像に基づく算出結果を補正するためのパラメータを含んでもよい。
【0025】
(ロボット制御装置10の動作例)
ロボット制御装置10は、動作空間に存在する物体50等の作業対象に作用するようにロボット40を動作させたり、物体50を避けるようにロボット40を動作させたりする。ロボット制御装置10は、物体50を空間情報取得部20で写した撮影画像に基づいて、物体50に作用したり物体50を避けたりするようにロボット40を動作させる。
【0026】
<キャリブレーション>
ロボット制御装置10の制御部11は、空間情報取得部20の撮影画像に写ったマーク46の位置及び姿勢に基づいてロボット40の状態を取得し、ロボット40と物体50との位置関係を取得できる。一方で、制御部11は、例えばアーム42などに設置されたエンコーダなどのロボット40のセンサに基づいてロボット40の状態を取得する。ロボット40のセンサに基づく状態は、空間情報取得部20の撮影画像に基づく状態よりもロボット40の位置及び姿勢を高精度に表す。したがって、制御部11は、空間情報取得部20の撮影画像に基づくロボット40の状態を、ロボット40のセンサに基づくロボット40の状態に一致させることによって、ロボット40を動作空間において高精度で制御できる。空間情報取得部20の撮影画像に基づくロボット40の状態を、ロボット40のセンサに基づくロボット40の状態に一致させる作業は、キャリブレーションとも称される。具体的に、制御部11は、空間情報取得部20の(X,Y,Z)座標系をロボット40の(X_RB,Y_RB,Z_RB)座標系に一致させるようにキャリブレーションを実行する。制御部11は、空間情報取得部20の座標系とロボット40の座標系との相対位置関係を推定し、推定した相対位置関係に基づいて空間情報取得部20の座標系をロボット40の座標系に合わせてよい。
【0027】
制御部11は、空間情報取得部20のFOVの少なくとも一部をキャリブレーション範囲60としてキャリブレーションを実行してよい。本実施形態において、制御部11は、
図2に示されるキャリブレーション範囲60においてキャリブレーションを実行する。キャリブレーション範囲60は、
図2において二点鎖線で囲まれた領域として示されている。キャリブレーション範囲60は、ロボット40のキャリブレーションを実行する範囲に対応する。キャリブレーション範囲60は、ロボット40の作業領域を含んでよい。キャリブレーション範囲60は、ロボット40の作業領域とFOVとが重なる範囲であってよい。
【0028】
また、制御部11は、キャリブレーション範囲60の中に、キャリブレーションを実行するための点を設定する。キャリブレーションを実行するための点は、キャリブレーション位置とも称される。制御部11は、ロボット40のマーク46をキャリブレーション位置に移動させて空間情報取得部20によってマーク46を撮影させる。制御部11は、マーク46を写した画像に基づいてマーク46の位置及び姿勢を算出する。制御部11は、ロボット40のセンサの検出結果に基づいて定まるマーク46の位置及び姿勢に対して、画像に基づいて算出したマーク46の位置及び姿勢を一致させるように、画像に基づくマーク46の位置及び姿勢を補正する。画像に基づくマーク46の位置及び姿勢の補正がキャリブレーションに対応する。マーク46の位置及び姿勢は、先端位置姿勢とも称される。キャリブレーションは、先端位置姿勢の補正に対応する。キャリブレーション位置は、先端位置姿勢を補正する位置に対応する。
【0029】
具体的に、制御部11は、以下説明するようにキャリブレーションを実行してよい。制御部11は、ロボット40のマーク46をキャリブレーション位置に移動させるためのロボット40の制御情報を生成する。制御部11は、制御情報に基づいてロボット40を動作させ、ロボット40のマーク46をキャリブレーション位置に移動させる。制御部11は、マーク46を写した画像を空間情報取得部20から取得する。制御部11は、画像に基づいてマーク46の位置及び姿勢を算出する。画像に基づいて算出したマーク46の位置及び姿勢は、画像に基づく先端位置姿勢とも称される。制御部11は、ロボット40のセンサの検出結果に基づいて定まるマーク46の位置及び姿勢を算出する。センサの検出結果に基づいて算出したマーク46の位置及び姿勢は、センサに基づく先端位置姿勢とも称される。制御部11は、画像に基づく先端位置姿勢と、センサに基づく先端位置姿勢とを比較する。制御部11は、画像に基づく先端位置姿勢がセンサに基づく先端位置姿勢に一致するように、画像に基づく先端位置姿勢を補正する。制御部11は、画像に基づく先端位置姿勢を算出するアルゴリズムを補正してよい。制御部11は、アルゴリズムに含まれるパラメータを補正してよいし、数式、テーブル又はプログラムを補正してもよい。複数のキャリブレーション位置が設定されている場合、制御部11は、各キャリブレーション位置にロボット40を移動させ、各キャリブレーション位置においてマーク46を写した画像を取得し、画像に基づく先端位置姿勢を補正する。
【0030】
なお、上記の例では、マーク46の位置及び姿勢に対して、キャリブレーションを行なっているが、キャリブレーションを行なう箇所は、マーク46の位置及び姿勢に限られない。すなわち、制御部11は、予めマーク46の位置と、キャリブレーションを行なうロボット40の一部であるキャリブレーション対象部との位置関係を記憶しておき、画像に基づくマーク46の位置及び姿勢からキャリブレーション対象部の位置及び姿勢を算出してもよい。そして、ロボット40のセンサの検出結果に基づくキャリブレーション対象部の位置及び姿勢と比較することによってキャリブレーションを行なうことができる。したがって、マーク46の位置及び姿勢以外でもキャリブレーションを行なうことが可能になる。また、上記の例では、キャリブレーション対象部はロボット40の先端位置姿勢であったが、位置及び姿勢が算出可能な個所であれば、キャリブレーション対象物はロボット40の先端位置姿勢に限られない。
【0031】
<<キャリブレーションアイテム>>
制御部11は、キャリブレーションを実行する前に、あらかじめキャリブレーション範囲60を設定する。また、制御部11は、キャリブレーション範囲60に含まれるキャリブレーション位置を設定する。制御部11は、キャリブレーション範囲60の中にキャリブレーション位置を設定する。
【0032】
制御部11は、キャリブレーション位置にロボット40を移動させるようにロボット40の制御情報を生成する。制御部11は、ロボット40をキャリブレーション位置に移動させたときの先端位置姿勢とロボット40のマーク46の認識結果とを特定する情報をキャリブレーションアイテムとして生成する。なお、キャリブレーションアイテムは、例えば、座標に関する情報である。具体的には、キャリブレーションアイテムは、例えば、ロボット40をキャリブレーション位置に移動させたときのロボット40のセンサの検出結果に基づく先端位置姿勢を示す座標情報、又は空間情報取得部20によって認識されたマーク46の認識結果に基づく先端位置姿勢を示す座標情報などである。
【0033】
制御部11は、以下に説明するようにキャリブレーションアイテムを生成してよい。
【0034】
制御部11は、例えば空間情報取得部20から空間情報取得部20の実視野サイズに関する情報、又は、FOVに関する情報を取得する。制御部11は、空間情報取得部20の実視野サイズ又はFOVとロボット40の作業領域とに基づいて、キャリブレーション範囲60を設定する。制御部11は、ロボット40の動作空間における物体50の位置に基づいてキャリブレーション範囲60を設定してよい。制御部11は、空間情報取得部20で検出した物体50のデプス情報又は点群情報に基づいて、キャリブレーション範囲60を設定してよい。
図2において、キャリブレーション範囲60の形状は、四角錐台形状に設定されている。キャリブレーション範囲60の形状は、これらに限られず他の種々の形状に設定されてよい。
【0035】
制御部11は、ロボット40のセンサに基づく先端位置姿勢と、空間情報取得部20の画像に基づく先端位置姿勢とを一致させる。具体的に、制御部11は、ロボット40を第1位置に移動させる。制御部11は、ロボット40のマーク46が所定の位置及び姿勢となるようにロボット40を動作させる制御情報を生成し、制御情報に基づいてロボット40を制御することによってロボット40を第1位置に移動させる。第1位置は、空間情報取得部20のFOVに含まれる所定の位置であってよい。第1位置は、例えば空間情報取得部20のFOVの中心位置であってよい。制御部11は、ロボット40が第1位置に移動したときのマーク46の画像を取得し、マーク46の位置及び姿勢を画像に基づく先端位置姿勢として算出する。また、制御部11は、センサに基づく先端位置姿勢を算出する。制御部11は、画像に基づく先端位置姿勢と、センサに基づく先端位置姿勢との比較に基づいて、ロボット40の位置が画像内においてセンサの検出結果に基づく第1位置となるようにロボット40の制御情報を補正する。制御部11は、補正した制御情報に基づいてロボット40を動かすことによって、ロボット40の座標系におけるロボット40の位置と空間情報取得部20の座標系におけるロボット40の位置とが一致するようにロボット40の状態を更新する。つまり、制御部11は、ロボット40の位置が画像内において第1位置になるようにロボット40の状態を更新するともいえる。
【0036】
制御部11は、キャリブレーション範囲60の中で、第1位置とは異なるキャリブレーション位置の候補となる位置を生成してもよい。キャリブレーション位置の候補となる位置は、第2位置とも称される。第2位置は、キャリブレーション範囲60に含まれる。制御部11は、ロボット40の動作をシミュレーションすることによって、ロボット40が第2位置に移動した場合のロボット40の状態を推定する。つまり、制御部11は、ロボット40が第2位置に移動すると仮定した場合のロボット40の状態を算出する。その結果、制御部11は、ロボット40が第2位置に移動可能か否かを判定することができる。
【0037】
制御部11は、第2位置に移動すると仮定した場合のロボット40の状態が物体50に接触しない状態であり、関節可動域内である状態であり、かつ、特異点でない状態である場合、第2位置をキャリブレーション位置として登録する。制御部11は、第2位置をキャリブレーション位置として登録する場合、ロボット40を第2位置に移動させたときのロボット40のセンサの検出結果に基づく先端位置姿勢とロボット40のマーク46の認識結果に基づく先端位置姿勢とのそれぞれを特定する情報を複数のキャリブレーションアイテムとして生成してよい。制御部11は、第2位置をキャリブレーション位置として登録しない場合、新たに異なる位置の第2位置を生成し、新たな第2位置をキャリブレーション位置として登録できるか判定してもよい。制御部11は、ロボット40の関節の角度を表す数値が可動域内である場合、ロボット40の状態が関節制限でない状態であると判定してもよい。制御部11は、ロボット40の関節の角度を表す数値が可動域外である場合、ロボット40の状態が関節制限状態であると判定してもよい。
【0038】
特異点は、ロボット40の構造的にロボット40を制御できなくなる姿勢に対応する。ロボット40を動作させる軌道に特異点が含まれている場合、ロボット40は特異点付近において高速に移動(暴走)し、特異点で停止してしまう。ロボット40の特異点は、以下の(1)~(3)の3種類である。
(1)作業領域の外側限界の近くまでにロボット40を制御するときの作業領域外の点。(作業領域は、ロボット40の動作空間に対応する領域である。)
(2)作業領域内であっても、ロボットベースの真上と真下にロボット40を制御するときの点。
(3)ロボット40のアーム42の先端の関節より1つ前の関節角度がゼロ又は180度になる点(手首整列特異点)。
【0039】
制御部11は、ロボット40の状態を表す数値が特異点となる状態を表す数値に一致した場合に、ロボット40の状態が特異点の状態であると判定してもよい。制御部11は、ロボット40の状態を表す数値と特異点となる状態を表す数値との差が所定値未満である場合に、ロボット40の状態が特異点の状態であると判定してもよい。ロボット40の状態を表す数値は、例えばアーム42の関節の角度を含んでもよいし、ロボット40を駆動するモータのトルクを含んでもよい。
【0040】
以上述べてきたように、制御部11は、キャリブレーション範囲60を設定し、キャリブレーション範囲60の中でキャリブレーション位置を設定する。また、制御部11は、ロボット40をキャリブレーション位置に移動させたときのロボット40の先端位置姿勢とロボット40のマーク46の認識結果とを特定する情報としてキャリブレーションアイテムを生成できる。
【0041】
<<キャリブレーションの実行>>
制御部11は、マーク46の認識結果に関する先端位置姿勢のキャリブレーションアイテムが、ロボット40のセンサの検出結果に関する先端位置姿勢のキャリブレーションアイテムに一致するようにキャリブレーションを実行する。具体的に、制御部11は、キャリブレーション位置にロボット40を移動させる。制御部11は、空間情報取得部20によって、ロボット40がキャリブレーション位置に移動したときのロボット40のマーク46の認識結果を取得する。制御部11は、ロボット40のセンサに基づく先端位置姿勢のキャリブレーションアイテムに対する、マーク46の認識結果として取得された先端位置姿勢のキャリブレーションアイテムの相対位置関係を算出する。相対位置関係は、両者のキャリブレーションアイテムの間の座標の差及び角度の差に対応する。制御部11は、両者のキャリブレーションアイテムに対する相対位置関係に対応する座標の誤差及び角度の誤差がゼロ又はゼロに近くなるように(つまり、誤差が所定値未満になるように)空間情報取得部20の座標系を補正してロボット40の座標系に合わせる。このようにすることで、制御部11は、ロボット40がキャリブレーション位置に移動したときのマーク46の認識結果をロボット40のセンサで特定される先端位置姿勢に一致させることによって、相対位置関係を算出できる。
【0042】
具体的に、制御部11は、キャリブレーションを実行することによって空間情報取得部20の(X,Y,Z)座標系を補正してロボット40の(X_RB,Y_RB,Z_RB)座標系に一致させるとする。制御部11は、キャリブレーションを実行することによって空間情報取得部20の座標系とロボット40の座標系との関係を特定してもよい。
【0043】
<異常発生時の対応>
上述したように、キャリブレーションによって空間情報取得部20の座標系とロボット40の座標系との関係が特定される。本実施形態において、空間情報取得部20の座標系とロボット40の座標系とは一致する。ここで、種々の原因によって、座標系の関係が変化することがある。座標系の関係は、ロボット40又はロボット制御システム1に異常が発生したときに変化し得る。座標系の関係は、ロボット40を停止したとき、又は、ロボット40を起動するときに変化し得る。
【0044】
制御部11は、少なくとも1回のキャリブレーションを実行したロボット40を通常に起動するとき又は異常発生から回復させるために起動するときに、キャリブレーションによって特定されていた座標系の関係が変化しているか判定する。仮に、座標系の関係が変化していなければ、制御部11は、座標系の関係の補正又はキャリブレーションを実行せずにすむ。一方で、ロボット40を起動するときに座標系の関係が変化していれば、制御部11は、座標系の関係を補正できるか判定する。制御部11は、座標系の関係を補正できる場合、座標系の関係を補正し、キャリブレーションを実行しない。制御部11は、座標系の関係を補正できない場合、再キャリブレーションを実行することによって、座標系の関係をあらためて特定する。
【0045】
言い換えれば、ロボット40が停止した時に、又はロボット40を起動するときに、キャリブレーションの必要性について判定してもよい。また、ロボット40が停止したときは、異常停止したときに限られず、指定された作業を完了したときであってもよい。また、ロボット40を起動するときは、異常停止した後に起動するときに限られず、指定された作業を開始するときであってもよい。
【0046】
制御部11は、キャリブレーションを少なくとも1回実行したロボット40を起動するときに、以下に説明するように、ロボット40の座標系と空間情報取得部20の座標系との関係が変化したか判定し、再キャリブレーションが必要か判定する。
【0047】
制御部11は、ロボット40を計測位置に移動させる。制御部11は、計測位置をキャリブレーション範囲60に含まれる点に設定する。計測位置は、例えばキャリブレーション位置の一部を含んでいてもよい。計測位置は、例えばキャリブレーション範囲60の角の点を含んでいてもよい。計測位置は、例えば、上記で説明した第1位置または第2位置を含んでいてもよいし、第1位置および第2位置とは異なる位置を含んでいてもよい。計測位置は、前回のキャリブレーションで使用したキャリブレーション位置を含んでいてもよいし、前回のキャリブレーション位置とは異なる位置を含んでいてもよい。制御部11は、例えばキャリブレーション範囲60の内部の点を計測位置として設定してもよい。制御部11は、これらの点に限られず、キャリブレーション範囲60に含まれる種々の点を計測位置として設定してよい。制御部11は、ロボット40の移動先の計測位置を取得してよい。
【0048】
制御部11は、ロボット40を計測位置に移動させたときのマーク46の認識結果を取得する。制御部11は、マーク46の認識結果に基づいてロボット40の位置を計測結果として算出する。制御部11は、計測位置の初期値と計測結果との差を算出する。制御部11は、センサの検出結果に基づいてロボット40を計測位置に移動させているので、センサに基づくロボット40の位置を算出せずに、設定した計測位置そのものと計測結果との差を算出してよい。制御部11は、ロボット40を計測位置に移動させたときのセンサの検出結果を取得し、この検出結果からセンサに基づくロボット40の位置を計測位置として算出して取得し、算出した計測位置を計測位置の初期値として、計測結果との差を算出してもよい。
【0049】
制御部11は、計測位置の初期値と計測結果との差に基づいて座標系の関係を補正するか判定する。例えば、制御部11は、計測位置の初期値と計測結果との差が所定の閾値より大きい場合に、座標系の関係を補正すると判定する。制御部11は、複数の計測位置で計測結果を取得した場合、少なくとも1つの計測位置の初期値とその計測結果との差が所定の閾値より大きい場合に、座標系の関係を補正すると判定する。制御部11は、計測位置の初期値と計測結果との差が所定の閾値以下である場合に、座標系の関係の補正、及び、再キャリブレーションが必要ないと判定する。制御部11は、所定の閾値を適宜設定してよい。制御部11は、例えばロボット40の動作時の位置精度の仕様に基づいて、所定の閾値を設定してよい。
【0050】
制御部11は、座標系の関係を補正する場合、ロボット40の座標系に空間情報取得部20の座標系を合わせるように、空間情報取得部20の座標系を補正してよい。制御部11は、空間情報取得部20の座標系にロボット40の座標系を合わせるように、ロボット40の座標系を補正してもよい。
【0051】
具体的に、制御部11は、空間情報取得部20の座標系又はロボット40の座標系を、回転させたり並進させたりして補正してよい。制御部11は、空間情報取得部20の座標系又はロボット40の座標系を、拡大させたり縮小させたりして補正してよい。制御部11は、空間情報取得部20の座標系又はロボット40の座標系の歪みを補正してもよい。制御部11は、座標系の補正に基づいて、計測位置の補正値を算出してもよい。
【0052】
制御部11は、1つの計測位置においてロボット40の先端位置姿勢を取得し、マーク46の向きを表す回転角等の情報に基づいて、座標系を並進方向だけでなく回転方向に補正してもよい。
【0053】
座標系の関係の変化の具体例が
図3を参照して説明される。ロボット40の(X_RB,Y_RB,Z_RB)座標系に基づいて、計測位置の座標を頂点とする計測位置モデル70が定められるとする。制御部11は、計測位置モデル70の各頂点(計測位置)にロボット40を移動させてマーク46の認識結果を取得する。空間情報取得部20の(X,Y,Z)座標系に基づいて取得したマーク46の認識結果をロボット40の(X_RB,Y_RB,Z_RB)座標系に一致されるとき、算出された計測結果は、計測結果の座標を頂点とする計測結果モデル72で表されるとする。計測位置モデル70は、設定した計測位置そのもの、又は、センサの検出結果に基づいてロボット40を計測位置に移動させたときの計測位置の初期値に対応する。計測結果モデル72は、ロボット40を計測位置に移動させたときのマーク46の認識結果をロボット40の(X_RB,Y_RB,Z_RB)座標系に一致させるときの計測結果に対応する。制御部11は、計測位置モデル70と計測結果モデル72との比較に基づいて、座標系の関係が変化したか判定する。本実施形態において、あらかじめ実行したキャリブレーションによって、ロボット40の座標系と空間情報取得部20の座標系とが一致していたとする。
図3に例示される状態において、空間情報取得部20の座標系は、ロボット40の座標系に対して、回転方向及び並進方向に変化している。制御部11は、空間情報取得部20の座標系をロボット40の座標系に一致させるように空間情報取得部20の座標系を並進方向及び回転方向に補正してよい。
【0054】
制御部11は、座標系の関係を補正した後、再度、ロボット40を補正後の計測位置に移動させて計測結果を取得する。補正後の計測位置は、補正位置とも称される。座標系の関係を補正した後に取得した計測結果は、補正後計測結果とも称される。制御部11は、補正位置と補正後計測結果との差が所定の閾値以下である場合に、座標系の関係が補正によって前回のキャリブレーションの実行時の関係に戻ったと判定し、ロボット40の再キャリブレーションが必要ないと判定する。制御部11は、座標系の関係の補正結果に基づいて、相対位置関係を更新する。具体的に、制御部11は、計測位置の初期値と補正位置との差に基づいて相対位置関係を更新してよい。
【0055】
制御部11は、補正位置と補正後計測結果との差が所定値より大きい場合に、座標系の関係が補正によって前回のキャリブレーションの実行時の関係に戻らないと判定し、ロボット40の再キャリブレーションが必要であると判定する。
【0056】
上述してきた座標系の補正は、異常発生時に実行されてよい。具体的に、座標系の補正は、ロボット40が異常停止した後にロボット40を再起動するときに実行されてよい。また、座標系の補正は、空間情報取得部20が動くことによって空間情報取得部20の(X,Y,Z)座標系が変化したときに実行されてもよい。座標系の補正は、異常発生時に限られず、ロボット40の起動時に実行されてもよい。
【0057】
(ロボット制御方法の手順例)
ロボット制御装置10の制御部11は、ロボット40の起動時又は異常からの回復時等に、
図4に例示されるフローチャートの手順を含むロボット制御方法を実行してもよい。ロボット制御方法は、制御部11を構成するプロセッサに実行させるロボット制御プログラムとして実現されてもよい。ロボット制御プログラムは、非一時的なコンピュータ読み取り可能な媒体に格納されてよい。
【0058】
制御部11は、計測位置を取得する(ステップS1)。制御部11は、ロボット40を計測位置へ移動させる(ステップS2)。制御部11は、ロボット40が移動した計測位置におけるマーク46の認識結果を取得する(ステップS3)。制御部11は、全計測位置でマーク46の認識が完了したか判定する(ステップS4)。制御部11は、全計測位置でマーク46の認識が完了していない場合(ステップS4:NO)、ステップS2の手順に戻る。
【0059】
制御部11は、全計測位置でマーク46の認識が完了した場合(ステップS4:YES)、計測位置の初期値と計測結果との差が所定の閾値以下であるか判定する(ステップS5)。制御部11は、計測位置の初期値と計測結果との差が所定の閾値以下である場合(ステップS5:YES)、
図4のフローチャートの手順の実行を終了する。
【0060】
制御部11は、計測位置の初期値と計測結果との差が所定の閾値以下でない場合(ステップS5:NO)、つまり計測位置の初期値と計測結果との差が所定の閾値より大きい場合、座標系を補正し、補正位置を算出する(ステップS6)。制御部11は、ロボット40を補正位置へ移動させる(ステップS7)。制御部11は、ロボット40が移動した補正位置におけるマーク46の認識結果を取得し、補正後計測結果を取得する(ステップS8)。
【0061】
制御部11は、補正位置と補正後計測結果との差が所定の閾値以下であるか判定する(ステップS9)。制御部11は、補正位置と補正後計測結果との差が所定の閾値以下である場合(ステップS9:YES)、計測位置の初期値と計測結果との差に基づいて補正値を算出し、キャリブレーション値を更新する(ステップS10)。キャリブレーション値は、相対位置関係を表す。制御部11は、ステップS10の手順の実行後、
図4のフローチャートの手順の実行を終了する。
【0062】
制御部11は、補正位置と補正後計測結果との差が所定の閾値以下でない場合(ステップS9:NO)、つまり計測位置の補正値と計測結果との差が所定の閾値より大きい場合、ロボット40の再キャリブレーションが必要であると決定する(ステップS11)。制御部11は、ステップS11の手順の実行後、
図4のフローチャートの手順の実行を終了する。制御部11は、ステップS11の手順の実行後、ロボット40の再キャリブレーションを実行してもよい。
【0063】
(小括)
以上述べてきたように、本実施形態に係るロボット制御装置10及びロボット制御方法によれば、ロボット40の起動時又は異常からの回復時等において、計測位置と計測結果との差が所定の閾値より大きい場合に座標系が補正される。そして、座標系の補正後の計測位置と計測結果との差が所定の閾値より大きい場合に再キャリブレーションが必要と判定され得る。逆に言えば、座標系の補正後の計測位置と計測結果との差が所定の閾値以下となる場合に再キャリブレーションが不要と判定され得る。このようにすることで、異常発生時の作業負荷が低減され得る。
【0064】
本開示に係る実施形態について、諸図面及び実施例に基づき説明してきたが、当業者であれば本開示に基づき種々の変形又は改変を行うことが可能であることに注意されたい。従って、これらの変形又は改変は本開示の範囲に含まれることに留意されたい。例えば、各構成部等に含まれる機能等は論理的に矛盾しないように再配置可能であり、複数の構成部等を1つに組み合わせたり、或いは分割したりすることが可能である。
【0065】
本開示に記載された構成要件の全て、及び/又は、開示された全ての方法、又は、処理の全てのステップについては、これらの特徴が相互に排他的である組合せを除き、任意の組合せで組み合わせることができる。また、本開示に記載された特徴の各々は、明示的に否定されない限り、同一の目的、同等の目的、または類似する目的のために働く代替の特徴に置換することができる。したがって、明示的に否定されない限り、開示された特徴の各々は、包括的な一連の同一、又は、均等となる特徴の一例にすぎない。
【0066】
さらに、本開示に係る実施形態は、上述した実施形態のいずれの具体的構成にも制限されるものではない。本開示に係る実施形態は、本開示に記載された全ての新規な特徴、又は、それらの組合せ、あるいは記載された全ての新規な方法、又は、処理のステップ、又は、それらの組合せに拡張することができる。
【符号の説明】
【0067】
1 ロボット制御システム
10 ロボット制御装置(11:制御部、12:記憶部)
20 空間情報取得部
40 ロボット(42:アーム、44:エンドエフェクタ、46:マーク)
50 物体
60 キャリブレーション範囲
70 計測位置モデル
72 計測結果モデル