知能ロボットのお話 その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(身体性)に関しては次回ご紹介したいと思います。

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

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

先日、バックアップファイルを整理していたとき、今から15年前(2003年)にある地域コミュニティでお話した時のプレゼンシートが出てきました。題して「知能ロボティクスのお話」です。情報は古いですが、考え方としては現在でも通じるものですので、このブログで紹介させていただきます。なお、画像等に関し出展が定かでないものがありますので、著作権者がお気づきになった場合はご指摘いただければ幸いです。

・・・

話は若かりし頃の私がROBODEX(ロボットの大型展示会)に参加したところから始まります。2000年台初頭は、今のAIブームのようなロボットブームであったため、各社斬新なロボットを開発し、会場は非常に賑わっていました。

特にソニーさんやホンダさんの人型ロボットは、当時の先端技術の粋を集めたもので、これからのロボット社会の到来を感じさせるに十分なインパクトがありました。

ただ、未来のロボット社会を純粋に夢見る一般の方とは違い、設計者・研究者は、ロボットが人間と同じように振る舞うために超えなければならないハードルが数えきれないくらいあることを十分に理解していました。その中でもとりわけ「知能」の実現が大きな課題であると認識していました。

ではロボットにおける「知能」とは何でしょうか。この図は、センシング能力(知覚)と行動能力(働きかけ)が必須であることを示しています。センシングのみでは単なるセンサであり、行動(アクチュエーション)のみでは単なる機械であるため、知覚と行動を通して間断なく外界とやりとりすることで初めて知能ロボットと言える訳です。

ここでロボットにおける知能の歴史を確認します。ロボット自体の歴史は、日本のカラクリ人形やヨーロッパのオートマタ(機械人形)からの流れもあると思いますが、こと「知能」という側面では、デジタルコンピュータに端を発していると言ってよいと思います。コンピュータの応用により後述する古典的人工知能が生まれ、それを頭脳にすることでモデルベースドロボットが生まれました。そして、そのアンチテーゼとして登場したのがビヘイビアベースドロボットです。

※本記事の最後に述べるように、モデルベース/ビヘイビアベースの区分は現在ではあまり意味を持たなくなっています。ただ、その考え方を整理しておくことは、知能の本質に迫るためには重要です。

デジタルコンピュータを頭脳とすると、そこで扱う記号とその演算から「知能」が成り立つと考えるのは自然なことです。これは、単語と文法の構造から言葉を研究する言語学(特に普遍文法が言語の背景に存在するというチョムスキー的な言語学)と類似するものがあり、一定の説得力を持っています。そのため、コンピュータ上の記号処理で知能を作ることが人工知能研究の中心的なアプローチになりました。これを「古典的人工知能」と呼びます(記号主義AIとも言います)。

こうした流れから、人と会話できることが知能とみなされ、対話プログラムELIZAのような成果が生まれました(エディタのEmacsにも遊び心で入っているようです)。映画「2001年宇宙への旅」で登場するHAL(人工知能コンピュータ)などは、人と会話するだけでなく最後は意志を持ってしまい、その脅威から人工知能という概念を普及させるのに大きな役割を果たしました。

※2003年頃の対話エンジンはチープでしたが、近年の発展はめざましく、膨大なデータを背景としたディープラーニングによる単語やフレーズのベクトル化、イメージデータと融合した意味理解などを活用し、もはや人工無能と笑えないレベルになっているように思います。

上述した古典的人工知能はコンピュータ上で動くため、コンピュータ(=脳)をロボット(=体)に載せようというのは極めて自然なアプローチです。また、コンピュータ上のプログラムを精神や心と考えると、「精神が体を動かす」ことになり、デカルト的心身二元論によってお墨付きを得ることになります。このような思想的背景から生まれたのがモデルベースドロボットです。モデルベースの設計では、ロボットに搭載されたコンピュータ内に世界のモデルや行動規範をプログラムとして“書き込む”ことで知能を実現します。

ここで、モデルベースドロボットに強烈なアンチテーゼを唱えた研究者がいます。後にルンバで有名なiRobot社や協働ロボットのRethink Robotics社を創立したMITのRodney Brooks教授です。Brooks教授は1980年台にビヘイビアベースドロボティクスを提唱し、ロボットを制御するコンピュータ内に「世界(モデル)」を記述するのではなく、センサ読み取り値に対する反射系の集まり(単純な動作パターンの階層的な切り替え含む=サブサンプションアーキテクチャ)で十分な知能が実現できるとしました。実際に、彼が発表した虫型ロボットGenghisは、モデル化が難しい環境を滞りなく進むことができました。

