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

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

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

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

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

今後の自律ロボットのアプリケーションを考えると、身近なところではスーパーやコンビニ、食品・化粧品・医薬品といった三品産業の工場、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

それではまた。

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回は唐揚げの認識処理についてご紹介しようと思います。
それではまた。

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の学習方法を紹介します。

知能ロボットのお話 その4

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

前回前々回の記事で、知能ロボットの重要な3要素である創発、立脚性、および身体性についてお話ししました。そこで示したロボットの例は、センサとモータの直結による反射系を利用するような非常に単純なものでした。今回は、知能ロボットの基本原理から逸脱することなくロボットを複雑化させることで、より賢いロボットを生み出す方法論(方向性)についてご紹介したいと思います。

左図にあるロボットは、これまでのスライドで多用してきたセンサ・モータ直結型のロボットに一工夫入れたものです。センサとモータの間に挟んだものを、ここでは仮にニューロン(神経細胞)と呼びますが、これはセンサ入力とモータ出力の間に、右図のような関数を持たせることに該当します。関数の形は何でも構いませんが、形を変えると振る舞いが変わります。

前のスライドにあるような閾値関数を持たせた時、何が起こるかと言いますと、このスライドにあるように「我慢」ができるようになります。つまり、光が遠いときはロボットが動かず、光がある距離以上に近づいた時、突然せきを切ったように動き出すという訳です。もちろん、これが我慢なのかどうなのかは外部観察者の解釈でしかないですが(これが知能の本質)、そういう解釈を生み出したというだけでも、ニューロンの介在によりロボットが少し知的(生物的)になったと言ってよいのではないでしょうか(参考文献)。

では、センサ・モータ間を単一のニューロンではなく、複数のニューロン(ニューラルネットワーク)で繋いだら何が起こるでしょうか? この場合、ニューロンの関数や閾値をどう設計すればロボットがどのように動くのか、もはや設計者にとっても予測がつかない領域になってきます。こうした場合の効果的な設計手法の一つとして、遺伝的アルゴリズムを用いてニューラルネットワークの接続形態(重み・閾値)を進化させるという方法があります。(これ以外にも、強化学習や教師あり学習などの方法があります)

これはStefano Nolfi教授が、ニューラルネットワークを遺伝的アルゴリズムで進化させることで、ロボットがゴミを拾えるようにした例です。上記の適応度関数を用いて個体(あるニューロンの重みを持つロボット)の振る舞いを採点し、点数の高いいくつかの個体を残し(淘汰と選択)、交配させ(ゲノムの一部交換)、これを何世代も繰り返すことで、ゴミを拾ってフィールドの外に捨てるような振る舞いを生み出すことに成功しました。当然ながら、ゴミというモデル(表象)は明示的に実装されておらず、ロボットの身体構造とニューラルネットワークを介したセンサ・モータ間の接続だけでゴミ拾いタスクを実現しています。

上で見てきたニューラルネットワークは、フィードフォワード型と呼ばれ、基本的には入力と出力の関係を静的にマッピングするものです。この場合、ロボットは、同じセンサ入力に対して同じモータ出力を返すため、反射的な行動しかできず、その知的レベルには限界があると言われています。そこで、ロボットをさらに賢くするため、再起結合を持つリカレント・ニューラルネットワーク(RNN)を活用する流れが生まれました。RNNによってロボットに「内部状態」を持たせることができ、言わば、経験に基づく行動や経緯(コンテクスト)を踏まえた行動が可能になる訳です。例えば、この論文では移動ロボットが充電エリアを行き来するようにRNNを進化させていますが、内部状態を表すニューロンに「場所」がコーディングされ、それと各種センサ入力を合わせ込むことで、適切な行動が生成されています。

フィードバック結合により現在時刻と次の時刻の状態をマッピング可能なRNNは、力学系を近似することができます。力学系とは、Wikipediaにあるように、「一定の規則に従って時間の経過とともに状態が変化するシステム」のことですが、その重要な性質として「アトラクタ」を持つことが挙げられます。とりわけリミットサイクルアトラクタは状態空間を周期運動するので、例えば、この論文この本にあるように歩行を生成できます。アトラクタには引き込み作用があるので、例えば二足歩行モデルを歩かせている間に身体の一部を少し押した際に、一旦よろけるも、すぐに元の歩行に自動復帰することができます。また、RNNを用いて移動ロボットに移動軌跡を学習させた例では、未知のスタート地点からの移動やセンサノイズの影響で道を外れた時などでも、アトラクタ・ダイナミクスにより学習済みの軌跡に引き戻されることを示しています。

