nyabot’s diary

電気猫の夢を見るお話

多脚歩行ロボットの脚部の設計

多脚歩行ロボットの足の設計とプリントをしました。
見た目の面でも機能面でも脚部が占める割合は大きく、設計に際し留意する項目も多くなりました。
かなり個人的なメモ的内容ですが、多脚ロボットを作りたい誰かの参考になれば幸い。

当初は8足駆動にする予定でしたが、足の動作スペースの確保と後述する電流量がネックとなり、現在は6足を想定しています。

足の作成にかかった時間や労力の割合は、前提知識の習得3:部品の選定1:構想3:CAD1:調整2、といったところ。
知識ゼロからのスタートだったため、"何を学ぶべきか"から学ばなくてはならない、というなかなか難儀なことになっていましたが(いつもですが)、なんとか納得いく形にたどりつきました。

できあがったCADデータはこんな感じ。

f:id:sizohu:20200602125604p:plain

f:id:sizohu:20200602125634p:plain
陰線エッジ表示で各面から。

以下、実際に考えたこと・やったこと等を書き連ねていきます。

関節について

関節はサーボモータで動かします。
サーボモータは角度を指定して動作させることができるモーターで、ロボット作りでは関節にはこれを用いるのが定石となっているようです。

サーボモータの選定

市販のサーボモータには様々な種類があります。以下を基準に、採用するサーボモータを検討しました。

  1. トルク
  2. 価格
  3. 動作電圧
  4. 動作角度

1.トルクはどれだけの力でモーターを動かせるかという値で、大きいほど動作の安定につながります。
一方で、高トルクのサーボモータは消費電力も重量も大きい傾向にあるため、予め必要なトルクを見極める必要があります。
トルクの計算については後述します。

2.価格はサーボモータの種類によって様々で、一個あたり数百円から数千円です。
今回作成する多脚ロボットでは、足だけでも軸数(3軸)×足数(6本)=18個と、多数のサーボモータが必要になります。あまり高価なものは予算の都合上使用できません。

3.動作電圧はサーボモータの種類によって一定の範囲が定められており、指定の電圧の電源を用意する、もしくは使用する電源の電圧にあったサーボモータを選ぶ必要があります。
今回は、ロボットの頭脳として使用するRaspberry Piの動作電圧に合わせて5Vの電源を用意するため、サーボモータも同じ電圧で動かす予定です。
(2セルリポバッテリの7.4Vを降圧して5Vにしますが、電源を共通にするとサーボに負荷がかかった際に電圧降下でラズパイが落ちる恐れがあるため、何かしら対策予定です。コンデンサを使えばいけるのかな?)

4.サーボの動作角度は180度(プラスマイナス90度)が多いようですが、それ以外のものもあるため、留意します。

上記を踏まえ、使用するサーボモータはMG996R(MG995でも可)とMG90S(SG90でも可)に決定しました。
どちらも5Vで動作します。入手性が高いのも○。
価格は国内で1,000円/個くらい、中国からの個人輸入(正規品でない?)なら300円/個くらい。安心を取るか価格を取るか、といったところですね。

ちなみに、MG90SはSG90とスペックはほぼ同じですが前者はメタルギアで値段がほぼ倍となっており、どちらを使うか悩ましいところです。
試しに一つだけ買ったMG90SとSG90を比較したところ、MG90Sの方が心なしか指定角度でプルプルしたりせずしっかり止まるので、こちらを使うつもりです。