ビヘイビアベースドロボティクスでは、知能とはプログラムとして実装するものではなく、ロボットが環境とうまく相互作用する様子から観察者が見いだすもの、という立場をとります。この考え方は心身二元論を超えるもので、「知的な振る舞いに精神は不要」ということを意味します。そうすると、いったい人間の知能とは何なのか、心は実在するのか、などといった、より深遠な議論にも繋がってくる訳です。Brooks教授の論文を集めた「Cambrian Intelligence」は今読んでも非常に示唆に富んでいます。

ここで、モデルベースド/ビヘイビアベースドロボットの方法論の違いに関し、タスク実行の観点から議論してみたいと思います。上の例のように環境内をStartからGoalまで二輪のロボットを動かす実験を考えてみます。

このタスクを実行するロボットをモデルベース的に実装すると、ロボットにカメラを載せ、その画像情報から障害物を認識、その見え方を予め保持している環境地図(モデル)と比較することで自己位置を推定、自己位置とゴール位置から適切な移動経路を計画、そしてその結果に基づき車輪を回す、という処理を毎ステップ繰り返すことになります。

現在のプロセッサを用いれば、これを実行するのはたいして難しくないかもしれませんが、いずれにせよ計算量は少なくありません。また、環境地図を予め書き込んでしまっているため、環境の変化に対応するには地図を随時書き換える仕組みが必要になります(誰がいつどうやるのか、こちらのほうが今でも問題かもしれません)。

このように、モデルベース手法を用いると、言わば頭でっかちで、あまり融通がきかないロボットになりがちです。一方で、行動が目的達成のための全体計画にしっかり基づくため、最適な行動を採りやすいという利点もあります。

一方、ビヘイビアベースの発想でロボットをデザインすると、このようになります。センサ・モータ直結という考え方で、センサがアクティブになったときに、モータを正回転または逆回転させるのかを設計するだけになります。後は環境内で実際に動かし、よりスムーズに動くようにセンサの位置や数などの調整を行っていきます。

つまりビヘイビアベースドロボットは、ロボットの身体構造がそのままタスク達成のためのデザインになっており、非常に効率的な設計になっている訳です。一方で、大域的な目標達成計画を立てることが苦手であり、局所的な解(地図でいうと袋小路)に陥ることや、無駄な行動(行ったり来たり)が多く目標達成に時間がかかるという欠点もあります。

モデルベース/ビヘイビアベースの知能をグラデーションとして表すとこのようになります。特に説明は不要かと思います。

このスライドは誤解を生みそうですが、言わんとしていることは、コンピュータを頭脳としてロボットを動かす際には注意が必要ということです。コンピュータプロラム内のモデルは、往々にして人間が人間目線で整理した内容を、人間が分かりやすい形で記述されます。例えば、コンピュータ内において環境の地図はX-Y平面として描かれ、ロボットや障害物の位置はそこにおける座標として表現されますが、この記述は知能を実現する上で本当に妥当なのか、ということです。

本質的な知能にアプローチするには、人間による分析結果を実装するのではなく、ロボット自身がロボットの身体を使って世界のモデルを獲得するような設計にすべきです。対話を中心にコミュニケーションするロボットを例に取ると、設計者がロボット内に記述した単語がロボット自身にとってどういう意味を持っているか、おそらく何も意味のない記号になるはずです。例えばロボットが「熱い」という概念を本質的に理解し、発話の中に的確に組み入れるには、温度センサを持ち、かつ「熱い」ということが生命の危機(故障や破壊)に繋がるようなことでないと、人間と意味を共有できないのではないかと思います。

最近、ディープラーニングの文脈で東京大学の松尾豊教授が使う「子どもの人工知能」「大人の人工知能」という概念は、上記の議論に類似するところがあります。
http://www.soumu.go.jp/main_content/000400435.pdf (P.23)

これも大胆な割り切りのスライドですが、なかなか的を射ていると思います。設計者が人間の知能を分析した結果をそのまま実装するするのがモデルベースド知能、設計者がロボットなりの知能を発現させる内部メカニズムを構築するのがビヘイビアベースド知能と言うことができます。ただ実際は、これらをハイブリッドする手法や確率ロボティクスなどの中間的な手法もあります。確率ロボティクスは、ベイズ推定を用いることで、不完全なモデルしか持っていなくても逐次的に得られるセンサ情報から自身の状態をそれなりに推定できるという枠組みです。この方法は、ここ15年でSLAM(simultaneous localization and mapping)として確立され、工場内の自動搬送車などにも使用されるようになりました。

