知能ロボットのお話 その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が基準になっていくと思われます。また、「協働」という考え方により、リスクアセスメントが益々重要になってきています。ロボットメーカーとして、これらは事業に直結するため、引き続き今後の動向に注意を払っていきたいと思います。

協働ロボットの要件③

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

前回の記事で安衛則の詳細に立ち入ってみました。今回は安衛則を守らなかったら何が起こるのかを考えてみたいと思います(素人の法解釈であることを予めご了承願います)。

まず前提として、安衛則はあくまで運用規則ですので、それ自体は罰則を規定していません。安衛則が依拠する法律は労働安全衛生法(安衛法)であり、それに違反した時、同法に規定される罰則が適用されることになります。罰則の対象者は事業者(同法で「事業を行う者で、労働者を使用するもの」と定義)となります。機器を納めるメーカー等に対しては、同法の第三条の2に労働災害防止の努力義務が明記されているのみになり、特に罰則は規定されていません。

さて、産業用ロボットに関してですが、安衛則では、第百五十条第三~五号および第百五十一条において、教示、運転中の危険防止、検査、および点検の際に講じるべき措置について細かく規定されています。さらに、教示と検査に関しては、同規則第三十六条第三十一号・三十二号にて「特別教育を必要とする業務」として指定されています。この特別教育を怠った場合、こちらのレポートにもありますが、安衛法の第五十九条の3に違反することになり、同法第百十九条第一号の「六月以下の懲役又は五十万円以下の罰金」に処されます。

では、産業用ロボットの運転中の危険防止の措置を怠った場合は、どのような罰則があるのでしょうか? これに関しては「事業者の講ずべき措置等」を規定した安衛法第二十条第一号(罰則としては第百十九条第一号)が適用されるようです。これは機械装置の危険一般を対象とする条文ですが、例えば、産業用ロボットに挟まれ作業員が死亡した事件や、その他多くの機械系の事故における処罰の根拠となっているようです。

上記の議論は、あくまで安衛則/安衛法に関するもので、実際に産業用ロボットが事故を起こした場合は、労働契約法における安全配慮義務を根拠とした民事訴訟・損害賠償にも繋がります。そのため、事業者(使用者)は、事故を起こさないよう安全に対して細心の注意を払う必要があります。ただ、初めて産業用ロボットを導入する事業者はロボットに関する知識が少ないため、SIerのほうから顧客に対し、装置の安全な使い方の指導をきっちりとすべきと考えます。あるSIerの話では、安全に関する設計や指導に関し、責任の所在を明確にするため、打ち合わせ内容を必ず議事録に残すとのことでした。

協働ロボットは、上述した法に抵触する確率がずっと高いため、安全対策がより厳しく問われることになります。その際、メーカー・SIerが各社各様の安全対策を行っていたのでは、リスクの見積もりや責任の所在が不明確になるので、厚労省が協働ロボットに対しISO適合を義務付けたものと考えます。

次回は、メーカーとして考慮すべき各種法律について考えてみたいと思います。

協働ロボットの要件②

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

前回の記事で、最大モータの定格出力が80Wであることを境に「産業用ロボット」や「協働ロボット」の扱いが異なるということを書きました。今回は、いったいどこにそのようなことが書いてあるのか、エビデンスを探してみたいと思います。

まず、「産業用ロボット」とは何かということですが、公的な文書としては、労働安全衛生規則(労働安全衛生法に基づく実施規則として定められた厚生労働省令)に定義されています(同規則は略して「安衛則」とも呼ばれます)。

労働安全衛生規則 第三十六条 第三十一号

マニプレータ及び記憶装置(可変シーケンス制御装置及び固定シーケンス制御装置を含む。以下この号において同じ。)を有し、記憶装置の情報に基づきマニプレータの伸縮、屈伸、上下移動、左右移動若しくは旋回の動作又はこれらの複合動作を自動的に行うことができる機械(研究開発中のものその他厚生労働大臣が定めるものを除く。以下「産業用ロボツト」という。) 以下略

研究開発用のものは産業ロボットではないのですね。では、厚生労働大臣が定めるものとは何でしょう。