RNNはアトラクタ以外にも面白い特徴を持っています。このスライドは、不肖トロボがこの論文を追試したものですが、1→0→(0 or 1)という3つ目の値が50%の確率でランダムに切り替わるシーケンスをRNNに学習させた結果です。グラフより、学習回数が少ないうちは1、0、 0.5にプロットがあるのが見てとれると思いますが、これはRNNが1→0→0.5という値を順番に出力しているからです。一方、学習回数が450回を超えたあたりから、1→0→(ランダム値)が出力されています(このランダム値は初期値鋭敏性を持つカオスによるものです)。ここで、3つ目の値に対し、0.5以上を1、0.5未満を0に変換するとします。こうすると、1→0→(0 or 1)という確率過程を再現できます。このようにRNNはカオスを利用することで確率過程を学習していることが分かります。

この実験が興味深いのは、非常に人間臭い別の解釈ができるところです。「1→0ときたら1と言え」と「1→0ときたら0と言え」という2つの指示は明らかに矛盾しています。これを人に対して強制したらどうなるか、間を取って1→0→0.5(小声)と誤魔化すことは大いにあり得ることと思います。しかし、強制者が「いや、そうじゃない」とさらに2つの矛盾した指示を強要し続けたらどうなるか、きっと頭が混乱して“カオス”になってしまうと思います。これはたまたまかもしれませんが、スライドのグラフの最後の方は、もはやカオスですらなく、よく分からない値を出力し、あたかも放心状態のようになっています。このようなRNNの振る舞いは、ベイトソンのダブルバインドの概念にも類似するものです。こうしたことから、RNNは非常に興味深いツールと言えます。

谷教授は、ハイデッガーの存在論やメルロ・ポンティの身体論、ウィリアム・ジェームズの意識論などを思想的背景に、RNNを用いた力学系アプローチによりロボットの意識にまで踏み込んだ議論をしています。このスライドは、谷教授の論文から一部引用したもので、細かい説明は省きますが、ニューロンの状態を示した(b)(c)のグラフを見ると、安定な状態と不安定な状態が繰り返し生じていることが分かります。安定状態は、移動による環境の見えの変化と、RNNによるその変化の予測が整合している状態を表し、不安定状態とはそれが噛み合わなくなった状態を意味します。谷教授は、この安定状態が不安定状態に変わる時、意識が立ち現れると言います。どういうことでしょうか? 以下、谷教授のアイデアに私見も交えて説明します。

自転車を例に取ります。脳、身体、道具(自転車)、環境は、それぞれダイナミクス(力学系として表現される動的過程や物理特性)を持っています。自転車で道路をスムーズに進んでいる時は、これら要素があるリズムをもって噛み合っている状態と言えます。この時、ある程度の速度が出ていれば、特に何かを強く意識することなく無心で自電車をこいでいるはずです(遅いとあれこれ考え事をしているかもしれません)。つまり、各要素がシステムとして一体化し、自己が透明になっている訳です。ここで、石を踏むなどしてバランスを崩し、転びそうになったらどうでしょうか。石や自転車、場合によっては冷や汗が意識に上ることになります。安堵感も意識するかもしれません。つまり、脳・身体・道具・環境のコーディネーションの突発的な崩れにより、主体(自己)と客体(自己以外)が分離する訳です。この瞬間に生じる「経験」が、原初的な自己意識と考えられます。自分を自分と意識するような自己参照的な自己意識に至るまでには、何か追加の要素が必要かもしれませんが、この議論には一定の説得力があるのではないでしょうか。

話は少しそれますが、「考え過ぎ」や「悩み」というのは、脳(アタマ)だけが空回りして環境のダイナミクスに結合していない状態と言えます。上の議論で言うと、自己が現れ過ぎていている状態です。禅や瞑想、マインドフルネスを実践するということは、要は世界と一体化(心身統一)して、自己を透明化するということです。これはジョギング、釣り、掃除、草刈りなどでも同じで、無心になって対象に向き合うことで禅と同じ効果が得られます。なぜこうしたことが悩みの解消に効果的かと言うと、環境や身体の変化は脳内意識の変化に比べ相対的に遅いため、アタマの中で空回りしているループ(悩み等)を緩やかかつシンプルにするからだと思います。比喩的に言うと、バイクのエンジンを空吹かしするとエンジンに負担が大きいのに対し、ギアとチェーンでタイヤと繋がり、タイヤが大地と噛み合って走っている時は、エンジンにとって快適というイメージです。