長々と議論してきましたが、実のところ、今やビヘイビアベースとモデルベースという整理の仕方自体があまり意味を持たなくなりました。現在のコンピュータは十分高性能で、データベースクラウドとも高速に繋がり、画像処理もFPGAやGPUで高速に実行できるようになっています。そのため、モデルベースドロボットが実世界で十分よく動けるようになり、ビヘイビアベースもモデルベースも目標とするタスクをよりよく遂行するための一手法として同列になったからです。ただ、ビヘイビアベースドロボティクスは知能の本質に迫ったため、「サイエンスとしてのロボティクス」という新しい領域を切り開くことになりました。次回からはそれについてお話ししたいと思います。

材料の話 チタン合金について

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

今回は材料についてのお話です。
ロボットではアルミ合金や鋼が使われることが多いと思いますが、ここではチタン合金について説明します。

チタン合金は文字通り、チタンを主成分とする合金です。チタンは鉄とアルミのちょうど間程度の比重で、金属の中でもトップクラスの非強度を持っています。さらに表面に酸化皮膜を作るため耐食性が良く、また熱にも強いという性質も持っています。
これらの特徴より、チタン合金は航空・宇宙機体をはじめ、スポーツ用品やメガネなど様々な分野で使用されています。特に航空機分野では、機体やエンジン部に多く用いられています。

そこで今回は、様々な種類のチタン合金とその性質について説明します。

純チタンの結晶構造は、低温域では六方最密構造(α相)ですが、882℃以上で体心立方構造(β相)になります。チタンにβ相安定化元素を加えていくと、常温でもβ相が存在するようになります。
常温でα相の割合が100%近いものをα型合金、β相の割合が100%近いものをβ型合金、また両者が共存するものをα+β型合金など呼びます。

以下にそれぞれの合金の特徴を挙げます。

α型合金

  • 高温強度・耐食性・耐熱性・クリープ特性などに優れる。
  • ヤング率がβ型よりも高い
  • 加工性が悪い
    • α型合金は、高温でも低温でも安定した強度を持ち、耐食性が良いため、ロケットなどの燃料タンクや航空機エンジン、プロペラシャフトなどに用いられます。ロボットを過酷な環境下(高温や海水など)で動かす場合、有効な材料となるかもしれません。

      β型合金

      • ヤング率が低い
      • 加工性に優れる
      • 熱処理により高強度化できる

      β型合金は、低ヤング率と高強度を生かして、ばねや釣具、メガネフレームなどに利用されます。あまり流通しておらず、加工業者でも手に入れるのが難しいようです。

      α+β合金

  • α型とβ型の間の特性をもつ。添加する金属の比率により特徴が変わる。
  • α+β合金の代表的なものとしてTi-6Al-4V合金(通称64チタン)があります。これはヤング率、強度ともに非常にバランスの良い特性を持っており、流通量も多いです。航空機の構造材を始め、スペースシャトルや原子力産業、医療用の人工骨など、様々な分野で用いられます。

    α、β、α+β合金は、おおよそ以下の表のようにα相とβ相の比率に従って特性が現れます。α,β安定化元素の割合をそれぞれ調整することで必要な特性を得ることができます。

    これらの合金の特性とは違う、特殊な性質を持つ合金についても説明します。

     

    Ni-Ti 合金(形状記憶合金)

    形状記憶合金は、形を変えても一定温度以上になればもとの形に戻る金属です。

    その中でも多く実用されているものがNi-Ti合金です。一定の温度(変態温度)より高温側ではオーステナイト相、低温側ではマルテンサイト相になっています。マルテンサイト相に一定以上の応力を加えると、除荷後にもひずみが残ります。しかしここで変態温度以上に温度を上げると、オーステナイト相になり、ひずみが解消されます。これを形状記憶効果と言います。

    この変態温度以上では、応力を加えて通常の弾性域の10倍程度まで変形させても除荷すると元の形に戻ります。これを超弾性効果と言います。この時、応力に対して以下の図のように非線形的なひずみを示します。

    この変態温度は、ニッケルとチタンの割合を変えることで変えることができるので、室温で変態温度以上になるようにすれば、室温で超弾性の性質を使うことができます。

    Ni-Ti合金は、形状記憶効果を活かしたばねや内視鏡、超弾性効果を活かしたメガネフレームやアンテナ、歯科矯正などに用いられています。

    超弾性を活かし、ロボットの指先などに使うこともできるかもしれません。

    引用:(株)豊田中央研究所公開資料

    ゴムメタル

    ゴムメタルは豊田中央研究所により開発されたβ型チタン合金の一種で、Mg合金並の低ヤング率と塑性変形を始める応力が1GPa以上と高く、非常に弾性範囲が広い合金です。加工性や耐食性にも優れ、幅広く使用されています。

    ゴムメタルは冷間加工しても全く加工硬化せず、延性も低下しません。熱処理された状態だとヤング率・強度ともに高いものとなるのですが、冷間加工を施すことにより、低ヤング率の超弾性特性が現れます。

    ゴムメタルは、メガネのフレームを始め、歯科矯正、ネジ、ゴルフクラブなどに利用されています。

    ロボットの代表的な使用例としては、早稲田大学のTWENDY-ONEがあります。関節部の受動柔軟機構にゴムメタルが使用されており、人間のような柔らかさを実現しています。

    https://www.jstage.jst.go.jp/article/jrsj/31/4/31_31_347/_pdf

    引用:(株)豊田中央研究所公開資料

    以下にそれぞれの主要特性と、特徴を示します。

    *弾性変形能:弾性変形範囲の伸びの割合

    同じチタンからなる合金でも、このように性質が大きく異なることがあるので、チタン合金を応用する際には、それらの性質を知っておく必要があるでしょう。

    チタンが金属材料として用いられるようになったのは比較的最近で、高価なためロボットであまり使われることはありませんが、今後これらの特性を生かしたロボットが登場してくるかもしれません。

    以上、少々特殊な材料のお話でした。

