レゴとarduino nanoで四足歩行ロボットを作る

Robot

今年のGWはコロナの影響でなかなか外に出られなかったので,この期間に昔から作ってみたかった四足歩行ロボットを作ってみました.

ハード製作に疎い自分がいかにしてロボットを簡単に作るかということを考えると,持っているレゴブロックを使って機構の概形を作り,これにサーボモータや電気回路を取り付けていくという方法が良いかと思いました.この方法であれば,機構の製作に必要な加工の工程はレゴブロックにドリルで穴を開ける工程のみとなります.CNCやレーザーカッターを使って材料を切り出す必要がありません.さらに,製作中に部品の長さが足りないと思ったらレゴブロックを組み替えればいいだけなので,比較的楽にハード製作ができます.

制御としてはサーボモータを動かす角度を予め決め打ちするシーケンス制御を採用しました.制御に関しては手抜きですが,なんとか動く四足歩行ロボットをGW期間中に完成させることができました.

動いている動画は以下です.

レゴとarduinoで動作する四足歩行ロボット

だいぶ動きはカクついてますね(^^); 次回作は,もう少し滑らかで自然な制御を実現したいです.

機構

完成した機構の概形です.我ながらかっこいいアングルで写真が取れたと思ってます.配線だけなんとかしたいですね.

図1:四足歩行ロボットの概形

以下の写真がボディの部分で,真ん中の穴を開けている部分に電池ホルダー(単3 x 4)を装着しています.Panasonicの充電式のEVOLTAを使用していて,動作電圧は4.8 Vです.

図2:背面から見たボディ

ボディに電気回路を載せた図が以下です.2つのネジでボディに電気回路を固定しています.

図3:ボディに電気回路を取り付ける

組立の最終工程で,脚を4つボディに取り付けます.

図4:ボディと脚

脚の部分の作成が,機体製作初心者の私にはハードでした.今回の四足歩行ロボットは8つのサーボモータを用いて歩行を実現しています.ネットで見かける四足歩行ロボットはどちらかといえば12個サーボモータを使っている四足歩行ロボットの方がメジャーのように思います.12個サーボモータを使う場合,回路も複雑になりますしコストもかかるので,できるだけ安く四足歩行ロボットを作るという目的で今回はサーボモータを8つを搭載することとしました.

さて,8つサーボモータを使うということで,1つの脚には2つのサーボモータを搭載します.歩行動作を実現するためには2軸の回転を実現しなくてはならないため,直角にサーボモータを取り付けなくてはなりません.そこで以下のようにブロックを組んでいます.

図5:ロボットの脚

穴を開けたレゴブロックは以下です.

  • 1×4のプレート x 4
  • 2×8のプレート x 2
  • 1×1のブロック x 2

サーボと2×8のプレートの固定にはサーボモータ購入時に付属していたネジを使い,サーボと1×4のプレート・1×1のブロック固定用にはM2のネジを使いました.こうして,サーボブラケットの代わりをレゴブロックで作っています.

レゴブロックに開けた穴はこんな感じです.

図6:レゴブロックに開けたネジ穴
電気回路

配線は以下のような感じです.今回のようにセンサ等を積まないロボットは,回路製作が比較的容易なのでユニバーサル基板で実装しましたが,回路が複雑になったらプリント基板の作り方を勉強しようと思います.

図7:電気回路

図3のようにボディに電気回路を取り付けたかったため,ユニバーサル基板に2つドリルで穴を開けています.

電池ボックスにはQIコネクタ圧着しました.QIコネクタの圧着に関してはこのサイトがわかりやすかったので,載せておきます.
https://fumimaker.hatenablog.com/entry/2019/06/16/220408

ソフトウェア & 制御

制御の方法は,以下のサイトを参考にしました.
https://makezine.jp/blog/2016/12/robot-quadruped-arduino-program.html

歩行は以下のステップ1〜ステップ6を繰り返して実現しています.左の図が脚を地面に対して垂直に下ろした場合,右図が右上の脚のみを振り上げた場合を表しています.(振り上げている脚を水色に着色しています.)

ステップ 1
・右上の脚を前方に押し出し,振り上げる.
・右下の脚を前方に押し出す.

ステップ2
・左上の脚と左下の脚を後方に引く.
・右上の脚と右下の脚を後方に引く.
・右上の脚は振り上げたまま.
→機体を前方に進ませる.

ステップ3
・左下の脚を振り上げて,押し出す.

ステップ4
・左上の脚を振り上げて,前方に押し出す.
・左下の脚は地面に下ろす.

ステップ5
・左上の脚を浮かせたまま,後方に引く.
・左下の脚を後方に引く.
・右上の脚を後方に引く.
・右下の脚を後方に引く.
→機体を前方に進ませる.

ステップ6
・右下の脚を振り上げて,前方に押し出す.

ソースコードは以下です.
https://github.com/remmaTech12/quadruped

仕様
サイズ220 x 180 x 150 mm
動作電圧4.8V
今後の予定
  • 強化学習等を用いて,歩行制御の最適化を行いたい.
  • レゴの純正部品に穴を開けずに組み立てたい.
    • 穴開きブロックやレゴと互換性のあるサーボモータは発売されている.
    • 今回の動画を先輩社員に見せたら「レゴに穴開けちゃうのは邪道だ」と言われてしまった.
  • 電気回路をKicadかEagleで設計し,プリント基板にしたい.
  • 機構に歪みがあったようで,歩行中に脚がもげることが何度かあった(悲).次回作は強度面もケアしたい.
参考サイト

コメント