これまでの議論で、ニューラルネットワーク(特にRNN)がロボットの知能を生み出す有効な道具であることが分かりました。このスライドでは、ニューロン数(オーダー)を含めた人間とロボットの複雑性を比較しています。2003年時点のものなので、ロボットのニューロン数が少ないですが、深層学習が当たり前になった現在では、少なくとも画像認識部で10万個程度のニューロンが使用されていると思います。この記事によると、ニューロン数が最大の人工ニューラルネットワークでは1,600億個とのことなので、人間の860億個を超えたようです。ただ、ビッグデータによる認識に特化したニューラルネットワークと、これまで議論してきたようなsituateしたロボットは考え方が大きく異なるため、知能ロボットという文脈では単純に比較できないと思います。

これが最後のスライドです。チューリングテストをパスするようなロボットは当分出てこないと思いますが、知的で役に立つロボットは徐々に生まれることと思います。我々もそれを目指し、日々研究を続けています。

・・・

4回に渡って知能ロボティクスについて紹介してきましたが、いかがでしたでしょうか。15年前の古いスライドをベースに記事にしましたが、今振り返っても、本質は何も変わってないと感じます。むしろ、ここ15年で、身体性を活用し環境にsituateしたロボットがどれだけ生まれたのか。研究は着実に進んでいるようですが、大きなブレークスルーはなかったように思えます。このことは逆に、これから知能ロボティクスが再燃する可能性があるとも言えるのではないでしょうか。知能ロボットの基本原理に基づき最新の技術を適用した時、どのようなロボットが生まれるか、今後が楽しみです。

知能ロボットのお話 その1
知能ロボットのお話 その2
知能ロボットのお話 その3

知能ロボットのお話 その3

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

前回は知能ロボティクスを構成する3要素のうち、Emergence(創発)を紹介しました。今回は、残りのSituatedness(立脚性)とEmbodiment(身体性)をご紹介します。

Situatedness(立脚性)という概念に関し、知能ロボティクスの分野でも定義が混乱しているようにも思えますが、こでは「センサとモータを介した環境とのカップリング(結合)」とします。

ただし、その結合度合いは、このスライドにあるように密でなければなりません。知覚して行動して終わりではなく、行動の結果が知覚に影響を与え、その知覚の結果が次の行動を引き起こすというようなループが環境を介して常に回っている必要があります。

これは人間もsituateしているという一例です。人間が壁に向かって立っているとき、気づかないくらい壁を前後させると、無意識的に前のめり・後ろのめりになるという実験です。つまり「立つ」という行為は、単純に物が置いてあるのとは異なり、不断のセンサ・モータループに支えられた“積極的な行動”ということになります。

これは知覚のために行動を利用する例です。この実験は、振ることによって物の形を当てることができるというものですが、振り動作を行うことを通して慣性モーメントという不変項を知覚していると言われています。これはロボティクスの分野では「アクティブセンシング」と呼ばれ、ロボットの認識能力を向上させる手法として重要視されています。

ここで、触覚ならともかく、視覚は高次の認知機能が関わるので行動は不要だろうと思われる方もいるかもしれません。つまり網膜に映った像を解釈することで対象を認識するので、行動とは関係ないという見方です。しかし、それを否定する実験があります。これこれは行動を通して能動的に環境を見る猫と、ゴンドラに乗って受動的に環境を見る猫の発達を比較した実験ですが、可哀想なことに後者の猫は同じ風景を見ていたにも関わらず奥行きを認知できない猫になってしまったそうです。つまり、視覚の発達においても、行動との結びつきが非常に重要ということです。

ロボットの例はないのかと思われるかもしれませんが、ビヘイビアベースドロボットは最初から環境にsituateしています。

次にEmbodiment(身体性)についてお話しします。ここでのポイントは「身体の特性を活かす」ということです。皆さんが展示会等のデモで見かける多くの二足歩行ロボットは、言うなら「計算」で歩いています(物議を避けるためスライドは黒塗り)。どこに足を着けば転ばないのかを考え、そのための関節角度を計算し、モータに指令を送ることでロボットを歩かせています。その際、膝を伸ばしきってしまうと関節角度を得るための数式が解けなくなることから、多くのロボットは歩行中に常に膝を曲げています。また、これらロボットの関節はフリーで動かない(振り子にならない)ため、関節の正確な位置と速度の制御によってしか歩行できません。この時、モータは常に駆動しているので、スライドにあるようにエネルギ消費が大きい訳です。

一方、スライドの左の動画にあるPassive Dynamic Walker(受動歩行機械)は真逆の発想で設計されています。上の動画がWebに見つからないため、こちらを参照してください。脚(Leg)のダイナミクス(物理特性)と足(Foot)の構造、環境(坂の角度)の絶妙な組み合わせの中で、自然な歩行が生まれていることが分かると思います。ここにコンピュータやモータは介在していません。人間や生物の歩行も、身体のダイナミクスを用いるという意味では、こちらに近いと言えます。神経系で生成した制御リズムと脚の振り子の周期を調整しながら歩行しているものと考えられます。

