(57)【要約】  ロボット制御装置（１）は、ロボット（３０）が有する複数のアームを駆動するための指令である平滑化前指令（１１ａ）を生成する平滑化前指令生成部（１１）と、平滑化前指令（１１ａ）を平滑化して平滑化後指令（１２ａ）を生成する平滑化部（１２）と、平滑化後指令（１２ａ）をロボット（３０）に出力する指令出力部（１３）と、平滑化前指令（１１ａ）と平滑化後指令（１２ａ）とをもとにロボット（３０）に設けられた監視箇所の動作速度を推定する速度推定部（１４）と、速度推定部（１４）によって推定された動作速度とあらかじめ決められた制限速度とをもとに仮想時間修正率であるオーバーライドを修正するオーバーライド修正部（１５）とを有する。平滑化前指令生成部（１１）は、オーバーライド修正部（１５）によって得られたオーバーライドを用いて平滑化前指令（１１ａ）を生成する。
2020170306.tif 000002
【特許請求の範囲】
【請求項１】
複数のアームを有するロボットを制御するロボット制御装置であって、
前記ロボットが有する前記複数のアームを駆動するための指令である平滑化前指令を生成する平滑化前指令生成部と、
前記平滑化前指令生成部によって生成された前記平滑化前指令を平滑化して平滑化後指令を生成する平滑化部と、
前記平滑化部によって生成された前記平滑化後指令を前記ロボットに出力する指令出力部と、
前記平滑化前指令生成部によって生成された前記平滑化前指令と前記平滑化部によって生成された前記平滑化後指令とをもとに前記ロボットに設けられた監視箇所の動作速度を推定する速度推定部と、
前記速度推定部によって推定された動作速度とあらかじめ決められた制限速度とをもとに仮想時間修正率であるオーバーライドを修正するオーバーライド修正部とを備え、
前記平滑化前指令生成部は、前記オーバーライド修正部によって得られたオーバーライドを用いて前記平滑化前指令を生成する
ことを特徴とするロボット制御装置。
【請求項２】
前記速度推定部は、
前記平滑化後指令をもとに演算される前記監視箇所の位置と、前記平滑化前指令をもとに演算される前記監視箇所の移動量である平滑化前指令値移動量とをもとに、前記監視箇所の第１推定速度を演算する第１速度演算部と、
前記平滑化後指令をもとに演算される前記監視箇所の位置と、前記平滑化後指令をもとに演算される前記監視箇所の移動量である平滑化後指令値移動量とをもとに、前記監視箇所の第２推定速度を演算する第２速度演算部と、
前記第１推定速度及び前記第２推定速度をもとに前記監視箇所の動作速度を推定する代表速度演算部と
を有することを特徴とする請求項１に記載のロボット制御装置。
【請求項３】
前記第１速度演算部は、１周期前に前記ロボットに出力された前記平滑化後指令のもとになった前記平滑化前指令をもとに前記平滑化前指令値移動量を演算し、
前記第２速度演算部は、１周期前に前記ロボットに出力された前記平滑化後指令をもとに前記平滑化後指令値移動量を演算する
ことを特徴とする請求項２に記載のロボット制御装置。
【請求項４】
前記第１速度演算部は、前記ロボットに将来出力される前記平滑化後指令のもとになる前記平滑化前指令をもとに前記平滑化前指令値移動量を演算し、
前記第２速度演算部は、前記ロボットに将来出力される前記平滑化後指令をもとに前記平滑化後指令値移動量を演算する
ことを特徴とする請求項２に記載のロボット制御装置。
【請求項５】
前記代表速度演算部は、前記第１推定速度と前記第２推定速度とのうちの大きい方の推定速度を前記監視箇所の動作速度と推定する
ことを特徴とする請求項２から４のいずれか１項に記載のロボット制御装置。
【請求項６】
前記オーバーライド修正部は、修正を行うことによって得られるオーバーライドの毎制御周期における増加量があらかじめ決められた値未満となるように修正後のオーバーライドを得る
ことを特徴とする請求項１から５のいずれか１項に記載のロボット制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットを制御するロボット制御装置に関する。
【背景技術】
【０００２】
近年、作業者とロボットとが安全柵で仕切られることなく作業空間を共有する人協調ロボットシステムの開発が進んでいる。人協調ロボットシステムでは、ロボットが人に衝突する可能性を下げるために、人が指定された範囲に侵入した場合にロボットの動作速度を決められた制限値以下にしてロボットを動作させる機能が必要とされている。従来、ロボットの動作周期毎にロボットに取り付けられたサーボモータの駆動角速度を算出し、算出された駆動角速度から求められるロボットの動作速度と制限速度との比率をもとにサーボモータの駆動角速度を低下させる技術が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−４３４５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術では、ロボットの動作速度を調整するために修正した角速度指令をサーボモータに直接出力するため、サーボモータの許容値を超える加速度及び振動が発生するという課題がある。【０００５】
一般的に、ロボットの制御装置がサーボモータに指令を出力する場合、ロボットの滑らかな動作を実現するために、生成された指令に対して平滑化処理を行われる必要がある。サーボモータの初期角度と最終角度との変位量をもとにサーボモータに出力される角速度指令を台形パターンで生成する場合、角速度指令に対して平滑化処理が行われなければ、指令の開始点、終了点、及び台形の頂点部といった角速度指令の変化地点でサーボモータの許容値を超える加速度及び振動が発生する可能性がある。平滑化処理は、上記の許容値を超える加速度及び振動が発生することを抑制するための処理である。【０００６】
平滑化処理を行ってロボットの動作速度を制限値以下に制御する場合、サーボモータに出力される実指令である平滑化処理後の指令をもとにロボットの動作速度を演算する必要がある。しかしながら、ロボットの動作速度を制限速度以下にするための角速度指令における値を低下させる処理は平滑化前の指令について行われる処理であるため、当該処理が反映されるタイミングが平滑化処理の分だけ遅れてロボットの動作速度が制限速度を超過する可能性があるという課題がある。【０００７】
本発明は、上記に鑑みてなされたものであって、ロボットを滑らかに動作させるために指令を平滑化する処理を行ってもロボットを制限値以内の動作速度で動作させるロボット制御装置を得ることを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明は、複数のアームを有するロボットを制御するロボット制御装置であって、ロボットが有する複数のアームを駆動するための指令である平滑化前指令を生成する平滑化前指令生成部と、平滑化前指令生成部によって生成された平滑化前指令を平滑化して平滑化後指令を生成する平滑化部と、平滑化部によって生成された平滑化後指令をロボットに出力する指令出力部とを有する。本発明は、平滑化前指令生成部によって生成された平滑化前指令と平滑化部によって生成された平滑化後指令とをもとにロボットに設けられた監視箇所の動作速度を推定する速度推定部と、速度推定部によって推定された動作速度とあらかじめ決められた制限速度とをもとに仮想時間修正率であるオーバーライドを修正するオーバーライド修正部とを更に有する。平滑化前指令生成部は、オーバーライド修正部によって得られたオーバーライドを用いて平滑化前指令を生成する。
【発明の効果】
【０００９】
本発明によれば、ロボットを滑らかに動作させるために指令を平滑化する処理を行ってもロボットを制限値以内の動作速度で動作させることができるという効果が得られる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１にかかるロボット制御装置のハードウェア構成を示す図
【図２】実施の形態１にかかるロボット制御装置の機能を説明するためのブロック図
【図３】実施の形態１にかかるロボット制御装置の動作の手順を示すフローチャート
【図４】実施の形態１にかかるロボット制御装置が有する平滑化前指令生成部の構成を示す図
【図５】実施の形態１にかかるロボット制御装置が有する平滑化前指令生成部の動作の手順を示すフローチャート
【図６】実施の形態１にかかるロボット制御装置が有する速度推定部の構成を示す図
【図７】実施の形態１にかかるロボット制御装置が有する速度推定部の動作の手順を示すフローチャート
【図８】実施の形態２にかかるロボット制御装置の機能を説明するためのブロック図
【図９】実施の形態２にかかるロボット制御装置が有する抑制部の動作の手順を示すフローチャート
【図１０】実施の形態３にかかるロボット制御装置の機能を説明するためのブロック図
【図１１】実施の形態３にかかるロボット制御装置が有する速度推定部の動作の手順を示すフローチャート
【図１２】実施の形態１にかかるロボット制御装置が有する平滑化前指令生成部、平滑化部、指令出力部、速度推定部及びオーバーライド修正部の一部又は全部の機能がプロセッサによって実現される場合のプロセッサを示す図
【図１３】実施の形態１にかかるロボット制御装置が有する平滑化前指令生成部、平滑化部、指令出力部、速度推定部及びオーバーライド修正部の一部又は全部が処理回路によって実現される場合の処理回路を示す図
【発明を実施するための形態】
【００１１】
以下に、本発明の実施の形態にかかるロボット制御装置を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１２】
本明細書において、ロボット姿勢は、ロボット手先位置及びロボット手先姿勢を意味する。ロボット手先位置は、３次元空間の基準となる任意の位置に設定された基準座標系におけるロボット手先の位置である。ロボット手先姿勢は、ロボット手先位置に定義されたツール座標系の座標からの座標変換で表すことができる。座標変換には、例えば、座標変換行列、オイラー角、クォータニオン又はロドリゲスパラメータが用いられる。本明細書では、ロボット姿勢をロボット手先の位置及び姿勢として説明するが、ロボット手先に設定された座標系からあらかじめ決められた座標変換を行って移動させた座標系においてはロボット手先と同様に位置及び姿勢を計算することが可能である。ロボット姿勢は、ロボット手先位置及びロボット手先姿勢に限定されない。
【００１３】
実施の形態１．
図１は、実施の形態１にかかるロボット制御装置１のハードウェア構成を示す図である。ロボット制御装置１は、複数のアームを有するロボットを制御する装置であって、ロボットを制御するために動作するＣＰＵ（Central  Processing  Unit）２と、ＣＰＵ２が動作する際にＣＰＵ２によって用いられるデータを記憶する記憶装置３とを有する。ＣＰＵ２は、プロセッサの一例である。記憶装置３は、ロボット制御装置１によって制御されるロボットの筺体モデルを示すデータと、ロボット姿勢を示すデータとを記憶している。記憶装置３の例は、ＲＯＭ（Read  Only  Memory）、ＨＤＤ（Hard  Disk  Drive）、又は、ＲＡＭ（Random  Access  Memory）である。
【００１４】
ロボット制御装置１は、受信装置６に信号を送信する機能と入力装置７から送信された信号を受信する機能とを有するＩＯ（Input  Output）インターフェース４を更に有する。図１には、受信装置６及び入力装置７も示されている。ＩＯインターフェース４は、ケーブル８によって受信装置６に接続されており、ケーブル９によって入力装置７に接続されている。受信装置６は、ロボット制御装置１から送信された信号を受信する。受信装置６の例は、ロボット制御装置１によって制御されるロボットの動作の状態をロボット制御装置１の外部に報知するランプ又はブザーである。入力装置７は、ロボット制御装置１に信号を送信する。入力装置７の例は、ライトカーテン又はエリアセンサである。ロボット制御装置１は、ＣＰＵ２、記憶装置３及びＩＯインターフェース４を相互に接続するバス５を更に有する。
【００１５】
図２は、実施の形態１にかかるロボット制御装置１の機能を説明するためのブロック図である。ロボット制御装置１は、ロボット３０を制御する装置である。図２には、ロボット３０も示されている。ロボット３０は、複数のアームと、複数のアームの各々の先端に設けられたロボット手先とを有する。各アームは、回転することができる状態でロボット３０の本体に接続されている。
【００１６】
各アームの本体との接続部は、関節部と定義される。各関節部には、関節部の角度を変更させるための駆動装置と、関節部の回転角を計測する関節角度検出器とが取り付けられている。駆動装置は、関節部を駆動する装置であって、電動モータを有する。電動モータの例は、サーボモータ又はステッピングモータである。関節角度検出器は、画像センサ及びエンコーダを有する。駆動装置が各関節部の角度を変更することにより、ロボット３０の各アームの位置及び姿勢は変化する。
【００１７】
ロボット制御装置１は、あらかじめ決められた制御周期でロボット３０にロボット動作指令１ａを出力する。ロボット駆動指令１ａは、ロボット３０の各関節部に設けられた駆動装置に出力される関節角度指令であって、ロボット３０が有する複数のアームの動作を制御する指令である。
【００１８】
ロボット制御装置１は、ロボット３０が有する複数のアームを駆動するための指令である平滑化前指令１１ａを生成する平滑化前指令生成部１１を有する。平滑化前指令生成部１１の詳細については、後に図４及び図５を用いて更に説明する。
【００１９】
ロボット制御装置１は、平滑化前指令生成部１１によって生成された平滑化前指令１１ａを平滑化して平滑化後指令１２ａを生成する平滑化部１２を更に有する。平滑化後指令１２ａは、ロボット駆動指令１ａである。平滑化部１２は、平滑化前指令１１ａに含まれる値の変化の平均を用いて平滑化後指令１２ａを生成してもよいし、Ｎ次遅れ要素に対応するフィルタを用いて平滑化後指令１２ａを生成してもよい。Ｎは、１以上の整数である。
【００２０】
ロボット制御装置１は、平滑化部１２によって生成された平滑化後指令１２ａをロボット３０に出力する指令出力部１３を更に有する。指令出力部１３がロボット３０に出力する平滑化後指令１２ａは、ロボット３０を駆動するためのロボット駆動指令１ａである。
【００２１】
ロボット制御装置１は、平滑化前指令生成部１１によって生成された平滑化前指令１１ａと平滑化部１２によって生成された平滑化後指令１２ａとをもとにロボット３０に設けられた監視箇所の動作速度を推定する速度推定部１４を更に有する。監視箇所はロボット３０にあらかじめ設定された場所であって、監視箇所の個数は１個以上である。速度推定部１４によって推定された動作速度は、代表監視速度１４ａである。速度推定部１４の詳細については、後に図６及び図７を用いて更に説明する。
【００２２】
ロボット制御装置１は、速度推定部１４によって推定された代表監視速度１４ａとあらかじめ決められた制限速度とをもとに仮想時間修正率であるオーバーライドを修正するオーバーライド修正部１５を更に有する。制限速度を示すデータは、図１の記憶装置３に記憶されている。オーバーライド修正部１５は、修正を行うことによって修正後のオーバーライド１５ａを得る。
【００２３】
オーバーライド１５ａは、ロボット３０の目標動作速度を代表監視速度１４ａで除することによって得られる値であって、０から１までの値である。オーバーライド１５ａを「ＯＶＲＤ」と表し、ロボット３０の目標動作速度を「Ｖｌｉｍ」と表すと、オーバーライド１５ａは下記の式（１）によって得られる。
ＯＶＲＤ＝ｍｉｎ（１，ｍａｘ（０，Ｖｌｉｍ／Ｖ））  ・・・（１）
【００２４】
ロボット３０の目標動作速度は、入力装置７からロボット制御装置１に入力されて記憶装置３に記憶されてもよいし、記憶装置３にあらかじめ記憶されていてもよい。記憶装置３が複数の目標動作速度を記憶していて、ロボット３０の動作の状態により、又は、入力装置７がロボット制御装置１に送信する信号により、複数の目標動作速度のなかからひとつの目標動作速度が選択されてもよい。
【００２５】
平滑化前指令生成部１１、平滑化部１２、指令出力部１３、速度推定部１４及びオーバーライド修正部１５の機能は、ＣＰＵ２によって実現される。ＣＰＵ２は、記憶装置３に記憶されたプログラムを読み出して実行することにより、平滑化前指令生成部１１、平滑化部１２、指令出力部１３、速度推定部１４及びオーバーライド修正部１５の機能を実現する。記憶装置３は、平滑化前指令生成部１１、平滑化部１２、指令出力部１３、速度推定部１４及びオーバーライド修正部１５によって実行されるステップが結果的に実行されることになるプログラムを格納するための装置でもある。記憶装置３に格納されるプログラムは、平滑化前指令生成部１１、平滑化部１２、指令出力部１３、速度推定部１４及びオーバーライド修正部１５が実行する手順又は方法をＣＰＵ２に実行させるものである。
【００２６】
平滑化前指令１１ａは平滑化前指令値を含み、平滑化後指令１２ａは平滑化後指令値を含む。本明細書において、平滑化前指令値及び平滑化後指令値は、ロボット３０の各関節部の角度指令値及び角速度指令値である。毎制御周期においてロボット制御装置１がロボット３０に出力するロボット駆動指令１ａは、角度指令値を含む。本明細書では、平滑化前の角度指令値はθ＿ｉと表され、平滑化前の角速度指令値はω＿ｉと表され、平滑化後の角度指令値はφ＿ｉと表され、平滑化後の角速度指令値はψ＿ｉと表される場合がある。添え字ｉは、各関節部を識別する番号である。
【００２７】
図３は、実施の形態１にかかるロボット制御装置１の動作の手順を示すフローチャートである。ＣＰＵ２は、記憶装置３にあらかじめ記憶されているプログラムを処理することにより、動作指令が存在するか否かを判断する（Ｓ１）。
【００２８】
ＣＰＵ２は、動作指令が存在しないと判断した場合（Ｓ１でＮｏ）、動作を開始せず待機する。つまり、ＣＰＵ２は、動作指令が存在しないと判断した場合（Ｓ１でＮｏ）、ステップＳ１の処理を繰り返し行う。ＣＰＵ２は、動作指令が存在すると判断した場合（Ｓ１でＹｅｓ）、現在のロボット姿勢の取得処理を行う（Ｓ２）。
【００２９】
ＣＰＵ２は、現在のロボット姿勢を示すデータを取得するために、ロボット３０の各関節部に取り付けられた関節角度検出器から関節角を示すデータを取得する。その後、ＣＰＵ２は、記憶装置３に記憶されているロボット３０の筐体モデルを示すデータを用いてロボット３０の関節角度からロボット手先の位置及び姿勢を演算する。以下では、記憶装置３に記憶されているロボット３０の筐体モデルを示すデータを用いてロボット３０の関節角度からロボット手先の位置及び姿勢を演算することは、「順変換」と記載される。
【００３０】
その後、ＣＰＵ２は、目標となるロボット姿勢の取得処理を行う（Ｓ３）。次に、ＣＰＵ２は、仮想時間を初期化する（Ｓ４）。ステップＳ２からステップＳ４までの各処理が行われる順番は、限定されない。
【００３１】
その後、平滑化前指令生成部１１は、ロボット３０を現在姿勢から目標姿勢へ動作させるための平滑化前指令１１ａを制御周期毎に更新する（Ｓ５）。ステップＳ５の処理において、平滑化前指令生成部１１は、例えば、ステップＳ２の処理と同様にロボット３０の各関節部に取り付けられた関節角度検出器から関節角を示すデータを取得して順変換することで毎制御周期のロボット３０の現在姿勢を示すデータを取得する。平滑化前指令生成部１１は、毎制御周期で更新された姿勢データを記憶しておき、１周期前の姿勢データを次制御周期における現在姿勢を示すデータとして用いてもよい。
【００３２】
その後、平滑化部１２は平滑化前指令１１ａを平滑化して平滑化後指令１２ａを生成する（Ｓ６）。次に、速度推定部１４は監視箇所の動作速度を推定する（Ｓ７）。次に、オーバーライド修正部１５はオーバーライドを修正する（Ｓ８）。次に、指令出力部１３は駆動指令をロボット３０に出力する（Ｓ９）。駆動指令は、平滑化部１２によって生成された平滑化後指令１２ａである。
【００３３】
その後、ＣＰＵ２は、制御周期毎にロボット３０の現在姿勢が目標姿勢に到達したかを判断し（Ｓ１０）、現在姿勢が目標姿勢に到達していると判断した場合（Ｓ１０でＹｅｓ）、動作を終了する。ＣＰＵ２が、ロボット３０の現在姿勢が目標姿勢に到達していないと判断した場合（Ｓ１０でＮｏ）、ロボット制御装置１の動作はステップＳ５に移行する。
【００３４】
図４は、実施の形態１にかかるロボット制御装置１が有する平滑化前指令生成部１１の構成を示す図である。平滑化前指令生成部１１は、オーバーライド１５ａをもとに、実際の制御時間とは別の仮想時間１１１ａを演算する仮想時間計算部１１１を有する。平滑化前指令生成部１１は、ロボット３０の動作時の加減速度及び最高速度の動作パラメータ１１２ａを記憶装置３から取得する動作計画部１１２を更に有する。平滑化前指令生成部１１は、仮想時間計算部１１１によって得られた仮想時間１１１ａをもとに、動作計画部１１２によって取得された動作パラメータ１１２ａを用いて、平滑化前指令１１ａを生成する指令値更新部１１３を更に有する。
【００３５】
動作計画部１１２は、記憶装置３にあらかじめ記憶されている動作パラメータ１１２ａを記憶装置３から取得して指令値更新部１１３に出力する。動作パラメータ１１２ａは、各関節部が現在角度から目標角度に動作するまでの角速度パターンを生成するための角加減速度及び最大角速度のデータを含む。記憶装置３が動作パラメータ１１２ａについての複数のデータの組を記憶している場合、動作計画部１１２は、記憶装置３に記憶されている複数のデータの組から、ロボット３０の動作状況に対応した動作パラメータ１１２ａを選択して指令値更新部１１３に出力してもよい。
【００３６】
図５は、実施の形態１にかかるロボット制御装置１が有する平滑化前指令生成部１１の動作の手順を示すフローチャートである。仮想時間計算部１１１は、仮想時間修正率であるオーバーライド１５ａをもとに仮想時間１１１ａを更新する（Ｓ１１）。以下では、オーバーライド１５ａは「ＯＶＲＤ」と表される場合があり、仮想時間は「ＫＴ」と表される場合がある。
【００３７】
具体的には、仮想時間計算部１１１は、下記の式（２）を用いて仮想時間を更新する。
ＫＴ（ｋ）＝ＫＴ（ｋ−１）＋ＯＶＲＤ（ｋ）×ΔＴ  ・・・（２）
ΔＴは制御周期であり、ＫＴ（ｋ）はｋステップ時の仮想時間を表している。ＯＶＲＤは、０から１までの実数である。
【００３８】
次に、指令値更新部１１３は、仮想時間ＫＴ（ｋ）をもとに、指令値を更新するか否かを判定する（Ｓ１２）。指令値更新部１１３は、仮想時間ＫＴ（ｋ）がｊ回目の指令値更新時間Ｔ（ｊ）を超過する場合、指令値を更新すると判定し（Ｓ１２でＹｅｓ）、仮想時間ＫＴ（ｋ）がｊ回目の指令値更新時間Ｔ（ｊ）を超過しない場合、指令値を更新しないと判定する（Ｓ１２でＮｏ）。指令値更新部１１３は、指令値を更新しないと判定した場合（Ｓ１２でＮｏ）、前回出力した指令値を継続して出力する。指令値更新部１１３が指令値を更新しないと判定した場合（Ｓ１２でＮｏ）、平滑化前指令生成部１１の動作は終了する。指令値更新部１１３は、指令値を更新すると判定した場合（Ｓ１２でＹｅｓ）、指令値更新時間を下記の式（３）を用いて更新する（Ｓ１３）。
Ｔ（ｊ＋１）＝Ｔ（ｊ）＋ΔＴ  ・・・（３）
【００３９】
指令値更新部１１３は、ステップＳ１３の処理を行った後、平滑化前の各関節部の角度指令及び角速度指令である平滑化前指令１１ａを生成する（Ｓ１４）。つまり、ステップＳ１４において、指令値更新部１１３は平滑化前指令１１ａを更新して新たな平滑化前指令１１ａを生成する。例えば、指令値更新部１１３は、平滑化前指令１１ａを更新する際、下記の式（４）を用いて角速度指令値ω＿ｉを更新した後、更新することによって得られた角速度指令値ω＿ｉを用いて角度指令値θ＿ｉを更新する。
ω＿ｉ（ｋ）＝ｍｉｎ（ωｍ＿ｉ，ωａ＿ｉ（ｋ），ωｂ＿ｉ（ｋ））  ・・・（４）
【００４０】
ωｍ＿ｉは関節部ｉにおける最大角速度指令値であり、ωａ＿ｉ（ｋ）は関節部ｉの現在の角速度から角速度増加量α＿ｉだけ加速した際の角速度指令値である。ωｂ＿ｉ（ｋ）は、角速度減少量β＿ｉにより角速度が減速して停止した際、当該過程において変化した角度量を、目標角度θｆ＿ｉから現在の角度指令値θ＿ｉ（ｋ）を引いた残移動量Δθ＿ｉ（ｋ）＝ａｂｓ（θｆ＿ｉ−θ＿ｉ（ｋ））とするための角速度である。
【００４１】
ωｂ＿ｉ（ｋ）は、下記の式（５）によって計算される。
ωｂ＿ｉ（ｋ）＝ｓｑｒｔ（２×Δθ＿ｉ（ｋ）×β＿ｉ）  ・・・（５）
各関節部の角度指令値は、更新された角速度指令値をもとに、下記の式（６）によって更新される。
θ＿ｉ（ｋ）＝θ＿ｉ（ｋ−１）＋ω＿ｉ（ｋ）×ΔＴ  ・・・（６）
【００４２】
図６は、実施の形態１にかかるロボット制御装置１が有する速度推定部１４の構成を示す図である。速度推定部１４は、平滑化前の各関節部の角度指令値を含む平滑化前指令１１ａと、平滑化後の各関節部の角度指令値を含む平滑化後指令１２ａと、オーバーライド１５ａとを受け取って、１箇所以上の監視箇所の動作速度を推定し、１箇所以上の監視箇所の動作速度の代表となる代表監視速度１４ａを出力する。監視箇所は、監視点と記載される場合がある。
【００４３】
速度推定部１４は、平滑化前指令１１ａを受け取って、毎制御周期で更新される平滑化前の各関節角指令値の差分（θ＿ｉ（ｋ）−θ＿ｉ（ｋ−１））を平滑化前指令値移動量１４１ａとして取得する第１移動量取得部１４１を有する。速度推定部１４は、平滑化後指令１２ａを受け取って、毎制御周期で更新される平滑化後の各関節角指令値の差分（φ＿ｉ（ｋ）−φ＿ｉ（ｋ−１））を平滑化後指令値移動量１４２ａとして取得する第２移動量取得部１４２を更に有する。
【００４４】
速度推定部１４は、平滑化前指令値移動量１４１ａ及び平滑化後指令１２ａを受け取って、平滑化後関節角指令値φ＿ｉ（ｋ）に平滑化前指令値移動量（θ＿ｉ（ｋ）−θ＿ｉ（ｋ−１））を加えた関節角指令値に対応する第１監視点位置を演算する第１監視点位置演算部１４３を更に有する。以下では、第１監視点位置は「第１監視点位置Ｐ＿Ａ１４３ａ」と記載される場合がある。速度推定部１４は、平滑化後指令１２ａ及び平滑化後指令値移動量１４２ａを受け取って、平滑化後関節角指令値φ＿ｉ（ｋ）に平滑化後指令値移動量（φ＿ｉ（ｋ）−φ＿ｉ（ｋ−１））を加えた関節角指令値に対応する第２監視点位置を演算する第２監視点位置演算部１４４を更に有する。以下では、第２監視点位置は「第２監視点位置Ｐ＿Ｂ１４４ａ」と記載される場合がある。速度推定部１４は、平滑化後指令１２ａを受け取って、平滑化後関節角指令値φ＿ｉ（ｋ）に対応する第３監視点位置を演算する第３監視点位置演算部１４５を更に有する。以下では、第３監視点位置は「第３監視点位置Ｐ＿Ｃ１４５ａ」と記載される場合がある。
【００４５】
速度推定部１４は、第１監視点位置Ｐ＿Ａ１４３ａの値と第３監視点位置Ｐ＿Ｃ１４５ａの値との差を制御周期ΔＴで除すことによって得られる第１推定速度１４６ａを演算する第１速度演算部１４６を更に有する。つまり、第１速度演算部１４６は、平滑化後指令１２ａをもとに演算される監視箇所の位置と、平滑化前指令１１ａをもとに演算される監視箇所の移動量である平滑化前指令値移動量１４１ａとをもとに、監視箇所の第１推定速度１４６ａを演算する。例えば、第１速度演算部１４６は、１周期前にロボット３０に出力された平滑化後指令１２ａのもとになった平滑化前指令１１ａをもとに平滑化前指令値移動量１４１ａを演算し、演算によって得られた平滑化前指令値移動量１４１ａを用いて第１推定速度１４６ａを演算する。第１推定速度１４６ａは、動作の推定速度である。
【００４６】
速度推定部１４は、第２監視点位置Ｐ＿Ｂ１４４ａの値と第３監視点位置Ｐ＿Ｃ１４５ａの値との差を制御周期ΔＴで除すことによって得られる第２推定速度１４７ａを演算する第２速度演算部１４７を更に有する。つまり、第２速度演算部１４７は、平滑化後指令１２ａをもとに演算される監視箇所の位置と、平滑化後指令１２ａをもとに演算される監視箇所の移動量である平滑化後指令値移動量１４２ａとをもとに、監視箇所の第２推定速度１４７ａを演算する。例えば、第２速度演算部１４７は、１周期前にロボット３０に出力された平滑化後指令１２ａをもとに平滑化後指令値移動量１４２ａを演算し、演算によって得られた平滑化後指令値移動量１４２ａを用いて第２推定速度１４７ａを演算する。第２推定速度１４７ａは、動作の推定速度である。
【００４７】
速度推定部１４は、第１推定速度１４６ａ、第２推定速度１４７ａ及びオーバーライド１５ａを受け取って、監視箇所における代表監視速度１４ａを演算する代表速度演算部１４８を更に有する。つまり、代表速度演算部１４８は、第１推定速度１４６ａ及び第２推定速度１４７ａをもとに監視箇所の速度を推定する。具体的には、代表速度演算部１４８は、第１推定速度１４６ａと第２推定速度１４７ａとのうちの大きい方の推定速度を監視箇所の動作速度と推定する。
【００４８】
図７は、実施の形態１にかかるロボット制御装置１が有する速度推定部１４の動作の手順を示すフローチャートである。ＣＰＵ２は、代表監視速度を初期化する（Ｓ２１）。代表監視速度は、「代表監視速度Ｖ」と表される場合がある。具体的には、ステップＳ２１より後に第１推定速度と第２推定速度とが比較されるので、ＣＰＵ２は、代表監視速度を０に初期化する。その後、第１移動量取得部１４１は平滑化前指令値移動量１４１ａを演算し、第２移動量取得部１４２は平滑化後指令値移動量１４２ａを演算する（Ｓ２２）。平滑化前指令値移動量１４１ａと平滑化後指令値移動量１４２ａとは、どちらが先に計算されてもよい。
【００４９】
ロボット制御装置１は、ロボット３０の動作速度を監視するために、ロボット３０において、１個以上の監視箇所を設定する。監視箇所は、ロボット３０の筐体の上のあらかじめ決められた箇所か、当該箇所からあらかじめ決められた向きにあらかじめ決められた距離離れた箇所であって、ロボット３０の関節部の動作に対応して移動する。監視箇所は、ロボット３０の手先位置であってもよいし、当該手先位置から指定された向きにあらかじめ決められた距離離れた位置であってもよい。監視箇所を示すデータは、ロボット３０の筐体モデルを示すデータと同様に記憶装置３によって記憶されている。ロボット制御装置１は、ロボット姿勢についての処理と同様の処理を行うことにより、ロボット３０の各関節部の角度から監視箇所の位置を演算することができる。
【００５０】
ステップＳ２２の処理が行われた後、第１監視点位置演算部１４３、第２監視点位置演算部１４４及び第３監視点位置演算部１４５の各々は、ロボット３０の動作速度を監視するために、１個の監視箇所を選択する（Ｓ２３）。複数の監視箇所が設定されている場合、第１監視点位置演算部１４３、第２監視点位置演算部１４４及び第３監視点位置演算部１４５の各々は、複数の監視箇所のなかから１個の監視箇所を選択する。複数の監視箇所が設定されている場合、第１監視点位置演算部１４３、第２監視点位置演算部１４４及び第３監視点位置演算部１４５の各々は、監視箇所を示すデータを含むリストからランダムに１個の監視箇所を選択してもよいし、あらかじめ決められている規則にしたがって１個の監視箇所を選択してもよい。
【００５１】
その後、第１監視点位置演算部１４３は第１監視点位置Ｐ＿Ａ１４３ａを演算し、第２監視点位置演算部１４４は第２監視点位置Ｐ＿Ｂ１４４ａを演算し、第３監視点位置演算部１４５は第３監視点位置Ｐ＿Ｃ１４５ａを演算する（Ｓ２４）。第１監視点位置Ｐ＿Ａ１４３ａは、選択された監視箇所について、平滑化後関節角指令値φ＿ｉ（ｋ）に平滑化前の各関節角指令値の差分である平滑化前指令値移動量（θ＿ｉ（ｋ）−θ＿ｉ（ｋ−１））を加えた関節角度を順変換することにより演算される。第２監視点位置Ｐ＿Ｂ１４４ａは、選択された監視箇所について、平滑化後関節角指令値φ＿ｉ（ｋ）に平滑化後の各関節角指令値の差分である平滑化後指令値移動量（φ＿ｉ（ｋ）−φ＿ｉ（ｋ−１））を加えた関節角度を順変換することにより演算される。第３監視点位置Ｐ＿Ｃ１４５ａは、選択された監視箇所について、平滑化後関節角指令値φ＿ｉ（ｋ）を順変換することにより演算される。第１監視点位置Ｐ＿Ａ１４３ａ、第２監視点位置Ｐ＿Ｂ１４４ａ及び第３監視点位置Ｐ＿Ｃ１４５ａの演算の順序は、どのような順序であってもよい。
【００５２】
次に、第１速度演算部１４６は第１推定速度を演算し、第２速度演算部１４７は第２推定速度を演算する（Ｓ２５）。第１推定速度は「第１推定速度Ｖ１」と表され、第２推定速度は「第２推定速度Ｖ２」と表される場合がある。第１推定速度Ｖ１と第２推定速度Ｖ２とは、いずれが先に演算されてもよい。第１推定速度Ｖ１は下記の式（７）によって計算され、第２推定速度Ｖ２は下記の式（８）によって計算される。
Ｖ１＝ｎｏｒｍ（Ｐ＿Ａ−Ｐ＿Ｃ）／ΔＴ／ＯＶＲＤ  ・・・（７）
Ｖ２＝ｎｏｒｍ（Ｐ＿Ｂ−Ｐ＿Ｃ）／ΔＴ／ＯＶＲＤ  ・・・（８）
第１監視点位置Ｐ＿Ａ１４３ａ、第２監視点位置Ｐ＿Ｂ１４４ａ及び第３監視点位置Ｐ＿Ｃ１４５ａはいずれも、３次元の位置である。ｎｏｒｍ演算子は、配列のユークリッドノルムを計算する。第１推定速度Ｖ１及び第２推定速度Ｖ２の各々は、オーバーライド１５ａの値で除することにより、オーバーライドが１である場合における速度に換算することができる。
【００５３】
代表速度演算部１４８は、第１推定速度Ｖ１及び第２推定速度Ｖ２が演算された後、第１推定速度Ｖ１と第２推定速度Ｖ２とのうちのいずれが大きいのかを判定する（Ｓ２６）。代表速度演算部１４８は、第１推定速度Ｖ１が第２推定速度Ｖ２以上であると判定した場合（Ｓ２６でＹｅｓ）、代表監視速度ＶをＶ＝ｍａｘ（Ｖ，Ｖ１）で更新する（Ｓ２７）。つまり、ステップＳ２７において、代表速度演算部１４８は第１推定速度Ｖ１を代表監視速度Ｖとする。代表速度演算部１４８は、第１推定速度Ｖ１が第２推定速度Ｖ２より小さいと判定した場合（Ｓ２６でＮｏ）、代表監視速度ＶをＶ＝ｍａｘ（Ｖ，Ｖ２）で更新する（Ｓ２８）。つまり、ステップＳ２８において、代表速度演算部１４８は第２推定速度Ｖ２を代表監視速度Ｖとする。ステップＳ２１において代表監視速度Ｖが初期化されているため、一度目の処理では代表監視速度Ｖは第２推定速度Ｖ２となる。
【００５４】
その後、代表速度演算部１４８は、設定されている監視箇所のすべてについてステップＳ２４からステップＳ２８までの処理が行われたか否かを判定する（Ｓ２９）。代表速度演算部１４８がすべての監視箇所についてステップＳ２４からステップＳ２８までの処理が行われていないと判定した場合（Ｓ２９でＮｏ）、速度推定部１４の動作は、ステップＳ２３に移行する。ステップＳ２３において、第１監視点位置演算部１４３、第２監視点位置演算部Ｂ１４４及び第３監視点位置演算部１４５の各々は、すべての監視箇所から前回までのステップＳ２３で選択された監視箇所を除いた監視箇所のなかから１個の監視箇所を選択する。ステップＳ２３の処理が行われた後、上述のステップＳ２４からステップＳ２８までの処理が行われる。
【００５５】
代表速度演算部１４８は、すべての監視箇所についてステップＳ２４からステップＳ２８までの処理が行われたと判定した場合（Ｓ２９でＹｅｓ）、現在の代表監視速度Ｖを出力する（Ｓ３０）。代表速度演算部１４８が現在の代表監視速度Ｖを出力することにより、速度推定部１４の動作は終了する。
【００５６】
上述の通り、実施の形態１にかかるロボット制御装置１は、平滑化前指令生成部１１によって生成された平滑化前指令１１ａと平滑化部１２によって生成された平滑化後指令１２ａとをもとにロボット３０に設けられた監視箇所の速度を推定する速度推定部１４を有する。つまり、ロボット制御装置１は、ロボット３０の動作速度を調整するために推定する速度を、実際にロボット３０に出力する駆動指令の平滑化前の指令を用いて推測する。
【００５７】
そのため、ロボット制御装置１は、実際に検出されるロボット３０の動作速度よりも平滑化処理にかかる時間分だけ近い未来の動作速度を推定することができ、推定した動作速度を利用してロボット３０の動作速度を調整することができる。つまり、ロボット制御装置１は、近い未来におけるロボット３０の動作速度の増加を推測することができる。
【００５８】
ロボット制御装置１は、速度推定部１４によって推定された代表監視速度１４ａとあらかじめ決められた制限速度とをもとに仮想時間修正率であるオーバーライドを修正するオーバーライド修正部１５を有する。そのため、ロボット制御装置１は、ロボット３０に平滑化後の滑らかな駆動指令を出力すると共に、ロボット３０の動作速度が制限速度を超過する可能性を抑制することができる。
【００５９】
すなわち、ロボット制御装置１は、ロボット３０を滑らかに動作させるために指令を平滑化する処理を行ってもロボット３０を制限値以内の動作速度で動作させることができる。更に言うと、ロボット制御装置１は、平滑化前指令１１ａと平滑化後指令１２ａとをもとにロボット３０に設けられた監視箇所の動作速度を推定する。そのため、ロボット制御装置１は、ロボット３０の各関節部に取り付けられた駆動装置が有する電動モータの許容値を超える加速度又は振動を発生させることなく、監視箇所の動作速度を制限速度以内に抑えてロボット３０を動作させることができる。
【００６０】
実施の形態２．
図８は、実施の形態２にかかるロボット制御装置１Ａの機能を説明するためのブロック図である。図８では、図２に示されている構成要素と同一の構成要素には同一の符号が付与されている。実施の形態２では、実施の形態１において説明した構成要素の説明を省略する。ロボット制御装置１Ａは、平滑化前指令生成部１１と、平滑化部１２と、指令出力部１３と、速度推定部１４と、オーバーライド修正部１５とを有するとともに、オーバーライド修正部１５によって得られたオーバーライド１５ａを受け取って抑制オーバーライド２０ａを出力する抑制部２０を有する。平滑化前指令生成部１１は、抑制部２０から出力された抑制オーバーライド２０ａを用いて平滑化前指令１１ａを生成する。
【００６１】
図９は、実施の形態２にかかるロボット制御装置１Ａが有する抑制部２０の動作の手順を示すフローチャートである。抑制部２０は、オーバーライド修正部１５から出力されたオーバーライド１５ａを取得する（Ｓ３１）。抑制部２０は、取得したオーバーライド１５ａに対して抑制処理を行い（Ｓ３２）、抑制オーバーライド２０ａを生成する。抑制処理の詳細については、後述する。抑制部２０は、生成した抑制オーバーライド２０ａを記憶し（Ｓ３３）、その後、抑制オーバーライド２０ａを平滑化前指令生成部１１に出力する（Ｓ３４）。なお、抑制部２０は情報を記憶するためのメモリを有する。
【００６２】
次に、ステップＳ３２において行われる抑制処理について説明する。抑制部２０は、取得したオーバーライド１５ａの値が１つ前の制御周期で記憶した抑制オーバーライド２０ａの値より大きいか否かを判断する。抑制部２０は、取得したオーバーライド１５ａの値が１つ前の制御周期で記憶した抑制オーバーライド２０ａの値より大きいと判断した場合、現在の制御周期における抑制オーバーライド２０ａの値を、取得したオーバーライド１５ａの値と記憶している抑制オーバーライド２０ａの値との間の値となるように設定し、設定後の抑制オーバーライド２０ａを出力する。抑制部２０は、取得したオーバーライド１５ａの値が１つ前の制御周期で記憶した抑制オーバーライド２０ａの値以下であると判断した場合、現在の制御周期における抑制オーバーライド２０ａを出力する。
【００６３】
抑制部２０は、ステップＳ３２において上述の処理を行うことにより、ステップＳ３４で出力する抑制オーバーライド２０ａの毎制御周期における値の増加率を抑える。抑制部２０は、記憶した抑制オーバーライド２０ａの毎制御周期における増加量の上限をあらかじめ設定することにより増加量を抑えてもよい。抑制部２０は、記憶している抑制オーバーライド２０ａと入力されるオーバーライド１５ａとの差に対して一定の割引率を乗じた値を記憶している抑制オーバーライド２０ａに加えることにより増加量を抑えてもよい。
【００６４】
実施の形態２では、抑制部２０は、オーバーライド１５ａが増加する場合にオーバーライド１５ａの増加幅を抑制する。そのため、実施の形態２にかかるロボット制御装置１Ａは、ロボット３０の動作速度の増加率を抑えて動作速度が制限速度を超過する可能性を低減することができる。ロボット制御装置１Ａは、ロボット３０の動作を比較的低速にする際の指令に影響を与えないため、ロボット３０の動作速度が制限速度を超過すると判断した場合にロボット３０の動作を比較的低速にする指令を即座に出力することができ、ロボット３０の動作速度が制限速度を超過する可能性を低減することができる。
【００６５】
なお、オーバーライド修正部１５は、修正を行うことによって得られるオーバーライド１５ａの毎制御周期における増加量があらかじめ決められた値未満となるように修正後のオーバーライドを得てもよい。その場合、ロボット制御装置１Ａは抑制部２０を有しなくてもよい。その場合、ロボット制御装置１Ａは、オーバーライドの増加幅を抑制することにより、ロボット３０の動作速度が制限速度を超過する可能性を低減することができる。
【００６６】
実施の形態３．
図１０は、実施の形態３にかかるロボット制御装置１Ｂの機能を説明するためのブロック図である。図１０では、図２に示されている構成要素と同一の構成要素には同一の符号が付与されている。実施の形態３では、実施の形態１において説明した構成要素の説明を省略する。ロボット制御装置１Ｂは、平滑化前指令生成部１１と、平滑化部１２と、指令出力部１３と、速度推定部１４Ａと、オーバーライド修正部１５とを有する。つまり、ロボット制御装置１Ｂは、実施の形態１にかかるロボット制御装置１が有する速度推定部１４の代わりに速度推定部１４Ａを有する。
【００６７】
速度推定部１４Ａは、速度推定部１４と同様に、第１速度演算部１４６及び第２速度演算部１４７を有する。速度推定部１４Ａが有する第１速度演算部１４６は、ロボット３０に将来出力される平滑化後指令１２ａのもとになる平滑化前指令１１ａをもとに平滑化前指令値移動量１４１ａを演算する。速度推定部１４Ａが有する第２速度演算部１４７は、ロボット３０に将来出力される平滑化後指令１２ａをもとに平滑化後指令値移動量１４２ａを演算する。
【００６８】
図１１は、実施の形態３にかかるロボット制御装置１Ｂが有する速度推定部１４Ａの動作の手順を示すフローチャートである。図１１では、図７に示されているステップと同一のステップには同一の符号が付与されている。実施の形態３では、実施の形態１において説明したステップの説明を省略する。速度推定部１４Ａは、図７を用いて説明したステップＳ２９の処理を実行した後、ステップＳ２２からステップＳ２９までの処理を繰り返し実行するか否かを判定する（Ｓ４１）。
【００６９】
速度推定部１４Ａは、ステップＳ２２からステップＳ２９までの処理を繰り返し実行しないと判定した場合（Ｓ４１でＮｏ）、現在の代表監視速度Ｖを出力する（Ｓ３０）。速度推定部１４Ａは、現在の代表監視速度Ｖを出力すると、動作を終了する。速度推定部１４Ａは、ステップＳ２２からステップＳ２９までの処理を繰り返し実行すると判定した場合（Ｓ４１でＹｅｓ）、現在のオーバーライド１５ａの値をもとに平滑化前指令１１ａ及び平滑化後指令１２ａを更新し（Ｓ４２）、速度推定部１４Ａの動作はステップＳ２２に移行する。なお、ステップＳ４２の処理は、平滑化前指令生成部１１及び平滑化部１２が行う処理と同様の処理である。
【００７０】
速度推定部１４Ａは、ステップＳ２２からステップＳ２９、ステップＳ４１及びステップＳ４２の処理を実行することによって、現在の制御周期において、現在のオーバーライド１５ａのもとにロボット３０に将来出力される駆動指令を推定し、推定した駆動指令をもとにロボット３０の動作速度を推定する。そのため、ステップＳ２２からステップＳ２９、ステップＳ４１及びステップＳ４２の処理は、現在のオーバーライド１５ａをもとにする駆動指令をロボット３０に継続して出力した場合にロボット３０の将来の動作速度が制限速度を超過する可能性があるか否かを判断するための処理であると換言することができる。
【００７１】
ステップＳ４１の処理は、現在の制御周期からある回数だけ将来の制御周期でロボット３０に出力される駆動指令によるロボット３０の動作速度を考慮する処理である。当該回数は、あらかじめ設定されていてもよいし、ロボット３０の姿勢が目標地点まで到達するまでにロボット３０に出力される駆動指令の出力回数であってもよい。当該回数は、一定の回数ではなく、ロボット３０の動作速度が増加するにしたがって増加するように指定されてもよい。
【００７２】
速度推定部１４Ａは、現在のオーバーライド１５ａをもとにする駆動指令がロボット３０に継続して出力されると仮定した場合において、ロボット３０に将来出力されることになる駆動指令をもとに、将来のロボット３０の動作速度を推定することができる。そのため、実施の形態３にかかるロボット制御装置１Ｂは、推定された動作速度に対応してロボット３０の動作速度を調整することができ、ひいてはロボット３０の動作速度が制限速度を超過する可能性を低減することができる。
【００７３】
図１２は、実施の形態１にかかるロボット制御装置１が有する平滑化前指令生成部１１、平滑化部１２、指令出力部１３、速度推定部１４及びオーバーライド修正部１５の一部又は全部の機能がプロセッサ８１によって実現される場合のプロセッサ８１を示す図である。つまり、平滑化前指令生成部１１、平滑化部１２、指令出力部１３、速度推定部１４及びオーバーライド修正部１５の一部又は全部の機能は、メモリ８２に格納されるプログラムを実行するプロセッサ８１によって実現されてもよい。プロセッサ８１は、処理装置、演算装置、マイクロプロセッサ、又はＤＳＰ（Digital  Signal  Processor）である。図１２には、メモリ８２も示されている。
【００７４】
平滑化前指令生成部１１、平滑化部１２、指令出力部１３、速度推定部１４及びオーバーライド修正部１５の一部又は全部の機能がプロセッサ８１によって実現される場合、当該一部又は全部の機能は、プロセッサ８１と、ソフトウェア、ファームウェア、又は、ソフトウェア及びファームウェアとの組み合わせにより実現される。ソフトウェア又はファームウェアは、プログラムとして記述され、メモリ８２に格納される。プロセッサ８１は、メモリ８２に記憶されたプログラムを読み出して実行することにより、平滑化前指令生成部１１、平滑化部１２、指令出力部１３、速度推定部１４及びオーバーライド修正部１５の一部又は全部の機能を実現する。
【００７５】
平滑化前指令生成部１１、平滑化部１２、指令出力部１３、速度推定部１４及びオーバーライド修正部１５の一部又は全部の機能がプロセッサ８１によって実現される場合、ロボット制御装置１は、平滑化前指令生成部１１、平滑化部１２、指令出力部１３、速度推定部１４及びオーバーライド修正部１５の一部又は全部によって実行されるステップが結果的に実行されることになるプログラムを格納するためのメモリ８２を有する。メモリ８２に格納されるプログラムは、平滑化前指令生成部１１、平滑化部１２、指令出力部１３、速度推定部１４及びオーバーライド修正部１５の一部又は全部が実行する手順又は方法をコンピュータに実行させるものであるともいえる。
【００７６】
メモリ８２は、例えば、ＲＡＭ、ＲＯＭ、フラッシュメモリ、ＥＰＲＯＭ（Erasable  Programmable  Read  Only  Memory）、ＥＥＰＲＯＭ（登録商標）（Electrically  Erasable  Programmable  Read-Only  Memory）等の不揮発性もしくは揮発性の半導体メモリ、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク又はＤＶＤ（Digital  Versatile  Disk）等である。メモリ８２は、記憶装置３であってもよいし、記憶装置３に含まれていてもよい。
【００７７】
図１３は、実施の形態１にかかるロボット制御装置１が有する平滑化前指令生成部１１、平滑化部１２、指令出力部１３、速度推定部１４及びオーバーライド修正部１５の一部又は全部が処理回路９１によって実現される場合の処理回路９１を示す図である。つまり、平滑化前指令生成部１１、平滑化部１２、指令出力部１３、速度推定部１４及びオーバーライド修正部１５の一部又は全部は、処理回路９１によって実現されてもよい。
【００７８】
処理回路９１は、専用のハードウェアである。処理回路９１は、例えば、単一回路、複合回路、プログラム化されたプロセッサ、並列プログラム化されたプロセッサ、ＡＳＩＣ(Application  Specific  Integrated  Circuit)、ＦＰＧＡ（Field-Programmable  Gate  Array）、又はこれらを組み合わせたものである。
【００７９】
平滑化前指令生成部１１、平滑化部１２、指令出力部１３、速度推定部１４及びオーバーライド修正部１５が有する複数の機能について、当該複数の機能の一部がソフトウェア又はファームウェアで実現され、当該複数の機能の残部が専用のハードウェアで実現されてもよい。このように、平滑化前指令生成部１１、平滑化部１２、指令出力部１３、速度推定部１４及びオーバーライド修正部１５が有する複数の機能は、ハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせによって実現することができる。
【００８０】
実施の形態２にかかるロボット制御装置１Ａが有する平滑化前指令生成部１１、平滑化部１２、指令出力部１３、速度推定部１４、オーバーライド修正部１５及び抑制部２０の一部又は全部の機能は、メモリに格納されるプログラムを実行するプロセッサによって実現されてもよい。当該メモリは、平滑化前指令生成部１１、平滑化部１２、指令出力部１３、速度推定部１４、オーバーライド修正部１５及び抑制部２０によって実行される一部又は全部のステップが結果的に実行されることになるプログラムを格納するためのメモリである。当該プロセッサは、プロセッサ８１と同様のプロセッサ又はＣＰＵである。平滑化前指令生成部１１、平滑化部１２、指令出力部１３、速度推定部１４、オーバーライド修正部１５及び抑制部２０の一部又は全部の機能は、処理回路によって実現されてもよい。当該処理回路は、処理回路９１と同様の処理回路である。
【００８１】
実施の形態３にかかるロボット制御装置１Ｂが有する平滑化前指令生成部１１、平滑化部１２、指令出力部１３、速度推定部１４Ａ及びオーバーライド修正部１５の一部又は全部の機能は、メモリに格納されるプログラムを実行するプロセッサによって実現されてもよい。当該メモリは、平滑化前指令生成部１１、平滑化部１２、指令出力部１３、速度推定部１４Ａ及びオーバーライド修正部１５によって実行される一部又は全部のステップが結果的に実行されることになるプログラムを格納するためのメモリである。当該プロセッサは、プロセッサ８１と同様のプロセッサ又はＣＰＵである。平滑化前指令生成部１１、平滑化部１２、指令出力部１３、速度推定部１４Ａ及びオーバーライド修正部１５の一部又は全部の機能は、処理回路によって実現されてもよい。当該処理回路は、処理回路９１と同様の処理回路である。
【００８２】
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略又は変更することも可能である。
【符号の説明】
【００８３】
１，１Ａ，１Ｂ  ロボット制御装置、１ａ  ロボット動作指令、２  ＣＰＵ、３  記憶装置、４  ＩＯインターフェース、５  バス、６  受信装置、７  入力装置、８，９  ケーブル、１１  平滑化前指令生成部、１１ａ  平滑化前指令、１２  平滑化部、１２ａ  平滑化後指令、１３  指令出力部、１４，１４Ａ  速度推定部、１４ａ  代表監視速度、１５  オーバーライド修正部、１５ａ  オーバーライド、２０  抑制部、２０ａ  抑制オーバーライド、３０  ロボット、１１１  仮想時間計算部、１１１ａ  仮想時間、１１２  動作計画部、１１２ａ  動作パラメータ、１１３  指令値更新部、１４１  第１移動量取得部、１４１ａ  平滑化前指令値移動量、１４２  第２移動量取得部、１４２ａ  平滑化後指令値移動量、１４３  第１監視点位置演算部、１４４  第２監視点位置演算部、１４５  第３監視点位置演算部、１４６  第１速度演算部、１４６ａ  第１推定速度、１４７  第２速度演算部、１４７ａ  第２推定速度、１４８  代表速度演算部、８１  プロセッサ、８２  メモリ、９１  処理回路。
【図１】
2020170306.tif 000003
【図２】
2020170306.tif 000004
【図３】
2020170306.tif 000005
【図４】
2020170306.tif 000006
【図５】
2020170306.tif 000007
【図６】
2020170306.tif 000008
【図７】
2020170306.tif 000009
【図８】
2020170306.tif 000010
【図９】
2020170306.tif 000011
【図１０】
2020170306.tif 000012
【図１１】
2020170306.tif 000013
【図１２】
2020170306.tif 000014
【図１３】
2020170306.tif 000015
【国際調査報告】
2020170306.tif 000016
2020170306.tif 000017