シーン変化にロバストに対応できるバラ積みピッキング

こんにちは、トロボです。

本記事では、バラ積みピッキングにおいてロボットの作業環境、すなわち3次元カメラの視野内のシーンが突然変化しても正確に対象物をピッキングできる認識システムについて紹介します。まずは動画をご覧ください。

動画で使用しているロボットシステムの構成は、唐揚げピッキングの記事と同様に、下記の図のようになっています。

まず動画の説明をする前に、背景からお話ししたいと思います。ロボットシステムは生産効率を高めるため、なるべく短いタクトタイムで動作することが望まれます。バラ積みピッキングにおけるタクトタイムとは、対象物を計測・認識してロボットが把持を行い、適切な場所に移送する(あるいは組付け等の作業を行う)までの動作を一巡するのに要する時間です。

従来では長い処理時間を要していた3次元カメラによる物体認識も、近年では計算機の性能の向上によって短い時間で実行することができるようになってきています。理想的にはロボットが無駄な動作をすることなく高い稼働率でピッキング作業をさせたいところです。しかし対象物や認識処理に用いられるアルゴリズムによっては、性能の良い計算機を用いても処理時間が長くなってしまうケースも少なくありません。そのような場合には、下図のように認識処理の完了待ちのためにロボットは一時停止をせざるを得ません。

このようにロボット動作の合間に待機時間が生じると、タクトタイムが長くなり生産効率が悪くなってしまいます。そこで東ロボで開発している認識エンジンでは、この待ち時間を限りなくゼロにできる独自システムを構築しました(特許出願済み)。

簡潔に説明すれば、認識処理をした結果を直接ロボットに送信するのではなく、観測データや把持の認識結果のデータを別のメモリに保存しておき、認識処理の実行中でも把持データをロボットに送信することができるようにします。これを実現するためのポイントは大まかに2点あります。1つは認識処理と把持データの送信処理はそれぞれ独立して並列処理するようにすること、もう1つは把持データを送信する際に、メモリに記憶された把持データをそのまま送信するのではなく、最新の観測データに基づいて現在使用できない解を除いた(差分した)形で送信することです。この差分処理は、シーンが大きく変化している領域を検出して、その領域に含まれる把持データを削除するだけなので、計算コストが非常に小さく、ロボット動作への影響がほとんどありません。この処理のイメージ図を下図に示します。

このシステムによって、ロボットが認識待ちする無駄な時間をほぼゼロにすることができるうえ、常にシーンの変化をとらえて把持可能な解だけを送信するので、動画のようにドラスティックにシーンが変化しても安定してピッキングを継続することができます。さらに、この一連の処理は認識エンジンの内部で自動的に行われるので、ユーザはまったく意識することなくこのシステムの恩恵を受けることができます。

動画をご覧いただくと、認識できていたワークが突然シーンから消えるケースや、逆にワークが出現するケース、ほとんど空だった容器に大量にワークが投入されるケースなど、様々な状況に対してこのシステムが有効に機能することがお分かりいただけると思います。

今回は、シーン変化にロバストに対応できる認識システムについてご紹介しました。東ロボの3次元カメラSL40やピッキングロボットについてのお問い合わせは下記アドレスまでどうぞ。

trbe-sales[at]robotics.tokyo

それではまた。

触覚センサアレイを用いた物体の変形・滑り検知

こんにちは、トロボです。

今年の桜は早かったですね。東京ロボティクスのオフィスがある江戸川橋から早稲田にかけての神田川沿いは桜の名所になっていて、通勤途中に遠回りしてしまうくらい見ごたえがありました。

さて、今回は触覚センサアレイを用いた物体の変形・滑り検知のデモをご紹介します。まずは以下の動画をご覧ください。

グリッパの指先に搭載した触覚センサから得られる物体との接触情報を処理することで、柔らかい物体は潰さずに、滑りやすい物体は落とさずにピッキングできていることが分かると思います。

今後の自律ロボットのアプリケーションを考えると、身近なところではスーパーやコンビニ、食品・化粧品・医薬品といった三品産業の工場、EC向けの倉庫といった場所で、多種多様な物品を扱わなければなりません。ロボットにはそれぞれの物体を潰したり落としたりせずに、巧みにピッキングする能力が求められます。そのためには、触覚センサから得られるデータから物体の変形や滑りを捉えることによって、どの程度の力加減で掴めばよいのかを判断する機能が必要になります。

カメラ等の画像情報を使って変形や滑りを検知している研究[1]もありますが、目に見える範囲で商品を変形させない、滑らせない、という検知手法では、商品の美粧性を損ねるリスクがあります。力覚センサを使うことも可能ですが、物体とグリッパの接触面に分布して表れる変形や滑りといった現象に対して点で計測することになるので、きめ細かい変形・滑り検知が難しいと言えます。加えて、値段やサイズの問題もあります。そこで今回ご紹介する技術では、触覚センサのみを用いて目に見えない微細な変化を捉えることで、物体の変形や滑りを素早く検知するアプローチを採用しています。

変形は物体を掴むときに、滑りは持ち上げる時に生じます。言い換えると、物体とグリッパの爪が接触する垂直方向と接線方向にそれぞれの現象が起こりますので、各方向の接触情報を取得できるセンサが必要となります。今回は分布型3軸触覚センサ「uSkin」と呼ばれるものを使います。これは、3軸方向を計測できる触覚点が格子状に分布した形になっており、上述したような変形や滑りといった現象を各方向で捉えやすいものとなっています。下図に示すように、グリッパの指先に貼り付けるだけで済むなど、取り付けも容易です。

それでは、実際に触覚センサを使って物体を掴んでみましょう。すると、下図のように様々な物体との接触状態が見て取れます。強く掴むほど青い丸が大きくなり(Z軸方向)、左右(X軸方向)や上下(Y軸方向)に引っ張ると青い丸もその方向に移動していることが分かると思います。このように、uSkinは物体との接触状態を分かりやすく提示してくれるセンサとなっています。