やや話が逸れますが、もし予算に余裕があれば、秋月電子で販売されている薄型サーボ「[GWSサーボ S11HP/2BBMG/JRタイプ](http://akizukidenshi.com/catalog/g/gM-01724/)」を使いたいです。現在2,200円/個で販売されていますが、今回は予算オーバーです。MG996Rよりトルクはやや劣るものの小さく、これを使えば足をより細くすることができ、例えば8足に増やしたとしても、干渉したり不恰好になったりしにくいはず。8本×2軸×2200円=35200円、8本×3軸×2200円=52800円……。 一般的に多脚ロボットが多数の足を持たされるのは、悪路や過酷な環境での走破性・安定性を求めた結果です。実際に各国で実用化を目的に設計された多脚ロボットを調べてみると、宇宙や火山、砂漠など、タイヤやキャタピラでは走行困難な場所での活動を前提とされたものがほとんどです。 しかし、ロボットの足はただ歩くためだけにあるわけではない、と私は考えます。我々人間がジェスチャーを用いて意思の疎通を図ることができるように、多脚ロボットは足を用いて様々な表現をすることも可能です。足の数が多ければ、それだけ多様な表現が可能になるはずです。と、将来的に8本に増やしたいなぁという願望を綴っておきます。

トルクの計算

データシートにあるストールトルクは以下。

  • MG90S:1.8kg/cm(4.8V)
  • MG996R:9.4kg/cm(4.8V)

ストールトルク≒最大トルクですが、出し続けてはいけないトルクなので、余裕を持たせて設計をします。
1.8kg/cmという値は、サーボモータの軸から1cmの距離で1.8kgのものを持ち上げる力がある、ということだそうです。
距離が2cmなら0.9kg、3cmなら0.6kgと、距離に反比例して力は弱くなります。

作成するロボットの総重量は2.5kgほどを想定しており、歩行時に接地している足数(最少3本)でそれを支えなくてはなりません。ロボットの重量(2.5kg)/最少接地足数(3本)でおよそ0.83kgが一本あたりで支える重量となりますが、これはそれぞれの足に均等に重さが加わった場合の値であり、実際にはこの数値に対しても余裕を持たせて設計する必要があります。

f:id:sizohu:20200601113354p:plain

上図において、トルク計算に用いる距離は、A(サーボの中心から動作させる点間の距離)ではなく、B(サーボの中心と動作させる点間の水平距離)になるそうです。
以上を踏まえると、余剰トルクを仮に100%とした場合、MG90SならBをおよそ1cm以内(1.8÷(0.83×2)≒1.07)、MG996RならBをおよそ5.6cm(9.4÷(0.83×2)≒5.62)以内に収めればいい、ということがわかります。
本当は水平方向のトルクも計算しておくべきなのでしょうが、加わる力の算出方法がわからないのと、垂直方向の必要トルクよりも小さくなるだろうと見て省きます。

f:id:sizohu:20200601113921p:plain

今回作成する足は上図のような形を想定しているので、サーボ1に高トルクのMG996R、サーボ2にMG90Sを使い、各節の長さを調整すればなんとなくできそうですね。

多脚と電源

少し足自体の話からは脱線します。
多脚ロボットの自作において、最も頭を悩ませるのは電源かもしれません。
サーボモータを用いて多数の可動軸を持たせる今回のような設計では、歩行時に大量の電流を要します。

サーボモータを一つ動作させるのに仮に1A必要だとすると、6足の場合6A(3足2軸同時動作)、8足なら8A(4足2軸同時動作)程度の電流は使いたいところ。
実際にサーボを動かした際の電流量はMG90S、MG996Rのどちらも1A以下でしたが、MG996Rのストール電流は1Aよりも大きそうな気がします。
加えて、同時に動かさないサーボも、角度を保持するためにある程度の電流を常時必要とします。
足を一本ずつ動かす歩容にする、など消費電流量を抑える方法は考えられるものの、その分歩行速度が遅くなり、動きが緩慢な印象になってしまいます。

当初は安全性の高いとされるニッケル水素電池で動かすことを目指していましたが、購入したニッケル水素電池をテストしたところ、電圧を落とさず流せたのは2A程度。
これでは必要な電流量を賄うことができないため、放電能力の高いリチウムポリマーバッテリを用いることにしました。

リポバッテリであれば十分な放電能力を持った製品が数多くありますが、サーボモータを動作させる際には変圧が必要になることが多く、その場合、今度は変圧器がボトルネックになって大電流を流せない、というケースに陥りがちなように思います。
そこで、15Aまで流せるという大きめの降圧レギュレータを輸入したので、追々試してみます。

なお、発火や爆発等の大事故を起こしがち、ということで敬遠していたリポバッテリですが、発火に至る仕組みを一通り学んでみると、しっかりと適切な管理さえすれば危険性はそれほど高くないように思えました。それでも念のため、保管用に金属製の弾薬箱を購入。こんなやつ↓

海外の検証動画によると、これの蓋のシーリングを剥がして使うのが比較的安全らしいです。
それにしても、ロボットのエネルギー源が爆弾になるのって映画の世界だけじゃないんだなぁ。

電源周りについては、電圧の監視をはじめ色々とやることがあるので、いずれ別記事にまとめる予定です。

3Dプリント用データの作成

使用するサーボモータが決まったら、次はその組み方を考えます。 以前購入した3Dプリンターと、勉強を始めたfusion360がようやく出番を迎えます。

まず、最低限抑えたいことは以下の2点です。

  • サーボを両軸にする
  • トルクを考慮する

安価なサーボモータは片側にのみ軸があり、そこから動力をパーツに伝えます。
動作する軸の反対側にも軸を設けることで、軸にかかる力を分散させ、動作時のブレを抑えたりすることができます。
マーク1作成時にもSG90サーボを使って低精度ながら挑戦しましたが、両軸化をやるのとやらないのとではかなり安定感に差が出ました。

そして、前述したトルク計算の結果から、各パーツのサイズを検討・調整します。
各部位が大きすぎるとトルク不足になりますが、小さすぎると見栄えがよくなかったり歩幅が小さくなるため、いい塩梅に調整します。

さらに、以下の条件を加えます。

  • 部品の固定はネジで行う
  • 外装パーツとフレームパーツを分ける
  • ネジ、サーボモータ、配線などを隠す
  • ある程度の強度を持たせる
  • 曲面を取り入れる

私が作りたいのは、単なる玩具ではなく、生活のパートナーです。

長期的な使用を前提とし、各部品は劣化・破損時等に個別に交換できるよう、基本的にすべてネジとナットで固定します。
また、外装は後々塗装する予定なので、骨格としてサーボモータを固定するフレーム部と外装部は別パーツになるよう設計します。
配線やサーボモータが露出すると自作ロボット感が出すぎるので、可能な範囲で覆い隠します。

各部位にはそれなりの負荷が加わることが想定されます。
折れたり曲がったりしないよう、厚みや形状にも配慮が必要です。計算は知識がなくできそうにないので、試行錯誤します。
ちなみにマーク1を作った際は、部品同士を接着剤で固定していたため、動作させるうちにそれが剥がれたり、加えてトルクや電流の計算を知らずに作ったために、次第に生まれたての子鹿のようになってしまいました(それはそれでかわいい)。

元気な頃のマーク1はこちら。

曲面を使用する意義

さて、日々自作ロボットの動画をyoutubeで眺めていると、どうも平面だけを用いたデザインが多いことに気がつきます。マーク1も平面が多かったことを思い出します。
金属板やプラ板などを素材として利用すると、どうしても曲げ加工は困難で、曲面を作ることが大変だということに気がつきます。また、曲面を用いたところで構造的なメリットが薄いため、自作ロボットが直線や平面を多用したものになるのは自然なことなのでしょう。

翻って考えると、曲面を用いれば、それだけで多くの自作ロボットとは違う印象を自他に与えることができる、とも捉えることができます。
特に重要なのは、自分の認識に影響を与える、という点です。実際はそうでもなくても、「この子は特別なんだ」という思い込みを持てることが大事です。
ロボットの完成はまだまだ遠いうえ、SNSを覗けば天才か賢者か魔法使いなのでは?と思える方がごろごろいらっしゃいます。こういうところでモチベを高めておかないと挫折しかねません。

3Dプリントに際しての留意項目

パーツの出力には熱溶解積層方式の3Dプリンタを使用するため、以下のような欠点も頭に入れておく必要があります。

  • 0.数mmの誤差が生じる(印刷誤差+素材の熱収縮)
  • 一定角度以上の傾斜にはサポートをつける必要があるが、きれいに取るのは困難

パーツ同士やパーツとサーボモータの接合面、ネジ穴などには0.2mmから0.8mmくらいの隙間を作っておくと、いい具合に収まります。
ネジ穴に関しては、固定するのか軸にするのかによっても多少大きさを調整します。穴を円で作成するか多角形で作成するかによっても、多少大きさが異なります。
パーツのCADデータの作成前に、0.2mm単位くらいで複数の径の穴を円と多角形であけたモデルを作成・プリントし、試しておくと良いと思います。
なお、テストプリントに使用したPLAは他のフィラメントと比較して収縮しにくい素材のようなので、本出力ではABSやPETGなどを使用することを考慮して気持ち緩めに設計しました。

また、水平に近い角度の面を出力する際には、印刷開始面を作り出力物を支えるためにサポートを使用します。

f:id:sizohu:20200601113336p:plain

形状によっては必要不可欠なサポートですが、基本的にあまり綺麗には取り除けません。無闇にサポートをつけると、出力後にサポートの除去ができなかったり、表面が汚くなったり、サポートを取るときにパーツが折れたり割れたりします。しました。
私のプリンタの場合、水平から45度くらいまでの傾斜であればサポートなしでもある程度きれいに印刷でき、30度くらいではサイズが小さければ印刷はギリギリできるものの、印刷面がブレます。オーバーハングというらしい。
設計時には、出力の向きと各面の角度を考慮し、極力サポートを減らすよう心がけると良いです。
また、2mm径ほどの小さな穴にサポートをつけると、サポートが一体化して穴が完全にふさがってしまう場合があります。円ではなく多角形を用いるとサポートなしで穴を作れるので、小径かつ横向きの穴は特に多角形で作成するのがおすすめです。

f:id:sizohu:20200601113343p:plain

また、3Dプリンタ(熱溶解積層方式)は出力結果を左右する要因がかなり多く、気をつけていても一定の確率でプリントに失敗します。たぶん私だけではないと思います。
出力時間も一辺5cmの直方体くらいのサイズで1時間弱くらいと中々かかるため、部品点数が多くなる(=印刷回数が多くなる)のは精神衛生上よくありません。部品点数は可能な限り少なくしたいです。
仮に、部品が1点増えれば足数6として計6点、一度に複数印刷できないサイズ・形状であれば印刷回数が6回も増えます。6回に1回くらいは印刷も失敗します。
と書いたけどこれは完全に単なる設計力不足。

先述したサポートも、手間さえかければ綺麗に除去することが可能なケースもあります。しかし、印刷と同様に、足の本数とパーツの数だけその手間がかかります。
……多脚が流行らない理由が少しわかる気がしますね。

試作品の完成

上記すべてを踏まえ、実際にプリントした3軸可動の足がこちら。

f:id:sizohu:20200603154910j:plain
組み上げ前

f:id:sizohu:20200603154822j:plain
伸ばしたところ

f:id:sizohu:20200603154814j:plain
曲げたところ

一足あたりのプリントするパーツ数は7、足の付け根は角張っていますが、胴部に納まるため問題ありません。
爪先は別パーツになっており、足先が外に出たときのトルクを考慮して内側に少し入れ込んでいます。また、後から接地の微調整をする際も爪先だけ作り直せばいいので、プリントが楽になります。 配線は一部露出しますが、基本的には外装パーツとサーボモータの間に隙間を設けて通しています。

各ネジ穴はサポートを使用しないで印刷できるよう6角形で作成しています。
また、固定に使用しているネジは、サーボの固定に2M×6mmを10本、パーツ同士の固定に同じく2M×6mmを7本使用しています。
サーボの両軸化には、シカゴネジ?と呼ばれるものを見つけ、使用しています(5M×6mm)。 本当は軸にはベアリングとかも使うといいのでしょうが、一旦はこれだけで作り、様子を見ようと思います。

ちなみに、今回ここに至るまで各パーツ3度ほどプリント→設計修正を繰り返しました。CADでは問題なかった部分が印刷すると0.数ミリ合わなかったり、気づかないミスがあったり……。

f:id:sizohu:20200603155244j:plain
使われなかった部品たち

プリントして初めて得られる気づきも多く、設計→プリント→修正のサイクルをいかに早く回せるようになるかが今後の課題ですね。

つづく。

追記。動かしてみた