今回は私が3Dプリンタを使って作った初めての4足歩行ロボットの話をしたいと思います。
日々3Dプリンタを使って作りたいものが出てきて投稿が遅くなりましたが、CADデータを公開してほしいというありがたいご要望を多数頂いたのでご紹介したいと思います。
3Dプリンタを使って作った本格的な動くもの、そして電子工作という趣味も含めその製作は大変得るものが多く個人的に非常に勉強になったものとなります。
本来製作過程において細かくご紹介したいところでしたが遅くなってしまったため、いろいろと思い返しながらご紹介していきたいと思います。
昨年秋ごろから電子工作という趣味を始めましたがテスト環境以外でちゃんと動くものを作ろうと思うとなかなか難しくなります。
そして3Dプリンタの導入は非常に大きな武器となりました。
昨年末に初めての3Dプリンタ『Creality Ender3 V2』を主に電子工作用途で購入しました。
3Dプリンタはどんな趣味にも便利に使うことが出来ますが、公開されているSTLデータを使って出力させるだけなら多分すぐに飽きてしまうだろう・・・
そんな思いから私は3Dプリンタ導入の前に先にCADの勉強をするようになりました。
Fusion360を使ってのモデリングの勉強となりますが、モデリングなんて全くの初心者というか初めてで・・・CADの勉強をしながらある程度自分の思うようなものが作れるようになれれば3Dプリンタを導入しようと考え、自分には合わないようなら3Dプリンタの購入は諦めよう・・・そんな気持ちで当時CADの勉強を始めた覚えがあります。
3Dプリンタは非常に便利な道具となりますが、自分がイメージしたものを形にしようと思うとCADでのモデリングの知識は必須となります。
3Dプリンタ関連のブログ記事も少し書くようになり「3Dプリンタの購入を考えています」「オススメの機種は?」等のコメントやお問い合わせを頂くようになりましたが、なかなか的確な返答が難しいところです。
先述のように公開されているデータを使うだけなら誰でも作れるわけですが、実際に自分が作りたいものを形にしたいと思うとCADの知識などが当然必要となってくるわけなので、なかなか万人にオススメすることが出来ないのが3Dプリンタになるかと思います。
本記事を読んで頂いている方はおそらく3Dプリンタ好きや電子工作好きの方だと思いますので、今回ご紹介する4足歩行ロボットの製作過程をご紹介しながらその楽しさが少しでも伝わればと思います。
私なんかは完全に3Dプリンタにハマってしまい3Dプリンタ歴半年にして現在2台目の『Artillery Genius』も導入し2台体制で楽しんでおります。
電子工作に3Dプリンタという組み合わせ、これ最強のコンビだと思っています!
それでは4足歩行ロボット(スパイダーくん)をその製作過程もまじえてご紹介していきたいと思います。
目次
4足歩行ロボット製作ノート
M5Stackとの出会い
CADでのモデリング、そして3Dプリンタ歴半年ほどの私がまだあまり大きなことを語ることは出来ませんが、何か作りたい目標的なものがあると楽しくその目標に向かって学習することが出来るのでいいですね。
私の場合、M5StickCというマイコンボードとの出会いで電子工作という趣味をはじめるようになりました。
高校や大学時代に工学部に所属していたこともありある程度の知識はありましたが(もう完全に忘れてしまっていますが)、M5Stackとの出会いでもう忘れていた電子工作という趣味に目覚めました。
そしてこのM5StickCを使って動かすPuppyCという4足歩行ロボットが今回製作したロボットのベースとなっています。
4つのサーボモーターを使った単純な歩行ロボットとなりますが電子工作でこのような動くものが作れれば非常に楽しく、そんな事からこのような4足歩行ロボットを自分で作ってみるのを目標にCADでのモデリングの勉強をはじめました。
CADでのモデリングは覚えることが多く非常に難しいのですが、このような何か目標みたいなものを設定すると楽しく学習していくことが出来ますね。
上記PuppyCくんが4サーボ制御なので関節数を増やした8サーボや12サーボで動く4足歩行ロボットを想定してモデリングをはじめました。
最終的にArduinoを使って制御する形となりましたが、当時はハードやプログラムなどソフトの知識もあまりありませんでした。
よくその状態で高い目標値を設定したものだと今では思います。
楽しさが先行していたんですね、きっと!
モデリングの開始
そして初めてモデリングした4足歩行ロボットの関節部分がこちらとなります。
今見ると酷いものですが、各関節の可動域の計算に非常に頭を抱えながら作った記憶があります。
この投稿をInstagramで見る
3関節なので4足で12サーボといきなり難易度の高い方を想定して作っているのが驚きです。
今回ご紹介するデータを公開したものはこれとは違い2関節の8サーボ構成の4足歩行ロボットの方となります。
1日1モデリングを目標に身近にあるものをCADでモデリングするという練習をやっていましたが、3ヶ月ほど楽しみながらやっているとなかなかいい感じに関節部分は出来上がってきました。
この投稿をInstagramで見る
全くのCAD初心者がようやくですがここまで作れるようになってくると、CADって難しそう?なんていう固定概念も吹っ飛び、もう楽しい事だらけで・・・こう思えるようになってきたのでこの時点で初めての3Dプリンタを購入しました。
そしてこの関節部分を3Dプリンタで出力させて動かす・・・となるわけですが、ここからは3Dプリンタ側の知識が必要となりこれまた思うように進まなく・・・
CAD上で計算して決めた寸法通りに3Dプリンタでパーツを出力させるのは、初めてだとなかなか難しいものがあります。
干渉等がないCAD上での理想値では実際にパーツを出力させた際にサーボモーターをハメ込む時にアームが短すぎ広げて入れる際にポキっと折れたり・・・、CAD上ではちゃんとハマっているのに出力パーツではその寸法精度の問題で上手くハマって綺麗に稼働しなかったり・・・
CADの理想値にいかに近づけて出力させるかは3Dプリンタ側の知識も必要となりなかなか難しいものですね!
そしてようやく1アームが出来上がり実際に動かすことが出来ました。
CAD上で動かした時と同様に実際に出力させたパーツで動いてくれました。
この時は非常に感動したのを覚えています。
これが私が3Dプリンタで作った動くもの第1号だったと思います。(まだ足だけですが!)
この投稿をInstagramで見る
サーボモーターの可動域の調整などもして送信機でも自在に動かすことが出来ました。
この投稿をInstagramで見る
1アームが完成し対称となる反対側のアームもモデリングして作り動かすと全体のイメージがつかめます。
しかし、この時はまだボディーの事なんか考えてなかったんですよねー!
この投稿をInstagramで見る
CAD上でのイメージ通りアームが動いてくれると、その可動域からボディーを作っていき・・・
本当はこれって逆なんですよね!
この当時はまだまだCADの知識がなく。
使用パーツ(サーボモーターのサイズなど)から全体のサイズやどのような動きをさせたいかによりボディーサイズとアームのサイズを決めて作り込んでいく形が本来の順序ですかね。
いろんな4足歩行ロボットの形状&関節部分を参考になんとかボディー部分が完成しました。
初めて作った4足歩行ロボットとしてはちゃんと動きのモーションなども付けることができ動いてくれました。
3Dプリンタすごい!
そして電子工作楽しいですね!
この投稿をInstagramで見る
しかしバッテリーなど電源を乗せるスペースを全く考えてなかったぁ!
そしてアームの強度的な問題もありさらに修正が必要な部分があるのですが、この当時はCADでの修正もままならなかったので、1から4足歩行ロボット2号機を作りました。
こんなロボくんです!
こちらが今回ご紹介するロボくんとなります。
1関節減らし2関節8サーボ駆動での4足歩行ロボットとなります。
上記1号機のようにスパイダーをイメージしていましたが、完成して動かしてみると実際にはネコみたいな動きとなりました。
結果的に非常に可愛く気に入ったのでサイズや強度的なものをさらに詰めて製作したものを今回ご紹介したいと思います。
冒頭でご紹介したM5StickCを使って動かすPuppyCに関節が1つ増えたイメージを想定して作った、2関節8サーボモーター駆動のArduino制御のロボットとなります。
Arduinoの勉強もはじめて『Arduino入門編』の記事を自分への備忘録として書くようになりましたが、非常に多くのアクセスがありたくさんの方に見て頂いているようです。
そんなArduinoの勉強を始めたばかりの方に特に作って頂きたいロボットだと思っています。
製作して動かして完成というだけではなく、テスト環境等で使える動くものとして使って頂きたいと思います。
サンプルプログラムもダウンロード出来るようにしていますが、あくまで私が考えた基本動作プラスアルファとなるので、あとはプログラムにより全く違ったイメージの動きも作れますし、センサー等のハードを追加して動かしてみるといった動くもののベースといった使い方にもいいかと思います。
それでは今回ご紹介する2関節8サーボモーター制御の4足歩行ロボットを組み立てていきたいと思います。
まずはどんな動きをするロボットなのかを見ていきたいと思います。
上記3関節ロボと同様にスパイダーをイメージして作っていましたが・・・モーションを付けてみると結果的にはこんな可愛いネコっぽい4足歩行ロボットになりました。
この投稿をInstagramで見る
3関節ロボではサイズ的に難しかったこのようなピョンピョン走り回るモーションなんかも付けることが出来ます。
この投稿をInstagramで見る
私が作った基本モーションが入ったArduinoのサンプルスケッチもThingiverseからダウンロードすることが出来るようにしているので、私のように全く歩行ロボ製作がはじめてという方でも関数宣言により基本動作で最低限動かせるようになっています。
もちろん新たに動きのモーションを作ったりArduino学習用として使って頂いたり、またプログラムを完全に作り変えて違ったロボの動きにして頂けたりすると嬉しいです!
また足とは別に1サーボを使い首振りにより超音波センサー(HC-SR04)を使い自動走行出来るようにもしています。
こちらもサンプルスケッチを添付しているので自由に改変し精度を上げるなどして頂けるといいかと思います。
この投稿をInstagramで見る
こんな感じの動きをする2関節4足歩行ロボットという雰囲気が伝わったところで組み立てていきたいと思います。
3Dプリントパーツ&使用パーツ
3Dプリントパーツ
必要な3Dプリントパーツは以下のThingiverseからSTLデータとしてダウンロードすることが出来ます。
参考 Arduino controlled 2-joint 8-servo 4-legged Walking RobotThingiverseパーツ数は6種類あります。
センターアームは左右のパーツ点数を減らす&サポートが入らないように共通パーツとしてネジ止めする形状で作っています。
以下、必要な数出力させて下さい。
- body1.stl × 1
- body2.stl × 1
- center_arm.stl × 8
- hc_sr04_mount.stl × 1
- letf_arm.stl × 2
- right_arm.stl × 2
使用パーツ
こちらが全使用パーツとなります。
Arduino Nanoをセンサーシールドを使って制御しています。
- Arduino Nano × 1
- Arduino Nano用センサーシールド × 1
- SG90サーボモーター × 9
- HC-SR04超音波センサー × 1
- 降圧DC-DCコンバーター(必要なら) × 1
- M3ビス&ナット&スペーサー
組み立て
上記3Dプリントパーツ及び電子パーツが用意できたら組み立てていきます。
まずは左右のアームにサーボモーターを取り付けます。
左右アームはサーボを取り付けるビス穴で判断して下さい。
取り付けはサーボに付属のビスを使って下さい。
次にセンターアームを4つ作ります。
90°ねじった形状となるため3Dプリンタで出力の際のサポートが大変なのでパーツを分割し左右共通で使えるパーツ形状としています。
M3×6ビスとM3ナットでそれぞれ2本対角で固定します。
左右で向きが変わるので注意して下さい!
下写真のように左右対称に2本ずつサーボを取り付けます。
ボディーパーツに4つサーボを取り付け下写真のようにアームを配置します。
前足と後足が反転(対角に同じ向きのアームを取り付ける)していますが、これは単に私が作ったサンプルプログラムをこの向きで作っているからです。
ここからサーボホーンを取り付けてアームを固定していきますが、サーボモーターのニュートラル(センターの位置)が下写真のうに真っ直ぐなる位置で固定して下さい。
サーボモーターのセンター出しはサーボテスターなどがあると便利です。
またお持ちでない場合、Arduinoを使って90°の位置にサーボを固定した状態でサーボホーンを取り付けて下さい。
サーボモーターの制御はこちらの記事を参考にして下さい。
少し話が前後してしまいますが、サーボホーン取り付け部分はグラつきが出ないようにサイズを結構詰めてモデリングしているため少しきついかと思います。
サーボホーンを少しハメてから反対に向け床などに押し当てる感じにするとパチンとはまります。
次にボディーにM3×20のオス型スペーサーを4本取り付けます。
M3形状に対し3mm穴を開けているのでプリントパーツとしてはこちらもハメるのに少しきついかと思いますがペンチ等で回しながら入れて下さい。(インサートナットに変更してもいいかもです!)
ボディーのセンターはバッテリースペースとなっています。
13mm幅のベルクロを通す穴があるのでこれを使って固定します。
今回バッテリーはドローン用のリポバッテリーを使いました。
乾電池やモバイルバッテリーなどより小型でセル数により高い電圧を取り出すことが出来ます。
今回使うArduinoのセンサーシールドはDCジャックに7~12Vの電圧を印加する事によりArduinoやサーボモーターに5Vの電圧を供給し駆動出来るようになっています。
この範囲内のバッテリーを用意するか、これ以上の電圧のバッテリーではDC-DCコンバーターを使う形となります。
私はドローン用の3セルや4セルバッテリーが手元にあることからDC-DCコンバーターを使い5Vに落として直接Arduinoに電力供給する形で使っています。
次にボディー2パーツにM3×6のオス型スペーサーを取り付けArduinoを固定します。(長くなる分には問題ないです)
サンプルスケッチはArduino Unoでも共通で動かすことが出来るので、このようにArduino UnoにUno用のセンサーシールドでも同様にマウントすることが出来ます。
Arduinoのセンサーシールドに関してはこちらを参考にして下さい!
次にネックサーボの取り付けです。
下写真のように取り付け、こちらもセンターの位置が下写真となるようにHC-SR04マウンタを取り付けます。
配線を綺麗に取り回して下さい。
その際にサーボの配線が分かりやすいように目印を付けておくといいです。
サーボ番号はこのように振って下さい。
最後に配線です。
割り振ったサーボ番号順にデジタル端子に取り付けていきます。
サーボ番号2→D2ピン、サーボ番号3→D3ピン・・・ネックサーボはD10となります。
超音波センサーHC-SR04はEchoピンをD12にTrigerピンをD11ピンに接続し、VccとGNDは余ったデジタルピンに接続して電力供給する形です。
サンプルスケッチで動かしてみる!
Thingiverseには3Dプリントパーツデータの他に2種類のArduino用サンプルスケッチ(spider2_normal.inoとspider_HC-SR04.ino)が入っています。
スケッチ① spider_HC-SR04.ino
こちらのサンプルスケッチは起動後、障害物を避けてひたすら動き回るプログラムとなります。
この投稿をInstagramで見る
スケッチ② spider2-normal.ino
こちらのスケッチは、内蔵された基本動作を関数として呼び出し決まった動きをさせるプログラムとなります。
void loop()内に以下の関数を書くことによりその動作をさせます。
【例】5歩前進し、3歩右旋回する!
void loop(){
forward(5);
rightturn(3);
}
サンプルで作っている基本動作は以下となります。
関数 | 動作 |
standhome | 基本の立ち位置 |
sithome | アームを広げ寝そべる |
stand1 | 起き上がる動作1 |
stand2 | 起き上がる動作2 |
stand3 | 起き上がる動作3 |
downaction(step) | ピョンピョン飛び跳ねる |
wink(step) | 腕を振る |
twist | クネクネ動かす |
forward(step) | 前進 |
backward(step) | 後退 |
rightturn(step) | 右旋回 |
leftturn(step) | 左旋回 |
neckrotate | 首を左右に回転 |
neck_leftrotate | 首を左に動かす |
neck_rightrotate | 首を右に動かす |
neck_home | 首を正面に戻す |
任意で新しいモーションを追加して楽しんで下さい。
【追記】2021 I/O 9月号にロボくん紹介して頂きました!
うれしいことに4足歩行ロボくんですが、『2021 I/O 9月号』に記事を掲載して頂きました。
趣味で楽しみながら作ったものを雑誌でご紹介して頂ける、ほんとうれしい限りでございます!
【追記】書籍『わかる!電子工作』に掲載して頂きました!
新たに2021年11月26日発売の工学社発行『わかる!電子工作』にも4足歩行ロボくんを掲載して頂きました。
電子工作に必要な工具やArduinoやRaspberry Piなどマイコンボードについて、またその作例や電子工作で使われるパーツの紹介、M5Stackの紹介など、これから電子工作を始めてみようという方にピッタリな基礎知識が紹介された書籍となります。
そしてArduino学習に便利な自作ロボとして私の4足歩行ロボットくんをご紹介して頂きました。
拡張ボード(センサーシールド)についての追記です!
多くの方にこの4足歩行ロボットを作って頂いているようで、コメントなども多数頂くようになりました!
そしてこのロボくんに使っている拡張ボード(センサーシールド)についての追記です。
拡張ボードに複数サーボモーターを接続して使う場合、Arduinoが落ちる事がるといったコメントをいくつか頂きました。
この事は製作時に私も感じていたことで、リポバッテリーなどの電源を使い電圧をDC/DCコンバーターで5Vに降圧させてシールドの5Vラインに直接接続する事により対策していました。
おそらくシールドに搭載されている5Vラインのレギュレーターの問題だと思います。(電流不足によるもの?)
この4足歩行ロボットでは8個のSG90サーボモーターを接続し制御していますが、負荷が高い時で2A以上流れる時もあります。
これだけ多くのサーボモーターを接続して拡張ボード(センサーシールド)を使用することはあまりないかと思いますが、上記のように対策する事が出来ます。
またレギュレーターが強化されたセンサーシールドも試してみました。
こちらの記事も参考にして頂ければと思います。
最後に!
予想に反して非常に可愛い動きをするロボットになりました。
プログラムにより全く違った動きをするロボットにする事もでき、またハードの追加や2台を連携して動かしたりと・・・いろいろと遊べるかと思います。
個人的にはArduino学習用の教材的な使い方をして頂ければうれしいです!
4足歩行ロボットの記事を見て、3Dプリンター購入してしまいました(迷っていたら、ボケが先に来る年齢なので、、、)。
今、添付された”spider2_HC04.ino”で勉強させてもらってます。プログラムの中で首を振ってカウントする部分ですが、pulseIn(,,) は「タイムアウト時は 0 を返す」とあるので、”if(Distance <15){" は "if(0 < Distance && Distance <15){"になるんじゃないか? と思い書かせてもらいました。
[…] https://burariweb.info/electronic-work/4legged-waking-robot-production-notes.html […]
[…] 。今回は、「Arduinoで動かす4足歩行ロボット製作ノート!Arduino学習に便利なロボくんなので使って下さい!【STLデータ公開】」https://burariweb.info/electronic-work/4legged-waking-robot-production-notes.html […]
ウエブマスター様、見やすいサイトありがとうございます。
それからお詫びします。色違いでOKの思い込み。。。手持ちのサーボ、型番違いました。「SG」では、なく「MG」。ホーン違う、高さ違う、ギヤまでチガウ。まったくの別もの。よく確認しろですね。
F3Dファイル、作ってあったのですね。感謝します。Fusion360しかないので助かります。
セレーション部変更してホーンうまく入りました。フレームと同じ色のホーン。いいです。あとは、フレーム採寸してCADします。
閲覧者として再現性上がるのは、重要だと思います。CADの元データ大事です。変更できるはいい事です。。。
また、STLファイル汎用性低いですね、Fuson360で変更したらハングしました。無理でした。PC低能?
3Dプリンターと3DCADは、一体の関係と思います。
感謝
現在制作中。が、ホーン合わない位置が合わない等。CADファイルあれば変更できる??f3dの公開は、出来ないのでしょうか?
製作ありがとうございます(^o^)
正規SG90 or 互換サーボ等に付属のサーボホーンの形状が少し異なる事があるのは把握していますが、サイズが全然違うのであれば以下記事にあるSG90用のサーボホーンを出力されるのがいいと思います。
このロボでも使用できることは確認していますが、3Dプリンタの調整等によってはキツイなどあるかもしれません。
サーボホーンの方はSTEPファイルも添付しているので修正は簡単だと思います。
https://burariweb.info/electronic-work/sg90-servo-horn.html
出来ればそれで対応頂ければと思います。
ぶらり様,本当に素晴らしいアイデア,記事をありがとうございます!感動すると共に,エンジニアリング能力の向上の励みになります.そこで,少しでもお返しができないかと思い,Blenderモデルを作成してみました.もしよろしければ,そのファイル(6MB程度のサイズ)をお送りしますので,送付先(メールアドレス.私はTwitterしておりませんので.)をご連絡頂けると幸いです.