労働安全衛生規則第三十六条第三十一号の規定に基づき厚生労働大臣が定める機械を定める告示

労働安全衛生規則第三十六条第三十一号の厚生労働大臣が定める機械は、次のとおりとする。
一 定格出力(駆動用原動機を二以上有するものにあつては、それぞれの定格出力のうち最大のもの)が八〇ワツト以下の駆動用原動機を有する機械
二 固定シーケンス制御装置の情報に基づきマニプレータの伸縮、上下移動、左右移動又は旋回の動作のうちいずれか一つの動作の単調な繰り返しを行う機械
三 前二号に掲げる機械のほか、当該機械の構造、性能等からみて当該機械に接触することによる労働者の危険が生ずるおそれがないと厚生労働省労働基準局長が認めた機械

80Wの話が出てきましたね。ついでに動作の単調な繰り返しを行う機械も産業用ロボットではないようです。前回も書きましたが、産業用ロボットでなければ、安衛則の第百五十条第三号~第百五十一条に定める教示や点検に関する規則に従う義務はないため、法的な縛りが緩くなるというメリットがあります(もちろん、あくまで安衛則においては、ということですが)。

では、産業用ロボットを協働ロボットとして使用するための要件はどのように示されているのでしょうか?

少し回りくどくなりますが、安衛則の第百五十条第四号に次のような記述があります。

事業者は、産業用ロボツトを運転する場合(教示等のために産業用ロボツトを運転する場合及び産業用ロボツトの運転中に次条に規定する作業を行わなければならない場合において産業用ロボツトを運転するときを除く。)において、当該産業用ロボツトに接触することにより労働者に危険が生ずるおそれのあるときは、さく又は囲いを設ける等当該危険を防止するために必要な措置を講じなければならない

ここで柵の話が出てきましたね。ロボットに危険性がなければ「さく又は囲いを設ける等」は必要なく、危険性があるなら「さく又は囲いを設ける等」が必要ということです。実はこの「等」が重要になってくる訳でして、産業用ロボットに係る労働安全衛生規則第150条の4の施行通達の一部改正について別紙にて以下のように示されています。

(3) 「さく又は囲いを設ける等」の「」には、次の措置が含まれること。
(中略)
ホ 国際標準化機構(ISO)による産業用ロボットの規格(ISO 10218-1:2011及びISO 10218-2:2011)よりそれぞれ設計、製造及び設置された産業用ロボット(産業用ロボットの設計者、製造者及び設置者が別紙に定める技術ファイル及び適合宣言書を作成しているものに限る。)を、その使用条件に基づき適切に使用すること。(以下略)

つまり、ISO 10218への適合を自己宣言すれば、柵や囲いを設けたものと同等とみなされるということになります。ちなみに、同じ文書の(2)では、リスクアセスメントを行って危険性がなくなったと評価できた際は「労働者に危険が生ずるおそれのあるとき」に該当しないものとする、とあります。つまり、リスクアセスメントによっても柵などを不要にできることが示されています。

上記をまとめると、以下のように整理できます。

・リスクアセスメントで安全確認 ⇒ 柵なしOK ⇒ 協働可
・ISO 10218 ⇒ 柵なしOK ⇒ 協働可

その後、厚労省から出されたリーフレットにも同様の記述があります。ただ、厚労省の委託事業において中央労働災害防止協会によってまとめられたガイドラインには、「ISO 10218 に適合するための前提としてリスクアセスメントを実施」(P.10)というような書かれ方がされており、そもそもISO 10218に適合するためにはリスクアセスメントが必要なので、結論として、以下のようになります。

・柵なしの協働ロボットにはISO 10218への適合が必要

ここでようやく前回の記事の裏が取れました。ちなみに上のガイドラインには、「協働ロボットのうち、人との接触が発生する産業用ロボットにおいては、技術仕様書ISO/TS 15066 に適合することが必要(義務)」であることも述べられています。

では、上記議論の基礎になる安衛則を守らなかった場合にどのような罰則があるのか? これについては次回考えてみたいと思います。