図から、硬い物体を掴んだ時は物体の表面の形に合わせて触覚センサが反応していることが分かります。例えば、石鹸が触覚センサに触れる面は四角く広がっているように見えます。また、ゴルフボールそのものは球の形をしているため、触覚センサに触れると、点のような触れ方をしているように見えます。さらに塩の瓶は底が大きくなっている形状なので、触覚センサ上では三角形のように見えます。これらの物体を強く掴むほど、触覚センサ上にその物体の接触面の形が反映されるようになります。

これが、マヨネーズのような柔らかい物体ならどうでしょうか。緩く掴んでいる時は、触覚センサと触れている面が長方形のように見えます(下図)。しかし、さらに強く掴んでいくと、力が加わっている部分が上下に分離した見た目になります。これは、強く掴んでマヨネーズが変形した結果、変形して張り出した部分が触覚センサの端に表れるようになったものと考えられます。

次に、物体を掴んだ後、持ち上げる時の様子を見てみます。下図は、物体を持ち上げている最中に滑りが生じた際の触覚センサの出力値になります。

物体を掴んでから滑り落とすまでの様子が、グラフに表れています。初めは①触覚情報の波形が安定していますが、②初期滑りや部分滑りと呼ばれる状態が少しずつ発生します。ここでは目に見えて物体が滑っているわけではないですが、接触面を微視的に見ると、物体と触覚センサの相対変位がない領域と相対変位が生じる(つまり滑る)領域が混在し、前者の割合が減って後者の割合が増えていきます。その後、③接触面全体に渡って滑る領域のみになり、物体全体が目に見えて動く状態になります。グリッパから物体が抜け落ちるまで断続的に滑りが発生し、④抜け落ちて接触が無くなってしまっている様子が触覚センサ情報に表れているのが分かります。

これらの状態を検知するために、今回は機械学習の手法の一つである多層パーセプトロンを用いました。いわゆるニューラルネットワークと呼ばれるものです。下図のように、多層パーセプトロンに触覚情報を与えて学習を行うことで、触覚情報に表れる物体の変形や滑りといった様々な現象を1つの検知器で処理することが可能になります。

この変形・滑りを検知するシステムを用いたグリッパによる物体把持の様子が以下の図になります。(a) 変形を検知するとグリッパが止まり、それ以上潰さないようになっています。(b) 滑りを検知すると、落とさないようにするためにより強く掴むようにグリッパが動きます。(c) ロボットアームを用いた場合でも同様に、変形・滑りを検知し、持ち上げることができています。こちらでは多層パーセプトロンの学習に使っていない未知の物体のピッキングを行いました。十分に変形や滑りの様子を学習することで、触覚情報だけでも未知の物体を潰さず・落とさず持ち上げることが可能になっています。

今回は変形と滑りの検知について説明しました。触覚を使った研究事例はここ数年で再び注目され始めており、ロボット系の国際会議で多く取り上げられるようになりました。産業への触覚センサ導入にはまだ課題は多くありますが、少しずつ導入事例が増え、触覚センサならではの課題解決ができていくのではないかと思います。

それではまた。

[1] S. Cui, R. Wang, J. Wei, F. Li and S. Wang, “Grasp State Assessment of Deformable Objects Using Visual-Tactile Fusion Perception,” 2020 IEEE International Conference on Robotics and Automation (ICRA), Paris, France, 2020, pp. 538-544.

世界最高速!? 1600pick/hourの唐揚げピッキング

こんにちは、トロボです。

本記事では、3/9-12に開催の展示会FOODEX JAPAN2021に出展する唐揚げピッキングロボットを、展示会に先駆けてご紹介します。まずは動画をご覧ください。

タクトタイムは2.2~2.7秒となっており、1時間当たり最大1600個をピッキングできる計算です。バラ積みピッキングのデモとしては他に類を見ない速度と言えます。また、実際に1500回ピッキングさせた実験での成功率は98.5%と、速度だけでなく正確性も兼ね備えています。

ロボットシステムの構成は下記の図のようになっています。

今回は動作速度を重視したピッキングを実現するために産業用ロボットを使用しています。産業用ロボットには三菱電機のMELFA RV-4FRL、3次元カメラは自社製のSL40、エンドエフェクタはpiab社のソフトグリッパを採用しています。

今回のシステムでは、ロボットの動作はメーカ純正のロボット言語(MELFA Basic VI)でプログラミングされています。三菱電機のロボットコントローラCR800には外部機器と通信する機能が搭載されているので、それを用いて認識処理PCと連携しています。認識処理PCはロボットコントローラから認識実行指令を受信したらSL40に計測指令を送信、計測結果を受け取って唐揚げの認識処理を実行してロボットがとるべき把持姿勢の計算結果をロボットコントローラに送信します。

ここで、ロボットと3次元カメラの位置関係が厳密に分かっていないと正確な把持姿勢を計算することができません。ロボットと3次元カメラの位置姿勢の関係を取得するための校正作業、いわゆるハンドアイキャリブレーションが必要です。そこでロボットにマーカーを持たせていろいろな姿勢を取らせ、3次元カメラSL40でそれぞれの姿勢における画像を撮影します。

ロボット位置姿勢と、そのときのSL40から見たマーカーの位置姿勢とを紐づけて記憶しておき、最適化計算によって誤差最小となる3次元カメラとロボットの相対位置姿勢を推定します。今回のシステムでは20枚分の撮影データを用いました。計算されたキャリブレーション結果は認識処理PCの内部に保存され、把持姿勢の計算の際などに使用されます。

なお、この「ハンドアイキャリブレーション」は呼び方が諸説あり、「ロボットキャリブレーション」と呼ぶこともあります。「ハンドアイキャリブレーション」は海外で比較的よく使われる呼び方で、「(ロボット)ハンド」と「アイ(=カメラ)」のキャリブレーションを意味します。したがって、今回のようにカメラをロボットハンドではなく環境に固定設置した状態でのカメラとハンドのキャリブレーションも、「ハンドアイキャリブレーション」と呼んで差し支えありません。