メカの話-減速機②

前回に引き続き,ハーモニックドライブ®を使った設計に際して留意する点をお話させて頂きます.

簡単な原理説明

前回も簡単に紹介しましたが,ハーモニックドライブ®はウェーブジェネレータ(WG)・フレクススプライン(FS)・サーキュラスプライン(CS)の3部品で構成されています.

楕円形状のWGがFSの内側で回転し,その楕円形状に沿ってFSが変形,FSの外側にある歯とCSの内側の歯がくさびを打ち込まれるようにして次々に噛み合っていく,といった原理です.

ハーモニックドライブ®を選定する際の注意点

ハーモニックドライブ®を選定する際にまず重要なのは許容トルクです.(その他のギアを使用する際にも当然重要ですが)ハーモニックドライブ®の性質上,FSは弾性変形しながら動力伝達を行います.そのため,FSにかかる応力が特に重要になります.

金属材料には弾性域と塑性域が存在し,その境目の応力を降伏応力と呼びます.さらに繰り返し応力がかかる場合には金属の強度は公称降伏応力値の1/7~1/8まで(アルミ等の非鉄金属であれば更に)低下します.ハーモニックドライブ®,ひいてはロボットを長期間の使用に耐えられるようにするためには,この金属疲労について考えなければなりません.製品の技術資料の許容トルク,強度や寿命に関しての記載を参照しつつ,型番を選定する必要があります.

また衝撃等,過度な外部トルクが印加された際には,FSとCSの歯がずれてしまう「デドイダル」が発生してしまうので注意が必要です.

減速機としての使用法について

一般的には以下のように設計を行います.

WG:入力軸
FS:出力軸
CS:ハウジングに固定

この場合,減速比は公称値(1/50, 1/100等)となります.
これとは別に,

WG:入力軸
FS:ハウジングに固定
CS:出力軸

といった設計も考えられ,この場合には減速比が変わる(1/51, 1/101等)ので注意が必要です.

他にも入力軸と出力軸を入れ替え,増速を行うといった使い方も考えられますが,一般的ではないでしょう.

コンポーネントタイプとユニットタイプの差異

ハーモニックドライブ®にはコンポーネントタイプとユニットタイプがあります.

WG・FS・CSのみがバラバラの状態で納品されるのがコンポーネントタイプであり,この3部品に加え,ハウジング・シャフト・ベアリング・オイルシール等が高精度に組み上げられた状態で納品されるのがユニットタイプとなります.

薄型・中空・軽量タイプといったものから,半ユニット製品など,バリエーションも豊富にありますので,設計にあったタイプを選ぶことができます.

ハウジング周りの設計・組立について

弊社ではコンポーネントタイプを好んで使用しています.それはハウジングやシャフト等,周りの形状を最適に設計できるため,トルクセンサ・モータ・エンコーダ等,ロボットの構成要素を高密度に組み込むことができるからです.(ちなみにトルクセンサやエンコーダ基板は内製,モータもフレームレスモータを使用する等,他の要素周りにおいても最大限に高密度化を図っています.)

逆にハウジングやシャフト等の設計・加工・組立を自分で行う必要があるため,難しい点もでてきます.

ハーモニックドライブ®のアセンブリを考えた時に最も大切なのが各部品の組付け精度です.同軸度や直角度を厳密に出して加工する必要があります.技術資料に推奨公差が載っていますので参照しながら設計を行います.

更に,たとえ個々のパーツの精度が出ていたとしても組み込みの際に極小の金属片等が挟まってしまったり,ボルトを均等に千鳥締めしなかったりなどしただけでモーションに大きな影響を与えてしまうことがあります.

