[Robot] つい、出来心で四足ロボを…(2025/02/23追記)

だって3Dプリンタでロボット作ってみたかったんだもん…

●前置き

今冬の帰省は、単車の修理の関係もあって少々変則的なコトになった。で、現在は修理中の単車を残して一時帰宅してる。当然、移動は公共交通機関を使うので、移動時間はヒマなワケやな。まだあまり人の多い夜行バスに閉じ込められたくないので、人の少ない昼移動を使っている。

そうすると、なんか作業したくなるんやが、そういえばちょうど良いテーマがあったな…と。

最近は3Dプリンタでフレームを印刷して組み立てるロボットが増えてきてる。従来はCNCを使ってアルミ板を切り抜いていたワケやが、その加工過程(バリ取りとか曲げとか)をすっ飛ばせるんやな。まぁ、サポート材の除去はあるけどさ。

とはいえ、ロボットのフレームに関してはまだまだ設計ノウハウが溜まってないので、この段階で二足ロボを設計するのは時期尚早かなと思ってて少々モンモンとしてたワケや。

で、ふと思い出したのは、前職を辞める前に買ってストックしてたサーボの山。NX3421が10個ほど新品で放置されたままなんよね。これは今で言うS3411なんやが、ファームはver0300とかなり古い。とはいえ、このファームを書いているのはヲイラなので、自前で最新の2Kファームに書き換えてしまえば済むんよね。

ならば、一足2サーボで8自由度の四足ロボを作ってみても良いなぁと思ったのよ。それも全3Dプリンタフレームで。

●メカ設計

とりあえず、まずは基本となるブラケットの設計から開始した。当然、サーボの底蓋も外してしまい、3Dプリンタによる底蓋に反対軸の軸穴も確保してって感じやね。

一回目の印刷ではこんな感じやった。

まだ配線の処理もできていないし、サーボホーンは少し削らないと入らなかった。ブラケットの幅も若干広すぎやな。

で、その辺修正しての二回目はこんな感じ。

サーボホーンはそのままでスンナリとハマるし、反対軸もガタはない。うん、基礎設計はこんな感じで良いかな。

で、3Dプリンタ用に設計してて気づいたのだけど、アルミの時と違って三次元的にこういった部品データを組み合わせたassyの状態でstl化すれば、一発モノの部品になってくれるんやな。であれば、こういった部品も基礎部品としてフレームデータに組み込んでしまえば、何度も作図する必要はないわけや。これはラクでええな。

そうそう、サーボの蓋を閉めてるネジは純正のではなく、以前特注しておいたM1.7×22のナベ0番3種小ネジ。大量に作っておいてよかった(^_^;)。

で、ロボット本体の設計もある程度進んでいて、今はこんな感じ。

あとは足先を決定したら印刷を開始できるのだけど、単純な軸にするかリンク足にするかでちょっと迷い中。

(2025/01/14追記)

サーボへの負荷と動きのトリッキーさから考えてリンク足にするコトに。

で、こねくりまわしてこんな感じに。うむ、シンプルになってきた。

さて、また移動中に残りの作画かなぁ。

(2025/01/19追記)

で、とりあえすこんな感じに。

で、さらに色々ディテールを追加してこんな感じ。

3Dプリンタ前提の設計って、少し面取りとかするだけで「それっぽく」なるな。アルミフレーム前提の時代から考えると、反則だよねぇ(^_^;)。

●メカ製作

設計が済んだらひたすら部品を印刷しては組み立て。実際に組んでみるとわかることなんてのもあって、ここから更に若干の設計変更を行いながら組んでいく。例えば…

ケーブルが稼働範囲を狭めるので違う方向から出すように変更とか、そもそも一部の面取りで稼働範囲が増えるコトに気づいたので設計データ上で面取りして印刷しなおすとか色々作業をした。

また、作業しながらサーボのニュートラル出しをしておく。

シリアルサーボはサーボ内に補正情報を維持できるので、組んだら実際に稼働させて補正情報をセットしていけば、コントローラ側は原点情報で悩まなくて済むワケな。

で、ひたすら印刷と組み上げを繰り返して完成。

●基板設計