ただ一方で、日本国内ではハンド手先にカメラをつけた状態を「ハンドアイ」と呼ぶこともあり、混同した状態で議論を続けると誤解を招くこともあります。この話題が出たときには双方で定義を確認すると良いでしょう。

さて、これで把持姿勢が計算できるようになりましたので、Torobo Armで唐揚げピッキングをした時と同様に、Deep Learningで唐揚げを切り分けて認識し、ぶつからない把持姿勢を探索します。Deep Learningの入力はカラー画像(下図の左)、把持姿勢の探索は主にデプス画像(下図の右)を用います。

Deep Learningの認識結果を下図の左に、把持姿勢の探索結果を下図の右に示します。左図の画像の中で、緑の輪郭は信頼度高く唐揚げを切り分けられた結果、赤の輪郭は形状がいびつだったり信頼度が低かったりした結果です。右図の画像の中で緑の三又マークがピッキング可能な姿勢、オレンジは周囲とぶつかってしまうのでピッキングに失敗する可能性の高い姿勢、赤はハンドを挿入できない領域(例えば箱のふちの部分)にかかっている姿勢を意味しています。単なる赤丸は、画像の範囲外にかかってしまうなどの理由で探索自体ができなかった唐揚げです。

なお三又マークなのは、使用しているpiabのソフトグリッパが3本指だからです。三又の先端の四角がそれぞれの指が挿入される位置を示しています。緑色の探索結果は指先がきちんと隙間に入っていることが確認できます。

今回ご紹介した世界最高速のピッキングロボットを直接ご覧になりたい方は、幕張メッセで開催予定の展示会「FOODEX JAPAN 2021」(2021/3/9-12)にぜひお越し下さい。

唐揚げピッキングロボットや、3次元カメラSL40についてのお問い合わせは下記アドレスまでどうぞ。

trbe-sales[at]robotics.tokyo

それではまた。

日本がロボット大国というのは本当か?

こんにちは、トロボです。
今回は技術面ではなく社会面で記事を書いてみようと思います。

当社は事あるごとに「ロボット大国日本の牙城を守る」と宣言していますが、そもそも日本が本当にロボット大国なのか(だったのか)が気になり、ロボット系の2大カンファレンスであるICRAとIROSにおける主要国の論文採択数について調べてみました。

以下の図は、IEEE Xploreの1990年以降の公開データから、ICRAとIROSの予稿集に採録された論文の第一著者の所属機関が属する国を年ごとにカウントした結果です(見にくくてすみませんが、バーの一番下の水色部分が日本です)。

ICRAに関しては、米国中心だったものを途中日本が追い上げ、今は世界の多くの国が参加する大規模な国際会議になっていることが分かります(それでも米国は圧倒的に強いですが)。IROSは福田敏男先生(名古屋大学名誉教授;2020 IEEE President)が立ち上げられた会議なので最初から日本人が多く、しばらくは日本が最大の論文数を誇っていましたが、現在はICRA同様に世界的な会議になっています。ちなみに、福田先生は37歳の時、東京理科大の助教授時代に本会議を立ち上げられたとのことで、そのバイタリティたるやIEEEの会長まで上り詰めたのも頷けます。

ここで、各国のロボット研究の趨勢を見やすくするため、ICRAとIROSのデータを足し合わせてみます(下図)。

こうしてみても、2010年ごろまでの日本は経済規模が倍以上のアメリカと互角の論文数であり、かなり勢いがありました(論文の引用数などの重要性は加味していませんが)。研究という点に限ってですが、この時期までの日本はまぎれもなくロボット大国だったと言えます。

しかし、図を見て分かる通り、2010年以降は凋落してしまったと言わざるを得ません。衰退の一番の要因は人口のボリュームゾーンである団塊ジュニアが40歳前後からマネジメント層に移行してきたからと推察しますが、それにしても落ち幅が大きすぎます。他の要因として、大学では例えば、研究以外の業務負担の増加、雇用条件・仕事環境が民間と乖離(それによる離職)、ロボット分野の成熟に見合わない過小な研究費、英語教育の失敗、これらの理由で優秀な留学生が日本に来ない、等々が考えられるかもしれません。大企業においても、硬直化した組織における価値が不明確な業務や、コンプライアンスと称したモチベーションをくじく仕組みなどで、生産性の低下は同様かと思います。

いずれにしても、少子化が進み各人に能力を最大限発揮してもらわなくてはならない中で、それと逆行して大学や大企業が窮屈になりすぎているように思えます。そうすると、結論ありきに聞こえるかもしれませんが、大胆な資金配分と自由闊達な職場環境で若者の力を最大限引き出せるようなベンチャー企業に期待するしかありません(それで論文数が増えるかは別ですが…)。大学はシーズ技術の創出と0→1を立ち上げるためのインキュベータとして、大企業は資金とリソースを提供することに加えて出口の一つとしてベンチャー企業を支援してもらえれば、論文はともかくとして新技術開発に関しての生産性は維持できるのではないかと思います。

長くなりましたが、学術の世界ではもはや日本はロボット大国ではないと言わざるを得ません。それでも産業用ロボット(従来の教示ベースの多関節ロボット)では日本勢がシェアNo.1を誇っているようですが、協働ロボットやサービスロボットなどの新しいロボットでは出遅れている感が否めません。そこで、自由度が高く挑戦的なロボットベンチャーによって、地位が揺らぎつつあるロボット大国日本の牙城を守りましょう、という結論です。当社もその一助になればと思っていますので、引き続きご支援のほどお願いいたします。

Torobo Armによる唐揚げピッキング 第3回

こんにちは、トロボです。

