(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-09
(45)【発行日】2024-01-17
(54)【発明の名称】打ち方決定装置、打ち方決定方法、打ち方決定プログラム、及び返球ロボット
(51)【国際特許分類】
A63B 69/00 20060101AFI20240110BHJP
A63B 69/38 20060101ALI20240110BHJP
【FI】
A63B69/00 506
A63B69/00 505Z
A63B69/38 Z
(21)【出願番号】P 2020044282
(22)【出願日】2020-03-13
【審査請求日】2023-01-11
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】劉 暁俊
(72)【発明者】
【氏名】浅井 恭平
(72)【発明者】
【氏名】中山 雅宗
(72)【発明者】
【氏名】八瀬 哲志
【審査官】井上 香緒梨
(56)【参考文献】
【文献】特開2012-071358(JP,A)
【文献】特開2005-278797(JP,A)
【文献】特開2001-178960(JP,A)
【文献】特開平11-244443(JP,A)
【文献】Akira Nakashima,外2名,An Online Trajectory Planning of Struck Ball with Spin by Table Tennis Robot,2014 IEEE/ASME International Conference on Advanced Intelligent Mechatronics (AIM) Besancon,2014年,P.865-870
【文献】Yifeng Zhu,外4名,Towards High Level Skill Learning: Learn to Return Table Tennis Ball Using Monte-Carlo Based Policy Gradient Method,Proceedings of The 2018 IEEE International Conference on Real-time Computing and Robotics,2018年,p.44-51
(58)【調査した分野】(Int.Cl.,DB名)
A63B69/00-69/40
(57)【特許請求の範囲】
【請求項1】
飛来するボールの位置、速度、及び回転速度を含む状態情報を取得する取得部と、
前記ボールの状態情報と、前記ボールを打撃具で打ち返す際の目標到達位置と、に基づいて、前記ボールを前記目標到達位置に打ち返す時点の前記打撃具の位置、速度、及び姿勢を含む打ち方条件を決定する打ち方条件決定部と、
を備え、
前記打ち方条件決定部は、
前記ボールの状態情報に基づいて、飛来する前記ボールの予測軌跡に関する軌跡情報を算出する軌跡予測部と、
前記軌跡情報を用いて前記ボールの打撃位置を設定し、打撃された直後の前記ボールの打撃後速度及び打撃後回転速度を含む打撃後状態情報を設定する設定部と、
前記打撃後状態情報に基づいて予測到達位置を算出する到達位置予測部と、
前記予測到達位置と前記目標到達位置との誤差が許容範囲内となるように、前記打撃後速度を調整する調整部と、
打撃直前の前記状態情報に従う前記ボールを前記打撃位置で打撃した場合に前記ボールが前記打撃後状態情報に従うようになるための、前記打撃具の速度及び姿勢を算出する打ち方条件算出部と、
を含む
打ち方決定装置。
【請求項2】
前記設定部は、さらに前記ボールが打撃されてから前記目標到達位置に到達するまでの時間である目標到達時間又は前記目標到達位置に到達する直前の前記ボールの速度である目標到達速度を設定し、前記調整部により調整される前の前記打撃後速度の初期値を前記目標到達時間又は前記目標到達速度に基づいて設定する、
請求項
1記載の打ち方決定装置。
【請求項3】
前記設定部は、前記打撃具を備える返球ロボットに対して打撃動作の限界速度を超える動作速度を要求しない範囲で、前記目標到達時間又は前記目標到達速度を設定する
請求項
2記載の打ち方決定装置。
【請求項4】
前記調整部は、前記誤差が最小となるように、探索アルゴリズムを用いて前記打撃後速度を調整する
請求項
1~
3の何れか1項に記載の打ち方決定装置。
【請求項5】
前記設定部は、複数の前記打撃後速度を設定し、
前記到達位置予測部は、前記複数の打撃後速度に対応する複数の前記予測到達位置を算出し、
前記調整部は、前記複数の打撃後速度の中から対応する前記誤差が許容範囲内である1つの前記打撃後速度を選択することにより前記打撃後速度を調整する
請求項
1~
3の何れか1項に記載の打ち方決定装置。
【請求項6】
前記取得部は、さらに前記ボールが実際に到達した実到達位置を取得し、
前記調整部は、前記実到達位置と前記予測到達位置との誤差に基づいて、次回以降の打撃において、調整された前記打撃後速度を補正する
請求項
1~
5の何れか1項に記載の打ち方決定装置。
【請求項7】
前記取得部は、さらに前記ボールが実際に到達した実到達位置を取得し、
前記打ち方条件算出部は、前記実到達位置と前記予測到達位置との誤差に基づいて、次回以降の打撃において、算出された前記打ち方条件を補正する
請求項
1~
5の何れか1項に記載の打ち方決定装置。
【請求項8】
コンピュータが、
飛来するボールの位置、速度、及び回転速度を含む状態情報を取得し、
前記ボールの状態情報と、前記ボールを打撃具で打ち返す際の目標到達位置と、に基づいて、前記ボールを打ち返す時点の前記打撃具の位置、速度、及び姿勢を含む打ち方条件を決定する
処理を実行する打ち方決定方法であり、
前記打ち方条件の決定は、
前記ボールの状態情報に基づいて、飛来する前記ボールの予測軌跡に関する軌跡情報を算出し、
前記軌跡情報を用いて前記ボールの打撃位置を設定し、打撃された直後の前記ボールの打撃後速度及び打撃後回転速度を含む打撃後状態情報を設定し、
前記打撃後状態情報に基づいて予測到達位置を算出し、
前記予測到達位置と前記目標到達位置との誤差が許容範囲内となるように、前記打撃後速度を調整し、
打撃直前の前記状態情報に従う前記ボールを前記打撃位置で打撃した場合に前記ボールが前記打撃後状態情報に従うようになるための、前記打撃具の速度及び姿勢を算出することを含む
打ち方決定方法。
【請求項9】
コンピュータに、
飛来するボールの位置、速度、及び回転速度を含む状態情報を取得し、
前記ボールの状態情報と、前記ボールを打撃具で打ち返す際の目標到達位置と、に基づいて、前記ボールを打ち返す時点の前記打撃具の位置、速度、及び姿勢を含む打ち方条件を決定する
処理を実行させるための打ち方決定プログラムであり、
前記打ち方条件の決定は、
前記ボールの状態情報に基づいて、飛来する前記ボールの予測軌跡に関する軌跡情報を算出し、
前記軌跡情報を用いて前記ボールの打撃位置を設定し、打撃された直後の前記ボールの打撃後速度及び打撃後回転速度を含む打撃後状態情報を設定し、
前記打撃後状態情報に基づいて予測到達位置を算出し、
前記予測到達位置と前記目標到達位置との誤差が許容範囲内となるように、前記打撃後速度を調整し、
打撃直前の前記状態情報に従う前記ボールを前記打撃位置で打撃した場合に前記ボールが前記打撃後状態情報に従うようになるための、前記打撃具の速度及び姿勢を算出することを含む
打ち方決定プログラム。
【請求項10】
請求項1~
7の何れか1項に記載の打ち方決定装置と、
飛来するボールを打ち返す打撃具と、
前記打撃具を支持して運動させるための可動部と、
前記打ち方決定装置により決定された打ち方条件で前記ボールを打ち返すよう前記可動部の運動を制御する制御装置と、
を備えた返球ロボット。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、打ち方決定装置、打ち方決定方法、打ち方決定プログラム、及び返球ロボットに関する。
【背景技術】
【0002】
非特許文献1には、飛来するボールを返球する卓球ロボットの打ち方を決定する際に、処理負荷を減らす対策として、回転速度を入力としない簡易的な空力モデルを使用する方法が記載されている。
【先行技術文献】
【非特許文献】
【0003】
【文献】Chunfang LIU、「Racket Control and Spinning Ball Measurement for Table Tennis Robot」、2013年3月、名古屋大学、インターネット<URL:https://nagoya.repo.nii.ac.jp/?action=repository_action_common_download&item_id=16278&item_no=1&attribute_id=17&file_no=1>
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記非特許文献1記載の技術では、回転速度が考慮されないため、回転の掛かったボールに対して卓球ロボットが返球する際の打撃前及び打撃後のボールの軌跡を精度良く予測するのが困難であった。このため、目標到達位置に精度良く返球することが可能な打ち方を決定するのが困難であった。
【0005】
本発明は、上記の点に鑑みてなされたものであり、回転が掛かったボールを目標到達位置に精度良く返球することが可能な打ち方を決定することができる打ち方決定装置、打ち方決定方法、打ち方決定プログラム、返球装置、及び返球ロボットを提供することを目的とする。
【課題を解決するための手段】
【0006】
開示の第1態様は、打ち方決定装置であって、飛来するボールの位置、速度、及び回転速度を含む状態情報を取得する取得部と、前記ボールの状態情報と、前記ボールを打撃具で打ち返す際の目標到達位置と、に基づいて、前記ボールを前記目標到達位置に打ち返す時点の前記打撃具の位置、速度、及び姿勢を含む打ち方条件を決定する打ち方条件決定部と、を備える。
【0007】
上記第1態様において、前記打ち方条件決定部は、前記ボールの状態情報に基づいて、飛来する前記ボールの予測軌跡に関する軌跡情報を算出する軌跡予測部と、前記軌跡情報を用いて前記ボールの打撃位置を設定し、打撃された直後の前記ボールの打撃後速度及び打撃後回転速度を含む打撃後状態情報を設定する設定部と、前記打撃後状態情報に基づいて予測到達位置を算出する到達位置予測部と、前記予測到達位置と前記目標到達位置との誤差が許容範囲内となるように、前記打撃後速度を調整する調整部と、打撃直前の前記状態情報に従う前記ボールを前記打撃位置で打撃した場合に前記ボールが前記打撃後状態情報に従うようになるための、前記打撃具の速度及び姿勢を算出する打ち方条件算出部と、を含む構成としてもよい。
【0008】
上記第1態様において、前記設定部は、さらに前記ボールが打撃されてから前記目標到達位置に到達するまでの時間である目標到達時間又は前記目標到達位置に到達する直前の前記ボールの速度である目標到達速度を設定し、前記調整部により調整される前の前記打撃後速度の初期値を前記目標到達時間又は前記目標到達速度に基づいて設定するようにしてもよい。
【0009】
上記第1態様において、前記設定部は、前記打撃具を備える返球ロボットに対して打撃動作の限界速度を超える動作速度を要求しない範囲で、前記目標到達時間又は前記目標到達速度を設定するようにしてもよい。
【0010】
上記第1態様において、前記調整部は、前記誤差が最小となるように、探索アルゴリズムを用いて前記打撃後速度を調整するようにしてもよい。
【0011】
上記第1態様において、前記設定部は、複数の前記打撃後速度を設定し、前記到達位置予測部は、前記複数の打撃後速度に対応する複数の前記予測到達位置を算出し、前記調整部は、前記複数の打撃後速度の中から対応する前記誤差が許容範囲内である1つの前記打撃後速度を選択することにより前記打撃後速度を調整するようにしてもよい。
【0012】
上記第1態様において、前記取得部は、さらに前記ボールが実際に到達した実到達位置を取得し、前記調整部は、前記実到達位置と前記予測到達位置との誤差に基づいて、調整された前記打撃後速度を補正するようにしてもよい。
【0013】
上記第1態様において、前記取得部は、さらに前記ボールが実際に到達した実到達位置を取得し、前記打ち方条件算出部は、前記実到達位置と前記目標到達位置との誤差に基づいて、次回以降の打撃において、算出された前記打ち方条件を補正するようにしてもよい。
【0014】
上記第1態様において、前記打ち方条件決定部は、前記状態情報及び前記目標到達位置を入力とし、前記打ち方条件を出力として学習された学習済みモデルである構成としてもよい。
【0015】
開示の第2態様は、打ち方決定方法であって、コンピュータが、飛来するボールの位置、速度、及び回転速度を含む状態情報を取得し、前記ボールの状態情報と、前記ボールを打撃具で打ち返す際の目標到達位置と、に基づいて、前記ボールを打ち返す時点の前記打撃具の位置、速度、及び姿勢を含む打ち方条件を決定する処理を実行する。
【0016】
開示の第3態様は、打ち方決定プログラムであって、コンピュータに、飛来するボールの位置、速度、及び回転速度を含む状態情報を取得し、前記ボールの状態情報と、前記ボールを打撃具で打ち返す際の目標到達位置と、に基づいて、前記ボールを打ち返す時点の前記打撃具の位置、速度、及び姿勢を含む打ち方条件を決定する処理を実行させる。
【0017】
開示の第4態様は、返球ロボットであって、第1態様に係る打ち方決定装置と、飛来するボールを打ち返す打撃具と、前記打撃具を支持して運動させるための可動部と、前記打ち方決定装置により決定された打ち方条件で前記ボールを打ち返すよう前記可動部の運動を制御する制御装置と、を備える。
【発明の効果】
【0018】
本発明によれば、回転が掛かったボールを目標到達位置に精度良く返球することが可能な打ち方を決定することができる。
【図面の簡単な説明】
【0019】
【
図3】打ち方決定装置のハードウェア構成を示すブロック図である。
【
図4】打ち方決定処理の流れを示すフローチャートである。
【
図5】ボールの検出位置及び予測位置の一例を示す図である。
【
図6】ボールに作用するDrag力、Magnus力等について説明するための図である。
【
図7】ボールが卓球台にバウンドする直前及びバウンドした直後の速度及び加速度について説明するための図である。
【
図8】ラケットの速度及び角度について説明するための図である。
【発明を実施するための形態】
【0020】
以下、本発明の実施形態の一例を、図面を参照しつつ説明する。なお、各図面において同一又は等価な構成要素及び部分には同一の参照符号を付与している。また、図面の寸法比率は、説明の都合上誇張されている場合があり、実際の比率とは異なる場合がある。
【0021】
図1は、返球ロボット10の外観図を示した。また、
図2には、返球ロボット10のブロック図を示した。返球ロボット10は、飛来するボールを打撃具で打ち返すロボットである。本実施形態では、返球ロボット10が、卓球ロボットである場合について説明する。すなわち、返球ロボット10は、図示しないユーザーが打った卓球のボールBLが卓球台TBでバウンドして飛来するボールBLを、打撃具としてのラケットRKで打ち返す卓球ロボットである。
【0022】
図1、2に示すように、返球ロボット10は、センサ部20、打ち方決定装置30、ロボット40、及び制御装置50を備えている。
【0023】
センサ部20は、飛来するボールBLの位置、速度、及び回転速度を含む状態情報を検出する。本実施形態では、センサ部20は、
図1、2に示すように、3個のカメラ22A、22B、22Cと、状態情報算出部24と、を含む。なお、本実施形態では、回転速度が一例として角速度(rad/s)である場合について説明する。
【0024】
カメラ22A、22Bは、卓球台TB上を行き来するボールBLを各々異なる角度から撮影可能な位置に設置されており、予め定めたフレームレートで撮影する。カメラ22A、22Bは、所謂ステレオカメラとして機能する。
【0025】
カメラ22Cは、図示しないユーザーが持つラケットを撮影可能な位置に設置されている。
【0026】
状態情報算出部24は、カメラ22A、22Bで撮影されたボールBLの撮影画像に基づいてボールBLの位置及び速度を算出する。すなわち、状態情報算出部24は、異なる角度から撮影された2つの撮影画像の各々に対して、例えば特徴抽出処理等の公知の画像処理を行うことによりボールBLの二次元位置を撮影画像毎に検出する。そして、2つの撮影画像におけるボールBLの二次元位置に基づいて、所謂ステレオ法によりボールBLの三次元位置を算出する。また、状態情報算出部24は、最新のボールBLの三次元位置と、過去に算出したボールBLの三次元位置と、に基づいて、ボールBLの移動距離及び移動時間を算出し、算出した移動距離及び移動時間に基づいてボールBLの速度を算出する。ここで、ボールBLの速度はベクトル量であり、互いに直交するX軸、Y軸、及びZ軸の各軸方向の成分を有する。
【0027】
また、状態情報算出部24は、ボールBLの位置及び速度に基づいてボールBLのベクトル量である回転速度(本実施形態では角速度)を算出する。
【0028】
状態情報算出部24は、例えば、ボールBLの撮影画像に基づいてボールBLの特徴部分を抽出し、抽出した特徴部分の移動速度を算出し、算出した移動速度に基づいてボールBLの回転速度を算出する。抽出する特徴部分は、ボールBLの一部に予め印刷されているマークでもよいし、特徴部分の抽出用としてボールBLに新たに付与したマークでもよい。
【0029】
なお、ボールBLの回転速度が0(無回転)と仮定して、後述するボールBLの軌跡予測処理により予測されたボールBLの軌跡と、実際に検出したボールBLの軌跡と、の差分を算出し、算出した差分に基づいてボールBLの回転速度を予測してもよい。
【0030】
打ち方決定装置30は、機能的には、
図2に示すように、取得部31及び打ち方決定部32を含む。
【0031】
取得部31は、センサ部20から、飛来するボールBLの位置、速度、及び回転速度を含む状態情報を取得する。
【0032】
打ち方決定部32は、取得部31が取得したボールBLの状態情報と、ボールBLをラケットRKで打ち返す際の目標到達位置と、に基づいて、ボールBLを目標到達位置に打ち返す時点のラケットRKの位置、速度、及び姿勢を含む打ち方条件を決定する。
【0033】
打ち方決定部32は、
図2に示すように、具体的には、軌跡予測部33、設定部34、到達位置予測部35、調整部36、及び打ち方条件算出部37を含む。
【0034】
軌跡予測部33は、ボールBLの状態情報に基づいて、ボールBLの予測軌跡に関する軌跡情報を算出する。
【0035】
設定部34は、軌跡予測部33で算出されたボールBLの軌跡情報を用いてボールBLの打撃位置を設定し、打撃された直後のボールBLの打撃後速度及び打撃後回転速度を含む打撃後状態情報を設定する。
【0036】
到達位置予測部35は、設定部34で設定された打撃後状態情報に基づいて予測到達位置を算出する。
【0037】
調整部36は、到達位置予測部35で算出された予測到達位置と目標到達位置との誤差が許容範囲内となるように、設定部34で設定された打撃後速度を調整する。なお、調整部36は、到達位置予測部35で算出された予測到達位置と目標到達位置との誤差が最小となるように、探索アルゴリズムを用いて打撃後速度を調整してもよい。探索アルゴリズムとしては、一例として最急降下法、最小二乗法、山登り法、及び極値近傍探索法が挙げられるが、これらに限られるものではない。
【0038】
打ち方条件算出部37は、打撃直前の状態情報にしたがうボールBLを設定された打撃位置で打撃した場合にボールBLが設定された打撃後状態情報にしたがうようになるための、ラケットRKの速度および姿勢を算出する。打撃直前の状態情報は、取得部31によって取得された状態情報に基づいて、軌跡予測部33によって算出された打撃直前のボールBLの位置、速度、及び回転速度であってよい。
【0039】
また、設定部34は、さらにボールBLが打撃されてから目標到達位置に到達するまでの時間である目標到達時間又は目標到達位置に到達する直前のボールBLの速度である目標到達速度を設定し、調整部36により調整される前の打撃後速度の初期値を目標到達時間又は目標到達速度に基づいて設定するようにしてもよい。
【0040】
また、設定部34は、複数の打撃後速度を設定し、到達位置予測部35は、複数の打撃後速度に対応する複数の予測到達位置を算出し、調整部36は、複数の打撃後速度の中から対応する誤差が許容範囲内である1つの打撃後速度を選択することにより打撃後速度を調整するようにしてもよい。また、設定部34は、ラケットRKを備える返球ロボット10に対して打撃動作の限界速度を超える動作速度を要求しない範囲内で、目標到達時間又は目標到達速度を設定してもよい。
【0041】
また、取得部31は、さらにボールBLが実際に到達した実到達位置を取得し、調整部36は、実到達位置と予測到達位置との誤差に基づいて、次回以降の打撃において、調整された打撃後速度を補正するようにしてもよい。
【0042】
また、取得部31は、さらにボールBLが実際に到達した到達位置を取得し、打ち方条件算出部37は、実到達位置と予測到達位置との誤差に基づいて、次回以降の打撃において、算出された打ち方条件を補正するようにしてもよい。
【0043】
ロボット40は、ラケットRKを支持して運動させるための可動部41を備える。
図1に示すように、可動部41は、本実施形態では一例として3本のロボットアーム41A、41B、41C、及びラケットRKの支持部42を含む。すなわち、ロボット40は、所謂パラレルリンクロボットであり、ロボットアーム41A、41B、41Cを並列に制御することにより、ロボットアーム41A、41B、41Cの先端の支持部42に支持されたラケットRKの挙動を制御するロボットである。支持部42は、ラケットRKの姿勢を変更するための駆動機構を備えている。なお、ロボット40は、パラレルリンクロボットに限られるものではなく、他のタイプのロボットであってもよい。
【0044】
制御装置50は、打ち方決定装置30により決定された打ち方条件でボールBLを打ち返すよう可動部41の運動を制御する。
【0045】
次に、打ち方決定装置30のハードウェア構成を示すブロック図である。
【0046】
図3に示すように、打ち方決定装置30は、CPU(Central Processing Unit)30A、ROM(Read Only Memory)30B、RAM(Random Access Memory)30C、ストレージ30D、入力部30E、モニタ30F、光ディスク駆動装置30G及び通信インタフェース30Hを有する。各構成は、バス30Iを介して相互に通信可能に接続されている。
【0047】
本実施形態では、ROM30B又はストレージ30Dには、打ち方決定プログラムが格納されている。CPU30Aは、中央演算処理ユニットであり、各種プログラムを実行したり、各構成を制御したりする。すなわち、CPU30Aは、ROM30B又はストレージ30Dからプログラムを読み出し、RAM30Cを作業領域としてプログラムを実行する。CPU30Aは、ROM30B又はストレージ30Dに記録されているプログラムに従って、上記各構成の制御及び各種の演算処理を行う。
【0048】
ROM30Bは、各種プログラム及び各種データを格納する。RAM30Cは、作業領域として一時的にプログラム又はデータを記憶する。ストレージ30Dは、HDD(Hard Disk Drive)又はSSD(Solid State Drive)により構成され、オペレーティングシステムを含む各種プログラム、及び各種データを格納する。
【0049】
入力部30Eは、キーボード30E1、及びマウス30E2等のポインティングデバイスを含み、各種の入力を行うために使用される。モニタ30Fは、例えば、液晶ディスプレイであり、ワークWの吸着の成否等の各種の情報を表示する。モニタ30Fは、タッチパネル方式を採用して、入力部30Eとして機能してもよい。光ディスク駆動装置30Gは、各種の記録媒体(CD-ROM又はブルーレイディスクなど)に記憶されたデータの読み込みや、記録媒体に対するデータの書き込み等を行う。
【0050】
通信インタフェース30Hは、他の機器と通信するためのインタフェースであり、例えば、イーサネット(登録商標)、FDDI又はWi-Fi(登録商標)等の規格が用いられる。
【0051】
図2に示した打ち方決定装置30の各機能構成は、CPU30AがROM30B又はストレージ30Dに記憶された打ち方決定プログラムを読み出し、RAM30Cに展開して実行することにより実現される。
【0052】
次に、打ち方決定装置30の作用について説明する。
【0053】
図4は、打ち方決定装置30による打ち方決定処理の流れを示すフローチャートである。ユーザーが入力部30Eを操作して打ち方決定処理の実行を指示すると、CPU30AがROM30B又はストレージ30Dから打ち方決定プログラムを読み出して、RAM30Cに展開し実行することにより、打ち方決定処理が実行される。
図4に示す打ち方決定処理は、処理の終了が指示されるまで繰り返し実行される。
【0054】
なお、
図4に示す打ち方決定処理が実行されると、センサ部20では、カメラ22A、22Bによる撮影を開始し、状態情報算出部24で算出したボールBLの状態情報を打ち方決定装置30に時系列で順次出力する。
【0055】
ステップS100では、CPU30Aが、取得部31として、飛来するボールBLの位置、速度、及び回転速度を含む状態情報をセンサ部20から時系列で順次取得する。
【0056】
ステップS102では、CPU30Aが、軌跡予測部33として、ステップS100で取得したボールBLの状態情報に基づいて、ボールBLが卓球台TBでバウンドするまでの予測軌跡に関する軌跡情報を予測する。ここで、予測軌跡に関する軌跡情報とは、現在まで時系列で検出された状態情報から予測されるボールBLの位置、速度、及び回転速度を時系列で表した情報である。
図5には、センサ部20で検出されたボールBLの検出位置及び軌跡予測部33で予測されたボールBLの予測位置の一例を示した。
図5に示すように、本実施形態では、卓球台TBのZ座標は0とされている。このため、ボールBLが卓球台TBでバウンドするか否かは、ボールBLのX座標及びY座標が卓球台TBのX座標及びY座標の範囲内で、且つ、Z座標が0となるか否かで判定することができる。
【0057】
ボールBLの予測軌跡の軌跡情報は、具体的には、エアロダイナミックスを表す次式にステップS100で取得したボールBLの位置、速度及び回転速度を入力し、時間発展させることにより得られる。
【0058】
【0059】
ここで、p(t)はボールBLの位置である。また、p・(t)はp(t)を1回微分した速度である。また、p・・(t)はp(t)を2回微分した加速度である。また、ωは、ボールBLの回転速度である。また、gは重力加速度であり、9.8m/s2である。また、SbはボールBLの断面積であり、ボールBLの半径をrとしてπr2である。また、VbはボールBLの体積であり、(4/3)×πr3である。また、mはボールBLの質量であり、一例として2.7×10-3kgである。また、ρは空気密度であり、一例として1.184kg/m3(25℃)である。また、CD(t)はDrag係数であり、一例として0.5である、CM(t)はMagnus係数であり、一例として0.2である。
【0060】
図6には、Drag力、Magnus力、速度p(t)、及びボールBLの回転軸の関係を示した。
【0061】
ステップS104では、CPU30Aが、軌跡予測部33として、ステップ102で予測したボールBLの予測軌跡の軌跡情報に基づいて、ボールBLが卓球台TBでバウンドした直後の速度及び回転速度を予測する。具体的には、
図7に示すように、ボールBLが卓球台TBでバウンドする直前の速度v
0、回転速度ω
0を次式で表されるテーブルバウンドモデルに入力して、ボールBLが卓球台TBでバウンドした直後の速度v
1及び回転速度ω
1を算出する。
【0062】
【0063】
ただし、A
vv、A
vω、A
ωv、A
ωωは次式で表される。
・・・(3)
・・・(4)
・・・(5)
・・・(6)
【0064】
ここで、αは卓球台TBとボールBLとの摩擦係数に依存するパラメータであり、予め設定される。また、ηは、卓球台TBとボールBLとの反発係数であり、予め設定される。
【0065】
また、次式で示すテーブルバウンドモデルを用いても良い。
・・・(7)
・・・(8)
【0066】
ここで、βは、ボールBLが卓球台TBでバウンドする直前のボールBLと卓球台TBとが成す角度である。なお、上記で説明した以外のテーブルバウンドモデルを用いても良い。
【0067】
ステップS106では、CPU30Aが、軌跡予測部33として、ボールBLが卓球台TBにバウンドした後の予測軌跡の軌跡情報を算出する。すなわち、ステップS104で算出した、卓球台TBでバウンドした直後のボールBLの速度v1及び回転速度ω1を、エアロダイナミクスを表す上記(1)式に入力して時間発展させることにより、卓球台TBでバウンドした後のボールBLの予測軌跡の軌跡情報を算出する。
【0068】
ステップS108では、CPU30Aが、設定部34として、ステップS102、S106で取得したボールBLの予測軌跡の軌跡情報に基づいて、ボールBLを打ち返す時点のラケットRKの位置(打撃位置)を設定する。具体的には、ボールBLが卓球台TBでバウンドした後の軌跡上で、ボールBLの高さが最高となる位置、ラケットRKでボールBLを返球可能な高さの範囲のうち最低となる位置、ボールBLのZ軸方向(高さ方向)の速度が最も遅い位置、及びロボット40の可動域内で返球精度が一定値以上となる位置、の何れかを、ボールBLを目標到達位置に打ち返す際の打撃位置とする。なお、ロボット40の可動域内で返球精度が一定値以上となる位置は、例えば予め実験等によってロボット40の可動域内で返球精度が一定値以上となる範囲を求めておき、この範囲内から設定される。
【0069】
ステップS110では、CPU30Aが、設定部34として、ラケットRKでボールBLを返球する際の目標到達位置、ラケットRKがボールBLを打撃してから目標到達位置に到達するまでの目標到達時間を設定する。目標到達時間に代えて目標到達位置におけるボールBLの目標到達速度を設定してもよい。
【0070】
目標到達位置は、ボールBLが卓球台TB上に着弾する着弾位置でもよいし、卓球台TBのネット上方のような卓球台TBの上空の位置でもよい。目標到達位置を上空の位置とする場合、ボールBLが卓球台TB上に着弾するように、ネット上方の限られた範囲内で設定するようにしてもよい。
【0071】
目標到達位置は、例えば予め設定されていてもよいし、ユーザーに予め指定させてもよい。また、目標到達位置は、ピンポイントで指定してもよいし、範囲で指定してもよい。範囲で指定する場合は、例えばユーザー側の卓球台TBの表面又は卓球台TBのネット上方のXZ平面の空間をm×n個の領域に分割して領域毎に付与された番号を指定してもよい。目標到達位置を範囲で指定した場合、計算上は例えば指定された範囲の中心位置が目標到達位置として指定されたとみなしてもよい。また、目標到達位置は、固定でもよいし、ラリー毎にランダムに変化させてもよい。
【0072】
目標到達時間又は目標到達速度は、例えばステップS108で設定した打撃位置と目標到達位置との距離に基づいて予め定めた関係式又はテーブルデータを用いて求めてもよいし、ユーザーに予め指定させてもよい。
【0073】
ステップS112では、CPU30Aが、設定部34として、ボールBLをステップS108で設定した打撃位置で打ち返す時点、すなわち打撃直後のボールBLの速度を設定する。設定した速度は打撃後速度を探索する際の初期値とされる。
【0074】
設定する打撃後速度の初期値は、ステップS110で設定した目標到達時間又は目標到達速度から算出してもよい。具体的には、シンプルエアロダイナミックスを表す次式にボールBLの打撃位置の座標値p1(px1、py1、pz1)、目標到達位置の座標値p1(px1、py1、pz1)、ボールBLの打撃位置p1における時刻t1、ボールBLの目標到達位置p2における時刻t2を入力することにより、ラケットRKがボールBLを打撃した直後の速度v1(vx1、vy1、vz1)を算出する。なお、時刻t2は、時刻t1に目標到達時間を加算することで得られる。
【0075】
【0076】
ここで、DはDrag力に関する項であり、次式で表される。また、sgn()は符号関数である。
・・・(10)
ここで、S
b、m、ρ、C
D(t)の以下のように表される。
【0077】
ステップS114では、CPU30Aが、到達位置予測部35として、ボールBLをステップS108で決定した打撃位置で、ステップS112で設定した打撃後速度で打ち返した場合におけるボールBLの予測到達位置を算出する。
【0078】
具体的には、前述したエアロダイナミックスを表す上記(1)式にステップS112で設定したボールBLの打撃後速度及び打撃後回転速度を入力し、時間発展させることにより、ボールBLの軌跡情報を予測する。なお、上記(1)式に入力するボールBLの打撃後回転速度は、例えばボールBLがラケットRKで打撃される直前の回転速度を基準として一定の範囲内の値に設定される。次に、予測した軌跡情報に基づいて、ボールBLの予測到達位置を特定する。
【0079】
ステップS116では、CPU30Aが、調整部36として、ステップS114で予測した予測到達位置と目標到達位置との誤差が予め定めた許容範囲内か否かを判定する。すなわち、ステップS114で算出した予測到達位置と目標到達位置との誤差が予め定めた閾値以下であるか否かを判定する。なお、目標到達位置が範囲で指定されている場合は、予測到達位置が目標到達位置の範囲内であるときに誤差が許容範囲内であると判定してもよい。
【0080】
そして、予測到達位置が許容範囲外の場合はステップS118へ移行し、予測到達位置が許容範囲内の場合はステップS120へ移行する。
【0081】
ステップS118では、CPU30Aが、調整部36として、予測到達位置が目標到達位置に近づくように、ラケットRKに打撃された直後のボールBLの速度v1を調整し、ステップS114に戻る。ステップS114、ステップS116、ステップS118からなるループにおいて行われる打撃後速度v1の探索には、例えば、最急降下法、最小二乗法、山登り法、及び極値近傍探索法の何れかの探索アルゴリズムを用いることができる。
【0082】
例えば、目標到達位置をpA、到達位置をpBとして評価関数E(v)を次式のように定義し、E(v)が最小となる速度vを求める。
【0083】
E(v)=|pA-pB| ・・・(11)
【0084】
ただし、E(v)は非線形且つ代数的微分不可のため、例えば次式で表される最急降下法を数値的に解くことにより、E(v)が最小となる速度vを求める。
【0085】
【0086】
・・・(14)
・・・(15)
・・・(16)
・・・(17)
【0087】
ここで、ρ(n)は学習率であり、次式で表される。
・・・(18)
・・・(19)
【0088】
ただし、例えばaはn=10でρ=0.5となるように設定する。
【0089】
ステップS120では、CPU30Aが、打ち方条件算出部37として、ボールBLを打ち返す時点のラケットRKの速度及び姿勢を算出することにより打ち方条件を決定する。
【0090】
具体的には、ラケットバウンドモデルを表す下記(18)式に、ボールBLの軌跡情報に基づいて、ラケットRKがボールBLを打撃する直前のボールBLの速度v0及び回転速度ω0と、ラケットRKがボールBLを打撃した直後のボールBLの速度v1及び回転速度ω1と、を入力することにより、ラケットRKの速度Vを算出する。また、下記(21)、(22)式により、ラケットRKの姿勢を表す角度α、βを算出する。
【0091】
図8には、ラケットRKがボールBLを打撃する直前及びボールBLを打撃した直後の様子の一例を示した。
図8に示すように、角度αは、ラケットRKの面をz’軸-y’軸平面とした場合に、z’軸を回転軸としたラケットRKの回転角であり、角度βは、y’軸を回転軸とした回転角である。
【0092】
【0093】
ここで、R
Rは角度α、βに関する回転行列であり、次式で表される。
・・・(23)
【0094】
また、Iは単位行列であり、次式で表される。
・・・(24)
【0095】
また、ξ、η、a、b、cは中間変数であり、次式で表される。
・・・(25)
・・・(26)
・・・(27)
・・・(28)
・・・(29)
ここで、kωは回転に対する摩擦係数であり、kvは速度に対する摩擦係数である。
【0096】
ステップS122では、ステップS120で決定したラケットRKの速度V、ラケットRKの角度α、βを制御装置50に出力する。制御装置50は、ラケットRKが速度V、角度α、βでボールBLを打ち返すように可動部41を制御する。これにより、ボールBLが目標到達位置付近に打ち返される。
【0097】
このように、本実施形態では、ボールBLの位置及び速度だけでなく回転速度を取得し、取得した回転速度を考慮してラケットRKによる打ち方を決定する。このため、回転が掛かったボールを目標到達位置に精度良く返球することが可能な打ち方を決定することができる。
【0098】
(変形例1)
次に、本実施形態の変形例1について説明する。
【0099】
図4のステップS120で算出したラケットRKの速度Vが、返球ロボット10による打撃動作の限界速度を越える場合もあり得る。この場合、ステップS110で設定した目標到達時間を調整して、すなわち到達時間を長くして、ステップS110~S120の処理を実行するようにしてもよい。これにより、ロボット40の限界速度範囲内で、到達位置と目標到達位置との誤差が許容範囲内となるように打ち方条件が決定される。
【0100】
(変形例2)
次に、本実施形態の変形例2について説明する。
【0101】
図4のステップS110で設定した目標到達時間を基準として複数の目標到達時間を設定し、複数の目標到達時間毎にステップS112~S120の処理を実行するようにしてもよい。例えばステップS110で設定した目標到達時間をTAとした場合に、T、T+Δt、T+2Δt、T+3Δt、・・・T+nΔt、のようにn個の目標到達時間を設定する。この場合、ステップS112では、目標到達時間Tに対応する速度をVとして、V、V+Δv、V+2Δv、V+3ΔV、・・・V+nΔv、のようにn個の速度が設定される。
【0102】
そして、ステップS114では、複数の速度の各々に対して予測到達位置を算出する。なお、ステップS114の処理を並列実行してもよい。ステップS116では、ステップS114で算出された複数の予測到達位置の少なくとも1つが許容範囲内であればステップS120へ移行する。この場合、ステップS120では、許容範囲内の予測到達位置のうち1つの予測到達位置を選択する。例えば、許容範囲内の予測到達位置のうち最も目標到達位置に近い予測到達位置を選択する。そして、選択した予測到達位置に対応する、ボールBLを打撃した直後の速度に基づいて、ラケットRKの速度及び姿勢を算出する。なお、許容範囲内の予測到達位置のうち最も予測到達時間が短くなる予測到達位置を選択してもよいし、許容範囲内の予測到達位置のうち最も予測到達時間が長くなる予測到達位置を選択してもよい。
【0103】
一方、複数の予測到達位置の全てが許容範囲外の場合は、ステップS118へ移行する。この場合、複数の予測到達位置の各々について、ボールBLがラケットRKに打撃された直後の速度を調整する。
【0104】
これにより、複数の予測到達位置と目標到達位置との各誤差のうち少なくとも1つの誤差が許容範囲内となるように、打ち方条件が決定される。
【0105】
(変形例3)
次に、本実施形態の変形例3について説明する。
【0106】
図4のステップS122においてラケットRKの速度、ラケットの角度α、βを出力した後、ボールBLが実際に到達した実到達位置をセンサ部20で検出し、検出した実到達位置を取得し、さらに実到達位置と予測到達位置との誤差に基づいて、次回以降の打撃において、調整部36が調整された打撃後速度を補正するようにしてもよい。打撃毎に目標到達位置が異なっていたとしても、実到達位置と予測到達位置との誤差は同じように生じる傾向があるので、次回以降の打撃において誤差が小さくなるように打撃後速度を補正することにより目標到達位置への到達精度を高めることができる。実到達位置と予測到達位置との誤差の測定とそれに基づく打撃後速度の補正を打撃毎に繰り返せば、到達精度を次第に高めていくことができる。なお、目標到達位置や打撃後速度の大きさに応じて補正量を変えるようにしてもよい。また、補正量は機械学習によって求めるようにしてもよい。
【0107】
打撃後速度を補正する代わりに、打ち方条件算出部37がラケットRKによる打ち方条件、すなわちラケットRKの位置、速度、及び姿勢の少なくとも何れかを補正するようにしてもよい。そのようにしても、目標到達位置への到達精度を高めることができる。
【0108】
(変形例4)
次に、変形例4について説明する。
【0109】
本実施形態では、打ち方決定部32が、エアロダイナミクスやテーブルバウンドモデル等を用いてボールBLの軌跡を予測して打ち方を決定する場合について説明したが、学習済みモデルを用いて打ち方条件を決定するようにしてもよい。
【0110】
例えば、打ち方決定部32を、取得部31が取得したボールBLの状態情報及び目標到達位置を入力とし、打ち方条件、すなわちボールBLをラケットRKで打ち返す時点の位置、速度V、角度α、βを出力として学習された学習済みモデルを含む構成とする。これにより、エアロダイナミクスやテーブルバウンドモデル等を用いた計算を省略することができる。
【0111】
なお、本実施形態では、制御装置50の制御対象であるロボット40が実機の場合について説明したが、制御装置50の制御対象が、シミュレーション上で動作するロボットであってもよい。
【0112】
また、本実施形態では、返球ロボット10が卓球ロボットである場合について説明したが、これに限られない。例えば、返球ロボット10は、テニスボールを打ち返すテニスロボット、野球のボールをバットで打ち返す野球ロボット等、ボールを扱うスポーツ又は遊びに適用可能である。野球ロボットの場合、例えばユーザーが投げたボールに対してどのような打ち方をすれば目標到達位置に打ち返すことができるかをアドバイスする用途に使用可能である。また、ラケット等の打撃具は、支持部42に支持される場合に限られない。例えば、ロボットアームの先端の形状が打撃具の形状をしていてもよい。
【0113】
また、上記各実施形態でCPUがソフトウェア(プログラム)を読み込んで実行した打ち方決定処理を、CPU以外の各種のプロセッサが実行してもよい。この場合のプロセッサとしては、FPGA(Field-Programmable Gate Array)等の製造後に回路構成を変更可能なPLD(Programmable Logic Device)、及びASIC(Application Specific Integrated Circuit)等の特定の処理を実行させるために専用に設計された回路構成を有するプロセッサである専用電気回路等が例示される。また、打ち方決定処理を、これらの各種のプロセッサのうちの1つで実行してもよいし、同種又は異種の2つ以上のプロセッサの組み合わせ(例えば、複数のFPGA、及びCPUとFPGAとの組み合わせ等)で実行してもよい。また、これらの各種のプロセッサのハードウェア的な構造は、より具体的には、半導体素子等の回路素子を組み合わせた電気回路である。
【0114】
また、上記各実施形態では、打ち方決定プログラムがストレージ30D又はROM30Bに予め記憶(インストール)されている態様を説明したが、これに限定されない。プログラムは、CD-ROM(Compact Disk Read Only Memory)、DVD-ROM(Digital Versatile Disk Read Only Memory)、及びUSB(Universal Serial Bus)メモリ等の記録媒体に記録された形態で提供されてもよい。また、プログラムは、ネットワークを介して外部装置からダウンロードされる形態としてもよい。
【符号の説明】
【0115】
10 返球ロボット
20 センサ部
22A、22B、22C カメラ
24 状態情報算出部
30 打ち方決定装置
31 取得部
32 打ち方決定部
33 軌跡予測部
34 設定部
35 到達位置予測部
36 調整部
37 打ち方条件算出部
40 ロボット
41 可動部
41A、41B、41C ロボットアーム
42 支持部
50 制御装置
BL ボール
RK ラケット