otto:二足歩行ロボット~①組立編
Arduinoベースの二足歩行ロボットotto(オットー)ロボットを組み立てて遊んでみようと思います。
このロボットは3Dプリンタで造形した可動脚とArduinoマイコン+マイクロサーボモーター(4個)で構成されている二足歩行ロボットです。
ロボットの名前はotto(オットー)と言いましてotto DIYというオープンコミュニティサイトにて3Dプリンタファイル、Arduinoスケッチ/ライブラリー、組立方法などの必要な情報がすべて公開されてます。
ということから、公開情報を元に自分でパーツ入手して組み立てることも可能ですが、今回は製作に必要な全パーツが揃っているキット商品を手に入れました、
製作からプログラミングまでを何回かの記事に分けて投稿していく予定です。今回はまずは組立編と称して組立から基本動作のプログラムまでを書いていきます。
情報は公式サイトの「OttoDIYサイト」をベースにいろんなサイトから入手できます。また製作&プログラミングに必要なファイルはGitHubサイトのGitHub Otto DIY/DIY ディレクトリーにすべて公開されて誰でもダウンロードできます。
(このGitHubサイトの中のグリーン色のボタン[Clone or download]をクリックするとDOWNLOAD ZIPというボタンが表示されるのでこれを更にクリックすると全ファイル一括ZIP圧縮されたファイルをダウンロードが可能。)
目 次
パーツ
OttoDIYキットのパーツリストです。
- 3Dプリンタパーツx6種(Bodyx2(上下各1)、脚x2(左右各1)、足x2(左右各1)
- ArduinoNanox1
- ArduinoNanoシールドx1
- マイクロサーボSG-90x4
- バッテリーケース(単3x4個)x1 (注、後にも出てきますがアルカリ乾電池を使用、充電タイプのニッケル水素電池は電圧付属のため使用不可)
- スイッチx1 (注、電池ケースに配線された状態で納品されます。)
- スイッチ・キャップx1 上記スイッチノブに差し込んで使います。)
- 電子ブザーx1
- 超音波距離センサーHC-SR04x1
- ジャンパーワイヤx8本(メス・メスタイプ)
- ミニUSBケーブルx1
- ⊕ネジ用ドライバーx1
3Dプリンタパーツ
3Dプリンタ用のデータファイルがリリースされているので3Dプリンタが身近に利用できる環境ならば自作可能です、3Dプリンタ用データファイルはOtto DIY/DIYからダウンロードできます。
またThingverse(3Dデータ共有サイト)にもデータファイルが登録されているのでそちらからのダウンロード(無料)も可能です。オリジナル形状以外のバリエーションもアップされているのでそれらを3Dプリントしてちょぅと変わった形状で作るのも良いかもしれません。(但し未検証です)
ArduinoNano
Arduinoシリーズの中ではUNOと並んで定番のNanoです。見た目通りの普通のNanoです。ピンヘッダーは半田付けされてました。
ArduinoNanoシールド
シールドとはArduinoにダイレクトにドッキングできる様ピンが配置されている拡張ボードのことですが、これはNanoのピン配置に適合するよう設計されてます、
サーボモーターコネクタがそのまま接続できるようにピンヘッダーが配置されてます。
ArduinoNanoを実装した状態
マイクロサーボSG-90
定番中の定番のマイクロサーボです。サーボ・フォーン(3種)、取付ネジ(3本)が付属されてます。全部で4セット同梱されてました。
4個のサーボ・モーターは全部同じ物でしてLeg(脚)、Foot(足)のどの部分にも共通して使えます。
付属品の画像、サーボ・ホーン(C)は今回は使いません
バッテリーケース
単三電池が4本収納できる電池ケースです、キット商品ではスイッチの配線が既にされている状態で納入されます。
スイッチ・キャップ
上記スイッチのノブ(青色)部分にかぶせて使います。画像では判り難いですが円筒形のものです。
電子ブザー
ピエゾ素子を使った電子ブザーです。半田付け後の洗浄液の侵入を防ぐシールが貼られているので組付け前に剥がすのを忘れないように。
剥がさないと発音部分が塞がれたままになるので音が小さいままです。
超音波距離センサー
メガネの形をした円筒形のものはそれぞれ超音波送信モジュール、受信モジュールです。これを使い対象物からの音波の反射を検出します。
障害物検知、距離測定が可能になります。
下の画像中の基板マーキング「T」がある方が送信モジュール、「R」がある方が受信モジュールになります。見た目にはほとんど変わりないですが。
ジャンパーワイヤー
メス・メスタイプのジャンパー線です。(ちなみに、このタイプのピンのことをデュポン・ケーブルと英語圏では呼んでます。)
8本がくっついた状態で納入されますが使用するのはその内の6本です。と言っても全部バラバラに剥がさないこと! バラバラ状態ですと配線がまとまら無くなりぐちゃぐちゃになります、まずはこのままキープです。ちなみに、バラバラでも動作的には全然問題ないです。
具体的には、4本、2本、2本の3束になります。詳細は組立て手順で書きます。
では組立開始!
前述のGitHub Otto DIY/DIYサイトにアップされているインストラクション・マニュアルの記載内容に従って順番に組立を進めていきます。
サーボ・キャリブレーション(センター出し)
この手順は上記インストラクション・マニュアルには記述されてませんがサーボモータを組み付ける前に実施といた方が良いと思います。もし、センターがずれていたとなるとサーボ取り外しが必要になり二度手間になりますので、ここは是非とも実施ておきましょう。
サーボモータは構造上±90°の角度範囲で動作します、そしてロボットの各パーツ(Leg・Foot)への取付はサーボモーターが0°位置の時に可動範囲のセンターに来るようになっている必要があります。
ということで、サーボモーター取付前にキャリブレーション(センター出し)を実施し停止位置を0°に設定するようにします。
キャリブレーションの必要性と方法については、OttoDIYサイトのブログページに詳しく書いてあります。そして、このブログではmBlockを使う方法でのキャリブレーションを紹介しております。また一方Arduinoのスケッチそのもので行う方法を紹介しているサイトもあります。
見た感じでは後者のArduinoスケッチの方法が簡単なので今回はこの方の方法を使いキャリブレーションをしてみます。
実際の詳細手順については上記、Link先の方法をみてもらうということで、ここでの説明は省略します。
画像:こんな感じでキャリブレーション実施。(サーボホーンは動きを見るために取り付けましたが必須アイテムでは無いです)、Arduinoのスケッチは同じく先人の方のソースをそのまま使わせてもらいました。
Leg(脚)の取り付け
インストラクション・マニュアルに従い左右のLegをボディに取り付けます。
①サーボモーター取り付け
Bodyの裏側からサーボモーターを嵌め込みます。嵌め込み方向はBodyの開口部に合わせる方向になります。
注)サーボモーターは4個共同じ物なのでどれを使っても良いです。
②サーボモーターネジ止め
ネジ止めをします(各2箇所)。使用するネジはサーボモーター付属のタッピングネジ。(m2.6×8㎜)—長い方のネジ2本
どちらか忘れましたが、片方のネジ穴はかなり固くパーツにクラックが入るのではと心配でしたのでゆっくりと慎重にねじ込みをしました。
サーボ本体を手でツマんで軽く動かしてみてガタが無いことを確認する必要があります。ネジの絞め込みが甘いとつまんだ時にガタつきます。
③取り付け完了
特に、難しいこともなく完了。表側から見た画像です。
④サーボ・ホーンの加工
加工といっても大したことではなくただ、カットするだけです。
下の画像に加工前(上)と加工後(下)を載せてます。
インストラクション・マニュアの説明図を引用、図中ではハサミの絵になってますがニッパーで切りました。
⑤Leg(脚)の取り付け
同じくインストラクション・マニュアの図を引用しますが、加工したサーボホーンを使ってLegを固定します。
注)Leg固定の前にFoot用のサーボモータ・リード線を事前に下図の様にBodyの開口部まで通して置く、これは先人の方の意見を参考にしています。
サーボ・ホーン固定ネジで固定する(付属品の中の短い方のネジ) ネジの種類についてはパーツ紹介記事中画像のサーボ付属品画像を参考にしてください。
左右のLegを取り付けた状態。
Foot(足)の取り付け
①サーボ・モーター取り付け
まずは、サーボ・ホーン(B)を嵌め込み、ネジ止めします。写真では黒色のネジです。(サーボモーター付属のネジをなくしたので手持ちのネジを流用しましたがたまたま手持ちネジが黒色というだけです。)
次にサーボ・モーターを脚パーツに差し込みサーボ付属の「サーボ本体固定ネジ」にて固定(下の画像の左側のネジ)します、しかしながら指定された「サーボ本体固定ネジ」ではしっかりと固定されません。
「サーボ本体固定ネジ」はタッピングネジのため穴径の大きな物を挟み込んで締め付けることになります、この場合サーボ・モーターのフランジの穴径の方が3Dパーツの穴径よりも大きいのでネジは裏側(画像では見えませんがネジ頭の見える部分の裏側にあたります)から差し込むのが正解となります。でも、その方向からネジを入れるとドライバーの先が入りません。さぁ~、困った。
そこで、この部分も先人の教えに従いM2x6mmのボルト&ナットで固定しました。
裏側のナット固定部分の画像、指が入らない部分なのでピンセットなどを使い四苦八苦。
画像中のM2x6mmネジを使用。長さは6㎜ジャストでなくてもOK、8㎜とか10㎜デモOKと思います。
インストラクション・マニュアルにメモを追記しました
②Footの組み込み
足パーツはネジ止めではなくただ嵌め込むだけです。ちょっと難しいですが足パーツが割れない程度に手で拡げて嵌め込みます。
インストラクション・マニュアルに詳しく書いてあります。以下に引用したものを書きました。
完成状態の画像です。
サーボホーンが見える方向が前方向。
電子部品取り付け
①ArduinoNanoへのシールドの実装
ArduinoNanoボードとシールドを合体させます。
②超音波センサー組み込み
オレンジ色の3Dプリンタパール、Head(頭)に超音波センサーを組み付けます、ネジ止め等はなくて単に差し込むだけです、奥まで差し込まないと次の工程のArduinoNano+シールドボードが入り込まないので最後まで仕込んでください。
裏側から見た画像です。
③ArduinoNano+シールド組り付け
超音波センサーがあるので、Headの定位置に入れ込むのに割とてこずります、USB、DCコネクタ側から入れ込むとスムーズな気がします。
うまく収まったら、M2タッピングネジで固定します。それほどの重量物でないので対角線の2点止めにしました。マニュアル上でも2点止めと記述されてます。
この時点で、余っているのネジはサーボ本体取り付け用のM2x8mmネジ(2本)だけですのでマニュアル上ではこれを使うよう書いてあります。しかしこれではちょっと長すぎて最後の方になるととても固くなります。
ということから、ここでも手持ちのM2x6mmのタッピングネジを使いました。
④スイッチの取り付け
インストラクション・マニュアルに従い取り付けます。
上記マニュアル内の画像の一部を以下に貼りつけました。
電池ケースに半田付けされているスイッチ(青色ノブ)を指定の場所に嵌め込みますおさえ押さえパーツとしてサーボ・ホーン(B)を使います。
但し、この時点で余りのネジ(M2タッピング)は無いので、再度、手持ちのネジ(サイズ不明)を使いました。
⑤スイッチキャップ取り付け
スイッチキャップとはスイッチノブにかぶせる赤色の円筒形のものですが、これをノブの上から差し込みます。
マニュアルではスイッチ本体の取付前にかぶせるように書いてありますが、スイッチ取り付け後でも全然問題なくできました。
キャップかぶせる前
キャップかぶせた後
⑥電子ブザーの取り付け
取り付けと言っても単にBody内の穴に差し込むだけです。ゆるくてすぐ外れるようでしたらセロテープ等を電子ブザーの胴体に巻き付けてみてください。
.
次は配線!
組立が澄んだのでいよいよ配線に進みます。と言っても半田付けは不要で単にコネクタを差し込むだけです。
配線図確認
インストラクション・マニュアル中の配線図を以下に貼りつけました。
各部品との配線
①ジャンパーワイヤー
同梱のジャンパーワイヤーは8本が連結された状態ですが、それを4本、2本、2本と分割します。
但し、実際に使用するのは4本線と2本線なので、2本線が一つ余ります。
4本線:超音波センサーと接続
2本線:電子ブザーと接続
②サーボ・モーター配線
4個のサーボをもたーを以下の様に配線します。
- LegLeft:コネクタピン2
- LegRight:コネクタピン3
- FootLeft:コネクタピン4
- FootRight:コネクタピン5
脚・足の左右の定義は人間が通常使用している定義と同じです、すなわち前を向いて左側が左脚・左足、右側が右脚・右足になります。(当たり前ですね)
Bodyは前後対称形なので、自分で前・後ろを決めてしまえばよいです。でもサイトの画像などを見るとサーボ・ホーンが足からはみ出ている側を後ろにしているようなのでここでも同様の定義とします。
実際の配線画像を以下に真します。
③超音波センサー配線
配線図をベースに配線します。超音波センサーのコネクタには4個のピンがあり、それぞれが以下の様に配線されます。
- Vcc:+5V (橙色)
- Trig:コネクタピン8(黄色)
- Echo:コネクタピン9(緑色)
- Gnd:GND(青色)
カッコ内はジャンパー線のカラーを示してます。
④電子ブザーの配線
電子ブザー接続時には極性に注意が必要です、
電子ブザーのリード線をよく見ると長いリード線と短いリード線で極性を区別してあります。
- 長いリード線:コネクタピン13
- 短いリード線:Gnd
リード線を差し込んだ後に、抜け防止としてホット・グルーで固めました。
⑤電池ケースとの配線
電池ケースから電源を供給します、ちなみにケースには単三電池x4本いれますので電圧は+6Vになります。
これで配線は終了です。
完成までの最終作業
電池の挿入
電源スイッチが切れていることを確認してから単三アルカリ電池x4本をケースに入れていきます。
スイッチは胴体から飛び出している状態でオフ、引っ込んでいる状態でオンです。
それと、重要なことですが電池は必ずアルカリ乾電池(1.5V)を使用のこと、ニッケル水素電池(1.2V)は電圧が低いので使用不可です。
Head(頭)とBody(胴体)の合体
Head(頭)には左右に爪があるのでそれを手で挟み、少し狭めるようにして胴体に差し込みます。
これで完成です。
ソフトウェア
Arduinoにプログラムをダウンロードすることで動作が可能です、まずはGitHub Otto DIY/DIYサイトにアップされているサンプル・スケッチを使い動作確認しましょう。
前準備として、上記GitHub サイト内のすべてのフォルダ&ファイルをローカルPC内にZIPファイルでダウンロード後、解凍しておきます。
ライブラリのインストール
スケッチをコピーする前にまずはライブラリーをコピーします。GitHubからダウンロードしたフォルダ群の中からlibrariesフォルダを探し、その中の全フォルダーをローカルPC環境のドキュメントフォルダ⇒Arduinoフォルダ⇒librariesフォルダ内にコピーします。
スケッチのコピー
同じくGitHUbダウンロードフォルダ内のフォルダ「Otto_allmoves」をフォルダごとドキュメント内のArduinoフォルダにコピーします。
コンパイル&ダウンロード
以下の手順で実行します。
- ArduinoIDEを起動
- PCとArduinoNanoをUSBケーブルで接続
- スケッチ・ブックメニューからOtto_allmovesを開く
- ArduinoIDE上でArduinoNanoの環境を設定
- コンパイル&ダウンロード
Ottoロボットの動作確認。
YouTubeに動画をアップしました。
次回はプログラム編と称してプログラム手順の詳細を記事にする予定です。