本記事では前回に引き続き、ToroboArmによる唐揚げピッキングデモをご紹介します。第3回となる今回は、デモで使用している3次元カメラについての解説です。まだご覧になっていない方もいらっしゃるかと思いますので、唐揚げピッキングのデモ動画を再掲します。

ピッキングの直後、山積みになった唐揚げ周辺に一瞬だけ赤い光が照射されている様子がお分かりいただけると思います。この赤い光を照射しているのが、今年1/15にプレスリリースされた東京ロボティクスの新製品である3次元カメラTorobo Eye「SL40」です。

3次元カメラ Torobo Eye 「SL40」

SL40はロボットに搭載することを想定して設計された、手のひらサイズの小型3次元カメラです。計測方式は、プロジェクタが照射するパターン光をカメラで撮影し、撮影画像を用いて3次元計測を行うアクティブステレオと呼ばれる手法です。アクティブステレオの中でも明暗からなるストライプ(縞)などの幾何学模様で設計されたパターンを投影する手法はStructured lightと呼ばれ、安定性と計測精度のバランスが良いことからロボット向けの3次元カメラによく採用されています。ちなみに製品名のSL40はStructured lightの頭文字からとっています。40はカメラとプロジェクタ間の距離(いわゆる基線長)を示しています。

パターンを照射している様子を下図に示します。被写体は同じく唐揚げの食品サンプルで、幅の長さを変えたストライプ模様を複数種類照射した例になります。赤い色になっている部分がストライプの明暗のうちの明の部分にあたります。このような画像を複数枚用いることで被写体を3次元的に計測することができます。

唐揚げにパターンを照射している様子

実際に山積みされた唐揚げを3次元計測した結果(デプス画像)を下図に示します。唐揚げの微細な凹凸まできれいに計測できていることがお分かりいただけると思います。SL40は未加工の計測データでも十分きれいですが、今回はピッキング向けの認識処理のために計測信頼度の低い部分をカットする処理を施しています。例えば唐揚げの輪郭部分のような曲面や、カメラの光軸に対して浅い入射角になっている平面は反射光が弱くなりますので、そういった計測誤差が大きくなる可能性があるからです。

山積みされた唐揚げのデプス画像

計測データは提供SDK(Python)もしくは付属S/Wで取得することができます(C++対応のSDKは現在準備中です)。S/Wイメージおよび計測データの例は下図のとおりです。S/Wはシンプルな作りで、カメラとの接続やパラメータ調整が簡単にできるようになっています。さきほどご説明した、信頼度の低い計測点をカットする処理等の後処理もSDKに含まれています。もちろんGUI上でも、後処理に関係するパラメータを変更しながら計測データの変化を確認し、最適な調整することができます。

デプス画像もしくは3D点群に注目してください。薄い定規の段差もはっきり計測されていることがご確認いただけるでしょうか?金属や樹脂などいろいろな材質、色の物体でも欠損なく計測できており、極めて小型の3次元カメラでありながらもSL40は高い計測品質を有していることが分かります。

S/Wイメージ
取得データ(上:デプス画像、左下:カラー点群、右下:3D点群)

こちらはM2ネジからM6ネジまでサイズの違うネジを370mmの距離から計測した結果です。M2ネジのネジ部はギザギザしているうえにとても細いので計測が難しいのですが、3D点群を見るとしっかり計測できていることが分かります。しかもこのデータでは黒いネジと光沢のあるネジを同時に計測しています。通常はこれだけ対象物の表面状態が異なるとどちらかのデータが取れなくなってしまいがちですが、黒い物体も光沢の物体も両方とも計測データが取得できています。SL40はダイナミックレンジも広い3次元カメラなのです。

ねじの計測結果(上:カラー画像、左下:デプス画像、右下:3D点群)

さて、SL40の最大の特長はロボットアームに搭載するのに最適な設計であることです。460gという極めて軽量なカメラヘッドで、単に小型というだけでなくロボットアームの手先に取り付けたときにロボット動作の邪魔になりづらい形状になっています。成人男性の手の幅が80~90mmですので、まさに手のひらサイズの3次元カメラと言えます。

SL40の外形寸法

さらに、SL40の視野は筐体底面よりも上方向に広がるようにしているため、撮影画像にエンドエフェクタが写りこみづらくなっています。他社製品のほとんどはカメラ筐体の正面方向と視線方向とが一致しているので、ロボットの手先に取り付ける場合には少しオフセットして取り付けるなどの対処が必要になります。

SL40の視野イメージ

しかしアームからカメラが離れるほど、アームを動かしたときにカメラが他の物体やアーム自身と衝突しやすくなって好ましくありません。体積的にはSL40に近いサイズの製品もありますが、ほぼすべての製品は横長の形状になっているため、アームからはみ出した部分が周辺と干渉しやすく、どのような動作をさせるにも注意を払う必要があります。下図のとおり、横長形状の3次元カメラと比較してみると、SL40がいかにコンパクトであるかが分かります。

アーム取り付け時の比較(右図は視野調整によるオフセットも考慮)

さらに、ここまでコンパクトな筐体でありながら計測精度も高く、距離450mmから平面を計測した際の奥行方向のバラツキ誤差は0.06mmです。連続撮影モードでは最大10fpsでの高速な動作が可能、さらに計測データと同軸のカラー画像を取得できるので画像処理系AI技術と組み合わせやすいなど、うれしい機能が満載です。

データシート

ご購入や製品について詳しくお知りになりたい方は
Torobo Eye営業窓口:trbe-sales[at]robotics.tokyo
までお問い合わせください!

最後にお知らせです。2021年2月16日~18日の午前9:00~12:00に弊社内(東京都新宿区山吹町)にてデモを実施します。30分ごとのスロットでの時間予約(1社最大2スロット:1時間まで)を可能といたしますので、ご興味がある方は同様に上記Torobo Eye営業窓口までご連絡下さい。

また、幕張メッセで開催予定の展示会「FOODEX JAPAN 2021」(2021/3/9-12)にも出展する予定です。ぜひお越しください。