精度が出ていないまま使用すると,バックドライブ(出力軸に力をかけて入力軸を回すこと)させた際に入力軸側180deg毎の周期で大きな脈動を感じるようになります.これはWGが楕円形をしているため,その周期で摩擦による大きなトルク変動が生じるのです.

ソフトウェアによる制振にも限界があり,そもそもハードウェア側で大きな振動が生じている状態ですと振動を取り切れない場合がほとんどです.高精度なロボットアームを製作するためにはソフト・ハード両面からトルク変動を抑制していくことが不可欠です.

 

以上,設計時に気にする点をざっと紹介させて頂きました.

より詳しいことを知りたい方はハーモニック・ドライブ・システムズ社のHPから製品の技術資料をダウンロードできますので,そちらをご参照ください.

メカの話-減速機①

こんにちは,トロボです.
今回からは少々メカの話をさせて頂きます.

ロボットに使用される駆動部として最も主流なのが電動モータです.制御性が良く,取り扱いが容易であることがその理由ですが,一般に電動モータの出力は高速回転・低トルクです.一方,ロボットに求められるのは低速回転・高トルクである場合がほとんどであり,この性質を変換する機構が減速機です.

今回はこの減速機,中でも精密駆動ロボットによく使われる
・ハーモニックドライブ®
・サイクロ®減速機
・RV®
の3種類について,ざっくりと紹介したいと思います.

ハーモニックドライブ®
ハーモニック・ドライブ・システムズ社の製品です.一般名称としては波動歯車装置と呼ばれる,金属の弾性を利用するという特殊な減速機です.

特徴は以下

・ノンバックラッシ
ハーモニックドライブ®は歯車の噛み合いが転がりではなく,次々にくさびが押し込まれるような独特な噛み合い方式によって,ノンバックラッシを実現しています.ちなみにより一般的な減速機であるプラネタリギアは1°ほどのバックラッシがあります.

・小型軽量
たった3部品から構成されており,コンパクトな機構です.大きさの観点からハーモニックドライブ®が選定されることも多いでしょう.中空製品が揃っている点もロボットに適していると言えます.可搬重量10kg以下の小~中型ロボットによく使用されており, Torobo,ToroboArmにも多く使用されています.

サイクロ®減速機
住友重機械工業社製の精密減速機です.図のように内接式遊星歯車機構と等速度内歯車機構を組み合わせた構造を持っています.偏心体を回転させることで,揺れ動く曲線板の動きを,カムを介して出力軸である内ピンに伝達しています.

特徴は以下

・ノンバックラッシ~低バックラッシ
原理的に(エピトロコイド平行)曲線板が外ピンの全てに常に接触しながら転がり接触するため,回転が滑らかで低バックラッシです.

・高剛性
上記と同じ理由により,高い出力軸の剛性を持っています.減速機に高負荷がかかった時,ねじれによる位置ずれが無視できなくなります.そのため高負荷環境下では剛性も精度に関わる重要な要素となります.

多数の部品を使用するため,ハーモニックドライブ®比較して大型となりますが,高剛性で衝撃にも強い点から,比較的大型のロボットで採用されています.

RV
ナブテスコ社製の精密減速機です.原理としてはサイクロ®減速機と似ており,クランクシャフト(偏心部)の回転によってRVギアを揺れ動かし,カムを介して出力軸に伝達しています.

特徴は以下

・低バックラッシ
第1減速部と第2減速部の入れ子構造を持つ減速機であり,減速比はそれそれの減速比の積となります.第一減速部がプラネタリギアと同じ構造を持っているため,バックラッシが発生しますが,出力軸でのバックラッシは1/(第2減速部の減速比)となるため,結果として低バックラッシとなります.バックラッシは1[arc min]以下(RV-006E 減速比103)とのこと.

・高剛性
サイクロ®減速機と同じく,同時噛み合い数が多いため過負荷に強い構造を持ちます.

・減速比が自在
第1減速部の歯数比を変えることにより容易に減速比を変えることができます.

ロボットなど精密動作に使われる減速機として,世界シェア60%を誇ります.最も安定性と信頼性をもつ精密減速機と言えるかもしれません.

 

以上,精密減速機3種類についての概要でした.

基本的には
小型・・・ハーモニックドライブ®
中型~大型・・・サイクロ®減速機またはRV®
といったところでしょうか.

Toroboでは主にサイズの面から,ハーモニックドライブ®を採用しています.
次回はこのハーモニックドライブ®について,設計の視点から改めて紹介したいと思います.

『ROS+シミュレータ(Gazebo)』のPID制御をチューニングする方法