ところで、脚・足・環境の相互作用で歩行が生まれることは、ある意味、先に述べたEmergence(創発)とも言えます。また、前回紹介したゴミ集めロボットは、センサがボディの斜め前についているという身体的な特徴を利用しているため、Embodimentして(身体性に基づいて)いるとも言えます。ゴミ集めロボットはセンサ・モータループを介して環境と結合していますので、当然Situate(立脚)しています。こうしたことから、創発、立脚性、身体性という概念は密接に関係していることが分かると思います。

もはや昔の話になりましたが、MITのLeg Labでは脚のダイナミクスを利用した歩行について研究を進めていました。その名もSpring Flamingoです。

Spring Flamingoは、運動の要所要所で制御をかけることで、消費電力を低く抑えることを実現しています。これは人間や動物の歩行(それ以外の動作)でも行っていることで、非常に効率のよい制御方法と言えます。よくスポーツで「肩の力を抜け」と言いますが、省エネ・高効率の運動とは、入れるべきときに力を入れ、それ以外は身体のダイナミクスを利用することを意味しています。

ちなみにMITのLeg Labは、Boston Dynamicsの創業者であるMarc Raibertも在籍していた研究所です。彼は当時ホッピングロボットを研究しており、それが今日のBoston Dynamicsの素晴らしいロボットに繋がりました。

今回議論してきた内容は、生態心理学(Ecological Psychology)の開祖であるJames J. Gibsonが提唱したアフォーダンス理論と非常に親和性が高いものです。Gibsonは、環境を無味乾燥な入れ物ではなく、生物に行動の可能性を与えるアフォーダンスで満ちているものと考えました。生物の行為は、自分が環境内を動いているのか環境に動かされているのか、その両方が真となるような、環境との密接なカップリングのもとに成り立ちます。この時、生物にとっての世界の「意味」や「情報」というものは、環境との相互作用という動的過程における変化するもの・しないものから見出されます。

Gibsonは「自己(意識)」については言及していないかもしれませんが、アフォーダンスの考え方をベースにすると、当然ながら自己も環境(およびインターフェイスとしての身体)と切り離せないものになるはずです。このように、アフォーダンス理論もまたデカルト的心身二元論を超えるものであり、本稿で紹介した知能ロボティクスの考え方と共鳴するものであることは明らかです。

・・・

既にお気づきの方も多いと思いますが、ここで紹介した内容は、Rolf Pfeifer教授とChristian Scheier博士が著した「知の創成」をベースにしているところがあります。この本は私の青春時代の研究活動におけるバイブルでもありました。発刊から20年以上経ち、徐々に古典になりつつありますが、知能ロボティクスの分野においては今でもなお必読の書と言えます。

次回は、知能ロボットの3要素である創発、立脚性、身体性というコンセプトを維持したまま、ロボットの知能をさらに高度化する方法についてご紹介します。

知能ロボットのお話 その2

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

前回の記事では、ビヘイビアベースドロボティクスについて解説し、人間の認知過程を人間の言葉・世界観(モデル)で実装していないにも関わらず、知的な振る舞いを実現できることを示しました。このことは、知能(精神、意識、心と言い換えても良い)が身体や環境から切り離された次元に存在するという心身二元論的な認知科学を超えて、より客観的で本質的な原理にアプローチできる可能性を示唆するものでした。それが「サイエンスとしてのロボティクス」という領域を切り開くことになった訳です。

エンジニアリング(工学)とサイエンス(科学)の定義はいろいろあるかもしれませんが、ここでは前者が「役に立つことを重視する」のに対し、後者は「本質的な原理に迫ることを重視する」と大雑把に捉えて下さい。今回はサイエンスとして、知能の本質について議論を深めたいと思います。プレゼンシートは前回のものからの続きです。

それでは、ロボット(人間などの生物も含む場合「エージェント」と呼ばれる)における知能の本質的な原理とは何でしょうか。ここでは、Emergence(創発)、Situatedness(立脚性)、Embodiment(身体性)という3つキーワードを紹介したいと思います。以下のシートでそれぞれの考え方について具体的に見ていきます。その他、Adaptability(適応性)やAutonomy(自立性)など、重要な概念もありますが、ここでは議論しません。

まず「創発」という概念について紹介します。Wikipediaでは次のように定義しています。

