(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024014118
(43)【公開日】2024-02-01
(54)【発明の名称】作業周期推定装置、作業周期推定方法、及び作業周期推定プログラム
(51)【国際特許分類】
G06T 7/20 20170101AFI20240125BHJP
G06V 40/20 20220101ALI20240125BHJP
G06Q 50/04 20120101ALI20240125BHJP
【FI】
G06T7/20 300Z
G06V40/20
G06Q50/04
【審査請求】未請求
【請求項の数】13
【出願形態】OL
(21)【出願番号】P 2022116724
(22)【出願日】2022-07-21
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】西行 健太
【テーマコード(参考)】
5L049
5L096
【Fターム(参考)】
5L049CC04
5L096AA06
5L096BA08
5L096BA18
5L096CA04
5L096DA02
5L096EA06
5L096EA33
5L096GA51
5L096HA11
5L096JA03
5L096JA11
5L096MA07
(57)【要約】
【課題】標準作業時間等を事前に計測することなく、作業周期の始点及び終点を推定することができる。
【解決手段】作業周期推定装置は、作業者が予め定めた一連の作業を行ったときの動きに関する動き情報を取得する動き情報取得部と、前記動き情報に基づいて、前記作業者の作業周期の始点及び終点を推定する推定部と、推定した作業周期の始点及び終点を出力する出力部と、を備える。
【選択図】
図3
【特許請求の範囲】
【請求項1】
作業者が予め定めた一連の作業を行ったときの動きに関する動き情報を取得する動き情報取得部と、
前記動き情報に基づいて、前記作業者の作業周期の始点及び終点を推定する推定部と、
推定した作業周期の始点及び終点を出力する出力部と、
を備えた作業周期推定装置。
【請求項2】
前記推定部は、
前記動き情報に基づいて、前記作業者の骨格に基づく姿勢の変化に関する姿勢系列であって前記作業者の固有情報を除いた姿勢系列を生成する姿勢系列生成部と、
前記姿勢系列を特定の姿勢を1回含むように複数のセグメントに分割したセグメント系列を特定の姿勢毎に生成するセグメント系列生成部と、
前記特定の姿勢毎に生成した複数のセグメント系列のうち、セグメント同士の類似度が最も高いセグメント系列に含まれるセグメントの各々の先頭及び末尾を各作業周期の始点及び終点として設定する設定部と、
を含む請求項1記載の作業周期推定装置。
【請求項3】
前記姿勢系列生成部は、
前記動き情報に基づいて、前記作業者の動作ベクトル系列を算出する動作ベクトル系列算出部と、
前記動作ベクトル系列をクラスタリングしてクラス系列を生成するクラスタリング部と、
を含み、
前記セグメント系列生成部は、
複数のクラスの中から選択したクラスを先頭として前記クラス系列を複数の第1のセグメントに分割した第1のセグメント系列を前記複数のクラスの各々について生成する第1のセグメント系列生成部と、
生成された複数の第1のセグメント系列の各々について、前記複数の第1のセグメント間で共通するクラスの頻出パターンを特定する頻出パターン特定部と、
前記クラス系列を、前記頻出パターンを含む複数の第2のセグメントに分割した第2のセグメント系列を生成する第2のセグメント系列生成部と、
を含み、
前記設定部は、
生成された複数の第2のセグメント系列の各々について、複数の第2のセグメント同士の類似度に関する評価値を算出する評価値算出部と、
前記複数の第2のセグメント系列の各々について算出した評価値のうち最も高い評価値の第2のセグメント系列に含まれる第2のセグメントの各々の先頭及び末尾を各作業周期の始点及び終点として特定する特定部と、
を含む請求項2記載の作業周期推定装置。
【請求項4】
前記クラスタリング部は、前記クラス系列に対して、先頭又は末尾付近にのみ存在するクラスであって前記クラス系列の長さに対する割合が予め定めた第1の閾値以下のクラスをクラス系列から除去する
請求項3記載の作業周期推定装置。
【請求項5】
前記第2のセグメント系列生成部は、前記第2のセグメント系列に含まれる複数の第2のセグメントの周期長の1/2を第2の閾値として、前記第2の閾値以下の周期長である第2のセグメントを、1つ前の第2のセグメントに結合する
請求項3記載の作業周期推定装置。
【請求項6】
前記評価値算出部は、前記複数の第2のセグメント同士の類似度が全て予め定めた第3の閾値以下となる第2のセグメントを前記評価値の算出対象から除外する
請求項3記載の作業周期推定装置。
【請求項7】
前記第1のセグメント系列生成部は、末尾の第1のセグメントを除外した末尾除外セグメント系列と、先頭の第1のセグメントを除外した先頭除外セグメント系列と、を生成し、
前記頻出パターン特定部は、前記末尾除外セグメント系列の頻出パターンと、前記先頭除外セグメント系列の頻出パターンと、を結合した頻出パターンを前記複数の第1のセグメント間で共通するクラスの頻出パターンとして特定する
請求項3記載の作業周期推定装置。
【請求項8】
前記第2のセグメント系列生成部は、前記クラス系列を、前記頻出パターンを含む第2のセグメント候補以外のパターンを、前記パターンの後ろに隣接する前記第2のセグメント候補の先頭に付加した第2のセグメントに分割した第2のセグメント系列と、前記第2のセグメント候補以外のパターンを、前記パターンの前に隣接する前記第2のセグメント候補の末尾に付加した第2のセグメントに分割した第2のセグメント系列と、を生成する
請求項3記載の作業周期推定装置。
【請求項9】
前記姿勢系列は、前記作業者の上半身及び下半身の骨格に基づく姿勢の系列である
請求項2記載の作業周期推定装置。
【請求項10】
前記姿勢系列生成部は、カメラ視点の影響を除いた姿勢系列を生成する
請求項2記載の作業周期推定装置。
【請求項11】
前記姿勢系列生成部は、前記動き情報に基づいて前記作業者の骨格系列を生成し、生成した骨格系列に対して補間処理及び平滑化処理の少なくとも一方を行ってから前記姿勢系列を生成する
請求項2~10の何れか1項の記載の作業周期推定装置。
【請求項12】
コンピュータが、
作業者が予め定めた一連の作業を行ったときの動きに関する動き情報を取得し、
前記動き情報に基づいて、前記作業者の作業周期の始点及び終点を推定し、
推定した作業周期の始点及び終点を出力する、
ことを含む処理を実行する作業周期推定方法。
【請求項13】
コンピュータに、
作業者が予め定めた一連の作業を行ったときの動きに関する動き情報を取得し、
前記動き情報に基づいて、前記作業者の作業周期の始点及び終点を推定し、
推定した作業周期の始点及び終点を出力する、
ことを含む処理を実行させる作業周期推定プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
開示の技術は、作業周期推定装置、作業周期推定方法、及び作業周期推定プログラムに関する。
【背景技術】
【0002】
特許文献1には、第1工程を繰り返す作業者の動作を示す時系列データから、第1モチーフ及び第2モチーフを抽出し、前記時系列データに繰り返し現れる前記第1モチーフ及び前記第2モチーフをそれぞれ追跡し、追跡された複数の前記第1モチーフと複数の前記第2モチーフとの間のそれぞれの間隔を用いて、前記時系列データにおける前記第1工程以外の時間を分析する、分析装置が開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記特許文献1記載の技術では、予め入力された標準作業時間を元にパーティクルフィルタを用いてモチーフを追跡するため、標準作業時間を事前に計測する必要がある、という問題があった。
【0005】
開示の技術は、上記の点に鑑みてなされたものであり、標準作業時間等を事前に計測することなく、作業周期の始点及び終点を推定することができる作業周期推定装置、作業周期推定方法、及び作業周期推定プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
開示の第1態様は、作業周期推定装置であって、作業者が予め定めた一連の作業を行ったときの動きに関する動き情報を取得する動き情報取得部と、前記動き情報に基づいて、前記作業者の作業周期の始点及び終点を推定する推定部と、推定した作業周期の始点及び終点を出力する出力部と、を備える。
【0007】
開示の第2態様は、上記第1態様において、前記推定部は、前記動き情報に基づいて、前記作業者の骨格に基づく姿勢の変化に関する姿勢系列であって前記作業者の固有情報を除いた姿勢系列を生成する姿勢系列生成部と、前記姿勢系列を特定の姿勢を1回含むように複数のセグメントに分割したセグメント系列を特定の姿勢毎に生成するセグメント系列生成部と、前記特定の姿勢毎に生成した複数のセグメント系列のうち、セグメント同士の類似度が最も高いセグメント系列に含まれるセグメントの各々の先頭及び末尾を各作業周期の始点及び終点として設定する設定部と、を含む。
【0008】
開示の第3態様は、上記第2態様において、前記姿勢系列生成部は、前記動き情報に基づいて、前記作業者の動作ベクトル系列を算出する動作ベクトル系列算出部と、前記動作ベクトル系列をクラスタリングしてクラス系列を生成するクラスタリング部と、を含み、前記セグメント系列生成部は、複数のクラスの中から選択したクラスを先頭として前記クラス系列を複数の第1のセグメントに分割した第1のセグメント系列を前記複数のクラスの各々について生成する第1のセグメント系列生成部と、生成された複数の第1のセグメント系列の各々について、前記複数の第1のセグメント間で共通するクラスの頻出パターンを特定する頻出パターン特定部と、前記クラス系列を、前記頻出パターンを含む複数の第2のセグメントに分割した第2のセグメント系列を生成する第2のセグメント系列生成部と、を含み、前記設定部は、生成された複数の第2のセグメント系列の各々について、複数の第2のセグメント同士の類似度に関する評価値を算出する評価値算出部と、前記複数の第2のセグメント系列の各々について算出した評価値のうち最も高い評価値の第2のセグメント系列に含まれる第2のセグメントの各々の先頭及び末尾を各作業周期の始点及び終点として特定する特定部と、を含む構成としてもよい。
【0009】
開示の第4態様は、上記第3態様において、前記クラスタリング部は、前記クラス系列に対して、先頭又は末尾付近にのみ存在するクラスであって前記クラス系列の長さに対する割合が予め定めた第1の閾値以下のクラスをクラス系列から除去する。
【0010】
開示の第5態様は、上記第3態様又は第4態様において、前記第2のセグメント系列生成部は、前記第2のセグメント系列に含まれる複数の第2のセグメントの周期長の1/2を第2の閾値として、前記第2の閾値以下の周期長である第2のセグメントを、1つ前の第2のセグメントに結合する。
【0011】
開示の第6態様は、上記第3~第5態様の何れかの態様において、前記評価値算出部は、前記複数の第2のセグメント同士の類似度が全て予め定めた第3の閾値以下となる第2のセグメントを前記評価値の算出対象から除外する。
【0012】
開示の第7態様は、上記第3~第6態様の何れかの態様において、前記第1のセグメント系列生成部は、末尾の第1のセグメントを除外した末尾除外セグメント系列と、先頭の第1のセグメントを除外した先頭除外セグメント系列と、を生成し、前記頻出パターン特定部は、前記末尾除外セグメント系列の頻出パターンと、前記先頭除外セグメント系列の頻出パターンと、を結合した頻出パターンを前記複数の第1のセグメント間で共通するクラスの頻出パターンとして特定するようにしてもよい。
【0013】
開示の第8態様は、上記第3~第7態様の何れかの態様において、前記第2のセグメント系列生成部は、前記クラス系列を、前記頻出パターンを含む第2のセグメント候補以外のパターンを、前記パターンの後ろに隣接する前記第2のセグメント候補の先頭に付加した第2のセグメントに分割した第2のセグメント系列と、前記第2のセグメント候補以外のパターンを、前記パターンの前に隣接する前記第2のセグメント候補の末尾に付加した第2のセグメントに分割した第2のセグメント系列と、を生成するようにしてもよい。
【0014】
開示の第9態様は、上記第2~第8態様の何れかの態様において、前記姿勢系列は、前記作業者の上半身及び下半身の骨格に基づく姿勢の系列である。
【0015】
開示の第10態様は、上記第2~第9態様の何れかの態様において、前記姿勢系列生成部は、カメラ視点の影響を除いた姿勢系列を生成する。
【0016】
開示の第11態様は、上記第2~第10態様の何れかの態様において、前記姿勢系列生成部は、前記動き情報に基づいて前記作業者の骨格系列を生成し、生成した骨格系列に対して補間処理及び平滑化処理の少なくとも一方を行ってから前記姿勢系列を生成する。
【0017】
開示の第12態様は、作業周期推定方法であって、コンピュータが、作業者が予め定めた一連の作業を行ったときの動きに関する動き情報を取得し、前記動き情報に基づいて、前記作業者の作業周期の始点及び終点を推定し、推定した作業周期の始点及び終点を出力する、ことを含む処理を実行する。
【0018】
開示の第13態様は、作業周期推定プログラムであって、コンピュータに、作業者が予め定めた一連の作業を行ったときの動きに関する動き情報を取得し、前記動き情報に基づいて、前記作業者の作業周期の始点及び終点を推定し、推定した作業周期の始点及び終点を出力する、ことを含む処理を実行させる。
【発明の効果】
【0019】
開示の技術によれば、標準作業時間等を事前に計測することなく、作業周期の始点及び終点を推定することができる。
【図面の簡単な説明】
【0020】
【
図2】作業周期推定装置のハードウェア構成を示す構成図である。
【
図5】第1のセグメント系列について説明するための図である。
【
図6】第2のセグメント系列について説明するための図である。
【
図7】第2のセグメント系列について説明するための図である。
【
図8】作業周期の始点及び終点について説明するための図である。
【発明を実施するための形態】
【0021】
以下、本発明の実施形態の一例を、図面を参照しつつ説明する。なお、各図面において同一又は等価な構成要素及び部分には同一の参照符号を付与している。また、図面の寸法比率は、説明の都合上誇張されている場合があり、実際の比率とは異なる場合がある。
【0022】
図1は、作業周期推定システム10の構成を示す。作業周期推定システム10は、作業周期推定装置20及びカメラ30を備える。
【0023】
作業周期推定装置20は、カメラ30で撮影された動画像に基づいて、作業者Wが行った作業の作業周期の始点及び終点を推定する。
【0024】
作業者Wは、一例として作業台TBに載置された作業の対象物Mを取り出して、作業スペースSで予め定めた一連の作業を行う。作業者Wが行う一連の作業は、例えば部品の把持、運搬、組み立て、検査、ドライバによるねじ締め、及びラベル貼り等、1つの作業周期に多様な動作が含まれる作業である。
【0025】
カメラ30は、例えばRGBのカラー動画像を撮影可能な撮影装置である。カメラ30は、作業者Wの動き及び作業台TB全体を認識しやすい位置に設置される。
【0026】
また、本実施形態では、カメラ30が1台の場合について説明するが、複数台のカメラ30を設けた構成としてもよい。
【0027】
図2は、本実施形態に係る作業周期推定装置20のハードウェア構成を示すブロック図である。
図2に示すように、作業周期推定装置20は、コントローラ21を備える。コントローラ21は、一般的なコンピュータを含む装置で構成される。
【0028】
図2に示すように、コントローラ21は、CPU(Central Processing Unit)21A、ROM(Read Only Memory)21B、RAM(Random Access Memory)21C、及び入出力インターフェース(I/O)21Dを備える。そして、CPU21A、ROM21B、RAM21C、及びI/O21Dがバス21Eを介して各々接続されている。バス21Eは、コントロールバス、アドレスバス、及びデータバスを含む。
【0029】
また、I/O21Dには、操作部22、表示部23、通信部24、及び記憶部25が接続されている。
【0030】
操作部22は、例えばマウス及びキーボードを含んで構成される。
【0031】
表示部23は、例えば液晶ディスプレイ等で構成される。
【0032】
通信部24は、カメラ30等の外部装置とデータ通信を行うためのインターフェースである。
【0033】
記憶部25は、ハードディスク等の不揮発性の外部記憶装置で構成される。
図2に示すように、記憶部25は、作業周期推定プログラム25A等を記憶する。
【0034】
CPU21Aは、コンピュータの一例である。ここでいうコンピュータとは、広義的なプロセッサを指し、汎用的なプロセッサ(例えば、CPU)、又は、専用のプロセッサ(例えば、GPU:Graphics Processing Unit、ASIC:Application Specific Integrated Circuit、FPGA:Field Programmable Gate Array、プログラマブル論理デバイス、等)を含むものである。
【0035】
なお、作業周期推定プログラム25Aは、不揮発性の非遷移的(non-transitory)記録媒体に記憶して、又はネットワークを介して配布して、作業周期推定装置20に適宜インストールすることで実現してもよい。
【0036】
不揮発性の非遷移的記録媒体の例としては、CD-ROM(Compact Disc Read Only Memory)、光磁気ディスク、HDD(ハードディスクドライブ)、DVD-ROM(Digital Versatile Disc Read Only Memory)、フラッシュメモリ、メモリカード等が想定される。
【0037】
図3は、作業周期推定装置20のCPU21Aの機能構成を示すブロック図である。
図3に示すように、CPU21Aは、機能的には、動き情報取得部40、推定部41、及び出力部42の各機能部を備える。
【0038】
CPU21Aは、記憶部25に記憶された作業周期推定プログラム25Aを読み込んで実行することにより
図3に示す各機能部として機能する。
【0039】
動き情報取得部40は、作業者Wが予め定めた一連の作業を行ったときの動きに関する動き情報を取得する。具体的には、作業者Wが予め定めた一連の作業を行った様子をカメラ30によって撮影された動画像を動き情報として記憶部25に記憶しておく。そして、動き情報取得部40は、記憶部25に記憶された動画像を読み出すことにより取得する。なお、カメラ30に代えて、モーションセンサ等を用いて作業者Wの動き情報を取得してもよい。
【0040】
推定部41は、動き情報取得部40が取得した動画像に基づいて、作業者Wの作業周期の始点及び終点を推定する。ここで、作業周期とは、作業者Wが繰り返し行う一連の作業の周期である。そして、作業周期の始点とは、一連の作業を開始した時点をいい、作業周期の終点とは、一連の作業を終了した時点をいう。
【0041】
推定部41は、姿勢系列生成部41A、セグメント系列生成部41B、及び設定部41Cを含む。
【0042】
姿勢系列生成部41Aは、40が取得した動画像に基づいて、作業者Wの骨格に基づく姿勢の変化に関する姿勢系列であって作業者Wの固有情報を除いた姿勢系列を生成する。姿勢系列生成部41Aは、動作ベクトル系列算出部43及びクラスタリング部44を備える。
【0043】
セグメント系列生成部41Bは、姿勢系列生成部41Aが生成した姿勢系列を特定の姿勢を1回含むように複数のセグメントに分割したセグメント系列を特定の姿勢(キーアクション)毎に生成する。セグメント系列生成部41Bは、第1のセグメント系列生成部45、頻出パターン特定部46、及び第2のセグメント系列生成部47を備える。
【0044】
設定部41Cは、セグメント系列生成部41Bが特定の姿勢毎に生成した複数のセグメント系列のうち、セグメント同士の類似度が最も高いセグメント系列に含まれるセグメントの各々の先頭及び末尾を各作業周期の始点及び終点として設定する。設定部41Cは、評価値算出部48及び特定部49を備える。
【0045】
動作ベクトル系列算出部43は、動き情報取得部40が取得した動画像に基づいて、作業者Wの動作ベクトル系列を算出する。動作ベクトル系列は姿勢系列の一例であり、骨格系列に対して動作特徴量抽出処理を適用することにより得られる動作特徴量の系列データである。
【0046】
具体的には、動作ベクトル系列算出部43は、背景及び作業者Wの服装等の固有情報に影響を受けないようにするため、動画像に基づいて作業者Wの姿勢の推定を行い、推定した姿勢を骨格系列に変換する。
【0047】
作業者Wの姿勢を推定し、推定した姿勢を骨格系列に変換する手法としては、下記参考文献1に記載されたOpenPoseと呼ばれる公知の手法を用いることができる。骨格系列は、作業者Wの体の部位及び関節等の特徴点の座標と、特徴点の身体の部位を表すラベルと、を含む時系列のデータである。例えば特徴点は、作業者Wの目及び鼻等の顔の部位、首、肩、肘、手首、腰、膝、及び足首等の関節等を含む。
【0048】
OpenPoseでは、動画像を入力とし、骨格系列を出力とする学習モデルを、多数の動画像を教師データとして学習した学習済みモデルを用いる。このような学習済みモデルを得る学習方法としては、例えばCNN(Convolutional Neural Networks)等の公知の方法が用いられる。
【0049】
(参考文献1) "OpenPose: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields", Zhe Cao, Student Member, IEEE, Gines Hidalgo, Student Member, IEEE, Tomas Simon, Shih-En Wei, and Yaser Sheikh, IEEE TRANSACTIONS ON PATTERN ANALYSIS AND MACHINE INTELLIGENCE.
【0050】
ここで、工場の作業において、体型の異なる様々な作業者が作業を行うため、体型の違いによる影響が大きい。体型の違いに影響を受けることがないように、本実施形態では、下記参考文献2に記載されたMotionRetargetingと呼ばれる手法を用いて、動画像から得られた骨格系列を、動作特徴量を表す動作ベクトル系列に変換する。
【0051】
(参考文献2)K. Aberman, R. Wu, D. Lischinski, B. Chen, and D. Cohen-Or,“Learning character-agnostic motion for motion retargeting in 2d,”TOG, vol.38, no.4, p.75, 2019.
【0052】
MotionRetargetingでは、骨格系列を入力として、エンコーダーを用いて、動作、体型、カメラ視点の3つの成分の特徴ベクトル、すなわち動作特徴量を出力するが、本実施形態では、一例として体型及びカメラ視点の影響を除くため、動作成分の特徴ベクトルのみを用いる。
【0053】
なお、姿勢推定のノイズの影響を除くため、動作ベクトル系列への変換を行う前に、骨格系列に対して、時系列の補間処理、時系列平滑化処理、及び下半身の補間処理の3つの前処理のうち少なくとも1つを行ってもよい。
【0054】
時系列の補間処理では、姿勢推定に失敗している関節点があれば、1つ前のフレームの関節点をコピーする。時系列平滑化処理では、姿勢推定のノイズを除去するため、系列データに対してガウシアンフィルタで平滑化処理を行う。本実施形態で用いるOpenPoseでは、人物の上半身だけでなく、下半身の姿勢も推定する。すなわち、作業者Wの上半身及び下半身の骨格に基づく姿勢の系列を推定する。工場における作業の場合、机上の作業台で作業することが多いため、下半身が机で遮蔽され、下半身の関節点が欠損することが多い。MotionRetargetingのような動作特徴量を抽出するエンコーダーは、人物の全身の骨格系列を入力とするため、下半身の関節点が欠損している場合は、動作成分の特徴ベクトルを適切に出力することができない場合がある。そのため、下半身の補間処理を行ってもよい。具体的には、下半身の補間処理として、人物の胴体の長さに比例する長さで両膝及び両足の少なくとも一方の関節点を補間してもよい。
【0055】
クラスタリング部44は、動作ベクトル系列算出部43により算出された動作ベクトル系列をクラスタリングしてクラス系列を生成する。ここで、クラス系列とは、動作ベクトル系列に対してクラスタリングを適用した結果である1次元(クラスタ番号)の系列データである。
【0056】
具体的には、クラスタリング部44は、高次元の動作ベクトル系列を1次元のクラス系列に変換する。本実施形態では、一例としてスペクトラルクラスタリング(Spectral Clustering)を適用し、動作ベクトル系列算出部43が算出した高次元の動作ベクトル系列を1次元のクラス系列に変換する。スペクトラルクラスタリングは、教師なしクラスタリング手法であり、動作ベクトル系列に対してクラスタリングを行うことで類似の動作が同じクラスに分類されるため、周期性を捉えやすくなる。
【0057】
工場の作業では、作業の開始時及び終了時に、解析対象の製品組み立て以外のシーンが入ることがある。具体的には、組み立て前の待機時間及び作業終了時の待機時間等である。これらのシーンは作業周期の始点及び終点を推定する際には、ノイズとなるため、前処理で除去するようにしてもよい。例えば前処理として、先頭又は末尾付近にのみ存在するクラスであってクラス系列の長さに対する割合が予め定めた第1の閾値以下のクラスをクラス系列から除去する処理を行う。第1の閾値は、例えばクラス系列のデータ長の0.05倍の長さとすることができる。なお、クラス系列のデータ長とは、クラス系列に含まれるクラスの数である。例えばクラス系列のデータ長が100の場合、先頭から5個分の範囲が先頭付近、末尾から5個分の範囲が末尾付近となる。
【0058】
図4に、クラス系列の一例を示す。
図4に示すクラス系列C1は、作業者Wが一連の作業を複数回行った場合の動作ベクトル系列をクラスタリングしたクラス系列であり、作業者Wの動作がクラス0~5の6個のクラスにクラスタリングされている。
【0059】
ここで、クラス5は先頭にのみ存在するクラスであり、クラス系列の長さに対する割合が0.05以下であるため、クラス5の動作はノイズであるとして、クラス系列C1からクラス5のデータを除去し、クラス系列C2とする。
【0060】
また、初心者が作業する場合、各作業周期の作業時間が異なる場合があるが、作業周期を特定するには、出現する作業の順序のみに着目することが重要であるため、各作業周期の作業時間の影響を受けないように処理する必要がある。そのため、前処理でノイズ除去を行った1次元のクラス系列C2に対して、連続する同一クラスのデータを縮約するラベリング処理を行う。
【0061】
図4に示す例では、クラス系列C2は、0、1、0、2、2、3、3、4、・・・となっており、クラス2及びクラス3の値が連続している。このように連続する値を1つにまとめて、0、1、0、2、3、4、・・・のように縮約したクラス系列C3を生成する。ただし、作業周期の始点及び終点を推定する場合、動画像における各作業周期の始点及び終点を推定する必要があるため、縮約前のクラス系列C2は記憶部25に保持しておく。
【0062】
工場における作業では、製品組み立て等、1周期に1度だけ出現する固有の動作が存在することが多い。例えば、特殊な部品を取る動作及び完成品を収納箱に戻す動作等は1周期に1度だけ出現する。本実施形態では、1周期に1度だけ出現する動作をキーアクションと定義し、キーアクションに着目してクラス系列C3から第1のセグメント系列を生成する。
【0063】
第1のセグメント系列生成部45は、クラスタリング部44によりクラスタリングされた複数のクラスの中からキーアクションとして選択したクラスを先頭として、クラス系列C2を複数の第1のセグメントに分割した第1のセグメント系列を複数のクラスの各々について生成する。すなわち、複数のクラスの各々をキーアクションとして順次選択し、第1のセグメント系列を各々生成する。ここで、第1のセグメント系列とは、ラベリング処理で時系列方向に縮約したクラス系列に対して、キーアクションで分割したクラス系列データである。
【0064】
図4の例では、クラス系列C3はクラス0からクラス4までの5つのクラスであるため、5つのクラスの各々を順次キーアクションとして選択し、第1のセグメント系列を生成する。
【0065】
具体的には、まずクラス0をキーアクションとして選択し、クラス0を先頭としてクラス系列C3を分割する。これにより、
図5に示すように、クラス系列C3は、「0,1」、「0,2,3,4」、「0,1,2,3,4」、「0,1,3,4」、「0,1」、「0,3,4」という6個の第1のセグメントA01~A06に分割され、これら6個の第1のセグメントA01~A06から成る第1のセグメント系列A0が生成される。
【0066】
次に、クラス1をキーアクションとして選択し、クラス1を先頭としてクラス系列C3を分割する。これにより、クラス系列C3は、「0」、「1,0,2,3,4、0」、「1,2,3,4,0」、「1,3,4,0」、「1,0,3,4」という5個の第1のセグメントA11~A15に分割され、これら5個の第1のセグメントA11~A15から成る第1のセグメント系列A1が生成される。以下同様にして、クラス2~4についても第1のセグメント系列A2~A4を各々生成する。
【0067】
頻出パターン特定部46は、第1のセグメント系列生成部45により生成された複数の第1のセグメント系列A0~A4の各々について、複数の第1のセグメント間で共通するクラスの頻出パターンを特定する。
【0068】
頻出パターンの特定は、例えば系列パターンマイニング手法であるPrefixSpanと呼ばれる下記参考文献3記載の技術を用いることができる。
【0069】
(参考文献3)J. Han, J. Pei, B. Mortazavi-Asl, H. Pinto, Q. Chen, U. Dayal, andM. Hsu, "Prefixspan: Mining sequential patterns efficiently by prefix-projected pattern growth," ICDEIEEE, pp.215-224 2001.
【0070】
頻出パターン特定部46は、PrefixSpanを用いて、複数の第1のセグメント間で共通する頻出パターンを推定する。具体的には、頻出パターン候補の中から、最も出現回数の高いパターンを最終的な頻出パターンとする。
【0071】
ここで、頻出パターン特定部46は、第1のセグメント系列を構成する複数の第1のセグメントの全てに対してPrefixSpanを適用するのではなく、最後の第1のセグメントを除いた第1のセグメント系列及び先頭の第1のセグメントを除いた第1のセグメント系列の各々に対してPrefixSpanによる系列パターンマイニングを適用してもよい。
【0072】
これはキーアクションが各作業周期の中心付近に現れたときに、キーアクション以前に現れるパターンと、キーアクション以後に現れるパターンの何れかを頻出パターンとして推定してしまうことを防ぐためである。
【0073】
キーアクションが現れる位置としては、作業周期の先頭、末尾、先頭及び末尾以外の3通りがある。先頭又は末尾にキーアクションが出現する場合は、クラス系列をキーアクションの位置で分割した第1のセグメントに対して、系列パターンマイニングを適用することで容易に各作業周期を網羅した頻出パターンを抽出することができる。
【0074】
しかしながら、先頭及び末尾以外に出現するキーアクションの位置でクラス系列を分割した第1のセグメント系列に対して、系列パターンマイニングを適用すると、キーアクション以前の頻出パターン又はキーアクション以後の頻出パターンのみを抽出してしまう。そのため、第1のセグメント系列の末尾の第1のセグメントを除いた第1のセグメント系列からキーアクション以前の頻出パターンを抽出し、先頭を除いたセグメントからキーアクション以後の頻出パターンを抽出し、これらの頻出パターンを結合してもよい。
【0075】
すなわち、第1のセグメント系列生成部45は、末尾の第1のセグメントを除外した末尾除外セグメント系列と、先頭の第1のセグメントを除外した先頭除外セグメント系列と、を生成し、頻出パターン特定部46は、末尾除外セグメント系列の頻出パターンと、先頭除外セグメント系列の頻出パターンと、を組み合わせた頻出パターンを複数の第1のセグメント間で共通するクラスの頻出パターンとして特定するようにしてもよい。
【0076】
これにより、キーアクションが作業周期の先頭及び末尾以外に出現する場合であっても、精度良く頻出パターンを抽出することができる。
【0077】
図5の例では、クラス0における第1のセグメント系列A0は6個の第1のセグメントA01~A06で構成されるため、末尾の第1のセグメントA06を除外した第1のセグメントA01~A05から成る末尾除外セグメント系列A0Aの頻出パターンとして、「0」が特定される。また、先頭の第1のセグメントA01を除外した第1のセグメントA02~A06から成る先頭除外セグメント系列A0Bの頻出パターンとして、「0」が特定される。この場合、末尾除外セグメント系列A0Aの頻出パターンと先頭除外セグメント系列A0Bの頻出パターンは同じなので、「0」が第1のセグメント系列A0の頻出パターンとして特定される。
【0078】
同様に、クラス1における第1のセグメント系列A1から末尾の第1のセグメントA15を除外した第1のセグメントA11~A14から成る末尾除外セグメント系列A1Aの頻出パターンとして、「0」が特定される。また、先頭の第1のセグメントA11を除外した第1のセグメントA12~A15から成る先頭除外セグメント系列A1Bの頻出パターンとして、「3,4」が特定される。この場合、末尾除外セグメント系列A1Aの頻出パターンと先頭除外セグメント系列A1Bの頻出パターンは異なるため、「0」と「3,4」を結合した「0,3,4」が第1のセグメント系列A1の頻出パターンとして特定される。
【0079】
以下、クラス2~4における第1のセグメント系列に対しても各々頻出パターンを特定する。
【0080】
第2のセグメント系列生成部47は、クラス系列を、頻出パターンを含む複数の第2のセグメントに分割した第2のセグメント系列を生成する。具体的には、第2のセグメント系列生成部47は、クラス系列を、頻出パターンを含む第2のセグメント候補以外のパターンを、このパターンの後ろに隣接する前記第2のセグメント候補の先頭に付加した第2のセグメントに分割した第2のセグメント系列と、第2のセグメント候補以外のパターンを、このパターンの前に隣接する第2のセグメント候補の末尾に付加した第2のセグメントに分割した第2のセグメント系列と、を生成する
【0081】
より具体的には、まず、クラス系列C3の先頭から順に頻出パターンを含むクラスの集合を検索する。そして、頻出パターンを含むクラスの集合を構成するクラスの数に対する、頻出パターンを構成するクラスの数の割合が予め定めた閾値以上となるクラスの集合を第2のセグメント候補とする。なお、閾値は一例として0.2とすることができるが、これに限られるものではない。
【0082】
前述したように、第1のセグメント系列A0における頻出パターンは「0」である。このため、
図6に示すように、クラス系列C3の先頭から太枠で示す頻出パターン「0」が5個検索される。そして、先頭の頻出パターン「0」は第2のセグメントB01となる。
【0083】
次に、頻出パターン「0」以外のパターンを隣接する頻出パターン「0」に付加したパターンを第2のセグメントとする。
図6では、1個目の頻出パターン「0」と2個目の頻出パターン「0」との間のパターンは「1」である。このため、パターン「1」を後ろに隣接する2個目の頻出パターン「0」に付加したパターン「1,0」が第2のセグメントB02となる。また、2個目の頻出パターン「0」と3個目の頻出パターン「0」との間のパターンは「2,3,4」である。このため、パターン「2,3,4」を後ろに隣接する3個目の頻出パターン「0」に付加したパターン「2,3,4,0」が第2のセグメントB03となる。以下同様にして第2のセグメントB04~B06が生成され、第2のセグメントB01~B06を含む第2のセグメント系列B0が生成される。なお、末尾の「3,4」は第2のセグメントとならなかった余りのパターンである。
【0084】
次に、別パターンの第2のセグメント系列を生成する。具体的には、1個目の頻出パターン「0」と2個目の頻出パターン「0」との間のパターン「1」を前に隣接する1個目の頻出パターン「0」に付加したパターン「0,1」を第2のセグメントb01とする。また、2個目の頻出パターン「0」と3個目の頻出パターン「0」との間のパターン「2,3,4」を前に隣接する2個目の頻出パターン「0」に付加したパターン「0,2,3,4」を第2のセグメントb02とする。以下同様にして第2のセグメントb03~b06が生成され、第2のセグメント系列b0が生成される。
【0085】
このように、クラス0における第1のセグメント系列A0に対して、2パターンの第2のセグメント系列B0、b0を生成する。
【0086】
また、前述したように、第1のセグメント系列A1における頻出パターンは「0,3,4」である。このため、
図7に示すように、クラス系列C3の先頭から太枠で示す頻出パターン「0、3,4」を含むパターンが4個検索される。
【0087】
次に、1個目の「0,2,3,4」と2個目のパターン「0,1,2,3,4」との間のパターンは無い。また、
図7の例では、先頭のパターン「0,1」は頻出パターンを含まないため、後ろのパターン「0,2,3,4」に付加して「0,1,0,2,3,4」を第2のセグメントB11とする。以下同様にして第2のセグメントB12~B14が生成され、第2のセグメント系列B1が生成される。
【0088】
次に、別パターンの第2のセグメント系列を生成する。具体的には、先頭のパターン「0,1」の前には頻出パターンを含むパターンが存在せず前のパターンに付加できないため、パターン「0,2,3,4」が最初の第2のセグメントb11となる。以下同様にして第2のセグメントb12~b14が生成され、第2のセグメント系列b1が生成される。なお、先頭の「0,1」は第2のセグメントとならなかった余りのパターンである。
【0089】
このように、クラス1における第1のセグメント系列A1に対して、2パターンの第2のセグメント系列B1、b1を生成する。
【0090】
以下同様にして、クラス2における第1のセグメント系列A2に対して、2パターンの第2のセグメント系列B2、b2を生成し、クラス3における第1のセグメント系列A3に対して、2パターンの第2のセグメント系列B3、b3を生成し、クラス4における第1のセグメント系列A4に対して、2パターンの第2のセグメント系列B4、b4を生成する。これにより、10個の第2のセグメント系列が生成される。
【0091】
なお、生成した第2のセグメント系列に対して、ノイズを除去するため、2つの後処理を行ってもよい。1つ目の後処理は、第2のセグメント系列に含まれる複数の第2のセグメントの長さに着目したノイズ除去である。ここで、第2のセグメントの長さとは、第2のセグメントを構成するクラスの数であり、以下では周期長と称する。1つめの後処理は、第2のセグメント系列に含まれる複数の第2のセグメントの周期長の1/2を第2の閾値として、第2の閾値以下の周期長である第2のセグメントを、1つ前の第2のセグメントに結合する処理である。
【0092】
2つ目の後処理は、第2のセグメント系列に含まれる複数の第2のセグメント同士の類似度に着目したノイズ除去である。複数の第2のセグメントの全ての組み合わせに対して、ハミング距離を距離関数としたDTW(Dynamic Time Warping)を類似度として計算し、計算した類似度が全て予め定めた第3の閾値以下となる第2のセグメントを削除する。なお、閾値は、上記類似度のメディアン(中央値)の1/2の値とする。
【0093】
評価値算出部48は、第2のセグメント系列生成部47により生成された複数の第2のセグメント系列の各々について、複数の第2のセグメント同士の類似度に関する評価値を算出する。
【0094】
評価値算出部48は、一例として下記(1)式を用いて評価値Sを算出する。
【0095】
【0096】
ここで、S
sは下記(2)式を用いて算出される。
・・・(2)
【0097】
ここで、Cは、組み合わせを表す。また、Nは、第2のセグメント系列に含まれる第2のセグメントの数である。また、n1、n2は、各第2のセグメントを示すインデックスである。δn1n2は、n1、n2についてのクロネッカーのデルタである。また、Rn1、Rn2は、類似度を算出する2つの第2のセグメントを表す。dtw(Rn1、Rn2)は、前述したハミング距離を距離関数としたDTWであり、Rn1、Rn2の類似度を算出する関数である。
【0098】
例えば、第2のセグメント系列に3個の第2のセグメントが含まれている場合、1個目の第2のセグメントと2個目の第2のセグメントの類似度、2個目の第2のセグメントと3個目の第2のセグメントの類似度、1個目の第2のセグメントと3個目の第2のセグメントの類似度が各々計算され、各々計算された類似度の平均値が評価値Ssとなる。
【0099】
また、Scは下記(3)式を用いて算出される。なお、前述したように、第2のセグメント系列の先頭又は末尾には、第2のセグメントとならなかった余りのパターンが含まれる場合がある。そのため、第2のセグメント系列に含まれる全てのクラスに対する余りのパターンを構成するクラスの割合を下記(3)式を用いて評価値Scとして算出する。
【0100】
【0101】
ここで、Aは第2のセグメント系列に含まれる全ての第2のセグメントを構成するクラスの集合を表す。また、
は、余りのパターンを構成するクラスの集合を表す。Lは、第2のセグメント系列を構成するクラスの集合である。
【0102】
また、Slは下記(4)式を用いて算出される。
【0103】
【0104】
ここで、lnは、n周期目の周期長、すなわちn個目の第2のセグメント系列の長さである。
【0105】
なお、上記(1)式におけるws、wc、wlは、それぞれSs、Sc、Slに対する重みであり、本実施形態では全て1とする。
【0106】
特定部49は、複数の第2のセグメント系列の各々について算出した評価値のうち最も高い評価値の第2のセグメント系列に含まれる第2セグメントの各々の先頭及び末尾を各作業周期の始点及び終点として特定する。
【0107】
例えば、生成された10個の第2のセグメント系列について算出された評価値のうち、例えば第2のセグメント系列B1の評価値が最も高かったとする。この場合、
図8に示すように、第2のセグメントB11の先頭のクラス0に対応するクラス系列C2のクラス0が始点として特定される。また、第2のセグメントB11の末尾のクラス4に対応するクラス系列C2のクラス4が終点として特定される。以下同様に、第2のセグメントB12~B14の先頭及び末尾のクラスに対応するクラス系列C2のクラスが始点及び終点として各々特定される。
【0108】
出力部42は、推定部41が推定した作業周期の始点及び終点、すなわち特定部49が特定したクラス系列C2の作業周期の始点及び終点を記憶部25に出力し、記憶する。
【0109】
次に、作業周期推定装置20のCPU21Aで実行される作業周期推定処理について、
図6に示すフローチャートを参照して説明する。
【0110】
ステップS100では、CPU21Aが、作業者Wが予め定めた一連の作業を行った様子をカメラ30によって撮影された動画像を記憶部25から読み出すことにより取得する。
【0111】
ステップS101では、CPU21Aが、ステップS100で取得した動画像に基づいて、作業者Wの動作ベクトル系列を算出する。
【0112】
ステップS102では、CPU21Aが、ステップS101で算出した動作ベクトル系列をクラスタリングしてクラス系列を生成する。
【0113】
ステップS103では、CPU21Aが、ステップS102でクラスタリングされた複数のクラスの中からキーアクションとして選択したクラスを先頭として、クラス系列を複数の第1のセグメントに分割した第1のセグメント系列を複数のクラスの各々について生成する。
【0114】
ステップS104では、CPU21Aが、ステップS103で生成された複数の第1のセグメント系列の各々について、複数の第1のセグメント間で共通するクラスの頻出パターンを特定する。
【0115】
ステップS105では、CPU21Aが、クラス系列を、ステップS104で特定した頻出パターンを含む複数の第2のセグメントに分割した第2のセグメント系列を生成する。
【0116】
ステップS106では、CPU21Aが、ステップS105で生成された複数の第2のセグメント系列の各々について、複数の第2のセグメント同士の類似度に関する評価値を算出する。
【0117】
ステップS107では、CPU21Aが、ステップS106で複数の第2のセグメント系列の各々について算出した評価値のうち、最も高い評価値の第2のセグメント系列に含まれる第2セグメントの各々の先頭及び末尾を各作業周期の始点及び終点として特定する。
【0118】
ステップS108では、CPU21Aが、ステップS107で特定したクラス系列の作業周期の始点及び終点を記憶部25に出力し、記憶する。
【0119】
このように、本実施形態では、作業者Wが予め定めた一連の作業を行ったときの動きに関する動き情報に基づいて、作業者Wの作業周期の始点及び終点を推定するので、標準作業時間等を事前に計測することなく、作業周期の始点及び終点を推定することができる。
【0120】
なお、上記実施形態は、本発明の構成例を例示的に説明するものに過ぎない。本発明は上記の具体的な形態には限定されることはなく、その技術的思想の範囲内で種々の変形が可能である。
【0121】
また、上記各実施形態でCPUがソフトウェア(プログラム)を読み込んで実行した作業周期推定処理を、CPU以外の各種のプロセッサが実行してもよい。この場合のプロセッサとしては、FPGA(Field-Programmable Gate Array)等の製造後に回路構成を変更可能なPLD(Programmable Logic Device)、及びASIC(Application Specific Integrated Circuit)等の認識の処理を実行させるために専用に設計された回路構成を有するプロセッサである専用電気回路等が例示される。また、作業周期推定処理を、これらの各種のプロセッサのうちの1つで実行してもよいし、同種又は異種の2つ以上のプロセッサの組み合わせ(例えば、複数のFPGA、及びCPUとFPGAとの組み合わせ等)で実行してもよい。また、これらの各種のプロセッサのハードウェア的な構造は、より具体的には、半導体素子等の回路素子を組み合わせた電気回路である。
【符号の説明】
【0122】
10 作業周期推定システム
20 作業周期推定装置
21 コントローラ
25A 作業周期推定プログラム
30 カメラ
40 情報取得部
41 推定部
41A 姿勢系列生成部
41B セグメント系列生成部
41C 設定部
42 出力部
43 動作ベクトル系列算出部
44 クラスタリング部
45 第1のセグメント系列生成部
46 頻出パターン特定部
47 第2のセグメント系列生成部
48 評価値算出部
49 特定部
W 作業者