こんにちは、トロボです。前回の続きです。

今回は、『ROS+シミュレータ(Gazebo)』のPID制御をチューニングする方法について説明します。

なお、ROS_ControlのPID制御の詳細についてMoriKen氏が丁寧に説明してくださっています。ここではその情報を拝借しながら、私が実際にROS+Gazeboで試した所感も踏まえて概要を説明させていただきます。

ROS_Controlでは、Gazeboのロボットアーム関節(Joint)に入力する操作量として「①位置(Position)操作」「②速度(Velocity)操作」「③力(Effort)操作」の3種類のいずれかを選べます。Gazeboに渡すtorobo.transmission.xacroファイルのhardwareInterfaceで設定します。例えば下記では速度制御にするためにVelocityJointInterfaceと記載しています。

<robot xmlns:xacro="http://ros.org/wiki/xacro">
  <xacro:macro name="arm_simple_transmission" params="name reduction">
    <transmission name="${name}_transmission">
      <type>transmission_interface/SimpleTransmission</type>
      <actuator name="${name}_motor">
        <mechanicalReduction>${reduction}</mechanicalReduction>
        <hardwareInterface>PositionJointInterface</hardwareInterface>
      </actuator>
      <joint name="${name}_joint">
        <hardwareInterface>PositionJointInterface</hardwareInterface>
      </joint>
    </transmission>
  </xacro:macro>
</robot>

ここで注意が必要なのが、「①位置(Position)操作」を選ぶとPID制御とはならないということです。なぜなら、関節(Joint)の位置を操作しても、速度や力は決まりませんよね。そのため、「①位置(Position)操作」を選んだ場合は下図のように、Gazeboに対して速度目標値や力目標値は与えられず、位置目標値をGazeboに転送するだけとなります。下図の黄色いブロックはROS_Control、黒いブロックはGazeboです。

すなわち、ROS_ControlのControllerと、GazeboのJointInterfaceとの関係は、下表のようになっています。

  Gazebo Position I/F Gazebo Velocity I/F Gazebo Effort I/F
Position Controller
Velocity Controller ×
Effort Controller × ×

次に、Gazeboのロボットアーム関節(Joint)に入力する操作量として「②速度(Velocity)操作」を指定した場合を説明しましょう。この場合はPID制御ループが実現されます。下図はJoint Position Controllerからの位置目標値との位置偏差が小さくなるようにPID Controllerが速度操作量を制御します。

ここにさらにJoint Velocity Controllerをつなげたらどうなるでしょうか。下図のように位置偏差だけでなく速度偏差も小さくなるようにPID Controllerが速度操作量を制御します。

なお、PID Controller (Velocity I/F用)は内部で位置偏差にKpゲインを掛けることで速度偏差に変換しています。速度偏差に対してはKdゲインを掛けています。そして位置偏差の総和(積分)に対してはKiゲインをかけています。すなわち、下記の式によるPID制御を行っています。下記式のeはJointの位置(=関節角度)を表します。

このKpKiKdの3つのゲインをチューニングすれば実機の動作に近づけることができます。これらはroslaunch時にrosparamとして読み込ませるyamlファイルで指定することができます。

toroboarm:
  Position Controllers ---------------------------------------
  joint1_position_controller:
    type: position_controllers/JointPositionController
    joint: first_joint
    pid: {p: 100.0, i: 0.01, d: 10.0}

実際にチューニングを試した所感ですが、ROS_ControlのPID制御ではうまく制御できないことが多くありました。GazeboEncoderから取得される速度値を見ると振動しているため、PID制御のような高周期では速度制御が難しいのかもしれません。

回避策として、PID制御をやめて「①位置(Position)操作」を選ぶのも1つの手です。「位置操作では速度目標値を指定できないため実機の挙動と合わせられないのでは?」という疑問が残るかと思います。ROS_ControlではJointTrajectoryという遷移時間を含んだメッセージをサポートしており、これを使えば速度目標値を指定できます。このJointTrajectoryについては、ROS_ControlではPID制御を行わずにTFライブラリによる軌道計算を行ってロボットアームのJointの位置制御をしているものと思われます。

以上、長くなりましたが、『ROS+シミュレータ(Gazebo)』のPID制御のチューニング方法をメインに解説してきました。シミュレータと実機の挙動を完全に合わせることは難しいですが、『ROS+シミュレータ(Gazebo)』をより多くの分野で活用できるように知見を深めていきたいと考えています。ありがとうございました。

『ROS+シミュレータ(Gazebo)』によるダイナミクスや制御の再現性について

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

今回は ROS に関するお話です。

