メカトロニクスと「つかむ」〜PFNの研究〜

教えて!PFN

このブログ記事は、朝日中高生新聞2021年2月28日号の連載「プログラミングでかわる!?私たちのミライ」第4回と合わせてお読みください。朝日中高生新聞に掲載された記事全文はこちら(転載許可取得済み)。

前編の「メカトロニクスってなに?」の続きの記事です。


前回のブログで紹介したように、「つかむ」という動作は簡単なことではありません

ロボットが様々な物を「つかむ」ためには、ソフトウェア(プログラム)とハードウェア(機械)のどちらも工夫が必要です。

PFNでは、実際にどうやってものを「つかむ」のか?について、ソフトウェアとハードウェア、両方の面から研究を行っています。

今回は、その研究を4つ紹介します。

1. 「つかみかた」をロボット自身が学ぶプログラム

つかみたい物がどのような形をしていて、どのようにつかめばよいか事前にわかっているとロボットは大助かりです。

そこでPFNでは、ロボットがつかみかたを試行錯誤しながら学ぶための方法についても取り組んでいます。

コンピュータの中の仮想世界(シミュレータ)にロボットとつかみたい物を配置して、ロボットに「これをつかんで」と指示をすると、ロボットがその物をつかむためにどうすれば良いのかを自分で学んで見つける、というものです。

もしその物をうまくつかめなかったらロボットは再挑戦しますし、物が重なっていてつかみたい物がよく見えなかったら、ロボットは物の山を崩してつかみやすくします。

図1 シミュレーション上での動作の様子

このように目的の物をつかむためにはたくさんの試行錯誤(トライアルアンドエラー)が必要です。

実際のロボットでこれを行おうとするととても長い時間がかかってしまいますが、シミュレータを使えば時間を大幅に短縮できます。PFNでは、こうした試行錯誤をたくさん同時に動かして短い時間で経験値を獲得できるようなシステムを、深層強化学習というプログラムを用いて開発しました。

ちなみに下に示した例では、5万種類ほどの物体を使って学習と評価を行っています。5万種類もの物を実際にロボット持たせようとしたらものすごい時間がかかってしまいますが、プログラムなら高速に行うことができます。この例では2日間で100万回以上試行錯誤をしています。

 シミュレーション上で学習した動作を実際のロボットに行わせた結果、62.5%の成功率を達成しました。この成果は有名なロボットの国際会議(IROS2020)で発表されました。

図2 実際の実験の様子  図3 目標となる物体の画像  図4 トレイの中の物体の様子

上の写真は、トレイから特定の物(緑色のテーブルのおもちゃ)をつかみ出す動作を学習している例です。 図4は、ロボットの手首に取り付けられたカメラの画像を示しています。ロボットはこのような画像を頼りに試行錯誤します。

図4の場合、テーブルは他の物(赤い物など)に隠れているため、これをどかした上で、持ちやすい位置にテーブルを動したり、テーブルの姿勢を変えてつかみやすくするといった動作を行ったりもします。

こうした動作も基本的にプログラムが自律的に試行錯誤しながら獲得していきます。

論文名:Reinforcement Learning of Targeted Grasping with Active Vision for Mobile Manipulators
(移動型ロボットのためのアクティブな視界を用いた目標の把持の強化学習)
論文:https://arxiv.org/abs/2007.08082
動画:

2. 数種類のセンサーをつかって、「何を、どんなふうにつかんでいるのか」を推定するプログラム

物をいきなりうまくつかもうとするのではなく、多少不安定でもとにかくまずつかんで、その後に手の中でなじむように動かす、ということを人はよく行います。このような操作をインハンドマニピュレーションと言います。

ロボットがこの動作を行えると、ものをつかんでから器用にあやつるといった高度な作業も行えるようになると期待されています。ですがロボットハンドで物をつかんでしまっているわけですから、手の中の物がどのような状態なのか、目で見ただけではわかりにくいという問題があります。

そこで、人と同じように目(カメラ)だけでなく触覚を用いることを考えます。性質の異なる複数のセンサー情報を使う場合、状況にあわせてどのように組み合わせるのかが重要ですが、人の手でこの調整を行うのは簡単ではありません

PFNでは、視覚(カメラ画像)と触覚(触覚センサー)を持ったロボットハンドが、各センサーの情報に対してどの程度重要かを自分で判断するプログラムを開発しています※。

実験を行った結果、物の形やつかんだときの状態に合わせてプログラムが自動的にそれぞれのセンサーからの情報を上手く使い分けることで、高い精度で物がロボットハンドの中でどのような姿勢になっているのかを推定することが確認できました。

この成果も有名なロボットの国際会議(IROS2020)で発表されました。

※センサーそれぞれの信頼性(信頼値)をプログラム(ネットワーク)が自己判断するエンドツーエンド(end-to-end)深層学習を用いたゲートを利用したマルチモーダル学習(deep gated multi-modal learning (DGML))というプログラムを開発しています。

図5  視触覚を用いた把持物体の姿勢推定