創発(そうはつ、英語:emergence)とは、部分の性質の単純な総和にとどまらない性質が、全体として現れることである。局所的な複数の相互作用が複雑に組織化することで、個別の要素の振る舞いからは予測できないようなシステムが構成される。

要は、要素同士が局所的に相互作用したとき、思いもかけない全体の振る舞いが立ち現れるということです。上の「Simonの浜辺のアリ」の例では、アリが持つ「障害物があったら右か左に避ける」という単純な行動ルールが、浜辺の複雑な地形と相互作用することで、いかにも知的な移動軌跡が生まれています。「なんだそんなことか」と思われる方もいるかもしれませんが、馬鹿にしてはいけません。大事なことは、環境の作用を無視して知能を考えることはできないということです。

この例は、走光性の単純なセンサ・モータ接続を持ったロボットが、それが故にデッドロックに陥ってしまっている仲間を助けるというものです。はじめに上方にいるロボットが下の2台のロボットの光に引き寄せられて動き出し、最終的にそれらにぶつかり、それによってデッドロックが解れます。それを傍から見ると人助け行動をしているように見えるという訳です。当然ながら、そのようなプログラムはどこにも書かれていません。

この研究は既に20年も前のもので、Webで動画が見つからず残念なのですが、その代り同様の例を以下に示します(別な講演で使用したプレゼンシートから転載)。

これは以下の論文にあるゴミ収集ロボットです。

M. Maris, R. Boeckhorst, “Exploiting physical constraints: heap formation through behavioral error in a group of robots”, IROS 96.

ロボットの構造は単純化すればこのようになっています。では、なぜこのようなセンサ・モータ直結のロボットでゴミが集められるのでしょうか?

答えは、単に正面が見えないからです。正面が見えないが故にゴミを押し続け、そのうちゴミが集まっている場所に出会うと斜め前に付いているセンサが反応してその場を去り、また偶然正面にゴミがあると押し続け、、、それを続けるうちにゴミのクラスターを形成してしまうというものです。

上記の例はいずれも、「他者を助ける」や「ゴミを認識し集める」などといった行動ルールや、他者やゴミ、環境のモデルがプログラムとして書かれているわけではなく、ロボットと環境の相互作用により行動が創発している例と言えます。

創発の最後の例は、有名なBoidsという鳥の群れのシミュレーションです。Boidsでは、個々の鳥に上記①~③の単純な力ベクトルを作用させることで、極めて自然な群れの振る舞いを実現しています。上記リンク内の動画にもあるように、これら単純なルールのみで、群れが半分に別れて障害物を回避し、その後にスムーズに一つの群れに戻ることができています。最近の事情はよく分かりませんが、昔は映画内の鳥の群れのCG制作などに使われていたようです。

上のBoidsは不肖トロボが昔作成したものです。Javaアプレットがブラウザ非対応になったので、Javaアプリケーションに作り変え、さらに動画にしてみました。上記①~③を制御するパラメータを変化させた際に、群れの挙動が変わっていることが分かると思います。なおこのBoidsは勢い余った時には地面に張り付くようになっています。1秒以内のランダムな時間張り付くのですが、その後急ぎ仲間を追いかけるような挙動が生まれていることが分かります。単に群れの中央から離れるため、上記②の力ベクトルが大きくなるだけなのですが、慌てて追いかけているような挙動が創発しています。

上でいくつかの創発の例を見てきました。どの例も、人間が人間の見方で分析した知能をトップダウンで書き込んでいるのではなく、要素同士(環境とロボットの身体構造、鳥同士の単純なルール)の相互作用の中でボトムアップに知的な振る舞いが引き起こされていることが分かると思います。前回の記事における整理方法を用いると、前者がモデルベースド知能、後者がビヘイビアベースド知能ということになります。大事なことは、知的な振る舞いを生じさせる内部メカニズムは、必ずしも人間の認知・分析結果とは一致しないということです。

別な言い方をすると、知能の創発というものは観察者なしでは起こり得ません。物理的には、ある身体構造を持ったロボット(エージェント)が環境と何らかの相互作用をしているだけであり、知能とはそれを外部から見る観察者が、ある意味勝手に解釈するものだからです。これを突き詰めると、「そもそも知能(意識や心)は実在するのか?」、「それを観察している自分自身(自己意識)とは何なのか?」という深淵な問いにも繋がってきます。ただ、これは深すぎるので、ここで議論するのはやめましょう。

・・・

今回は知能ロボティクスを構成する3要素のうち、Emergence(創発)を紹介しました。だいぶ長くなりましたので、Situatedness(立脚性)とEmbodiment(身体性)に関しては次回ご紹介したいと思います。