それではまた。

Torobo Armによる唐揚げピッキング 第2回

こんにちは、トロボです。
今年も残すところあとわずかとなりましたが、いかがお過ごしでしょうか?

本記事では、前回に引き続きましてTorobo Armによる唐揚げピッキングデモをご紹介します。前回と同じものになりますが、まずは以下の動画をご覧ください。取り出そうとしている唐揚げ(ターゲット)の周辺には複数の唐揚げがランダムに存在していますが、ターゲット以外に触れることなく取り出しができている様子がお分かりいただけると思います。

もしグリッパの爪先と周囲の唐揚げが衝突してしまったら、本物の唐揚げであればつぶれたり衣がはがれてしまったりして売り物にならなくなります。現場で稼働するロボットシステムとしてはスピードを追求しなければなりませんが、それ以前に丁寧にピッキングをすることが前提条件なのです。

この動画のようにターゲットだけを正確に掴んで取り出すためには、3次元カメラで得られるデータに基づいて、どこにグリッパ爪先を差し込めばよいのか判断する必要があります。そのためにはランダムに積まれた唐揚げの状態を把握する技術が重要になります。そこで第2回となる今回のテーマは、唐揚げの「認識」です。

ひとくちに認識と言っても、ピッキングという目的を達成するための手段としては様々なアプローチが考えられますが、今回は唐揚げ一つ一つを切り分けて認識するセグメンテーションという方法を採用しました。実際の検出結果では、唐揚げごとに輪郭情報として取得しています。下図のとおり、唐揚げ一つ一つの形状を捉えられていることが分かります。精度の低い検出結果が含まれることもありますので、検出時に一緒に得られる信頼度の数値によって把持候補にするかどうかを判断しています。

セグメンテーションにはディープラーニングの1種であるMask R-CNN[1]を利用しています。Mask R-CNNは、画像中のどこに、どの物体が存在しているかを画素単位で検出することができる手法です。画素単位で検出結果が得られるので、唐揚げの輪郭を正確に捉えることが可能になります。

Mask R-CNNの概要を大まかに説明すると、認識対象物が存在しうる領域(下図のRoIAlignに該当)を抽出するニューラルネットワークと、抽出した領域ごとにそこに写りこんでいる対象物が何なのか(下図のclassに該当)、どのピクセルが対象物なのか(下図の一番右の画像に該当)を推定するニューラルネットワークから成り立っています。余談ですが、Mask R-CNNは2020年12月26日現在で引用数9390件となっており、世界中に広く認知された手法であると言えます。

Mask R-CNNのフレームワーク(文献[1]より引用)

さて、唐揚げ一つ一つを切り分けることができましたが、それだけではピッキングすることはできません。唐揚げに対してどの位置・どの向きで把持するべきかを決めなければなりません。今回はシンプルに、唐揚げの重心位置を基準に、唐揚げを楕円形とみなしてその短辺を把持位置とします。下図における2つの赤い点が算出された把持位置を示します。

このようにターゲットの形状に基づいて把持位置を決めた場合、その把持位置にグリッパを持っていったときにターゲット以外の物体と衝突しないことが保証されません。そこで把持を実行する前に、衝突するかどうかの事前チェック(干渉チェック)を行います。干渉チェックでは3次元的な判定が必要になりますので、入力データとしてはデプス画像を用います。デプス画像は、その画像に写る物体の奥行きによって色合いを変化させて表現したもので、高さ情報、すなわち3次元の情報を含んでいるので干渉チェックに使うことができます。

把持可能と判定された青色の把持位置を見てみると、そこにはグリッパを差し込む隙間が空いており、干渉すると判定された赤色の把持位置を見てみると、隣接した別の唐揚げがある位置だったりしてぶつかってしまいそうなことが分かります。この青色の把持位置だけをターゲットとすることで、ぶつからずにピッキングができるようになります。なお今回の干渉チェックは独自でS/Wを作成したものですが、従来研究も多数あります。例えば文献[2]などが参考になります。

今回は唐揚げの認識についてご説明しました。第3回は年明け1/15頃にアップ予定です。内容は見てのお楽しみ。。。

今年も大変お世話になりました。
それではみなさま、よいお年をお迎えください。

[1] He, K., Gkioxari, G., Dollár, P., & Girshick, R. (2017). Mask r-cnn. In Proceedings of the IEEE international conference on computer vision (pp. 2961-2969).
[2] Domae, Y., Okuda, H., Taguchi, Y., Sumi, K., & Hirai, T. (2014, May). Fast graspability evaluation on single depth maps for bin picking with general grippers. In 2014 IEEE International Conference on Robotics and Automation (ICRA) (pp. 1997-2004). IEEE.

Torobo Armによる唐揚げピッキング 第1回

こんにちは、トロボです。大変お久しぶりです。

本記事ではTorobo Armによる唐揚げピッキングデモをご紹介します。以前のブログで不定形物ピッキングについてお話ししましたが、今回は少し違った技術アプローチになっています。

まずは以下の動画をご覧ください。アームが動きを止めることなくスムーズにピッキング動作を実行できていることが分かります。

この唐揚げピッキングシステムの概要について、本記事を含めて3回にわたってお送りします。今回はシステムについてご説明したいと思います。

構成としてはシンプルで、ロボットアームはTorobo Armを用い、Ubuntu環境でROSによってTorobo Armと3次元カメラを連携させています。3次元カメラはロボットの手先につけるのではなく、唐揚げの入った箱の直上に固定設置しています。手先にカメラをつけた場合、自在にセンシング位置を変更できるメリットがある反面、センシングの際にロボットアームを完全に停止させなければならないデメリットもあります。今回はなるべく素早いピッキングを実現するために、固定設置の運用でデモシステムを構築しました。手元がセンサ配線で込み合わないので、よりスマートに見えますね!