上はカメラ画像、下は触覚センサーの状態を示しています。(触覚センサーは、表面に描かれている点の並びが物との接触によってゆがむ様子をカメラでとらえることで、どのように接触しているのかを検知する構造の物を利用しています。)

物がロボットハンドの指(グリッパ)で隠れてしまう場合、カメラで得た画像はあまり変化しませんが、触覚センサーの方は大きく変化します。このことからプログラムは、触覚センサーの情報をより重視して物をつかんだ状態を推定します。

論文名:Deep Gated Multi-modal Learning: In-hand Object Pose Changes Estimation using Tactile and Image Data
(深層学習を用いたゲートを利用したマルチモーダル学習: 触覚と画像データを用いた手の中のオブジェクトの姿勢変化の推定)
論文:https://arxiv.org/abs/1909.12494
動画:

3. 自動的にロボットハンドの形を設計するプログラム

ロボットハンドを開発する上で難しいことの一つが、様々な形状のものをつかまければならないことです。

例えば、リンゴを傷付けないようにつかむには丸い表面にぺたりと指が接触する持ち方が理想的です。板のような薄くて堅いものをつかむには指先が精密に動いた後にしっかりと力をかけられることが重要です。長いものや大きなものをつかむためには指が大きく開く必要があります。

このように、物によって一番良い持ち方は違うため、それらを全部持てるようなロボットハンドはどんな形をしていれば良いか?という疑問には簡単には答えられません。

そこでPFNでは会社で開発したOptunaという最適化プログラムと、PyBullet*1というシミュレーションプログラムを組み合わせて、シミュレーターのなかで、与えられたいくつかの物をつかむのに最も都合の良いロボットハンドの形状を試行錯誤的に見つけるプログラムを開発しました。実際に計算によって得られた形状と、これを基に製作したロボットハンド(PFN Hand A1)の動作の様子を下に示します。

この成果も有名なロボットの国際会議(IROS2020)で発表されました。

図6 求められた最適なパラメータ下での把持シミュレーションの様子

図7 実際に製作したロボットハンド(PFN Hand A1)による動作例

論文名:A Tendon-driven Robot Gripper with Passively Switchable Underactuated Surface and its Physics Simulation Based Parameter Optimization
(受動的に切り替え可能なクローラーを指先に持った腱駆動ロボットハンドとパラメータ最適化による物理シミュレーション)
論文:https://arxiv.org/abs/2008.05777
動画:

4.「からくり」を活用したロボットハンド設計

たくさんのモータやセンサーをロボットハンドにのせると、それを動かすプログラムも複雑になりがちです。

そこでPFNでは、機械そのものが物をつかむのに適した動きをするような「からくり」を用いることで、できるだけシンプルなプログラムで操作可能なロボットハンドを開発しています。

このロボットハンドはモータ1個で指一本だけを動かす構造です。接触センサーなどを用いずとも、物にあわせてモータを回転させるだけでうまくつかめるようになっているので、プログラムも簡単です。

秘密は「なじみ機構」と呼ばれる「からくり」にあります。モータが回転し始めたときは可動指は伸びた状態ですが、途中で何かにぶつかると自動的に指先が曲がり始めてなるべく多くの点で物に接触するように働きます。そして物をつかんだ後はその姿勢を維持しようとするため、物の形を正確に測って関節の角度を調整する必要がありません。

もう一本の指(固定指)は動かず物を支える働きをします。この固定指の形は3Dプリンターである程度自由に作ることができます。例えばヘラ型にしてハンバーグをすくって壊さないようにつかんだりすることもできます。

図8 開発したロボットハンド(PFN Hand F1)。様々な形状の指に付け替え可能

図9 対象物毎の把持動作動作の様子。(左上)小径物把持 (右上) 小型角柱把持 (左下)大型角柱把持 (右下) 円筒把持

図10 ハンバーグを掴んでひっくり返す例

動画:

まとめ

ロボットが人の手の様に動いてくれるハンドを持っていたら、きっと活躍する場は大きく広がり、私たちの身近な環境でも働いてくれることでしょう。そのためには機械、電子回路、プログラムをバランス良く組み合わせて活用することが不可欠です。

逆にロボットが私たちの身近で働きやすくなるよう、私たちの生活環境も少しずつ変わっていくかも知れません。

例えば今のロボットにはつかみにくい丸いドアノブはバータイプに、食器はロボットがつかみやすくて滑りにくい形状に、といったように、人とロボット双方が共存するライフスタイルが当たり前のミライが来るかも知れません(実際、お掃除ロボットが普及したことで、ロボットが入り込める隙間を設けた家具が販売されるようになっています)。

その頃のロボットはどのような形になっているのかはまだ分かりませんが、PFNはそうした「ロボットがそばにいるのが当たり前のミライ」を実現するために、これからも頑張っていきます。

*1 E. Coumans and Y. Bai, “Pybullet, a python module for physics simulation for games, robotics and machine learning,” http://pybullet.org, 2016–2019.