今回は普通のロボット用コントローラを使う気はなくて、一般のマイコン基板を使う予定。んで、無線も一般のRC用送信機と受信機を使ってみる。多分、2.4GHzでは最強やからね。

マイコン基板は何を使おうかなぁ。シリアルが2系統ある奴で、小さくて簡単に扱えるとなるとあんまりないからなぁ。最近キーボード作るのに使ったFLINT ProMicro R4にI2c<>UARTのブリッジチップを抱かせるのが良いかもな。どうせプロポ側は単調なので、ブリッジに任せてても問題ないやろし。

それか、いっそのことM5 Stackでも使ってみるか。一応シリアルは二系統あるみたいやし。

で、早速3D CADで設計したデータからdxfで寸法もらって、基板の設計開始。

細かい回路は後にして、サーボのコネクタやバッテリのコネクタ周りから描いていく。パワー系は最初に配置しとかないとね。

んで、今回はシリアルサーボ前提なので、10個あるサーボコネクタは全て並列接続にしてある。制御マイコンからはシリアル信号1本だけで全部制御の予定やね。逆に、RC用受信機からもシリアル信号を貰い、プロポのスティック等の動きを貰って動作に反映させようと思ってる。

この辺はいずれもXBUSプロトコルで動かす予定なので、RC用受信機としてはRG012BXを使う。これはプロポからのシリアルデータしか吐かない小型受信機なので、小さくて便利なんよね。

プロポは安いので充分なので、6chのT6x4でも良いのだけど、取れるアクションを考えるとスイッチの多いT14 Sportの方がロボコン関係の人には良いかもしれないね。今回は仕事用のT14を使う予定。

(2025/01/14追記)

色々調べてみたけど、結局今回はSTM32でスクラッチで書いてみようかな…と。多分なんだかんだで割り込み多用するコードになりそうやからね。で、既製品の基板で済ませるコトにした。

STM32 Nucleo Board STM32G431KB

このシリーズも色々あるけど、シリアル2本サクっと出せるのは、秋月販売分ではこれだけっぽいなぁ。

●ソフトウエア

今回はスクラッチからSTM32のコードを書いてみる。一応、プロジェクトごと公開を前提にしようかな。

STM32CubeIDEを使い、一部既に書いたコードを流用しながら組んでいくコトにする。主要なモジュールとしては

  • InputXBUS … RC受信機からのシリアル信号受信モジュール
  • OutputXBUS … サーボ駆動用のシリアル信号送信モジュール
  • MainControl … モーション管理(起動)モジュール
  • MotionPlayer … モーション再生モジュール

って感じか。

(2025/01/26追記)

で、まずはInputXBUSとOutputXBUSを実装してみた。受信器からもらったデータを一旦ストックし、別ルートでサーボへ送ってみる実験やね。

ちょっと苦戦したけどまぁ無事動作したので、次はMotionPlayerの実装。仮モーションとして左右にゆっくり動くだけのモーションデータをでっちあげ、フレームレート30Hzで再生してみる。

想定では4秒間隔で往復してるハズ(120分割で動いている)なので、まぁ合ってるやろ。

後はプロポの信号からモーションのトリガを掛ける部分と、モーション自体の前後関係とかの繋がりを上手にやるコードを書けば、完成かな。

(2025/02/23追記)

●基板実装

とりあえず発注してた基板が到着した。あと、バッテリスペースとの仕切り板も到着。

なんというか、普段の仕事のせいか非常に間延びしてるとしか言いようがないな(^_^;)。まぁ、そのうちなんか色々追加したVer.2を作ることになるのだろう。

で、買っておいた部品を組み上げていく。よく考えたらXHコネクタの垂直タイプの2Pを在庫してないコトに気づいたり、LEDの色を何にするか考えてなかったりでいくつか未実装やけど、まぁこんな感じ。

コイツを本体に載せるためのスタッドボルトの発注も忘れてるなぁ…あああああ…

(継続中)

Zak について

基本的にヲタクです。いや、別に萌えとかいうのではなく、ハマるとトコトン進めようとする癖があるので、自制が必要だという…。
カテゴリー: なんか作る, メカ, ロボット パーマリンク