みなさん、ROSのことをご存知でしょうか。このサイトを閲覧されている方はご存知の方が多いと思いますが、初めて聞く方もいらっしゃると思いますので簡単に説明します。

ROSは「Robot Operating System」の略であり、ロボット開発のためのソフトウェアの集合体およびフレームワークです。現在ROSはOSRF (Open Source Robotics Foundation)によって開発されています。ユーザはROSを使用することで、ロボットへの動作指令や状態取得などの基本的な処理だけでなく、ロボットの軌道生成や外部センサとの連携といった高度な処理を簡単に実装することができます。

さらに、ROSにはGazeboというハードウェアシミュレータがついています。Gazeboを利用することで、実機を使わずにROSプログラムをPC上で試すことができます。これは、ROSを利用する大きなメリットです。下図はToroboArmのGazeboシミュレータを起動した様子です。

ここで注意をしていただきたいのが、『ROS+Gazeboでロボットアームのダイナミクスや制御を正確に再現できるかどうか』についてです。時々、「実機を使わずにアームのダイナミクスや制御を検証したい」という質問を受けますが、結論から言えばこれは簡単ではありません。

ダイナミクスに関してはGazeboがシミュレートする物理現象の正確性、制御性に関してはROS_Controlによるロボットアームの制御性がカギを握っています。それぞれ説明しましょう。

Gazeboがシミュレートする物理現象の正確性について

GazeboはURDF(Unified Robot Description Format)というロボットのモデルデータを読み込み、ODE(Open Dynamics Engine)という物理エンジンでシミュレートします。URDFでは、ロボットアームのリンクごとの質量や慣性テンソル、摩擦係数などを指定できます。

ここでやっかいなのが摩擦係数です。摩擦には様々なものがあり、クーロン摩擦(静止摩擦、動摩擦)やFDS摩擦(Slip)、粘弾性質摩擦(ERP/CFM)、転がり摩擦などがあります。これらをシンプルなロボットモデルで表現するのは難しいのです。また、ODEエンジンでは転がり摩擦に対応しておりません。以上により、今のところGazeboではダイナミクスを正確に再現するのは難しいと言えるでしょう。

ROS_Controlによるロボットアームの制御性について

ロボットアームを動かすには、実機であれシミュレータであれ制御が必要です。ROSにはROS_Controlという制御フレームワークがあり、この中にController ManagerというPID制御を行うモジュールがあります(下図の黄色いブロック)。これを用いてGazebo(シミュレータ)やハードウェア(実機)を制御することができます。

上図では実機をROS_ControlのController Managerで制御していますが、実際には実機をROS_Controlで制御することはあまりされていません。ロボットアームは10msec以上の高周期で制御する必要があり、ROSではリアルタイム性を確保できるとは限らないためです。つまり、シミュレータと実機で下記の違いがあります。この違いにより、シミュレータと実機で挙動(速度や振動など)が異なってしまいます。

 種類 制御方法
シミュレータ(Gazebo) ROS_ControlによるPID制御
ハードウェア(実機) ベンダーごとに設計された制御

それならば、シミュレータ(Gazebo)のPID制御をチューニングして実機に近づけることはできないのでしょうか?

これについて、次回お話ししようと思います。

ロボット学会に参加しました

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

9月12~14日に東洋大学川越キャンパスにてロボット学会の学術講演会が開催され、弊社も展示企業として参加しました。

他の展示企業にもいくつか気になる製品がありましたので、ご紹介します。

まず、お隣のブースでは、イグス株式会社さんが樹脂製の波動歯車とそれを使ったロボットキットを展示していました。

低価格で、樹脂製のため軽量、バックラッシュのない波動歯車なので、機械学習などの研究にちょっとしたロボットを組むのによいかもしれません。

こちらは、マイクロテック・ラボラトリーさんが出展されていたDDモータです。

ロボットへの適用を志向した小型のDDモータで、回転数よりトルクを重視した設計になっており、ケーブル取り回しの利便性のため中空部分の系もなるべく大きく取っているとのことです。

DDモータはフルバックドライブのため、それを用いて多軸ロボットを作ると、人間同様に力を抜いた時(電源を切った時)に落下するロボットが作れます。これは危険な感じもしますが、一方で、作業中にぶつかったときなど即座に力を逃がすことなどができるようになります。制御に関しても、リンクのダイナミクス(質量や慣性モーメント)を考慮しなければならないため、非常に難しくなりますが、研究としてはやりがいがあると思います。いずれにせよ、DDモータのロボットへの応用は可能性の大きいテーマと言えます。

センサ系では、タッチエンスさんが6軸の小型触覚センサを出していました。開発試作とのことですが、10Nのレンジで0.05Nの分解能で6軸の力覚検知が可能とのことです。ロボットハンドなどに組み込んで面白い研究ができそうです。