デモで使用しているのは本物の唐揚げではなく、樹脂で作られた食品サンプルです。一つ一つ実物から型を取り、職人さんが着色していますので、遠目からは本物と区別がつかないほど。実際の唐揚げに近づけるため、掴むと柔らかく変形するつくりになっています。

ちなみに食品工場の現場では人が両手で作業してタクトタイム(1回のタスク実行に要する時間のこと)が2秒、片腕あたり4秒で作業をしなければならないと言われています(注:筆者がヒアリングした特定の現場における大まかな目安)。唐揚げピッキングであれば、一つの唐揚げをピッキングして指定の場所に置く動作を4秒でこなす必要があるということになります。

今回のデモではタクトタイム4秒とまではいきませんが、動作シーケンスを高速化するような工夫をいくつか組み込んでいます。その一つが、前述した固定設置タイプの利点を生かした最適なタイミングでのセンシングです。手先カメラの場合は、把持する前にセンシングしてターゲットを認識、そこからようやく把持動作に移るためタイムラグが生じます。一方で、固定設置の場合は下記の図のようなタイミングでセンシングを行います。

アームが動いている最中にセンシングしているのがお分かりいただけるでしょうか?センシングして得られたデータ(カラー画像やデプス画像)は即座に認識処理モジュールに送られ、唐揚げの認識が行われます。もちろん認識処理を実行している間もアームの動作が並行して行われますので、把持したターゲットを搬送し終えてアームが戻ってきたときには、次のターゲットの把持位置まで計算完了しています。したがってアームの動きを止めることなく、即座に次のピッキング動作に移ることができる、というわけです。

さて、今回はTorobo Armと固定設置した3次元カメラを使った唐揚げピッキングデモにおける、動作シーケンスを高速化するちょっとしたテクニックをご紹介しました。本デモは、サイエンスライター森山和道氏が講師を務めたWebセミナー「飲食・食品業界におけるロボット活用の現状と展望」(2020/12/8開催)においてもご紹介いただいています。

第2回は唐揚げの認識処理についてご紹介しようと思います。
それではまた。

IROS2018報告

こんにちは、トロボです。

先日スペインのマドリードで開催されたIROSに参加してきましたので、ご報告します。

開会式にはスペイン王フェリペ6世がお出ましになり、スピーチをされました。そのため、当日の朝はセキュリティチェックのため会場入口に1時間の行列ができました。

開会式に引き続き、Boston DynamicsのMarc Raibert氏が講演を行いました。よいロボットを作るには「作って、壊して、直して」のプロセスが必要ということですが、完全に同意します。悲しいことに日本のロボット研究の多くは、予算の性質上、壊すという発想がない/できないように思えます。Boston Dynamicsは、DARPAやGoogleなどから潤沢な予算が入り、どんどん壊せたからこそ「バック宙」ができる二足歩行ロボットが完成できたのではないでしょうか。

さて、テクニカルセッションのほうは専門的すぎるので、企業展示で展示されていたロボットをいくつかご紹介します。

スペインのPAL Roboticsは研究プラットフォームロボットを提供する会社ですが、2年前のICRAで見たときと比較して、ロボットのラインナップが増え、事業規模も大きくなってきたようです。

 

右の写真のモバイルマニピュレータは既に100台売れているそうです。ひょっとしたら研究用ロボットの分野で世界一の地位を築きつつあるかもしれません。

モバイルマニピュレータはやはりホットトピックのようで、Clearpath RoboticsRobotnikのような台車メーカが、自社の台車と他社のアームを組み合わせて研究プラットフォームとして販売しています。

 

それと、もう一つのホットな分野はハンドです。既に知られているロボットハンドスタートアップであるShadow RoboticsSeed Roboticsの製品に加え、以下のようなハンドが展示されていました。

写真はqbroboticsが提供する、モータ1つで5本指をワイヤ駆動するコンプライアントハンドです。各指のグリップタイミングを機械的にずらすことで、自然な握りを実現しています。価格は7,500 ユーロとのことです。

以下はヨーロッパの公的資金で開発されたハンドで、Prensilia S.r.l.が販売しています。5個のモータで5本指を駆動するハンドです(親指2軸、薬指・小指で1軸連動)。産業用途も見据えてワイヤ駆動ではなくリンク機構にしているとのことです。

もう一つ、オークランド大学の研究成果に基づいて会社を立ち上げ中のハンドがありましたが、写真を撮り忘れました。いずれにしても、ロボットハンドが注目されている感があります。

新しい協働ロボットアームや、新しいロボティクススタートアップも立ち上がってきています。

 

 

iCubも相変わらず元気です。

腱駆動のアームも展示されていました。Korea Techとインターネット大手Naverの研究所の取り組みとのことです。高いバックドライバビリティ・コンプライアンスを持ち、ペイロード5kg、手先繰返し精度0.1mmで、長時間使用の耐久性も問題ないとのことです。ただ、組み立てが非常に大変らしく、産業展開の課題だそうです。

日本勢としては、常連の北陽電機さんやトヨタさん(HSR)に加え、アールティさんやラピュタロボティクスさんなどベンチャー企業も展示していました。

本学会の参加者は3000人以上に上り、ディナーもスタジアムを貸し切ってのものになりました。セッションが平行し過ぎていて、聞きたい発表をまったく網羅できませんでしたが、大変盛り上がった会議となりました。来年はマカオでの開催になります。

Deep Learning を用いた『不定形物ピッキング』のデモ その2

こんにちは、トロボです。

前回は『不定形物ピッキング』のデモの内容と、Deep Learning による認識の仕組みを紹介しました。そして、Deep Learning として ①野菜識別、②把持位置検出、③把持角度/把持深度検出 のためのEncoder-Decoder構造のCNNを使用していることを説明しました(下図)。

不定形物ピッキングデモの全体フロー

今回の記事では、これらのCNNのパラメータ(重み)の学習方法を紹介します。

①野菜識別用のCNNの学習方法

