(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023117645
(43)【公開日】2023-08-24
(54)【発明の名称】ロボット制御システム
(51)【国際特許分類】
B25J 3/00 20060101AFI20230817BHJP
【FI】
B25J3/00 A
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022020319
(22)【出願日】2022-02-14
(71)【出願人】
【識別番号】502258738
【氏名又は名称】学校法人南山学園
(71)【出願人】
【識別番号】504139662
【氏名又は名称】国立大学法人東海国立大学機構
(71)【出願人】
【識別番号】000191353
【氏名又は名称】新明工業株式会社
(74)【代理人】
【識別番号】110000394
【氏名又は名称】弁理士法人岡田国際特許事務所
(72)【発明者】
【氏名】稲垣 伸吉
(72)【発明者】
【氏名】村井 裕弥
(72)【発明者】
【氏名】鈴木 達也
(72)【発明者】
【氏名】村田 勇樹
(72)【発明者】
【氏名】加藤 亮太
(72)【発明者】
【氏名】村尾 大樹
【テーマコード(参考)】
3C707
【Fターム(参考)】
3C707CS08
3C707HS27
3C707JT04
3C707JT05
3C707JU12
3C707KS34
3C707KS37
3C707KT03
3C707KT04
3C707KW03
3C707WA13
3C707WA15
(57)【要約】
【課題】操作器に対する操作によってロボットの操作脚の先端位置を直感的に制御可能であり且つ脚先に作用する反力を操作者に認識させることが可能であるロボット制御システムを提供する。
【解決手段】操作器は操作位置を検出する操作位置センサ、操作スイッチ及び操作位置を移動させる操作器アクチュエータを備え、ロボット制御システムが備えるコントローラは、操作スイッチの操作状態に基づいて操作脚を接地脚モードから遊脚モードに切換える処理、及び操作脚を遊脚モードから接地脚モードに切換える処理の少なくとも一方を実行し、少なくとも遊脚モードにある操作脚の先端位置が操作位置に応じて移動するように操作脚を制御し、且つロボットが備える先端反力センサによって検出された操作脚の先端に作用する反力に応じて操作器アクチュエータを制御する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ロボットを操作装置に対する操作に応じてコントローラが制御するロボット制御システムであって、
前記ロボットは、胴体と、
前記胴体に対して移動可能に設けられた複数の脚と、
前記複数の脚を移動させる脚アクチュエータと、
前記複数の脚の少なくとも1つである操作脚の先端の前記胴体に対する位置である先端位置を検出する脚位置センサと、
前記操作脚の前記先端に作用する力を先端反力として検出する先端反力センサと、を有し、
前記操作装置は、基部に対して移動可能に設けられた少なくとも1つの操作器と、
前記操作器の前記基部に対する位置である操作位置を検出する操作位置センサと、
少なくとも1つの操作スイッチと、
前記操作位置を移動させる操作器アクチュエータと、を有し、
前記コントローラは、
前記操作スイッチに対する操作状態に基づいて前記操作脚の制御モードを前記操作脚の前記先端が地面に接地している接地脚モードから前記先端が前記地面から離間している遊脚モードへ切替える処理、及び前記制御モードを前記遊脚モードから前記接地脚モードへ切替える処理の少なくとも一方を実行し、
少なくとも前記遊脚モードにおいて、前記操作脚の前記先端位置が前記操作器の前記操作位置に応じて移動するように前記脚アクチュエータを制御し、且つ前記先端反力に応じて取得される操作反力が前記操作器に作用するように前記操作器アクチュエータを制御する、ロボット制御システム。
【請求項2】
請求項1に記載のロボット制御システムにおいて、
前記コントローラは、
前記胴体の前記地面に対する姿勢を調整するため、前記接地脚モードにある前記脚の前記脚アクチュエータを制御する、ロボット制御システム。
【請求項3】
請求項1又は請求項2に記載のロボット制御システムにおいて、
前記コントローラは、
前記操作器に対する操作を補助するための操作補助力が前記操作器に作用するように前記操作器アクチュエータを制御する、ロボット制御システム。
【請求項4】
請求項1乃至請求項3の何れか一項に記載のロボット制御システムにおいて、
前記複数の脚の少なくとも1つが前記操作脚に追従する追従脚であり、
前記コントローラは、
前記胴体を前記地面に対して前進させるとき、前記遊脚モードにある前記追従脚の前記地面との接地点の目標位置として前記操作脚の前記先端との接地点と同じ位置又はその近傍の位置を取得し、且つ前記追従脚の前記先端位置が前記目標位置に応じて移動するように前記脚アクチュエータを制御する、ロボット制御システム。
【請求項5】
請求項4に記載のロボット制御システムにおいて、
前記ロボットは、
前記操作脚である左前脚及び右前脚と、
前記左前脚の前記追従脚である少なくとも1つの左側追従脚と、
前記右前脚の前記追従脚である少なくとも1つの右側追従脚と、を含み、
前記操作装置は、
前記左前脚に対する前記操作器である左側操作器と、
前記左前脚に対する前記操作スイッチである左側操作スイッチと、
前記右前脚に対する前記操作器である右側操作器と、
前記右前脚に対する前記操作スイッチである右側操作スイッチと、を含む、ロボット制御システム。
【請求項6】
請求項1乃至請求項5の何れか一項に記載のロボット制御システムにおいて、
前記ロボットは、
前記胴体の前方領域における前記地面の立体的形状を検出可能な前方領域センサを有し、
前記操作装置は、
ディスプレイを有し、
前記コントローラは、
前記立体的形状に関する情報を前記ディスプレイに表示させる、ロボット制御システム。
【請求項7】
請求項1乃至請求項6の何れか一項に記載のロボット制御システムであって、
前記コントローラは、
前記先端反力に相関する先端反力相関値の大きさが所定の反力閾値よりも大きいとき、前記操作反力における前記先端反力相関値に相当する値を前記反力閾値に設定する、ロボット制御システム。
【請求項8】
請求項1乃至請求項7の何れか一項に記載のロボット制御システムであって、
前記コントローラは、
互いに無線通信を行う、前記ロボット側のロボットコントローラ及び前記操作装置側の操作装置コントローラを含む、ロボット制御システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボット制御システムに関する。例えば、操作器に対する操作に応じてロボットの脚(マニプレータ)の動作が制御されるロボット制御システムに関する。
【背景技術】
【0002】
人間(操作者)の操作に基づいてロボットを制御するロボット制御システムが知られている。例えば、特許文献1には、操作者の動作(特に、下肢の体勢)に応じてロボットの脚先位置及び姿勢を制御するマスタースレーブ方式の遠隔操作装置が開示されている。この遠隔操作装置によれば、操作者による直感的な操作によってロボットの歩行を制御することができる。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1の遠隔操作装置においてはロボットの脚先に作用する外界からの力(反力)が操作者に伝達されない。そのため、地面の凹凸等の状況を操作者が認識することができず、不整地におけるロボットの歩行が困難となる虞がある。従って、ロボットの脚先位置を直感的な操作によって制御可能であり且つ脚先に作用する反力を操作者に認識させることが可能であるロボット制御システムが必要とされる。
【課題を解決するための手段】
【0005】
本開示の1つの特徴によると、ロボット制御システムにおいては、ロボットを操作装置に対する操作に応じてコントローラが制御する。ロボットは、胴体と、胴体に対して移動可能に設けられた複数の脚と、複数の脚を移動させる脚アクチュエータと、複数の脚の少なくとも1つである操作脚の先端の胴体に対する位置である先端位置を検出する脚位置センサと、操作脚の先端に作用する力を先端反力として検出する先端反力センサと、を有する。
【0006】
操作装置は、基部に対して移動可能に設けられた少なくとも1つの操作器と、操作器の基部に対する位置である操作位置を検出する操作位置センサと、少なくとも1つの操作スイッチと、操作位置を移動させる操作器アクチュエータと、を有する。
【0007】
コントローラは、操作スイッチに対する操作状態に基づいて操作脚の制御モードを操作脚の先端が地面に接地している接地脚モードから先端が地面から離間している遊脚モードへ切替える処理、及び制御モードを遊脚モードから接地脚モードへ切替える処理の少なくとも一方を実行し、少なくとも遊脚モードにおいて、操作脚の先端位置が操作器の操作位置に応じて移動するように脚アクチュエータを制御し、且つ先端反力に応じて取得される操作反力が操作器に作用するように操作器アクチュエータを制御する。
【0008】
操作者は、操作器の操作位置(操作器における操作者によって操作される被操作部材の位置であり、例えば、操作者によって把持される把持部の位置)を変更することによってロボットの操作脚の先端位置を直感的に制御することができる。更に、操作者は、操作器(被操作部材)に作用する操作反力によって操作脚の先端に作用する先端反力を検知することが可能となる。例えば、操作者は、遊脚モードにある操作脚の新たな接地点を探索するとき、接地点の候補位置に操作脚の先端を移動させたときの操作反力に基づいて候補位置の状況(地面の凹凸及び硬軟等)を認識することができる。従って、本特徴によれば、操作器を用いたロボットに対する双方向制御(バイラテラル制御)が可能となる。
【0009】
加えて、操作者は、遊脚モードにある操作脚の先端を地面とは異なる対象物に接触させることができる。例えば、操作脚の先端を障害物に当接させて障害物を移動させることができる。換言すれば、本特徴における操作脚をマニプレータとして利用することが可能となる。
【0010】
本開示の他の特徴によると、コントローラは、胴体の地面に対する姿勢を調整するため、接地脚モードにある脚の脚アクチュエータを制御する。
【0011】
コントローラによる胴体の姿勢調整は、例えば、胴体を地面に対して前進させるために行われる。或いは、姿勢調整は、ロボットが転倒する可能性を低減させるために実行される。接地脚モードにある操作脚の先端位置は、操作器の操作位置に応じて制御されても良く、或いは、コントローラによる胴体の姿勢調整と共に自動的に制御されても良い。従って、本特徴によれば、遊脚モードにある操作脚の先端位置が操作者によって操作される一方、接地脚モードにある脚(具体的には、接地脚モードにある操作脚、及び/又は、接地脚モードにある操作脚以外の脚)がコントローラによって制御されるので、操作者によるロボットの制御が更に容易となる。
【0012】
本開示の他の特徴によると、コントローラは、操作器に対する操作を補助するための操作補助力が操作器に作用するように操作器アクチュエータを制御する。
【0013】
操作補助力は、例えば、操作者が操作脚の先端位置を到達できない領域へ移動させようとしたときに発生させられる。或いは、操作器の操作位置と操作脚の先端位置とが互いに乖離しているとき、操作位置を先端位置に応じた位置まで移動させるために操作補助力が発生させられても良い。従って、本特徴によれば、操作者によるロボットの操作が更に容易となる。
【0014】
本開示の他の特徴によると、複数の脚の少なくとも1つが操作脚に追従する追従脚であり、コントローラは、胴体を地面に対して前進させるとき、遊脚モードにある追従脚の地面との接地点の目標位置として操作脚の先端との接地点と同じ位置又はその近傍の位置を取得し、且つ追従脚の先端位置が目標位置に応じて移動するように脚アクチュエータを制御する。
【0015】
一例として、ロボットは、操作脚である左前脚及び右前脚と、左前脚の追従脚である少なくとも1つの左側追従脚と、右前脚の追従脚である少なくとも1つの右側追従脚と、を含み、操作装置は、左前脚に対する操作器である左側操作器と、左前脚に対する操作スイッチである左側操作スイッチと、右前脚に対する操作器である右側操作器と、右前脚に対する操作スイッチである右側操作スイッチと、を含む。
【0016】
ロボットが、6脚歩行ロボットであれば、操作脚である左前脚に対して左中脚及び左後脚が左側追従脚となり、操作脚である右前脚に対して右中脚及び右後脚が右側追従脚となる。この場合、操作者が左側操作器を用いて遊脚モードにある左前脚を操作して地面上の凹凸が無い安定した場所を接地点として選択(決定)すると、その接地点と同じ位置又は近傍の位置が左中脚及び左後脚の目標位置として選択される。そのため、操作者が追従脚である左中脚及び左後脚の接地点を選択しなくても、追従脚の先端が安定した場所に接地し、その結果、ロボットが転倒することなく安定して歩行する可能性が高くなる。従って、本特徴によれば、操作者による直感的且つ簡易な操作によってロボットを操作することが可能となる。
【0017】
本開示の他の特徴によると、ロボットは、胴体の前方領域における地面の立体的形状を検出可能な前方領域センサを有し、操作装置は、ディスプレイを有し、コントローラは、立体的形状に関する情報をディスプレイに表示させる、ロボット制御システム。
【0018】
前方領域センサは、例えば、左右に配置された2つのカメラを内包するステレオカメラである。この場合、ディスプレイは、例えば、左眼用と右眼用の2つのディスプレイを内包するHMD(ヘッドマウントディスプレイ)である。操作者は、ディスプレイに表示された前方領域の立体的形状に関する情報(例えば、HMDに表示されるステレオカメラの視差が反映された画像)に基づいてロボットの前方にある地面の立体的形状を認識することができる。従って、本特徴によれば、操作者に没入感を与えることが可能となり、その結果、操作者がロボットを操作することが更に容易となる。
【0019】
本開示の他の特徴によると、コントローラは、先端反力に相関する先端反力相関値の大きさが所定の反力閾値よりも大きいとき、操作反力における先端反力相関値に相当する値を反力閾値に設定する。
【0020】
この場合、操作反力は、反力閾値に対応する値(反力閾値対応値)よりも大きくならない。そのため、何らかの理由により操作脚の先端に大きな力が作用したり、先端反力センサの出力信号にノイズが混入したりした場合に操作反力が過大となることが回避される。更に、操作者が操作器に比較的小さな力(具体的には、反力閾値対応値)を作用させることによって操作脚の先端に比較的大きな力を発生させられるようにロボット制御システムを構成することが可能となる。
【0021】
本開示の他の特徴によると、コントローラは、互いに無線通信を行う、ロボット側のロボットコントローラ及び操作装置側の操作装置コントローラを含む、ロボット制御システム。
【0022】
例えば、ロボットコントローラが操作脚の先端位置の制御を行い、且つ操作装置コントローラが操作反力の制御を行うようにロボット制御システムを構成することができる。更に、ロボットコントローラと操作装置コントローラとが互いに無線通信を行うことにより、操作者が遠隔地にあるロボットを操作できるようにロボット制御システムを構成することができる。
【図面の簡単な説明】
【0023】
【
図1】第1実施形態に係るロボット制御システムの概略図である。
【
図2】ロボット制御システムに含まれるロボットのブロック図である。
【
図3】ロボットが備える脚のリンク及び回転関節を示した簡略図である。
【
図4】ロボットの脚先の到達可能領域を示した平面概略図である。
【
図5】ロボット制御システムに含まれる操作装置のブロック図である。
【
図6】操作装置が備える操作器のリンク及び回転関節を示した簡略図である。
【
図7】操作装置が備えるHMDに表示される画面の例である。
【
図8】ロボットの脚先の制御と、操作装置の把持部の制御と、の関係を示したブロック図である。
【
図9】ロボットの脚先に作用する先端反力、先端反力が補正された補正先端反力、及び脚先位置の変化を示したタイムチャートである。
【
図10】ロボットが歩行する様子を示した平面概略図である。
【
図11】ロボットの左前脚及び右前脚を用いて物体を両側から挟んでいる場合にHMDに表示される画面の例である。
【
図12】ロボットの脚先の補正先端反力、及び操作装置の把持部の操作反力の変化を示したタイムチャートである。
【
図13】ロボット制御装置が実行する操作脚制御処理ルーチンを示したフローチャートである。
【
図14】ロボット制御装置が実行する追従脚制御処理ルーチンを示したフローチャートである。
【
図15】ロボット制御装置が実行する追従脚状態管理処理ルーチンを示したフローチャートである。
【
図16】操作制御装置が実行する操作器制御処理ルーチンを示したフローチャートである。
【
図17】第2実施形態に係るロボット制御システムの概略図である。
【
図18】ロボット制御装置が実行する操作脚制御処理ルーチンを示したフローチャートである。
【
図19】操作制御装置が実行する操作器制御処理ルーチンを示したフローチャートである。
【
図20】第3実施形態に係るロボット制御システムに含まれるロボットの概略図である。
【
図21】ロボット制御システムに含まれるロボットのブロック図である。
【
図22】ロボットが備える脚のリンク及び回転関節を示した簡略図である。
【
図23】ロボット制御システムに含まれる操作装置のブロック図である。
【
図24】操作装置が備える操作器のリンク及び回転関節を示した簡略図である。
【
図25】ロボット制御装置が実行するロボット制御処理ルーチンを示したフローチャートである。
【
図26】操作制御装置が実行する操作器制御処理ルーチンを示したフローチャートである。
【発明を実施するための形態】
【0024】
<第1実施形態>
本発明の第1実施形態を、
図1~
図16を参照しながら説明する。説明中の同じ参照番号は、重複する説明をしないが、同じ機能を有する同じ要素を意味する。
図1に示されるロボット制御システム1は、ロボット2及び操作装置8を含んでいる。
図1及び
図2に示されるように、ロボット2は、胴体3、並びに、胴体3に対して可動する可動部材である左前脚41、左中脚42、左後脚43、右前脚44、右中脚45及び右後脚46を備えている。即ち、ロボット2は6脚歩行ロボットである。操作装置8は、ロボット2を制御するために操作者によって操作される左側操作器83a及び右側操作器83bを備えている。
【0025】
以下の説明において、胴体座標系(胴体座標値)が用いられる。胴体座標系は、胴体3の幾何学的中心が原点Oであり、胴体3に対して前後方向がx軸であり、左右方向がy軸であり、上下方向がz軸である直交座標系である。
【0026】
図2から理解されるように、ロボット2は、ロボット制御装置31、ステレオカメラ32、IMU33、及び無線通信装置34(34a)を備えている。ロボット制御装置31は、CPU、RAM及び不揮発性メモリを備えたマイクロコンピュータを主要素として含んでいる。ロボット制御装置31は、便宜上、「ロボットコントローラ」とも称呼される。
【0027】
CPUは、所定のプログラム(ルーチン)を逐次実行することによってデータの読み込み、数値演算、及び演算結果の出力等を行う。RAMは、CPUによって参照されるデータを一時的に記憶する。不揮発性メモリは、ROM、及びデータの書き換え可能なフラッシュメモリ等により構成され、CPUが実行するプログラム及びプログラムの実行時に参照されるルックアップテーブル(マップ)等を記憶する。
【0028】
ステレオカメラ32は、胴体3の上面突出部に配設されている(
図1を参照)。ステレオカメラ32は、図示されない左側カメラ及び右側カメラを内包している。ステレオカメラ32の左側カメラ及び右側カメラのそれぞれは、胴体3の前方領域の映像(前方画像)を取得(撮影)し、前方画像を表す信号をロボット制御装置31へ送信する。ステレオカメラ32は、便宜上、「前方領域センサ」とも称呼される。
【0029】
IMU33は、x軸、y軸及びz軸のそれぞれの方向の加速度であるx軸加速度Ax、y軸加速度Ay、及びz軸加速度Az、並びにx軸、y軸及びz軸のそれぞれの方向の回転速度(角速度)であるx軸角速度ωx、y軸角速度ωy、及びz軸角速度ωzを検出する。IMU33によって検出されるこれらの値の組合せは、胴体移動値M(Ax,Ay,Az,ωx,ωy,ωz)とも称呼される。IMU33は、周知の慣性計測装置により構成されている。
【0030】
無線通信装置34(34a)は、
図5に示される操作装置8に含まれる無線通信装置34(34b)とのデータ通信を行う。具体的には、無線通信装置34(34a)は、ロボット制御装置31から入力された情報(データ)を無線通信装置34(34b)へ送信する一方、無線通信装置34(34b)から受信した情報をロボット制御装置31へ出力する。
【0031】
左前脚41の簡略図である
図3から理解されるように、左前脚41は、リンク41a~41c及び基部41dを含んでいる。基部41dの一端は、胴体3に固結されている。基部41dの他端は、リンク41aの一端と回転関節(第1脚関節)を介して互いに連結されている。リンク41aの他端は、リンク41bの一端と回転関節(第2脚関節)を介して互いに連結されている。リンク41bの他端は、リンク41cの一端と回転関節(第3脚関節)を介して互いに連結されている。リンク41cの他端(即ち、左前脚41の先端)は、地面(接地面)と接するようになっている。
【0032】
第1脚関節の回転軸と、胴体座標系におけるz軸に対して垂直な平面(例えば、z=0によって表される平面であり、以下、「胴体水平面」とも称呼される。)と、のなす角度は45°である。上面視において、第1脚関節の回転軸は胴体3から斜め前方に延在していて、第1脚関節の回転軸と、胴体座標系におけるx軸に対して垂直な平面(例えば、x=0によって表される平面であり、以下「胴体垂直面」とも称呼される。)と、のなす角度は30°である。第1脚関節の回転軸と、第2脚関節の回転軸と、は互いに垂直である。第2脚関節の回転軸と、第3脚関節の回転軸と、は互いに平行である。
【0033】
第1脚関節の回転角度(即ち、基部41dに対するリンク41aの回転角度)である回転角度αsは、モータ51(モータ51a)が発生させるトルクによって制御される(
図2を参照)。第2脚関節の回転角度(即ち、リンク41aに対するリンク41bの回転角度)である回転角度βsは、モータ51(モータ51b)が発生させるトルクによって制御される。第3脚関節の回転角度(即ち、リンク41bに対するリンク41cの回転角度)である回転角度γsは、モータ51(モータ51c)が発生させるトルクによって制御される。モータ51は、周知のDCサーボモータによって構成されている。モータ51は、便宜上、「脚アクチュエータ」とも称呼される。
【0034】
角度センサ52(角度センサ52a)は、左前脚41の第1脚関節の回転角度αsを検出し、回転角度αsを表す信号をロボット制御装置31へ出力する。角度センサ52(角度センサ52b)は、左前脚41の第2脚関節の回転角度βsを検出し、回転角度βsを表す信号をロボット制御装置31へ出力する。角度センサ52(角度センサ52c)は、左前脚41の第3脚関節の回転角度γsを検出し、回転角度γsを表す信号をロボット制御装置31へ出力する。角度センサ52は、周知のレゾルバ装置によって構成されている。角度センサ52は、便宜上、「脚位置センサ」とも称呼される。
【0035】
以下、回転角度αs、回転角度βs及び回転角度γsの組合せは、脚回転角度Ls(αs,βs,γs)とも称呼される。ロボット制御装置31は、脚回転角度Ls、並びにリンク41a~リンク41cの長さ及び第1脚関節の回転軸と胴体垂直面とのなす角度等に基づき、周知の方法により左前脚41の脚先(先端位置)の胴体座標値である脚先位置Ps(xs,ys,zs)を取得(算出)する。
【0036】
ロボット2が「基準状態」であるときの左前脚41の脚先が到達可能な地面上の領域(即ち、左前脚41の先端の移動先となり得る範囲)は、
図4の領域R3により簡略化して示されている。基準状態は、ロボット2が平坦で水平な地面を歩行していて、且つ、胴体3が地面に対して水平であって地面と胴体重心Gbとの距離が所定の基準距離Dsである状態である。胴体重心Gbは、胴体3の質量重心(質量中心)であり、本実施形態において、胴体3の幾何学的中心(即ち、胴体座標系における原点O)に略等しい。
【0037】
電流センサ53(電流センサ53a)は、モータ51aを流れる電流αaを検出し、電流αaを表す信号をロボット制御装置31へ出力する。電流センサ53(電流センサ53b)は、モータ51bを流れる電流βaを検出し、電流βaを表す信号をロボット制御装置31へ出力する。電流センサ53(電流センサ53c)は、モータ51cを流れる電流γaを検出し、電流γaを表す信号をロボット制御装置31へ出力する。
【0038】
以下、電流αa、電流βa及び電流γaの組合せは、電流As(αa,βa,γa)とも称呼される。電流Asは、モータ51(モータ51a~モータ51c)のそれぞれに作用する(或いは、モータ51a~モータ51cが発生させる)トルクに比例している。電流センサ53は、便宜上、「先端反力センサ」とも称呼される。
【0039】
図1に示す左中脚42、左後脚43、右前脚44、右中脚45及び右後脚46のそれぞれは、左前脚41と同様の構成を有している。左中脚42は、リンク42a~42cを含んでいる。左中脚42の第1脚関節の回転軸は、胴体3から真横に延在している。即ち、左中脚42の第1脚関節の回転軸は胴体垂直面に対して平行である。ロボット制御装置31は、左中脚42が備えるモータ51(モータ51d~51f)を制御することにより、左中脚42の脚回転角度Ls(αs,βs,γs)を制御する。ロボット制御装置31は、角度センサ52(角度センサ52d~52f)によって検出された脚回転角度Ls(αs,βs,γs)に基づいて左中脚42の脚先位置Ps(xs,ys,zs)を取得する。ロボット2が基準状態にある場合における左中脚42の脚先の地面上の到達可能領域は、
図4の領域R4により簡略化して示されている。
【0040】
左後脚43は、リンク43a~リンク43cを含んでいる。左後脚43の第1脚関節の回転軸は、上面視において斜め後方に延在していて、左後脚43の第1脚関節の回転軸と、胴体垂直面と、のなす角度は30°である。ロボット制御装置31は、左後脚43が備えるモータ51(モータ51g~51i)を制御することにより、左後脚43の脚回転角度Ls(αs,βs,γs)を制御する。ロボット制御装置31は、角度センサ52(角度センサ52g~52i)によって検出された脚回転角度Ls(αs,βs,γs)に基づいて左後脚43の脚先位置Ps(xs,ys,zs)を取得する。ロボット2が基準状態にある場合における左後脚43の脚先の地面上の到達可能領域は、
図4の領域R5により簡略化して示されている。
【0041】
右前脚44は、リンク44a~リンク44cを含んでいる。右前脚44の第1脚関節の回転軸は、上面視において斜め前方に延在していて、右前脚44の第1脚関節の回転軸と、胴体垂直面と、のなす角度は30°である。ロボット制御装置31は、右前脚44が備えるモータ51(モータ51j~51k及びモータ51m)を制御することにより、右前脚44の脚回転角度Ls(αs,βs,γs)を制御する。
【0042】
ロボット制御装置31は、角度センサ52(角度センサ52j~52k及び角度センサ52m)によって検出された脚回転角度Ls(αs,βs,γs)に基づいて右前脚44の脚先位置Ps(xs,ys,zs)を取得する。ロボット2が基準状態にある場合における右前脚44の脚先の地面上の到達可能領域は、
図4の領域R6により簡略化して示されている。ロボット制御装置31は、電流センサ53(電流センサ53j~53k及び電流センサ53m)によって検出された右前脚44の電流As(αa,βa,γa)を取得する。
【0043】
右中脚45は、リンク45a~45cを含んでいる。右中脚45の第1脚関節の回転軸は、胴体3から真横に延在している。即ち、右中脚45の第1脚関節の回転軸は胴体垂直面に対して平行である。ロボット制御装置31は、右中脚45が備えるモータ51(モータ51n及びモータ51p~51q)を制御することにより、右中脚45の脚回転角度Ls(αs,βs,γs)を制御する。ロボット制御装置31は、角度センサ52(角度センサ52n及び角度センサ52p~52q)によって検出された脚回転角度Ls(αs,βs,γs)に基づいて右中脚45の脚先位置Ps(xs,ys,zs)を取得する。ロボット2が基準状態にある場合における右中脚45の脚先の地面上の到達可能領域は、
図4の領域R7により簡略化して示されている。
【0044】
右後脚46は、リンク46a~リンク46cを含んでいる。右後脚46の第1脚関節の回転軸は、上面視において斜め後方に延在していて、右後脚46の第1脚関節の回転軸と、胴体垂直面と、のなす角度は30°である。ロボット制御装置31は、右後脚46が備えるモータ51(モータ51r~51t)を制御することにより、右後脚46の脚回転角度Ls(αs,βs,γs)を制御する。ロボット制御装置31は、角度センサ52(角度センサ52r~52t)によって検出された脚回転角度Ls(αs,βs,γs)に基づいて右後脚46の脚先位置Ps(xs,ys,zs)を取得する。ロボット2が基準状態にある場合における右後脚46の脚先の地面上の到達可能領域は、
図4の領域R8により簡略化して示されている。
【0045】
図5に示されるように、操作装置8は、無線通信装置34(34b)、操作制御装置81、HMD82、左側操作器83a及び右側操作器83bを備えている。操作制御装置81は、図示を省略するCPU、RAM及び不揮発性メモリを含む汎用コンピュータによって構成されている。操作制御装置81は、便宜上、「操作装置コントローラ」とも称呼される。
【0046】
無線通信装置34(34b)は、操作制御装置81から入力された情報(データ)を無線通信装置34(34a)へ送信する一方、無線通信装置34(34a)から受信した情報を操作制御装置81へ出力する。
【0047】
HMD82は、左側ディスプレイ82a及び右側ディスプレイ82bを内包している。HMD82のディスプレイに表示される画像は、操作制御装置81によって制御される。ロボット2が作動しているとき、操作制御装置81は、
図6に例示されるように、ステレオカメラ32の左側カメラ及び右側カメラのそれぞれによって取得された前方画像をHMD82の左側ディスプレイ82a及び右側ディスプレイ82bに表示させる。従って、操作者は、ロボット2(具体的には、胴体3)の前方領域の立体的形状を認識することができる。
【0048】
図5及び
図7から理解されるように、左側操作器83aは、リンク84a~リンク84f、基部84g、角度センサ85a~85c、モータ86a~86c及びボタン87a~87bを備えている。
【0049】
基部84gは、左側操作器83aの土台であり、机上に設置される。基部84gは、リンク84aの一端と回転関節(第1操作関節)を介して互いに連結されている。リンク84aの他端は、リンク84bの一端と回転関節(第2操作関節)を介して互いに連結されている。リンク84bの他端は、リンク84cの一端と回転関節(第3操作関節)を介して互いに連結されている。
【0050】
リンク84cの他端は、リンク84dの一端と回転関節(第4操作関節)を介して互いに連結されている。リンク84dの他端は、リンク84eの一端と回転関節(第5操作関節)を介して互いに連結されている。リンク84eの他端は、リンク84fの一端と回転関節(第6操作関節)を介して互いに連結されている。
【0051】
角度センサ85(角度センサ85a)は、第1操作関節の回転角度αmを検出し、回転角度αmを表す信号を操作制御装置81へ出力する。角度センサ85(角度センサ85b)は、第2操作関節の回転角度βmを検出し、回転角度βmを表す信号を操作制御装置81へ出力する。角度センサ85(角度センサ85c)は、第3操作関節の回転角度γmを検出し、回転角度γmを表す信号を操作制御装置81へ出力する。以下、回転角度αm、回転角度βm及び回転角度γmの組合せは、操作回転角度Lm(αm,βm,γm)とも称呼される。角度センサ85は、周知のレゾルバ装置によって構成されている。角度センサ85は、便宜上、「操作位置センサ」とも称呼される。
【0052】
モータ86(モータ86a)は、操作制御装置81からの指示に応じて回転角度αmを変更するトルクを発生させる。モータ86(モータ86b)は、操作制御装置81からの指示に応じて回転角度βmを変更するトルクを発生させる。モータ86(モータ86c)は、操作制御装置81からの指示に応じて回転角度γmを変更するトルクを発生させる。モータ86は、便宜上、「操作器アクチュエータ」とも称呼される。
【0053】
操作制御装置81は、操作回転角度Lm、及びリンク84a~リンク84dの長さ等に基づき、周知の方法により第5操作関節の位置(座標値)である操作位置Pm(xm,ym,zm)を取得(算出)する。操作位置Pmは、第1操作関節の位置が原点であり、左側操作器83aの前後方向がx軸であり、左右方向がy軸であり、上下方向がz軸である直交座標系(操作座標系)における座標値として表される。
【0054】
操作者は、リンク84fを把持しながら移動させることによって操作位置Pmを調整(変更)する。リンク84fは、操作者によって操作される被操作部材であって、便宜上、「把持部」又は「操作器」とも称呼される。なお、本実施形態において、第4操作関節~第6操作関節のそれぞれの回転角度は操作制御装置81によって実行される処理に反映されないが、これらの回転関節の存在により、操作者によるリンク84fに対する操作(即ち、操作位置Pmの調整)が容易となる。
【0055】
把持部(即ち、リンク84f)には、ボタン87a、87bが配設されている。ボタン87a、87bのそれぞれの操作状態は、操作者による操作によってオン状態とオフ状態との間で切換えられ、操作状態を表す信号が操作制御装置81によって受信される。ボタン87a、87bは、便宜上、「操作スイッチ」とも称呼される。
【0056】
右側操作器83bは、左側操作器83aと同様の構成を有している。操作制御装置81は、右側操作器83bの操作回転角度Lm(αm,βm,γm)及びボタン87a、87bの操作状態を表す信号を取得(受信)する。加えて、操作制御装置81は、右側操作器83bのモータ86(モータ86a~86c)のそれぞれが発生させるトルクを制御する。
【0057】
(把持部の操作と操作脚の制御)
操作者は、左側操作器83a及び右側操作器83bを操作することによって左前脚41及び右前脚44(便宜上、「操作脚」とも称呼される。)を制御することができる。より具体的に述べると、左側操作器83aのボタン87a、87bの何れかがオン状態であるとき、左側操作器83aの操作位置Pm(xm,ym,zm)に応じて左前脚41の脚先位置Ps(xs,ys,zs)が変化する。同様に、右側操作器83bのボタン87a、87bの何れかがオン状態であるとき、右側操作器83bの操作位置Pmに応じて右前脚44の脚先位置Psが変化する。
【0058】
加えて、操作制御装置81は、左前脚41の先端に外界から作用する力である先端反力Fe(xe,ye,ze)に対応した力を操作反力Fm(xf,yf,zf)として左側操作器83aの把持部(具体的には、第5操作関節)に発生させる。同様に、操作制御装置81は、右前脚44の先端に作用する先端反力Feに対応する操作反力Fmを右側操作器83bの把持部に発生させる。
【0059】
ロボット制御装置31及び操作制御装置81によって実行される、左前脚41の脚先位置Psの制御、及び左側操作器83aの操作反力Fmの制御について説明する。右側(即ち、右前脚44及び右側操作器83b)の脚先位置Ps及び操作反力Fmの制御については、左側(即ち、左前脚41及び左側操作器83a)と同様であるので、具体的な説明が適宜割愛される。
【0060】
操作制御装置81は、ロボット制御装置31に対して操作脚のそれぞれの操作位置Pm及びボタン87a、87bの操作状態を「操作情報」として所定の制御周期Δtが経過する毎に無線通信装置34を介して送信する。ロボット制御装置31は、受信した操作情報の内容をRAMに記憶する。一方、ロボット制御装置31は、操作制御装置81に対して操作脚のそれぞれの電流Asを「反力情報」として制御周期Δtが経過する毎に無線通信装置34を介して送信する。操作制御装置81は、受信した反力情報の内容をRAMに記憶する。
【0061】
ロボット制御装置31は、操作脚の脚先位置Psの制御に用いるため、制御周期Δtが経過する毎に左前脚41及び右前脚44のそれぞれに係る目標脚先位置Pr(xr,yr,zr)及び目標移動量ΔPs(xu,yu,zu)を取得する。左前脚41の目標脚先位置Prは、左側操作器83aの操作位置Pm(xm,ym,zm)に対応する左前脚41の脚先位置Ps(xs,ys,zs)である。左前脚41の目標脚先位置Prは、以下の式(1)~式(3)に基づいて取得される。式(1)~式(3)における比例係数k1、補正値kx、補正値ky及び補正値kzは、予め適合された定数である。
xr=k1×xm+kx ……(1)
yr=k1×ym+ky ……(2)
zr=k1×zm+kz ……(3)
【0062】
同様に、右前脚44の目標脚先位置Prは、以下の式(4)~式(6)に基づいて取得される。
xr=k1×xm-kx ……(4)
yr=k1×ym-ky ……(5)
zr=k1×zm-kz ……(6)
【0063】
目標移動量ΔPs(xu,yu,zu)は、現時点から制御周期Δtが経過するまでの期間における脚先位置Ps(xs,ys,zs)の変化量の目標値である。ロボット制御装置31は、以下の式(7)に基づいてフィードバック制御(具体的には、PD制御)により目標移動量ΔPsを取得する(
図8を参照)。
ΔPs=(Pr-Ps)×Kp
+1/Δt×{(Pr-Ps)-(Prp-Psp)}×Kd ……(7)
【0064】
式(7)における前回目標脚先位置Prp(xrp,yrp,zrp)は、現時点よりも制御周期Δtだけ以前に取得された目標脚先位置Prである。前回脚先位置Psp(xsp,ysp,zsp)は、現時点よりも制御周期Δtだけ以前に取得された脚先位置Psである。係数Kp及び係数Kdは、予め適合された制御ゲインである。式(7)において、目標移動量ΔPs、目標脚先位置Pr、脚先位置Ps、前回目標脚先位置Prp及び前回脚先位置Pspのそれぞれは、ベクトルとして扱われている。
【0065】
目標移動量ΔPsが取得されると、ロボット制御装置31は、現時点から制御周期Δtが経過した時点における脚先位置Psの変化量が目標移動量ΔPsに等しくなるように操作脚に対応するモータ51のそれぞれを制御する。
【0066】
一方、操作制御装置81は、操作反力Fmの制御に用いるため、制御周期Δtが経過する毎に左側操作器83a及び右側操作器83bのそれぞれに係る関節トルクTs(αt,βt,γt)を取得する。関節トルクTsは、第1操作関節~第3操作関節のそれぞれに対応するモータ86が発生するトルクの目標値である。モータ86が関節トルクTsを発生させることにより、左側操作器83a及び右側操作器83bの把持部に操作反力Fmが発生する。
【0067】
操作制御装置81は、関節トルクTsを取得するため、反力トルクTk(αk,βk,γk)を以下の式(8)に基づいて取得する。式(8)において、反力トルクTk及び電流As(αa,βa,γa)のそれぞれは、ベクトルとして扱われている。式(8)における比例係数k2は、予め適合された定数(スカラー値)である。反力トルクTkは、電流センサ53によって検出された第1脚関節~第3脚関節のそれぞれに作用するトルクであって、比例係数k2に基づいて大きさが調整された値である。
Tk=k2×As ……(8)
【0068】
加えて、操作制御装置81は、以下の運動方程式(9)に基づいて作用トルクTe(αe,βe,γe)を取得する。式(9)における慣性トルクTi(αi,βi,γi)、摩擦トルクTf(αf,βf,γf)及び重力トルクTg(αg,βg,γg)は、左前脚41(又は右前脚44)の先端に外力が作用していない場合における慣性トルク、摩擦トルク及び重力トルクを表している。式(9)において、作用トルクTe、反力トルクTk、慣性トルクTi、摩擦トルクTf及び重力トルクTgのそれぞれは、ベクトルとして扱われている。
Te=Tk-Ti-Tf-Tg ……(9)
【0069】
なお、慣性トルクTi、摩擦トルクTf及び重力トルクTgのそれぞれは、脚回転角度Ls(αs,βs,γs)並びに脚回転角度Lsの一階微分(即ち、速度)及び二階微分(即ち、加速度)の種々の組合せに対して予め値が取得(同定)されている。従って、式(9)に反力トルクTk、脚回転角度Ls、脚回転角度Lsの一階微分及び二階微分の値を代入することによって作用トルクTe(αe,βe,γe)が算出される。
【0070】
更に、操作制御装置81は、以下の式(10)に基づいて先端反力Feを取得する。式(10)において、先端反力Fe及び作用トルクTeのそれぞれは、ベクトルとして扱われている。式(10)における行列Jsは、左前脚41(又は右前脚44)に係るヤコビ行列である。
Fe=(JsT)-1Te ……(10)
【0071】
操作制御装置81は、取得された先端反力Feに対して周知のLPF(ローパスフィルター)処理を適用する。LPF処理が適用された先端反力Fe(xe,ye,ze)は、補正先端反力Fef(xef,yef,zef)とも称呼される。補正先端反力Fefは、便宜上、「先端反力相関値」とも称呼される。
【0072】
左前脚41の先端反力Fe及び補正先端反力Fefの変化の例が
図9に示される。
図9において、先端反力Feのz軸方向における値である先端反力zeが、実線L1によって示される。加えて、補正先端反力Fefのz軸方向における値である補正先端反力zefが、破線L2によって示される。
図9から理解されるように、補正先端反力Fefにおいては、電流センサ53の感度及び無線通信装置34の通信速度に起因する先端反力Feにおける段階的な変化(階段状の変化)がLPF処理によって平滑化されている。
【0073】
次いで、操作制御装置81は、以下の式(11)に基づいて操作反力Fm(xf,yf,zf)を取得する。式(11)において、操作反力Fm及び補正先端反力Fefのそれぞれは、ベクトルとして扱われている。式(11)における比例係数k3は、予め適合された定数(スカラー値)である。加えて、操作制御装置81は、操作反力Fmの大きさが所定の反力閾値Fthよりも大きければ、操作反力Fmの大きさが反力閾値Fthとなるように操作反力Fm(xf,yf,zf)の各値を調整する。
Fm=k3×Fef ……(11)
【0074】
更に、操作制御装置81は、以下の式(12)に基づいて関節トルクTsを取得する。式(12)において、関節トルクTs及び操作反力Fmのそれぞれは、ベクトルとして扱われている。式(12)における行列Jmは、左側操作器83a(又は右側操作器83b)に係るヤコビ行列である。次いで、操作制御装置81は、モータ86のそれぞれに取得された関節トルクTsに等しいトルクを発生させる。
Ts=JmTFm ……(12)
【0075】
図9において、左前脚41の脚先位置Psのz軸座標である脚先位置zsの変化が実線L3により示される。本例において、例えば、時刻t1にて左前脚41の脚先が地面に接触し、その結果、z軸方向における先端反力Fe及び補正先端反力Fef(即ち、先端反力ze及び補正先端反力zef)が増加を開始している。
【0076】
関節トルクTsは、(先端反力Feではなく)補正先端反力Fefに基づいて取得されるので、先端反力Feの段階的な変化に起因して関節トルクTsが段階的に変化し、その結果として操作者に違和感を与えることが回避される。例えば、電流Asの検出に際してノイズが混入して検出値が一時的に大きく変動しても、補正先端反力Fefに基づいて取得される関節トルクTsが大きく変動することが回避される。
【0077】
図9の例において、操作者は、左側操作器83aの把持部に発生する操作反力Fmによって左前脚41の脚先が接地したことを認識できる。即ち、操作者は、時刻t1にて増加し始める補正先端反力Fef(具体的には、z軸方向の補正先端反力zef)に基づいて上昇する、操作座標系におけるz軸方向の操作反力Fmの上昇によって左前脚41の脚先の接地を認識する。更に、操作者は、時刻t1以降のz軸方向における操作反力Fmの大きさの増加の程度によって左前脚41の接地点が安定した(即ち、脆弱でない)地面であることを認識できる。
【0078】
その後、時刻t3にて左前脚41の脚先が地面から離間し、その結果、補正先端反力Fef(ひいては操作反力Fm)が減少している。時刻t2においては、操作者は、左側操作器83aのボタン87aをオン状態からオフ状態に切換え、且つボタン87bをオフ状態からオン状態に切換えている。
【0079】
左側操作器83a及び右側操作器83bのそれぞれのボタン87a、87bの操作状態に応じた操作脚の制御について、具体的に説明する。以下、左側操作器83a及び右側操作器83bのボタン87aは「遊脚ボタン」とも称呼され、ボタン87bは「接地脚ボタン」とも称呼される。
【0080】
操作者は、操作脚を遊脚(即ち、先端が地面から離間している脚)として操作するとき、操作脚に対応する遊脚ボタンをオン状態にする(即ち、遊脚ボタンを押下する)。一方、操作者は、操作脚を接地脚(即ち、先端が地面に接している脚)として操作するとき、操作脚に対応する接地脚ボタンをオン状態にする。換言すれば、ロボット制御装置31は、遊脚ボタンがオン状態となった操作器に対応する操作脚(即ち、左前脚41及び右前脚44の何れか)の制御モードを「遊脚モード」に切換える。一方、接地脚ボタンがオン状態となった操作器に対応する操作脚の制御モードを「接地脚モード」に切換える。
【0081】
操作者が操作脚の先端を接地させて接地脚ボタンがオン状態になると、ロボット制御装置31は、その時点における操作脚の脚先位置Ps(xs,ys,zs)を後述される接地位置(基準位置)として記憶する。操作者が接地脚ボタンをオン状態にしたまま把持部を操作して操作脚の脚先を胴体3に対して前方から後方へ向けて移動させると、操作脚の脚先の移動に伴って胴体3が前進する。
【0082】
その後、操作者は、操作脚の脚先を地面から浮かせるとき、(接地脚ボタンに代わり)遊脚ボタンをオン状態にする。更に、操作者は、遊脚ボタンをオン状態にしたまま把持部を操作して操作脚の脚先を胴体3に対して後方から前方へ向けて移動させる。即ち、操作者は、操作脚の脚先を新たな接地位置へ向けて移動させる。
【0083】
(追従脚の制御)
ロボット制御装置31による操作脚以外の脚(即ち、左中脚42、左後脚43、右中脚45及び右後脚46であり、便宜上、「追従脚」とも総称される。)の制御について説明する。ロボット制御装置31は、追従脚のそれぞれの制御モード(制御状態)を管理している。追従脚の制御モードは、第1制御モード~第4モードの何れかに分類される。第1制御モード~第3制御モードにある追従脚は遊脚であり、第4制御モードにある追従脚は接地脚である。
【0084】
第1制御モードは、接地している脚先を地面から離して所定の脚先待機位置Lwまで移動させる制御状態である。脚先が脚先待機位置Lwにある場合における脚回転角度Ls(αs,βs,γs)の組合せは、脚先待機位置Lw(αw,βw,γw)として表される。第2制御モードは、脚先が脚先待機位置Lwにある状態にて待機する制御状態である。
【0085】
第3制御モードは、脚先を脚先待機位置Lwから後述される「目標接地位置」まで移動させる制御状態である。第4制御モードは、脚先が地面に接地している状態にて脚先を胴体3に対して前方から後方へ移動させる制御状態である。従って、第4制御モードにある追従脚、及び、接地脚ボタンがオン状態である操作脚の脚先移動によって胴体3が前進する。
【0086】
ロボット制御装置31は、追従脚のそれぞれの制御モードを管理するため、「脚状態管理処理」を制御周期Δtが経過する毎に実行する。ロボット制御装置31は、脚状態管理処理の実行時、追従脚のそれぞれに関して後述される遷移条件が成立しているか否かを判定し、且つ遷移条件が成立している脚の制御モードを変更する。
【0087】
制御モードが第1制御モードから第2制御モードに切換わるための条件(第2遷移条件)は、脚先が脚先待機位置Lwに到達したときに成立する。制御モードが第2制御モードから第3制御モードに切換わるための条件(第3遷移条件)は、胴体3に対して前方に隣接する脚の脚先が自脚の到達可能領域(この場合、地面より上の立体領域)に含まれるようになったときに成立する。胴体3に対して前方に隣接する脚は、以下、「前方隣接脚」とも称呼される。例えば、左中脚42の前方隣接脚は、左前脚41である。
【0088】
制御モードが第3制御モードから第4制御モードに切換わるための条件(第4遷移条件)は、脚先が目標接地位置に到達したときに成立する。制御モードが第4制御モードから第1制御モードに切換わるための条件(第1遷移条件)は、「遊脚条件」とも称呼される。
【0089】
遊脚条件が成立しているか否かが判定される脚を「制御対象脚」と称呼すれば、左中脚42又は右中脚45が制御対象脚である場合の遊脚条件は、制御対象脚の胴体3に対して後方に隣接する脚(即ち、左後脚43又は右後脚46)が第4制御モードとなったときに成立する。換言すれば、中間脚(即ち、左中脚42及び右中脚45の何れか)の遊脚条件は、胴体3に対して後方に隣接する最後脚(即ち、左後脚43及び右後脚46の何れか)が中間脚の接地位置を引き継いだときに成立する。
【0090】
左後脚43及び右後脚46(即ち、最後脚)が制御対象脚である場合の遊脚条件は、「重心条件」が成立しており且つ制御対象脚が接地した後に接地した脚の数が3以上であるときに成立する。重心条件は、制御対象脚以外の接地脚(具体的には、接地脚モードにある操作脚、及び第4制御モードにある追従脚)の脚先のそれぞれを頂点とする多角形である「支持多角形」に胴体重心Gbが上面視において含まれているときに成立する。
【0091】
例えば、制御対象脚である左後脚43の脚先が接地すると、前方隣接脚である左中脚42の遊脚条件が成立するので左中脚42が第1制御モードに遷移する。その後、左後脚43以外の脚(即ち、左前脚41、左中脚42、右前脚44、右中脚45及び右後脚46)の内の3つの脚先が接地すると、左後脚43が接地した後に接地した脚の数が「3」となる。従って、重心条件が成立していれば、このとき左後脚43(即ち、制御対象脚)の遊脚条件が成立する。
【0092】
ロボット制御装置31は、第3制御モードにある追従脚の目標接地位置を「接地点追従法」により決定する。接地点追従法は、追従脚の目標接地位置として前方隣接脚の接地位置と同一又は近傍の位置を取得(決定)する方法である。例えば、左中脚42の目標接地位置として、左前脚41の接地位置の後方に隣接する位置が取得される。同様に、左後脚43の目標接地位置として、左中脚42の接地位置の後方に隣接する位置(従って、左前脚41の接地位置の近傍の場所)が取得される。接地点追従法について、
図10を参照しながら説明する。
【0093】
本例において、操作者は、左側操作器83a及び右側操作器83bを操作してロボット2を前進させている。
図10における黒丸は脚先が接地した直後の接地位置を示し、白丸は脚先が地面から離れる直前の接地位置を示している。換言すれば、ある時点において黒丸により示された脚先位置は、その後、胴体3に対して後方に移動して白丸により示される脚先位置に変化する。
【0094】
右前脚44が遊脚から接地脚に遷移したとき(即ち、操作者が右側操作器83bの接地脚ボタンをオン状態に変化させた直後)の胴体3の位置が胴体位置3a1によって示される。このとき、接地脚である左中脚42、右前脚44及び右後脚46のそれぞれの脚先は、黒丸である点PL21、点PR11及び点PR31によって示される。一方、遊脚である左前脚41、左後脚43及び右中脚45のそれぞれの脚先は、白丸である点PL11、点PL31及び点PR21によって示される。
【0095】
左中脚42の接地点である点PL21は、左前脚41の接地点である点PL11の後ろ側に隣接する位置である。加えて、右後脚46の接地点である点PR31は、右中脚45の接地点である点PR21の後ろ側に隣接する位置である。即ち、追従脚である左中脚42及び右後脚46の接地点が、接地点追従法によって決定されている。
【0096】
換言すれば、操作者の操作に応じて操作脚である左前脚41の脚先が胴体3に対して後方へ移動して左中脚42の到達可能領域(例えば、
図4における領域R3と領域R4とが互いに重複している領域)に到達した後、左中脚42の脚が接地する。同様に、右中脚45の脚先が胴体3に対して後方へ移動して右後脚46の到達可能領域(例えば、領域R7と領域R8とが互いに重複している領域)に到達した後、右後脚46の脚が接地する。
【0097】
その後、左前脚41が遊脚から接地脚に遷移し且つ右前脚44が接地脚から遊脚に遷移したときの胴体3の位置が胴体位置3a2によって示される。即ち、胴体3は、胴体位置3a1によって示される位置から胴体位置3a2によって示される位置まで移動(前進)している。
【0098】
接地脚である左前脚41、左後脚43及び右中脚45のそれぞれの脚先は、黒丸である点PL12、点PL32及び点PR22によって示される。一方、遊脚である左中脚42、右前脚44及び右後脚46のそれぞれの脚先は、白丸である点PL21、点PR11及び点PR31によって示される。
【0099】
右中脚45の接地点である点PR22は、右前脚44の接地点である点PR11の後ろ側に隣接する位置である。加えて、左後脚43の接地点である点PL32は、左中脚42の接地点である点PL21の後ろ側に隣接する位置である。即ち、追従脚である右中脚45及び左後脚43の接地点が、接地点追従法によって決定されている。
【0100】
更に、左前脚41が接地脚から遊脚に遷移し且つ右前脚44が遊脚から接地脚に遷移したときの胴体3の位置が胴体位置3a3によって示される。即ち、胴体3は、胴体位置3a2によって示される位置から胴体位置3a3によって示される位置まで移動している。
【0101】
接地脚である左中脚42、右前脚44及び右後脚46のそれぞれの脚先は、黒丸である点PL22、点PR12及び点PR32によって示される。一方、遊脚である左前脚41、左後脚43及び右中脚45のそれぞれの脚先は、白丸である点PL12、点PL32及び点PR22によって示される。
【0102】
左中脚42の接地点である点PL22は、左前脚41の接地点である点PL12の後ろ側に隣接する位置である。加えて、右後脚46の接地点である点PR32は、右中脚45の接地点である点PR22の後ろ側に隣接する位置である。即ち、追従脚である左中脚42及び右後脚46の接地点が、接地点追従法によって決定されている。
【0103】
次に、第4制御モードにある(即ち、接地脚である)追従脚の制御方法について説明する。接地脚モードにある(即ち、接地脚ボタンがオン状態である)操作脚が存在していれば、ロボット制御装置31は、操作脚の脚先移動に応じて接地脚である追従脚の脚先を移動させる。
【0104】
より具体的に述べると、ロボット制御装置31は、目標胴体移動値ΔC(xc,yc,zc,Δφ,Δψ,Δθ)を制御周期Δtが経過する毎に取得する。目標胴体移動値ΔCは、現時点から制御周期Δtが経過するまで期間における胴体3の移動量の目標値である。目標胴体移動値ΔCは、制御周期Δt経過後の胴体重心Gbの胴体座標(xc,yc,zc)、並びに、制御周期Δt経過後の胴体3のx軸周りの回転角度Δφ、y軸周りの回転角度Δψ、及びz軸周りの回転角度Δθの組合せによって表される。
【0105】
ロボット制御装置31は、接地脚モードにある操作脚の脚先移動(即ち、脚先位置Psの変化)に応じて胴体3が移動し且つロボット2の状態が基準状態に近づくように目標胴体移動値ΔCを取得する。この際、ロボット制御装置31は、回転角度Δφ、回転角度Δψ及び回転角度Δθのそれぞれの大きさが所定の回転上限値を超えないように目標胴体移動値ΔCを取得する。
【0106】
一方、接地脚モードにある操作脚が存在していなければ、ロボット制御装置31は、目標重心位置Gt(xg,yg,zg)を取得する。本実施形態におけるロボット制御装置31は、接地脚である追従脚のそれぞれの脚先を頂点とする支持多角形の重心が上面視において胴体重心Gbと一致するように目標重心位置Gtを取得する。加えて、ロボット制御装置31は、胴体重心Gbが目標重心位置Gtに接近するように目標胴体移動値ΔCを取得する。
【0107】
目標胴体移動値ΔCが取得されると、ロボット制御装置31は、接地脚である追従脚のそれぞれの脚先移動位置Pg(xn,yn,zn)を取得する。脚先移動位置Pgは、胴体3が目標胴体移動値ΔCによって表される移動及び回転をした時点における接地脚の脚先の胴体座標値である。脚先移動位置Pgが取得されると、ロボット制御装置31は、制御周期Δtが経過後の脚先位置Psが脚先移動位置Pgと等しくなるように接地脚である追従脚の脚先位置Psを制御する。
【0108】
(遊脚モードにある左前脚及び右前脚の操作)
上述したように、ロボット制御装置31は、接地脚モードにある(即ち、接地脚ボタンがオン状態である)操作脚の脚先位置Psの変化に合わせて胴体3を移動させる。左側操作器83a及び右側操作器83bの接地脚ボタンがオン状態でなくなると(遊脚ボタンがオン状態となったか否かに拘わらず)、ロボット制御装置31は、目標重心位置Gtに基づいて追従脚を制御する。その後、追従脚が全て接地脚となり且つ追従脚の脚先によって構成される支持多角形の重心が上面視において胴体重心Gbと略一致した状態となると、胴体3の移動が停止する。
【0109】
このとき、操作者は、遊脚モードにある(即ち、遊脚ボタンがオン状態である)操作脚を操作して脚先を新たな接地地点へ移動させることができる。或いは、操作者は、遊脚モードにある操作脚をロボット2の歩行以外の用途に用いることができる。即ち、操作者は、遊脚モードにある操作脚をマニプレータとして利用することができる。
【0110】
例えば、
図11に示されるHMD82における表示画像の例から理解されるように、操作者は、遊脚モードにある左前脚41及び右前脚44を用いて物体(本例において、箱B1)を挟み、持ち上げることも可能である。
【0111】
また、操作反力Fmは、大きさが反力閾値Fth以下となるように調整される。例えば、左前脚41の脚先を地面に接地させる場合の補正先端反力Fef及び操作反力Fmの変化の例が
図12に示される。
図12において、補正先端反力Fefのz軸方向における値である補正先端反力zefが、実線L4によって示される。左側操作器83aの把持部に発生させられる操作反力Fmのz軸方向における値である操作反力zfが、実線L5によって示される。
【0112】
実線L5から理解されるように、操作反力zfは、反力閾値Fth以下の範囲において変化する。そのため、左前脚41の脚先を地面に接地させるときの脚先移動速度が比較的大きかったことに起因して補正先端反力zefが大きくなっても、操作反力zfが大きくなって操作者に違和感を与えることが回避される。加えて、電流Asの検出に際してノイズが混入して検出値が大きくなっても、操作反力Fmが過大となることが回避される。更に、操作者は、左側操作器83a又は右側操作器83bに対して大きさが反力閾値Fthに等しい力を加えることによって、反力閾値Fthに相当する大きさの力よりも大きな力を操作脚に発生させることができる。
【0113】
(具体的作動-ロボット制御装置)
ロボット制御装置31の具体的作動について説明する。ロボット制御装置31のCPU(以下、単に「CPU」とも称呼される。)は、制御周期Δtが経過する毎に
図13にフローチャートにより示された「操作脚制御処理ルーチン」を実行する。本ルーチンの処理を終了すると、CPUは、
図14にフローチャートにより示された追従脚制御処理ルーチンを実行する。なお、CPUは、図示しないルーチンを実行し、ステレオカメラ32によって撮影された前方画像を表す情報を操作制御装置81へ無線通信装置34を介して随時送信する。
【0114】
適当なタイミングとなると、CPUは、
図13のステップ1300から処理を開始してステップ1305に進み、操作脚の1つを選択する。即ち、CPUは、左前脚41及び右前脚44の一方を選択する。
【0115】
次いで、CPUは、ステップ1310に進み、選択された操作脚の遊脚ボタン又は接地脚ボタンがオン状態であるか否かを判定する。即ち、CPUは、前回実行された本ルーチンの処理が終了してから現時点までの期間において操作制御装置81から受信した操作情報に基づいてボタン87a、87bの少なくとも一方がオン状態であるか否かを判定する。
【0116】
遊脚ボタン又は接地脚ボタンがオン状態であれば、CPUは、ステップ1310にて「Yes」と判定して以下に説明するステップ1315乃至ステップ1335の処理を順に実行する。次いで、CPUは、ステップ1340に進む。
【0117】
ステップ1315:CPUは、目標脚先位置Prを取得する。即ち、CPUは、操作制御装置81から最後に受信した操作情報に含まれる選択された操作脚に対応する操作位置Pmを上述した式(1)~式(3)又は式(4)~式(6)に適用することによって目標脚先位置Prを取得する。
【0118】
ステップ1320:CPUは、目標移動量ΔPsを取得する。即ち、CPUは、上述した式(7)に脚先位置Ps及び目標脚先位置Pr、並びに本ルーチンが前回実行されたときに記憶された前回脚先位置Psp及び前回目標脚先位置Prpを適用することによって目標移動量ΔPsを取得する。このとき、CPUは、選択された操作脚の脚回転角度Ls(αs,βs,γs)に基づいて脚先位置Ps(xs,ys,zs)を取得する。加えて、CPUは、目標脚先位置Prが選択された操作脚の到達可能領域の外側にあれば、目標脚先位置Prを到達可能領域に含まれるように調整する。
【0119】
ステップ1325:CPUは、脚先位置Psを前回脚先位置PspとしてRAMに記憶する。
ステップ1330:CPUは、目標脚先位置Prを前回目標脚先位置PrpとしてRAMに記憶する。
【0120】
ステップ1335:CPUは、目標移動量ΔPsに基づいて脚先位置Psを制御する。即ち、CPUは、現時点から制御周期Δtが経過した時点における脚先位置Psの変化量が目標移動量ΔPsに等しくなるように選択された操作脚のモータ51を制御する。具体的には、CPUは、脚先位置Psが目標移動量ΔPsだけ変化したときの脚回転角度Lsの変化量(脚回転角度変化量)を取得する。加えて、CPUは、現時点から制御周期Δtが経過するまでの期間において脚回転角度Lsが脚回転角度変化量だけ変化するようにモータ51を制御する。
【0121】
ステップ1340にてCPUは、選択された操作脚の接地脚ボタンがオン状態であるか否かを判定する。接地脚ボタンがオン状態であれば、CPUは、ステップ1340にて「Yes」と判定してステップ1345に進み、接地脚ボタンがオン状態となった直後であるか否かを判定する。即ち、CPUは、接地脚ボタンがオン状態となった後、本ルーチンが初めて実行されているか否かを判定する。
【0122】
接地脚ボタンがオン状態となった直後であれば、CPUは、ステップ1345にて「Yes」と判定してステップ1350に進み、脚先位置Psを追従脚の基準位置としてRAMに記憶する。即ち、CPUは、追従脚制御処理ルーチンにおいて、記憶された基準位置の後方に隣接する位置を追従脚の目標接地位置として取得する。次いで、CPUは、ステップ1355に進む。
【0123】
接地脚ボタンがオン状態となった直後でなければ、CPUは、ステップ1345にて「No」と判定してステップ1355に直接進む。
【0124】
ステップ1355にてCPUは、目標移動量ΔPsに基づいて目標胴体移動値ΔCを取得する。即ち、CPUは、接地脚モードにある操作脚の脚先位置Psの変化に応じて胴体3が移動するように目標胴体移動値ΔCを取得する。
【0125】
次いで、CPUは、ステップ1360に進み、選択された操作脚の電流Asを反力情報として操作制御装置81へ送信する。更に、CPUは、ステップ1365に進み、上述した処理を左右の操作脚に対して実行したか否かを判定する。未だ処理が実行されていない操作脚があれば、CPUは、ステップ1365にて「No」と判定してステップ1305に進み、処理が実行されていない(選択されていなかった)操作脚を選択する。
【0126】
一方、左右の操作脚に対する処理が実行されていれば、CPUは、ステップ1365にて「Yes」と判定してステップ1395に進み、本ルーチンの処理を終了して
図14の追従脚制御処理ルーチンの処理を開始する。
【0127】
なお、ステップ1310の判定条件が成立していなければ(即ち、選択された操作脚の遊脚ボタン及び接地脚ボタンが何れもオフ状態であれば)、CPUは、ステップ1310にて「No」と判定してステップ1365に直接進む。ステップ1340の判定条件が成立していなければ(即ち、選択された操作脚の接地脚ボタンがオフ状態であれば)、CPUは、ステップ1340にて「No」と判定してステップ1360に直接進む。
【0128】
次に、追従脚制御処理ルーチンについて説明する。操作脚制御処理ルーチンの処理が終了すると、CPUは、
図14のステップ1400から処理を開始してステップ1405に進み、目標胴体移動値ΔCが取得されているか否かを判定する。即ち、CPUは、接地脚モードにある操作脚が存在しており、その結果として
図13のステップ1355の処理にて目標胴体移動値ΔCが取得されたか否かを判定する。目標胴体移動値ΔCが取得されていれば、CPUは、ステップ1405にて「Yes」と判定してステップ1420に直接進む。
【0129】
一方、目標胴体移動値ΔCが取得されていなければ(即ち、接地脚モードにある操作脚が存在していなければ)、CPUは、ステップ1405にて「No」と判定してステップ1410に進み、目標重心位置Gtを取得する。具体的には、CPUは、接地脚である追従脚のそれぞれの脚先位置Psを脚回転角度Lsに基づいて取得し、脚先位置Psに基づいて追従脚の支持多角形の重心位置を取得する。加えて、CPUは、支持多角形の重心が上面視において胴体重心Gbと一致し且つ胴体3が基準状態に近づくように目標重心位置Gtを取得する。
【0130】
次いで、CPUは、ステップ1415に進み、目標重心位置Gtに基づいて目標胴体移動値ΔCを取得する。具体的には、胴体重心Gbが目標重心位置Gtへ向けて所定の目標移動速度Srにて接近し且つ胴体3が基準状態に近づくように目標胴体移動値ΔCを取得する。
【0131】
ステップ1420にてCPUは、追従脚の1つを制御対象脚として選択する。更に、CPUは、ステップ1425に進み、
図15にフローチャートにより示された「追従脚状態管理処理ルーチン」を実行する。
図15のルーチンについては後述される。
【0132】
図15のルーチンの処理が終了すると、CPUは、ステップ1430に進み、制御対象脚が第2制御モードにあるか否かを判定する。制御対象脚が第2制御モードであれば、CPUは、ステップ1430にて「Yes」と判定してステップ1455に直接進む。この場合、制御対象脚の脚先位置Psは変更されない。
【0133】
一方、制御対象脚が第2制御モードでなければ、CPUは、ステップ1430にて「No」と判定してステップ1460に進み、制御対象脚が第4制御モードにあるか否かを判定する。制御対象脚が第4制御モードにあれば、CPUは、ステップ1460にて「Yes」と判定してステップ1465に進み、目標胴体移動値ΔCに基づいて脚先移動位置Pgを取得する。
【0134】
次いで、CPUは、ステップ1450に進み、脚先移動位置Pgに基づいて制御対象脚を制御する。即ち、CPUは、現時点から制御周期Δtが経過した時点における制御対象脚の脚先位置Psが脚先移動位置Pgに等しくなるように制御対象脚のモータ51を制御する。具体的には、CPUは、脚先位置Psが脚先移動位置Pgとなったときの脚回転角度Lsの変化量(脚回転角度変化量)を取得する。加えて、CPUは、現時点から制御周期Δtが経過するまでの期間において脚回転角度Lsが脚回転角度変化量だけ変化するように制御対象脚のモータ51を制御する。更に、CPUは、ステップ1455に進む。
【0135】
制御対象脚が第4制御モードでなければ、CPUは、ステップ1460にて「No」と判定してステップ1435に進み、制御対象脚が第3制御モードであるか否かを判定する。制御対象脚が第3制御モードであれば、CPUは、ステップ1435にて「Yes」と判定してステップ1440に進み、目標接地位置に基づいて脚先移動位置Pgを取得する。即ち、CPUは、
図15のステップ1535にて取得された目標接地位置に制御対象脚の脚先が接近するように脚先移動位置Pgを取得する。次いで、CPUは、ステップ1450に進む。
【0136】
制御対象脚が第3制御モードでなければ(即ち、制御対象脚が第1制御モードにあれば)、CPUは、ステップ1435にて「No」と判定してステップ1445に進み、脚先待機位置Lwに基づいて脚先移動位置Pgを取得する。即ち、CPUは、制御対象脚の脚先が脚先待機位置Lwに接近するように脚先移動位置Pgを取得する。次いで、CPUは、ステップ1450に進む。
【0137】
ステップ1455にてCPUは、全ての追従脚に対して上述した処理を実行したか否かを判定する。即ち、CPUは、全ての追従脚が制御対象脚として選択されたか否かを判定する。全ての追従脚が制御対象脚として選択されていれば、CPUは、ステップ1455にて「Yes」と判定してステップ1495に進み、本ルーチンの処理を終了する。
【0138】
一方、制御対象脚として選択されていない追従脚が存在していれば、CPUは、ステップ1455にて「No」と判定してステップ1420に進み、未だ選択されていない追従脚の1つを制御対象脚として選択する。
【0139】
次に、
図15の追従脚状態管理処理ルーチンについて説明する。CPUは、
図14のステップ1425に進むと、
図15のステップ1500から処理を開始してステップ1505に進み、制御対象脚が第1制御モードにあるか否かを判定する。
【0140】
制御対象脚が第1制御モードにあれば、CPUは、ステップ1505にて「Yes」と判定してステップ1510に進み、制御対象脚の第2遷移条件が成立しているか否かを判定する。具体的には、CPUは、制御対象脚の脚先位置Ps(xs,ys,zs)と、脚先待機位置Lw(αw,βw,γw)によって表される脚先位置と、の距離が所定の閾値よりも小さいか否かを判定する。
【0141】
制御対象脚の第2遷移条件が成立していれば、CPUは、ステップ1510にて「Yes」と判定してステップ1515に進み、制御対象脚の制御モードを第2制御モードに変更する。次いで、CPUは、ステップ1595に進み、本ルーチンの処理を終了して
図14のステップ1430に進む。
【0142】
一方、制御対象脚の第2遷移条件が成立していなければ、CPUは、ステップ1510にて「No」と判定してステップ1595に直接進む。
【0143】
制御対象脚が第1制御モードになければ、CPUは、ステップ1505にて「No」と判定してステップ1520に進み、制御対象脚が第2制御モードにあるか否かを判定する。
【0144】
制御対象脚が第2制御モードにあれば、CPUは、ステップ1520にて「Yes」と判定してステップ1525に進み、制御対象脚の第3遷移条件が成立しているか否かを判定する。即ち、CPUは、制御対象脚の前方隣接脚の脚先が制御対象脚の到達可能領域に含まれているか否かを判定する。
【0145】
制御対象脚の第3遷移条件が成立していれば、CPUは、ステップ1525にて「Yes」と判定してステップ1530に進み、制御対象脚の制御モードを第3制御モードに変更する。次いで、CPUは、ステップ1535に進み、制御対象脚の目標接地位置を取得する。制御対象脚が左中脚42又は右中脚45であれば、CPUは、
図13のステップ1350にて記憶された前方隣接脚である操作脚の基準位置の後方に隣接する位置を制御対象脚の目標接地位置を取得する。制御対象脚が左後脚43又は右後脚46であれば、CPUは、前方隣接脚(即ち、左中脚42及び右中脚45の何れか)の接地位置の後方に隣接する位置を制御対象脚の目標接地位置を取得する。更に、CPUは、ステップ1595に進む。
【0146】
一方、制御対象脚の第3遷移条件が成立していなければ、CPUは、ステップ1525にて「No」と判定してステップ1595に直接進む。
【0147】
制御対象脚が第2制御モードになければ、CPUは、ステップ1520にて「No」と判定してステップ1540に進み、制御対象脚が第3制御モードにあるか否かを判定する。
【0148】
制御対象脚が第3制御モードにあれば、CPUは、ステップ1540にて「Yes」と判定してステップ1545に進み、制御対象脚の第4遷移条件が成立しているか否かを判定する。具体的には、CPUは、制御対象脚の脚先位置Psと目標接地位置との距離が所定の閾値よりも小さいか否かを判定する。
【0149】
制御対象脚の第4遷移条件が成立していれば、CPUは、ステップ1545にて「Yes」と判定してステップ1550に進み、制御対象脚の制御モードを第4制御モードに変更する。次いで、CPUは、ステップ1595に進む。
【0150】
一方、制御対象脚の第4遷移条件が成立していなければ、CPUは、ステップ1545にて「No」と判定してステップ1595に直接進む。
【0151】
制御対象脚が第3制御モードになければ(即ち、制御対象脚が第4制御モードにあれば)、CPUは、ステップ1540にて「No」と判定してステップ1555に進み、制御対象脚の第1遷移条件(遊脚条件)が成立しているか否かを判定する。即ち、CPUは、制御対象脚の前方隣接脚が接地脚であり、且つ制御対象脚以外の接地脚の脚先位置によって画定される支持多角形に胴体重心Gbが上面視において含まれている(即ち、重心条件が成立している)か否かを判定する。
【0152】
制御対象脚の第1遷移条件(遊脚条件)が成立していれば、CPUは、ステップ1555にて「Yes」と判定してステップ1560に進み、制御対象脚の制御モードを第1制御モードに変更する。次いで、CPUは、ステップ1595に進む。
【0153】
一方、制御対象脚の第1遷移条件(遊脚条件)が成立していなければ、CPUは、ステップ1555にて「No」と判定してステップ1595に直接進む。
【0154】
(具体的作動-操作制御装置)
次に、操作制御装置81の具体的作動について説明する。操作制御装置81のCPU(以下、単に「CPU」とも称呼される。)は、制御周期Δtが経過する毎に
図16にフローチャートにより示された「操作器制御処理ルーチン」を実行する。なお、CPUは、図示しないルーチンを実行し、ロボット制御装置31から受信した前方画像をHMD82の左側ディスプレイ82a及び右側ディスプレイ82bに随時表示する。
【0155】
適当なタイミングとなると、CPUは、
図16のステップ1600から処理を開始してステップ1605に進み、操作器の1つを選択する。即ち、CPUは、左側操作器83a及び右側操作器83bの一方を選択する。
【0156】
次いで、CPUは、選択された操作器の遊脚ボタン又は接地脚ボタンがオン状態であるか否かを判定する。即ち、CPUは、ボタン87a、87bの少なくとも一方がオン状態であるか否かを判定する。
【0157】
遊脚ボタン又は接地脚ボタンがオン状態であれば、CPUは、ステップ1610にて「Yes」と判定して以下に説明するステップ1615乃至ステップ1635の処理を順に実行する。次いで、CPUは、ステップ1640に進む。
【0158】
ステップ1615:CPUは、選択された操作器に対応する操作脚の反力トルクTkを取得する。即ち、CPUは、前回実行された本ルーチンの処理が終了してから現時点までの期間においてロボット制御装置31から受信した反力情報に含まれる選択された操作脚の電流Asを上記式(8)に適用することによって反力トルクTkを取得する。
ステップ1620:CPUは、反力トルクTkを上記式(9)に適用することによって作用トルクTeを取得する。
【0159】
ステップ1625:CPUは、作用トルクTeを上記式(10)に適用することによって先端反力Feを取得する。
ステップ1630:CPUは、先端反力Feに対してLPF処理を適用することによって補正先端反力Fefを取得する。
ステップ1635:CPUは、補正先端反力Fefを上記式(11)に適用することによって操作反力Fmを取得する。
【0160】
ステップ1640にてCPUは、操作反力Fmの大きさ|Fm|が反力閾値Fthよりも大きいか否かを判定する。操作反力Fmの大きさ|Fm|が反力閾値Fthよりも大きければ、CPUは、ステップ1640にて「Yes」と判定してステップ1645に進み、操作反力Fmの大きさ|Fm|が反力閾値Fthと等しくなるように操作反力Fm(xf,yf,zf)を調整する。即ち、CPUは、x軸方向、y軸方向及びz軸方向のそれぞれの操作反力Fmの成分である操作反力xf、操作反力yf及び操作反力zfの大きさをそれぞれ小さくする。次いで、CPUは、ステップ1650に進む。
【0161】
一方、操作反力Fmの大きさ|Fm|が反力閾値Fth以下であれば、CPUは、ステップ1640にて「No」と判定してステップ1650に直接進む。
【0162】
ステップ1650にてCPUは、操作反力Fmを上記式(12)に適用することによって関節トルクTs(αt,βt,γt)を取得する。次いで、CPUは、ステップ1655に進み、関節トルクTsに基づいて操作器を制御する。即ち、CPUは、選択された操作器が備えるモータ86のそれぞれに関節トルクTsと等しいトルクを発生させる。
【0163】
更に、CPUは、ステップ1660に進み、選択された操作器のボタン(即ち、遊脚ボタン及び接地脚ボタン)の操作状態及び操作位置Pmを操作情報としてロボット制御装置31へ送信する。
【0164】
次いで、CPUは、ステップ1665に進み、上述した処理を左右の操作器に対して実行したか否かを判定する。未だ処理が実行されていない操作器があれば、CPUは、ステップ1665にて「No」と判定してステップ1605に進み、処理が実行されていない(選択されていなかった)操作器を選択する。一方、上述した処理を左右の操作器に対して実行されていれば、CPUは、ステップ1665にて「Yes」と判定してステップ1695に進み、本ルーチンの処理を終了する。
【0165】
なお、ステップ1610の判定条件が成立していなければ(即ち、遊脚ボタン及び接地脚ボタン何れもオフ状態であれば)、CPUは、ステップ1610にて「No」と判定してステップ1660に直接進む。従って、この場合、選択された操作器の把持部に操作反力Fmが発生しない。
【0166】
<第2実施形態>
第2実施形態を
図2及び
図17~
図19を参照しながら説明する。第2実施形態に係るロボット制御システム1aは、ロボット2a及び操作装置8aを含んでいる。ロボット2aは、ロボット制御装置31と同様の構成を有するロボット制御装置31aを備えている(
図2を参照)。操作装置8aは、操作制御装置81a及び操作器83cを備えている(
図17を参照)。操作制御装置81aは、操作制御装置81と同様の構成を有している。操作器83cは、左側操作器83aと同様の構成を有しているが、ボタン87bを備えていない。操作制御装置81aは、操作器83cの把持部(即ち、リンク84fであり、より具体的には、第5操作関節)に、関節トルクTsに加えて補助トルクTh(αh,βh,γh)を発生させる。以下、これらの相違点について説明する。
【0167】
操作者は、操作器83cを用いて遊脚モードにある操作脚(即ち、左前脚41及び右前脚44の何れか)を制御する。例えば、左前脚41が遊脚モードであるとき、ロボット制御装置31aは、左前脚41の脚先位置Ps(xs,ys,zs)を、操作器83cの操作位置Pm(xm,ym,zm)に応じて制御する。一方、操作制御装置81aは、左前脚41の先端反力Fe(xe,ye,ze)に応じて、操作器83cの把持部(具体的には、第5操作関節)に操作反力Fm(xf,yf,zf)を発生させる。
【0168】
操作者が、左前脚41の脚先を所望の位置に接地させた後、ボタン87aをオン状態にすると(具体的には、ボタン87aを一時的に押下すると)、ロボット制御装置31aは、左前脚41を接地脚モードに切換え且つ右前脚44を遊脚モードに切換える。
【0169】
その後、ロボット制御装置31aは、右前脚44の脚先位置Psを、操作器83cの操作位置Pmに応じて制御する。しかし、右前脚44が遊脚モードに切換えられた時点において、右前脚44の脚先位置Psは、操作器83cの操作位置Pmと乖離している。そのため、操作制御装置81aは、操作位置Pmの「補正処理」を実行する。
【0170】
具体的には、操作制御装置81aは、操作位置Pmが右前脚44の脚先位置Psに対応した値となるように、補助トルクThを発生させて操作器83cの把持部を移動させる。操作位置Pmの補正処理が終了すると(即ち、操作位置Pmが右前脚44の脚先位置Psに対応する位置に到達すると)、ロボット制御装置31aは、操作位置Pmに応じて右前脚44の脚先位置Psを制御する。
【0171】
更に、操作制御装置81aは、(遊脚モードにある)右前脚44の脚先位置Psが到達可能領域の境界に接近したとき、操作位置Pmを所定の操作補助位置Pt(xt,yt,zt)へ接近させる方向の補助トルクThを発生させる。そのため、操作者は、操作器83cの把持部を操作するとき(即ち、操作位置Pmを移動させるとき)、遊脚モードにある操作脚の脚先が到達できない領域に接近していることを認識することができる。
【0172】
本実施形態において、操作補助位置Ptは、操作脚の脚回転角度Ls(αs,βs,γs)が脚先待機位置Lwと一致している場合における脚先位置Psに対応する操作位置Pmに略等しい。操作器83cのモータ86のそれぞれが補助トルクThに等しいトルクを発生させたときに操作器83cの把持部に発生する力は、便宜上、「操作補助力」とも称呼される。
【0173】
(具体的作動-ロボット制御装置)
ロボット制御装置31aの具体的作動について説明する。ロボット制御装置31aのCPU(以下、単に「CPU」とも称呼される。)は、
図13のルーチンに代わり、
図18にフローチャートにより示された「操作脚制御処理ルーチン」を制御周期Δtが経過する毎に実行する。本ルーチンにおいて値が「0」又は「1」に設定され且つ参照される補正フラグXhは、ロボット制御装置31aの起動時に「0」に設定される。操作位置Pmの補正処理が実行されているとき、補正フラグXhの値が「1」に設定される。
【0174】
CPUは、
図18のルーチンの処理が終了すると、
図14の追従脚制御処理ルーチンを実行する。ただし、
図18のルーチンにて目標胴体移動値ΔCが常に取得されるので、CPUは、
図14のステップ1405では常に「No」と判定する。
【0175】
適当なタイミングとなると、CPUは、
図18のステップ1800から処理を開始してステップ1805に進み、操作器83cのボタン87aがオン状態となった直後であるか否かを判定する。即ち、CPUは、ボタン87aの操作状態がオン状態であるとの操作情報を操作制御装置81aから受信した後、本ルーチンが初めて実行されているか否かを判定する。
【0176】
ボタン87aがオン状態となった直後でなければ、CPUは、ステップ1805にて「No」と判定してステップ1850に進み、補正フラグXhの値が「1」であるか否かを判定する。補正フラグXhの値が「1」でなければ、CPUは、ステップ1850にて「No」と判定してステップ1865に進む。この場合、操作器83cの補正処理が実行されていない。
【0177】
ステップ1865にてCPUは、操作器83cの操作位置Pmに基づいて遊脚モードにある操作脚を制御する。具体的には、CPUは、
図13のステップ1315乃至ステップ1335と同様の処理を実行することにより遊脚モードにある操作脚の脚先位置Psを制御する。次いで、CPUは、ステップ1870に進み、遊脚モードにある操作脚の電流Asを反力情報として操作制御装置81へ送信する。
【0178】
更に、CPUは、ステップ1875に進み、遊脚モードにある操作脚の脚先が到達可能領域の境界に接近しているか否かを判定する。具体的には、CPUは、到達可能領域の境界を表す胴体座標値の集合の中で脚先位置Ps(xs,ys,zs)と最も近い胴体座標値と、脚先位置Psと、の距離が所定の閾値よりも小さくなると、操作脚の脚先が到達可能領域の境界に接近していると判定する。
【0179】
操作脚の脚先が到達可能領域の境界に接近していなければ、CPUは、ステップ1875にて「No」と判定してステップ1830乃至ステップ1845の処理を順に実行する。次いで、CPUは、ステップ1895に進み、本ルーチンの処理を終了して
図14の追従脚制御処理ルーチンの処理を開始する。
【0180】
ステップ1830:CPUは、目標重心位置Gtを取得する。具体的には、CPUは、接地脚モードにある操作脚及び第4制御モードにある追従脚の脚先のそれぞれを頂点とする支持多角形の重心が上面視において胴体重心Gbと一致するように目標重心位置Gtを取得する。
ステップ1835:CPUは、目標重心位置Gtに基づいて目標胴体移動値ΔCを取得する。具体的には、CPUは、
図14のステップ1415と同様の処理を実行することにより目標胴体移動値ΔCを取得する。
【0181】
ステップ1840:CPUは、目標胴体移動値ΔCに基づいて接地脚モードにある操作脚の脚先移動位置Pgを取得する。具体的には、CPUは、
図14のステップ1465と同様の処理を実行することにより操作脚の脚先移動位置Pgを取得する。
ステップ1845:CPUは、脚先移動位置Pgに基づいて接地脚モードにある操作脚を制御する。具体的には、CPUは、
図14のステップ1450と同様の処理を実行することにより接地脚モードにある操作脚のモータ51を制御する。
【0182】
一方、操作器83cのボタン87aがオン状態となった直後であれば、CPUは、ステップ1805にて「Yes」と判定してステップ1810乃至ステップ1825の処理を順に実行する。次いで、CPUは、ステップ1830に進む。
【0183】
ステップ1810:CPUは、(
図13のステップ1350と同様の処理を実行することにより)脚先位置Psを基準位置として記憶する。
ステップ1815:CPUは、操作脚の遊脚モードと接地脚モードとを切換える。即ち、CPUは、遊脚モードにあった操作脚を接地脚モードに切換え且つ接地脚モードにあった操作脚を遊脚モードに切換える。
【0184】
ステップ1820:CPUは、補正フラグXhの値を「1」に設定する。
ステップ1825:CPUは、遊脚モードにある(新たに遊脚モードとなった)操作脚の脚先位置Psを「補正位置情報」として操作制御装置81aへ送信する。
【0185】
次に本ルーチンが実行されたとき、操作器83cのボタン87aがオン状態となった直後ではないので、CPUは、ステップ1805にて「No」と判定してステップ1850に進む。更に、補正フラグXhの値が「1」となっているので、CPUは、ステップ1850にて「Yes」と判定してステップ1855に進み、補正処理が終了しているか否かを判定する。
【0186】
具体的には、CPUは、新たに遊脚モードとなった操作脚の(実際の)脚先位置Psと、最後に受信した操作情報に含まれる操作位置Pmに対応する脚先位置Psと、の距離が所定の閾値よりも小さければ、補正処理が終了していると判定する。補正処理が終了していなければ、CPUは、ステップ1855にて「No」と判定してステップ1825に進む。即ち、遊脚モードにある操作脚の脚先位置Psと、操作器83cの操作位置Pmと、が乖離していれば、補正位置情報が操作制御装置81aへ繰返し送信され、その結果、補正処理を実行すべき状況であることを操作制御装置81aが認識する。
【0187】
その後、補正処理が終了すると、CPUは、ステップ1855にて「Yes」と判定してステップ1860に進み、補正フラグXhの値を「0」に設定する。次いで、CPUは、ステップ1865に進む。即ち、この場合、操作器の操作位置Pmに基づいて遊脚モードとなった操作脚の脚先位置Psが制御されるようになる。
【0188】
遊脚モードにある操作脚の脚先位置Psが到達可能領域の境界に接近すると、CPUは、ステップ1875にて「Yes」と判定してステップ1880に進み、「境界接近情報」を操作制御装置81aへ送信する。従って、この場合、操作制御装置81aは、遊脚モードにある操作脚の脚先位置Psが到達可能領域の境界に接近していることを認識する。次いで、CPUは、ステップ1830に進む。
【0189】
(具体的作動-操作制御装置)
次に、操作制御装置81aの具体的作動について説明する。操作制御装置81aのCPU(以下、単に「CPU」とも称呼される。)は、
図16のルーチンに代わり、
図19にフローチャートにより示された「操作器制御処理ルーチン」を制御周期Δtが経過する毎に実行する。
【0190】
適当なタイミングとなると、CPUは、
図19のステップ1900から処理を開始してステップ1905に進み、補正位置情報を受信しているか否かを判定する。具体的には、CPUは、前回実行された本ルーチンの処理が終了してから現時点までの期間において補正位置情報をロボット制御装置31aから受信しているか否かを判定する。
【0191】
補正位置情報を受信していれば(即ち、操作器83cの補正処理の実行中であれば)、CPUは、ステップ1905にて「Yes」と判定してステップ1910乃至ステップ1925の処理を順に実行する。次いで、CPUは、ステップ1995に進み、本ルーチンの処理を終了する。
【0192】
ステップ1910:CPUは、補正位置情報に含まれる脚先位置Psに基づいて補助トルクThを取得する。具体的には、CPUは、操作器83cのモータ86のそれぞれが補助トルクTh(αh,βh,γh)に等しいトルクを発生した場合に操作位置Pmが脚先位置Psに対応する位置へ向けて移動するように補助トルクThを取得する。
【0193】
ステップ1915:CPUは、反力トルクTkに基づいて関節トルクTsを取得する。具体的には、操作器83cの補正処理の実行中でなければ、操作制御装置81aは、
図18のステップ1870の処理によりロボット制御装置31aから反力情報を受信している。この場合、CPUは、
図16のステップ1615乃至ステップ1650と同様の処理を実行することにより関節トルクTsを取得する。一方、前回実行された本ルーチンの処理が終了してから現時点までの期間において反力情報を受信していなければ(即ち、操作器83cの補正処理の実行中であれば)、CPUは、関節トルクTs(αt,βt,γt)のそれぞれの値を「0」に設定する。
【0194】
ステップ1920:CPUは、補助トルクTh及び関節トルクTsに基づいて操作器83cを制御する。具体的には、CPUは、操作器83cのモータ86のそれぞれに補助トルクThと関節トルクTsとの和に等しいトルクを発生させる。
ステップ1925:CPUは、(
図16のステップ1660と同様の処理を実行することにより)操作器83cのボタン操作状態及び操作位置Pmを操作情報としてロボット制御装置31aへ送信する。
【0195】
補正位置情報を受信していなければ(即ち、操作器83cの補正処理が終了してれば)、CPUは、ステップ1905にて「No」と判定してステップ1930に進み、境界接近情報を受信しているか否かを判定する。具体的には、CPUは、前回実行された本ルーチンの処理が終了してから現時点までの期間において境界接近情報をロボット制御装置31aから受信しているか否かを判定する。
【0196】
境界接近情報を受信していれば、CPUは、ステップ1930にて「Yes」と判定してステップ1935に進み、操作補助位置Ptに基づいて補助トルクThを取得する。具体的には、CPUは、操作器83cのモータ86のそれぞれが補助トルクThに等しいトルクを発生した場合に操作位置Pmが操作補助位置Ptに対応する位置へ向けて移動するように補助トルクThを取得する。次いで、CPUは、ステップ1915に進む。
【0197】
一方、境界接近情報を受信していなければ、CPUは、ステップ1935にて「No」と判定してステップ1915に直接進む。なお、前回実行された本ルーチンの処理が終了してから現時点までの期間において、補正位置情報及び境界接近情報が何れも受信されていなければ、ステップ1915の処理において補助トルクTh(αh,βh,γh)のそれぞれの値は「0」に設定されている。
【0198】
<第3実施形態>
第3実施形態を
図20~
図26を参照しながら説明する。第3実施形態の係るロボット制御システム1bは、2脚歩行ロボットであるロボット6及び操作装置9を含んでいる。操作者は、操作装置9の把持部を操作することによってロボット6の脚先(具体的には、遊脚の先端にある足部)の位置及び角度を制御する。ロボット6は、足部に作用する先端反力を検出する6軸力覚センサを備え、検出された先端反力に相当する操作反力が遊脚に対応する把持部に発生させられる。以下、これらの相違点について説明する。
【0199】
図20及び
図21に示されるように、ロボット6は、ロボット制御装置31と同様の構成を有するロボット制御装置31b、及び胴体61、並びに、胴体61に対して可動する可動部材である左脚71a及び右脚71bを備えている。左脚71a及び右脚71bは、便宜上、「操作脚」とも称呼される。本実施形態において、ロボット6に係る胴体座標系は、胴体61の幾何学的中心が原点Oであり、胴体61に対して前後方向がx軸であり、左右方向がy軸であり、上下方向がz軸である直交座標系である。
【0200】
胴体61は、IMU33、無線通信装置34(34a)及びステレオカメラ62を備えている。ステレオカメラ62は、左側カメラ62a及び右側カメラ62bを内包している。左側カメラ62a及び右側カメラ62bのそれぞれは、胴体61の前方領域の映像(即ち、前方画像)を取得し、前方画像を表す信号をロボット制御装置31bへ送信する。ステレオカメラ62は、便宜上、「前方領域センサ」とも称呼される。
【0201】
左脚71a及び右脚71bの構造は互いに等しく、左脚71a及び右脚71bが左右対称の形態となるように胴体61に接続されている。左脚71a及び右脚71bのそれぞれは、リンク72a~リンク72d並びに基部72e及び足部72fを含んでいる(
図22を参照)。基部72eの一端は、胴体61に固結されている。基部72eの他端は、リンク72aの一端と回転関節(第1脚関節)を介して互いに連結されている。
【0202】
リンク72aの他端は、リンク72bの一端と2つの回転関節(第2脚関節及び第3脚関節)を介して互いに連結されている。第2脚関節の回転軸は第1脚関節の回転軸と互いに直交し、且つ第3脚関節の回転軸は第2脚関節の回転軸と互いに直交している。リンク72bの他端は、リンク72cの一端と回転関節(第4脚関節)を介して互いに連結されている。
【0203】
リンク72cの他端は、リンク72dの一端と2つの回転関節(第5脚関節及び第6脚関節)を介して互いに連結されている。第5脚関節の回転軸は第4脚関節の回転軸と互いに直交し、且つ第6脚関節の回転軸は第5脚関節の回転軸と互いに直交している。リンク72dの他端は、足部72fに接続されている。足部72fは、上面視において略長方形形状を有し、地面と接する接地面(下面)を備えている。
【0204】
第1脚関節の回転角度である回転角度αbは、モータ73(モータ73a)が発生させるトルクによって制御される(
図21を参照)。第2脚関節の回転角度である回転角度βbは、モータ73(モータ73b)が発生させるトルクによって制御される。第3脚関節の回転角度である回転角度γbは、モータ73(モータ73c)が発生させるトルクによって制御される。
【0205】
第4脚関節の回転角度である回転角度δbは、モータ73(モータ73d)が発生させるトルクによって制御される。第5脚関節の回転角度である回転角度εbは、モータ73(モータ73e)が発生させるトルクによって制御される。第6脚関節の回転角度である回転角度ζbは、モータ73(モータ73f)が発生させるトルクによって制御される。モータ73は、便宜上、「脚アクチュエータ」とも称呼される。
【0206】
角度センサ74(角度センサ74a)は、第1脚関節の回転角度αbを検出し、回転角度αbを表す信号をロボット制御装置31bへ出力する。角度センサ74(角度センサ74b)は、第2脚関節の回転角度βbを検出し、回転角度βbを表す信号をロボット制御装置31bへ出力する。角度センサ74(角度センサ74c)は、第3脚関節の回転角度γbを検出し、回転角度γbを表す信号をロボット制御装置31bへ出力する。
【0207】
角度センサ74(角度センサ74d)は、第4脚関節の回転角度δbを検出し、回転角度δbを表す信号をロボット制御装置31bへ出力する。角度センサ74(角度センサ74e)は、第5脚関節の回転角度εbを検出し、回転角度εbを表す信号をロボット制御装置31bへ出力する。角度センサ74(角度センサ74f)は、第6脚関節の回転角度ζbを検出し、回転角度ζbを表す信号をロボット制御装置31bへ出力する。角度センサ74は、便宜上、「脚位置センサ」とも称呼される。
【0208】
リンク72dと足部72fとの接続部には力覚センサ75が介装されている。力覚センサ75は、周知の6軸力覚センサ(力トルクセンサ)であり、足部72f(ひいては、力覚センサ75)に作用する検出反力Fqを検出し、検出反力Fqを表す信号をロボット制御装置31bへ出力する。力覚センサ75は、便宜上、「先端反力センサ」とも称呼される。
【0209】
回転角度αb、回転角度βb、回転角度γb、回転角度δb、回転角度εb及び回転角度ζbの組合せは、脚回転角度Lb(αb,βb,γb,δb,εb,ζb)とも称呼される。ロボット制御装置31bは、脚回転角度Lb、並びにリンク72a~リンク72dの長さ、及び足部72fの形状(大きさ)等に基づき、周知の方法により左脚71a及び右脚71bのそれぞれの脚先位置Pb(xb,yb,zb)及び脚先姿勢Qb(φb,ψb,θb)を取得する。
【0210】
本実施形態において、脚先位置Pbは、リンク72dの軸線と、足部72fの上面と、の交点の胴体座標値である。脚先姿勢Qbは、脚先位置Pbに対する足部72fのx軸、y軸及びz軸のそれぞれの方向の回転角度の組合せによって表される。
【0211】
ロボット制御装置31bは、検出反力Fqに基づいて先端反力Fd(xd,yd,zd,φd,ψd,θd)を取得する。具体的には、ロボット制御装置31bは、脚先姿勢Qb等に基づいて検出反力Fqを補正し、x軸、y軸及びz軸のそれぞれの方向の反力の向き及び大きさ、並びに、x軸、y軸及びz軸のそれぞれの回転方向のトルクの向き及び大きさの組合せを先端反力Fdとして取得する。
【0212】
図23に示されるように、操作装置9は、無線通信装置34(34b)、操作制御装置81と同様の構成を有する操作制御装置81b、HMD82、左側操作器91a及び右側操作器91bを備えている。左側操作器91a及び右側操作器91bは、左側操作器83a及び右側操作器83bと類似する外観及び構造を有し、更に、角度センサ85(角度センサ85d~85f)及びモータ86(モータ86d~86f)を備えている。
【0213】
角度センサ85(角度センサ85d)は、第4操作関節(即ち、リンク84cとリンク84dとを接続する回転関節)の回転角度δmを検出し、回転角度δmを表す信号を操作制御装置81bへ出力する。角度センサ85(角度センサ85e)は、第5操作関節(即ち、リンク84dとリンク84eとを接続する回転関節)の回転角度εmを検出し、回転角度εmを表す信号を操作制御装置81bへ出力する。角度センサ85(角度センサ85f)は、第6操作関節(即ち、リンク84eとリンク84fとを接続する回転関節)の回転角度ζmを検出し、回転角度ζmを表す信号を操作制御装置81bへ出力する。
【0214】
モータ86(モータ86d)は、操作制御装置81bからの指示に応じて回転角度δmを変更するトルクを発生させる。モータ86(モータ86e)は、操作制御装置81bからの指示に応じて回転角度εmを変更するトルクを発生させる。モータ86(モータ86f)は、操作制御装置81bからの指示に応じて回転角度ζmを変更するトルクを発生させる。
【0215】
本実施形態において、先端反力Fdに応じてモータ86のそれぞれが発生させるトルクの組合せは、関節トルクTs(αt,βt,γt,δt,εt,ζt)とも称呼される。加えて、操作者による操作を補助するためにモータ86のそれぞれが発生させるトルクの組合せは、補助トルクTh(αh,βh,γh,δh,εh,ζh)とも称呼される。
【0216】
回転角度αm、回転角度βm、回転角度γm、回転角度δm、回転角度εm及び回転角度ζmの組合せは、操作転角度Lme(αm,βm,γm,δm,εm,ζm)とも称呼される。操作制御装置81bは、操作転角度Lmeに基づいて操作位置Pm(xm,ym,zm)及び操作姿勢Qm(φm,ψm,θm)を周知の方法により取得する。操作姿勢Qmは、把持部であるリンク84fの傾き(即ち、延在方向)であり、x軸、y軸及びz軸のそれぞれの方向の回転角度の組合せによって表される。
【0217】
操作者は、ロボット6を歩行させるとき、左側操作器91a及び右側操作器91bの一方の遊脚ボタンをオン状態とし且つ他方の接地脚ボタンをオン状態とする。即ち、ロボット6が歩行するとき、左脚71a及び右脚71bの一方が遊脚モードとなり他方が接地脚モードとなる。以下、左脚71a及び右脚71bのうち、遊脚モードにある脚は単に「遊脚」とも称呼される、接地脚モードにある脚は単に「接地脚」とも称呼される。
【0218】
操作者は、遊脚に対応する把持部を操作すると(即ち、操作位置Pm及び操作姿勢Qmを変更すると)、それに応じて遊脚の脚先位置Pb及び脚先姿勢Qbが変化する。操作者が遊脚の足部72fを胴体61に対して前方へ移動させるとき、ロボット制御装置31bは、接地脚の足部72fを胴体61に対して後方に移動させる。
【0219】
このとき、ロボット制御装置31bは、ロボット6の目標ZMP(xa,ya,za)を取得し、且つ目標ZMPが接地脚の足部72fに上面視において含まれるように接地脚の脚先位置Pb及び脚先姿勢Qbを制御し、以て、ロボット6の姿勢を制御する。目標ZMPは、現時点から制御周期Δtが経過した時点におけるロボット6の重心に作用する重力と、ロボット6の移動に伴って発生する慣性力と、の合力(総慣性力)の方向が地面と交わる点(所謂、ゼロモーメントポイント)の目標位置である。
【0220】
操作者は、遊脚の足部72fを所望の位置にて接地させると、遊脚に対応する操作器(即ち、左側操作器91a及び右側操作器91bの一方)の遊脚ボタンをオフ状態とし且つ接地脚ボタンをオン状態とする。加えて、操作者は、接地脚に対応する操作器(即ち、左側操作器91a及び右側操作器91bの他方)の接地脚ボタンをオフ状態とし且つ遊脚ボタンをオン状態とする。即ち、操作者は、遊脚と接地脚とを切換える。
【0221】
次いで、操作者は、新たな遊脚の足部72fを新たな接地位置まで移動させる。即ち、操作者が左脚71a及び右脚71bを交互に胴体61に対して前方に移動させることによりロボット6が前進(歩行)する。
【0222】
操作制御装置81bは、遊脚の先端反力Fdに応じた力を遊脚に対応する把持部に作用させる。具体的には、操作制御装置81bは、先端反力Fdに応じて操作位置Pm及び操作姿勢Qmが変化するようにモータ86に関節トルクTsを発生させる。
【0223】
加えて、操作制御装置81bは、接地脚の足部72fの移動に伴って接地脚に対応する把持部を移動させる。具体的には、操作制御装置81bは、接地脚の脚先位置Pb及び脚先姿勢Qbに応じて操作位置Pm及び操作姿勢Qmが変化するようにモータ86に補助トルクThを発生させる。
【0224】
(具体的作動-ロボット制御装置)
ロボット制御装置31bの具体的作動について説明する。ロボット制御装置31bのCPU(以下、単に「CPU」とも称呼される。)は、
図25にフローチャートにより示された「ロボット制御処理ルーチン」を制御周期Δtが経過する毎に実行する。
【0225】
適当なタイミングとなると、CPUは、
図25のステップ2500から処理を開始してステップ2505に進み、遊脚及び接地脚が存在しているか否かを判定する。具体的には、CPUは、前回実行された本ルーチンの処理が終了してから現時点までの期間において操作制御装置81bから受信した操作情報に基づき、左側操作器91a及び右側操作器91bの一方の遊脚ボタンがオン状態であり且つ他方の接地脚ボタンがオン状態であるか否かを判定する。
【0226】
遊脚及び接地脚が存在していれば、CPUは、ステップ2505にて「Yes」と判定してステップ2510乃至ステップ2555の処理を順に実行する。次いで、CPUは、ステップ2595に進み、本ルーチンの処理を終了する。
【0227】
ステップ2510:CPUは、遊脚の目標脚先位置Pv及び目標脚先姿勢Qvを取得する。目標脚先位置Pv(xv,yv,zv)は、脚先位置Pbの目標値である。目標脚先姿勢Qv(φv,ψv,θv)は、脚先姿勢Qbの目標値である。具体的には、CPUは、
図13のステップ1315と同様の処理を実行することにより操作位置Pmに基づいて目標脚先位置Pvを取得する。
【0228】
同様に、CPUは、操作姿勢Qmに基づいて目標脚先姿勢Qvを取得する。CPUは、例えば、目標脚先姿勢Qvのx軸方向の回転角度である目標脚先姿勢φvを、操作姿勢Qmのx軸方向の回転角度である操作姿勢φbに所定の比例係数を乗じて得られた値に所定の定数を加えることにより取得する。
【0229】
ステップ2515:CPUは、遊脚の目標移動量ΔPv及び目標姿勢変化量ΔQvを取得する。目標移動量ΔPvは、現時点から制御周期Δtが経過するまでの期間における脚先位置Pbの変化量の目標値である。目標姿勢変化量ΔQvは、現時点から制御周期Δtが経過するまでの期間における目標脚先姿勢Qvの変化量の目標値である。
【0230】
具体的には、CPUは、
図13のステップ1320と同様の処理を実行することにより目標移動量ΔPvをフィードバック処理(PD制御)により取得する。同様に、CPUは、目標姿勢変化量ΔQvをフィードバック処理により取得する。即ち、CPUは、脚先姿勢Qb及び目標脚先姿勢Qv、並びに、本ルーチンが前回実行されたときに記憶された(即ち、制御周期Δtだけ以前に取得された)脚先姿勢Qb及び目標脚先姿勢Qvに基づくPD制御により取得する。
【0231】
ステップ2520:CPUは、目標移動量ΔPv及び目標姿勢変化量ΔQvに基づいて遊脚を制御する。即ち、CPUは、現時点から制御周期Δtが経過した時点における脚先位置Pb及び脚先姿勢Qbの変化量が目標移動量ΔPv及び目標姿勢変化量ΔQvに等しくなるように遊脚のモータ73を制御する。
【0232】
ステップ2525:CPUは、検出反力Fqに基づいて取得された遊脚の先端反力Fdを反力情報として操作制御装置81bへ送信する。
ステップ2530:CPUは、目標ZMPを取得する。具体的には、CPUは、左脚71a及び右脚71bの脚先位置Pb及び脚先姿勢Qb並びにIMU33によって検出された胴体移動値M(Ax,Ay,Az,ωx,ωy,ωz)等に基づき、周知の方法によりロボット6のZMP(ゼロモーメントポイント)の目標位置を取得する。
【0233】
ステップ2535:CPUは、目標ZMPに基づいて接地脚の目標脚先位置Pv及び目標脚先姿勢Qvを取得する。具体的には、CPUは、遊脚の足部72fが胴体61に対して前方に移動したときに接地脚の足部72fが胴体61に対して後方に移動し且つ目標ZMPが支持多角形に上面視において含まれるように目標脚先位置Pv及び目標脚先姿勢Qvを取得する。この場合における支持多角形は、接地脚の足部72fの下面(接地面)である。
【0234】
ステップ2540:CPUは、ステップ2515と同様の処理を実行することにより接地脚の目標移動量ΔPv及び目標姿勢変化量ΔQvを取得する。
ステップ2545:CPUは、ステップ2520と同様の処理を実行することにより目標移動量ΔPv及び目標姿勢変化量ΔQvに基づいて接地脚を制御する。
ステップ2550:CPUは、接地脚の脚先位置Pb及び脚先姿勢Qbを補正位置情報として操作制御装置81bへ送信する。
【0235】
ステップ2505の判定条件が成立していなければ(即ち、遊脚及び接地脚が存在していなければ)、CPUは、ステップ2505にて「No」と判定してステップ2595に直接進む。
【0236】
(具体的作動-操作制御装置)
次に、操作制御装置81bの具体的作動について説明する。操作制御装置81bのCPU(以下、単に「CPU」とも称呼される。)は、
図16のルーチンに代わり、
図26にフローチャートにより示された「操作器制御処理ルーチン」を制御周期Δtが経過する毎に実行する。
【0237】
適当なタイミングとなると、CPUは、
図26のステップ2600から処理を開始してステップ2605に進み、操作器(即ち、左側操作器91a及び右側操作器91b)の一方の遊脚ボタン(のみ)がオン状態であり且つ他方の接地脚ボタン(のみ)がオン状態であるか否かを判定する。
【0238】
操作器の一方の遊脚ボタンがオン状態であり且つ他方の接地脚ボタンがオン状態であれば、CPUは、ステップ2605にて「Yes」と判定してステップ2610乃至ステップ2630の処理を順に実行する。次いで、CPUは、ステップ2695に進み、本ルーチンの処理を終了する。
【0239】
ステップ2610:CPUは、前回実行された本ルーチンの処理が終了してから現時点までの期間においてロボット制御装置31bから受信した反力情報に基づいて遊脚側の関節トルクTsを取得する。即ち、CPUは、反力情報に含まれる遊脚の先端反力Fdに基づき、
図16のステップ1630乃至ステップ1650と同様の処理を実行することにより遊脚ボタンがオン状態である操作器(遊脚操作器)の関節トルクTsを取得する。具体的には、CPUは、脚先位置Pb及び脚先姿勢Qbを変更するように遊脚に作用する先端反力Fd(6軸)に対応する、操作位置Pm及び操作姿勢Qmを変更するような力が遊脚操作器の把持部に発生するように関節トルクTsを取得する。
【0240】
ステップ2615:CPUは、関節トルクTsに基づいて遊脚側の操作器を制御する。具体的には、CPUは、
図16のステップ1655と同様の処理を実行することにより遊脚操作器のモータ86(モータ86a~モータ86f)を制御して関節トルクTsと等しいトルクを発生させる。
【0241】
ステップ2620:CPUは、ロボット制御装置31bから最後に受信した補正位置情報に基づいて接地脚側の補助トルクThを取得する。即ち、CPUは、
図19のステップ1910と同様の処理を実行することにより、接地脚ボタンがオン状態である操作器(接地脚操作器)の操作位置Pm及び操作姿勢Qmが、接地脚の脚先位置Pb及び脚先姿勢Qbに対応した値となるように補助トルクThを取得する。
【0242】
ステップ2625:CPUは、補助トルクThに基づいて接地脚側の操作器を制御する。具体的には、CPUは、ステップ2615と同様の処理を実行することにより接地脚操作器のモータ86(モータ86a~モータ86f)を制御して補助トルクThと等しいトルクを発生させる。
【0243】
ステップ2630:CPUは、(
図16のステップ1660と同様の処理を実行することにより)左側操作器91a及び右側操作器91bのそれぞれのボタン操作状態、操作位置Pm及び操作姿勢Qmを操作情報としてロボット制御装置31bへ送信する。
【0244】
ステップ2605の判定条件が成立していなければ(即ち、遊脚ボタン(のみ)がオン状態である操作器と、接地脚ボタン(のみ)がオン状態である操作器と、が存在していなければ)、CPUは、ステップ2605にて「No」と判定してステップ2630に直接進む。
【0245】
以上説明したように、第1実施形態によれば、操作脚である左前脚41及び右前脚44の脚先位置Psを、左側操作器83a及び右側操作器83bのリンク84f(把持部、操作器)を操作することによって直感的且つ容易に制御することができる。加えて、操作脚の先端に作用する先端反力Feに応じた操作反力Fmが左側操作器83a及び右側操作器83bの把持部(リンク84f)に発生するので、操作者は、操作脚の先端が接している地面及び地面以外の物体(例えば、障害物)の状態を認識することができる。
【0246】
更に、追従脚の接地位置が操作脚の接地位置に基づいて決定されるので、操作者は、操作脚のみの接地位置を決定することによりロボット2を歩行させることができる。加えて、操作者は、HMD82に表示された左右の前方画像によりロボット2(具体的には、胴体3)の前方領域の立体的形状を把握することができる。
【0247】
加えて、第2実施形態によれば、操作者が1つの操作器83cを操作することによってロボット2aを歩行させることができる。更に、操作器83cのリンク84fに発生する補助トルクTh(操作補助力)によって操作者による操作器83cに対する操作が補助される。
【0248】
加えて、第3実施形態によれば、6脚歩行ロボット(ロボット2及びロボット2a)とは異なる2脚歩行ロボット(ロボット6)を操作器(左側操作器91a及び右側操作器91bのリンク84f)に対する操作によって歩行させることができる。更に、操作者は、操作器に対する操作によって操作脚の先端(足部72f)の脚先位置Pb及び脚先姿勢Qb(φb,ψb,θb)を制御することができる。このとき、足部72fに作用する先端反力Fd(6軸)に応じて操作器に関節トルクTsが発生させられる。
【0249】
本発明の形態を上記の構造を参照しながら説明したが、本発明の目的を逸脱せずに多くの交代、改良、変更が可能であることは当業者であれば明らかである。従って本発明の形態は、添付された請求項の精神と目的を逸脱しない全ての交代、改良、変更を含み得る。例えば本発明の形態は、前記特別な構造に限定されず、下記のように変更が可能である。
【0250】
上記実施形態おけるロボット2は、6脚歩行ロボットであった。これに代えて、ロボット2は、左前脚41~右後脚46とは異なる脚を備えていても良い。即ち、ロボット2は、8脚歩行ロボット及び10脚歩行ロボット等であっても良い。同様に、ロボット2aは、4脚歩行ロボットであっても良い。例えば、ロボット2が8脚歩行ロボットであれば、左前脚及び右前脚が操作脚である一方、追従脚(即ち、最後脚である左後脚及び右後脚、及び、中間脚である(操作脚及び最後脚以外の)4つの脚)の目標接地位置が接地点追従法により取得され且つ最後脚及び中間脚の遊脚条件の成否が上述した方法により判定されても良い。
【0251】
操作装置8、8a、9の操作器(リンク84f)は、操作者の手によって操作されていた。これに代えて、操作器(即ち、操作者によって操作される被操作部材)は、操作者の足によって操作されるように構成されても良い。加えて、操作スイッチ(ボタン87a、87b)は、操作者の足によって操作されるペダルであっても良い。
【0252】
ロボット2、2aは、ロボット6と同様に、操作脚の脚先位置Pbに相当する脚先位置Psに加えて脚先姿勢Qbに相当する姿勢(傾き)が操作器の操作によって制御されても良い。加えて、操作脚の先端に作用する反力(6軸)に応じて操作器の操作位置Pm、及び操作姿勢Qmに相当する操作器の姿勢を変更するように関節トルクTsが取得されても良い。
【0253】
ロボット制御装置31は、操作脚が何れも接地脚モードにないとき、接地脚である追従脚のそれぞれの脚先を頂点とする支持多角形の重心が上面視において胴体重心Gbと一致するように目標重心位置Gtを取得していた。これに代えて、ロボット制御装置31は、胴体重心Gbとは異なる位置を支持多角形の重心の目標位置として用いても良い。支持多角形の重心の目標位置は、例えば、胴体重心Gbよりも胴体3に対して前方又は後方にある所定の位置であっても良い。
【0254】
ロボット制御装置31は、制御対象脚以外の接地脚の脚先のそれぞれを頂点とする支持多角形に胴体重心Gbが上面視において含まれていると、重心条件が成立していると判定していた。これに代えて、ロボット制御装置31は、胴体重心Gbが支持多角形に上面視において含まれ且つ胴体重心Gbが支持多角形を構成する辺(即ち、複数の線分)から所定の閾値以上離れている(即ち、支持多角形の内側にある)場合に重心条件が成立していると判定しても良い。
【0255】
一方、ロボット制御装置31bは、目標ZMPを、支持多角形(この場合、接地脚の足部72fの下面)に上面視において含まれるように取得していた。これに代えて、ロボット制御装置31bは、目標ZMPを、支持多角形に上面視において含まれ且つ支持多角形を構成する辺から所定の閾値以上離れているように取得しても良い。
【0256】
ロボット2の追従脚の脚先位置Psは、ロボット2の操作脚と同様にフィードバック処理(PD制御)によって制御されても良い。
【0257】
ロボット制御装置31、31a、31bによって実行されていた処理の一部は、操作制御装置81、81a、81bによって実行されても良い。同様に、操作制御装置81、81a、81bによって実行されていた処理の一部は、ロボット制御装置31、31a、31bによって実行されても良い。更に、ロボット制御装置31、31a、31bと、操作制御装置81、81a、81bと、によって実行されていた処理の一部は、ネットワークを介してデータ通信が可能となるように接続された他の制御装置(サーバ)によって実行されても良い。
【0258】
ロボット制御装置31、31a、31bと、操作制御装置81、81a、81bと、は共通の制御周期Δtに基づいて処理を実行していた。これに代えて、ロボット制御装置31、31a、31bと、操作制御装置81、81a、81bと、の制御周期は、互いに異なっていても良い。
【0259】
ロボット制御装置31は、操作反力Fm(xf,yf,zf)の大きさ|Fm|が反力閾値Fthよりも大きければ、操作反力Fmの大きさ|Fm|が反力閾値Fthと等しくなるように操作反力Fmを調整していた。これに代えて、ロボット制御装置31は、操作反力Fmのx軸、y軸及びz軸のそれぞれの成分の大きさ(即ち、|xf|、|yf|及び|zf|)の何れかが反力閾値Fthよりも大きければ、その成分の大きさが反力閾値Fthと等しくなるように操作反力Fmを調整しても良い。
【0260】
ロボット2の追従脚の目標接地位置として、前方隣接脚の接地位置の後方に隣接する位置が取得されていた。これに代えて、追従脚の目標接地位置として前方隣接脚の接地位置と同じ位置が取得されても良い。この場合、前方隣接脚が接地脚から遊脚に遷移した後、先端が接地するように追従脚が制御される。
【0261】
ロボット2、2aの先端反力センサとして電流センサ53が用いられていた。これに代えて、ロボット6と同様に、6軸力覚センサ(又は3軸力覚センサ)が先端反力センサとして用いられても良い。
【0262】
前方領域センサとしてステレオカメラ32、62が用いられていた。これに代えて、LiDAR(light detection and ranging)及びミリ波レーダー等のセンサ(立体物センサ)が前方領域センサとして用いられてもよい。この場合、HMD82に代わり、地面の立体的形状に関する情報(例えば、立体物センサによって検出された物標の位置及び大きさ)を表示する1つのディスプレイが用いられても良い。
【符号の説明】
【0263】
1、1a、1b…ロボット制御システム
2、2a…ロボット
3…胴体
3a1~3a3…胴体位置
6…ロボット
8、8a、9…操作装置
31、31a、31b…ロボット制御装置(コントローラ、ロボットコントローラ)
32…ステレオカメラ(前方領域センサ)
34(34a、34b)…無線通信装置
41…左前脚(操作脚)
41a~41c…リンク
41d…基部
42…左中脚(追従脚、左側追従脚)
42a~42c…リンク
43…左後脚(追従脚、左側追従脚)
43a~43c…リンク
44…右前脚(操作脚)
44a~44c…リンク
45…右中脚(追従脚、右側追従脚)
45a~45c…リンク
46…右後脚(追従脚、右側追従脚)
46a~46c…リンク
51(51a~51t)…モータ(脚アクチュエータ)
52(52a~52t)…角度センサ(脚位置センサ)
53(53a~53c、53j~53m)…電流センサ(先端反力センサ)
61…胴体
62…ステレオカメラ(前方領域センサ)
62a…左側カメラ
62b…右側カメラ
71a…左脚(操作脚)
71b…右脚(操作脚)
72a~72d…リンク
72e…基部
72f…足部
73(73a~73f)…モータ(脚アクチュエータ)
74(74a~74f)…角度センサ(脚位置センサ)
75…力覚センサ(先端反力センサ)
81、81a、81b…操作制御装置(コントローラ、操作装置コントローラ)
82…HMD(ディスプレイ)
82a…左側ディスプレイ
82b…右側ディスプレイ
83a…左側操作器
83b…右側操作器
83c…操作器
84a~84f…リンク
84g…基部
85(85a~85f)…角度センサ(操作位置センサ)
86(86a~86f)…モータ(操作器アクチュエータ)
87a、87b…ボタン(操作スイッチ)
91a…左側操作器
91b…右側操作器