ハンド用の触覚センサと言えば、山口明彦先生によるフィンガービジョンプロジェクトの展示がありました。

グリッパの把持部に、黒いドットが描かれた透明なシリコンを用い、把持の際のドットのパターン変化をカメラで認識することで把持力や把持状態を計測するというものです。この方法なら微小な把持抗力も検知できますので、上の写真のような紙の箱も潰さずに持ち上げることができるわけです。下の写真は、シリコン把持部を指で押さえつけた時の様子ですが、シリコン上の黒い点の動きで把持力を計測し、赤い線が長いほど力がかかっていることを示しています。

本プロジェクトは、学術系のクラウドファンディングで出資を募っているようですので、もしよろしければ、ご協力をお願いします。

ロボット関連で言えば、おなじみ、トヨタさんのHSRや、THKさんのSEED-Noidなども出ていました。

 

リコーさんも社内向けとして多軸ロボットの取り組みを開始したようです。関節がモジュール化されており、様々なタイプのロボット(自動機)を作れることが利点とのことでした。

近藤科学さんは6足のロボットを出していました。18軸のロボットで、制御基板とモーション作成ソフトが付いて約10万円という、非常にお求めやすい価格設定になっています。

AI系としては、ベンチャー企業であるエイシングさんが、マイコン上でオンライン学習が可能な独自アルゴリズム「Deep Binary Tree」の実演(Raspberry Pi上でのピンポンゲームの強化学習)を行っていました。近年盛んな深層学習と毛色が違うAIをもって「世界を変える」という熱意を感じました。

大学の教室を利用した展示だったためか、来場者の数は多くはなかったですが、楽しい企業展示でした。来年は中部大学での開催だそうです。

協働ロボットの要件④

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

前回の記事では、ロボットを導入するユーザー(事業者)の立場から、産業用ロボット・協働ロボットに関する法律と、それに違反した際の罰則について検討してみました。今回はメーカーとして何が必要かを考えてみたいと思います。

これまでも述べたように、SIerやエンドユーザーに協働ロボットを使ってもらうためには、ロボットをISO 10218-1に適合させることが必要です。そうでないロボットをSIerやユーザーが協働ロボットとして使用した場合、「事業者の講ずべき措置等」を規定した安衛法第二十条に抵触する可能性があると考えます。

では、ISO以外では、メーカーとして何を気にする必要があるでしょうか?

まず気になるのは、製造物責任法(PL法)です。PL法では、製品に欠陥が認められ、それによって使用者が損害を被った場合、製造者等にその損害を賠償する責任があることを明確にしています。ここで「欠陥」とは、以下のように規定されています。

製造物責任法 第二条2項

この法律において「欠陥」とは、当該製造物の特性、その通常予見される使用形態、その製造業者等が当該製造物を引き渡した時期その他の当該製造物に係る事情を考慮して、当該製造物が通常有すべき安全性を欠いていることをいう。

欠陥は、一般に以下に分類されるようです(ここを参照)。
・設計上の欠陥(そもそもの設計上の欠陥)
・製造上の欠陥(製造の際に生じた欠陥)
・指示・警告上の欠陥(表示やマークなどの注意喚起の不備)

製品の欠陥による損害賠償のリスクを抑えるためにリスクアセスメントは必要であり、経産省が作成したハンドブックでもそれを勧めています。リスクアセスメントに法的義務はありませんが、事故が起こった際は、民事上の損害賠償責任や消費生活用製品安全法に基づいた回収命令が下されることあるとのことです(P.2)。協働ロボットは、人間の身近で動作する以上、仮に80W以下のロボットでもリスクアセスメントは必須であると言えます(そうであるなら、それ自体リスクアセスメントを求めるISO 10218-1への適合を目指したほうがベターかもしれません)。

その他、電気用品安全法も気になります。電気用品安全法は、規制対象製品(その中にさらに特定電気用品と特定以外の電気用品がある)に対して適用されるとのことです。規制対象製品は以下のリストに列挙されていますが、産業用ロボットは含まれていないようです。

http://www.meti.go.jp/policy/consumer/seian/denan/subject01.html
http://www.meti.go.jp/policy/consumer/seian/denan/subject02.html

・・・

これまで4回に渡って協働ロボットの要件について考えてきました。80W規制などは日本独自の基準ですが、近いうちに撤廃される可能性が高く、今後はISOが基準になっていくと思われます。また、「協働」という考え方により、リスクアセスメントが益々重要になってきています。ロボットメーカーとして、これらは事業に直結するため、引き続き今後の動向に注意を払っていきたいと思います。