野菜識別用のCNNは、カラー画像を入力すると、各分類クラスの尤度を画素ごとに出力します。(なお、推論時には各画素で最も尤度の高いチャネル番号を出力するようにさらにArgMaxレイヤーを最終段に追加します。)

野菜識別

このような多クラス分類器としてのCNNにおいては、一般に出力画像と教師データとの差分を「交差エントロピー誤差」を損失として算出し、誤差逆伝搬させて学習します。(この手法の詳細に関しては多くの文献で解説されていますので、ここでは説明を割愛させて頂きます。)

ただ、この野菜識別のCNNの学習で最も大変な点は、教師データの作成の方です。一般的にはアノテーションツールを活用して、画素ごとに色分けした教師データ(上図の右)を作成します。

世の中のアノテーションツールを探したところ、効率的にアノテーション可能なツールは見つかりませんでした。というのも、世の中のほとんどのアノテーションツールは、マウスでクリックして閉多角形の頂点を描画し、その内部を指定色で塗るというものだったからです。閉多角形をきれいに作るには時間と神経を消耗します。そこで、弊社では独自の効率的なアノテーションツールを開発しました(下図)。

アノテーションツール

この独自のアノテーションツールは、カラー画像を読み込むと、色と位置が近い画素同士をセルまとめて網目状にするスーパーセル処理を行います。作業者は、塗りたい色を右側のテーブルから選び、マウスの左ボタンを押しながら対象のスーパーセルにマウスカーソルを当てるだけです。マウスカーソルに1度でも触れたセルは色が塗られるため、とても簡単かつ効率的です。また、複雑な形状の野菜も精確に塗ることができます。これにより、1つのカラー画像につき1分ほどで教師データを作成することができるようになりました。

②把持位置検出用のCNNの学習方法

把持位置検出用のCNNは、深度画像を入力すると、把持成功度の値(0.0~1.0)を画素ごとに出力します。そのため、このCNNはPixel-wiseの回帰問題として学習させます。

把持位置検出

教師データは、把持位置(=グリッパーの中心位置)に白い丸(=1.0)を1つ描画した画像として作成しました(下図の中央)。

把持位置の教師データ

ロボットアームで毎回試行すると時間がかかってしまうため、今回は深度画像から目視で把持位置を判定し、教師データを作成しました。このような教師データを多数作成しました。そして回帰問題を解くため、教師データとの差分を最小二乗誤差として算出し、誤差逆伝搬法を用いてCNNを学習させました。

ただし、この方法では上手くいきませんでした。その原因は黒画素の扱いにありました。教師データの白画素(=1.0)は「把持可能な位置」を意味しますが、黒画素(=0.0)は「把持不可能な位置」を意味する訳ではありません。正しくは黒画素は、把持可能か把持不可能か不明な画素を意味します。すなわち、教師データの黒い領域には、白い領域となるべき箇所が残っている可能性があるということです(上図の右の「理想的な出力データ」)。しかし、本来ロボットアームで把持を試行できるのは1か所しかありません(一度試行すると、野菜の位置関係が変化します)。そのため、複数の把持位置を白く塗った教師データを作るのは好ましくありません。

そのための工夫として、最小二乗法を損失関数に使用するのはやめて、下図のようなグラフの関数を損失関数として採用しました。この損失関数を使うと、教師データが白い画素の場合は誤差の重みが大きくなり、教師データが黒い画素の場合は誤差の重みが小さくなります。

mean_quantile_error

これにより、CNNは黒い画素よりも白い画素を優先的に学習するようになり、推論時には複数の白い領域を出力することができるようになりました(上図の右の「理想的な出力データ」がそれです)。

③把持角度・把持深度検出用のCNNの学習方法

把持角度・把持深度検出用のCNNは、深度画像を入力すると、把持角度(0~179)と把持深度(0~255)の2つの値を画素ごとに出力します。そのため、このCNNもPixel-wiseの回帰問題として学習させます。

把持姿勢検出

各画素が出力する2つの値は、色で表現すると下図のようになります。

把持角度・把持深度のカラー

教師データは、把持角度と把持深度に応じた色で丸を描画した画像として作成しました(下図)。もちろん、この丸の位置は把持した位置です。

把持角度・把持深度の教師データ

この教師データを用いて学習する際、注意しなければならないのは、「丸を描画した画素以外は学習で使用してはならない」ということです。というのも、黒い画素を学習に使用してしまうと「把持角度=0度、かつ把持深度=0mm」という誤った意味で学習してしまうためです。(②の把持位置のCNNの学習で黒い画素を学習に使用することができたのは、黒が誤った意味を持っていなかったためです。)

丸を描画した画素以外は学習に含めないように、教師データごとにマスクデータを用意しました、そして、学習時にはCNNの出力レイヤーにマスクデータを掛け合わせることで、マスクデータが黒(=0)の画素は損失が0となるようにしました(下図)。

把持角度・把持深度のマスク画像の使い方

これにより、正しい学習を行うことができました。

以上により、「ロボット × Deep Learning」の一例としての『不定形物ピッキング』のデモを実現することができました。

デモの動画を再掲します。

弊社は、このデモのような「ロボット × Deep Learning」の研究領域に、ロボットを開発・供給して貢献したいと考えています。(弊社が今回のデモで実装した Deep Learning はあくまで一例です。) この記事の内容が、皆さんの Deep Learning の研究のご参考になりましたら幸いです。

Deep Learning を用いた『不定形物ピッキング』のデモ その1

こんにちは、トロボです。

昨年末の国際ロボット展(iREX2017, 会期2017/11/29~12/2)にて、弊社では不定形物ピッキングのデモを行いました。この不定形物ピッキングのデモの内容を紹介します。

 

下の写真は弊社ブース全体の様子です。左側で不定形物ピッキングのデモを動かしました。

iREX2017 東京ロボティクスのブース全体の外観

不定形物ピッキングのデモの概要を簡単に説明いたします。

不定形物ピッキングのデモの内容

デモの全体像を下図に示します。

ピッキングデモのシステム

容器内に多数の野菜がバラ積みされており、ロボットアームと2本指グリッパーを使ってピッキングし、野菜の種類に応じてカゴに仕分けます。ロボットアームの先端にRGB-Dセンサ(Intel社製のRealSense SR300)を取り付けてあり、このセンサで容器の上方からカラー画像と深度画像を取得します。Deep Learning を用いてカラー画像と深度画像からから野菜の認識と把持位置を検出を行います。そして制御装置がロボットアームを動作させて野菜をピッキングし、野菜の種類に応じたカゴに仕分けます。

デモのビデオをご覧頂ければと思います。

デモの様子はいかがでしたでしょうか。このシステムを使用することで、バラ積みされた不定形物の野菜を自動的に仕分けることができます。

本デモを展示した目的

弊社では、「ロボット × Deep Learning」という組み合わせが今後の産業に一層貢献をもたらすと考えています。今回のデモは、このような「ロボット× Deep Learning」による一例をお見せすることが目的です。

従来のピッキングでは、テンプレートマッチングをベースとしたアルゴリズムが把持位置の検出に採用されてきました。例えば、従来ではボルトの深度画像(下図)に対してグリッパーのパターン(水色)を探索することで、把持可能な位置を検出するといったアプローチがなされてきました。

テンプレートマッチングによる把持検出深度画像に対してグリッパーのパターン(水色)を探索した結果

[1] Y.Domae, H.Okuda, et.al. “Fast Graspability Evaluation on a Single Depth Maps for Bin-picking with General Grippers”, ICRA2014.

しかし、このテンプレートマッチングをベースとした把持検出は、野菜のような不定形物の画像に対しては苦手です。その理由は、野菜は同じ種類であっても千差万別の形状をしており、『想定外』の形状によってマッチングにミスが生じてしまうからです。

そこで、Deep Learning の出番です。Deep Learning を使うことで、テンプレートよりも柔軟な特徴量を見つけ出し、より高精度で把持位置を検出することが可能となります。

さらに、Deep Learning は高解像度・高密度なデータではなくても粗いデータから答えを類推できるという特性があります。そのため、高価なセンサや複雑な画像処理が不要になる場合があります。

Deep Learning による認識の仕組み

今回採用した Deep Learning による認識の仕組みを紹介します。RGB-Dセンサからカラー画像と深度画像を取得した後、下図に示すようなEncoder-Decoder構造のCNN (Convolutional Neural Network) に入力します。Encoder層で次元を圧縮することで重要な特徴量だけを抽出し、Decoder層でタスクに合わせた画像データを生成することができます。このCNNはSegNet[2]を参考に実装しました。

Encoder-Decoder構造[2] Badrinarayanan, Vijay, Alex Kendall, and Roberto Cipolla.”SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation.” arXiv preprint arXiv:1511.00561, 2015.

デモのシステムの全体フローは下図のようになります。

ピッキングデモのアーキテクチャ

RGB-Dセンサからカラー画像と深度画像を取得した後、Encoder-Decoder構造のCNN を使用して野菜種別・把持位置・把持角度深度を表す画像を出力します。そしてそれらの画像を解析することで、野菜の種別と把持位置を決定することができます。

それでは、各CNNが出力する画像データについて紹介します。

①野菜識別のCNN

このCNNは、RGB-Dセンサから取得したカラー画像が入力されると、画素ごとに野菜の種類ごとの尤度(likelihood)を出力します。すなわち、画素ごとに多クラス分類問題を解くCNNとなっています。下図の出力画像は、画素ごとに最も尤度の高い野菜を、野菜に対応した色で描画したものです。

野菜識別

今回のデモに使用した野菜は以下の8種類です。似た色の野菜は学習がうまくいかないこともありました。

ピッキングデモで使用した野菜

各野菜のコード値に対する色分けを下図に示します。色分けはあくまで人が見てわかりやすくするためのものです。

野菜識別コード

②把持位置検出のCNN

このCNNは、RGB-Dセンサから取得した深度画像が入力されると、把持可能な位置(グリッパーの中心位置)を白、把持可能でない位置を黒として出力します。

把持位置検出

上図の出力画像の中で、白領域の面積が最も大きい箇所の中心座標を、最良の把持位置と決定します。

なお、グリッパーが野菜を把持する際は、UFOキャッチャーのように野菜の上方で水平面上の位置決めを行い、鉛直軌道で野菜を掴みにいくように動作させることとしています。そのため、鉛直上方から撮影した深度画像さえあれば、グリッパーが野菜を掴むことができる位置を、Deep Learning が判断することができます。(もし、グリッパーを鉛直軌道以外の複雑な軌道で動作させると、深度画像ではわからないオクルージョンの情報も Deep Learning に必要になってしまいます)

③把持角度・把持深度検出のCNN

このCNNは、RGB-Dセンサから取得した深度画像が入力されると、「把持の角度」と「把持の深度」を表すカラー画像を出力します。

把持姿勢検出

「把持の角度」とはグリッパーを鉛直上方から見た時の水平面上の回転角度のことで、値域は0~179となります(下図)。

グリッパーの角度

「把持位置の深度」とは、グリッパーで把持する位置の深度(単位はmm)です。

このCNNは、下図のように「把持位置の角度」を青色の強度で、「把持位置の深度」を緑色の強度で表現した画像を出力します。

把持位置の角度・高さのカラー表現

④画像解析

①~③のCNNの出力画像を基に、最良の把持位置を決定し、それに対応する把持角度・把持深度・野菜種類を判定します。そしてその判定結果を基に制御装置でロボットアームを操作することにより、野菜をピッキングして仕分けることができます。

 

以上、「ロボット × Deep Learning」の一例として、不定形物ピッキングデモの内容を紹介しました。

次回は、このデモにおける各CNNの学習方法を紹介します。