こちらの記事について、内容・翻訳・視点・長さなど、皆様のご意見をお送りください。今後の記事製作の参考にしたいと思います。
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
こちらの記事の感想をお聞かせください。
Arduino制御のTinkerKitのロボットアームを組み立てて実際に動かしてみた
イタリア語で腕を意味するBraccioはロボットアームの組み立てキットである。完成したロボットアームをArduino用のシールドを使って制御することができる。
アームは合計6つのサーボモータで駆動する。
- M1:ベース
- M2:肩
- M3:肘
- M4:手首
- M5:手首まわりの回転
- M6:グリッパ
Braccioは目的とするアプリケーションに応じて様々なことができる。またアームの先端にはあらゆるものを取り付けることができる。
例えば:
- カメラによる対象追尾
- ビデオ会議中に常に自分の顔が映るように携帯電話やタブレットを動かす
- 太陽の方向を向くソーラーパネル
Braccioの組み立て
Braccioの組み立ては極めて簡単だ。しかし手がもうひとつ欲しいと思う場面が何度かあった。
組み立て説明書の手順9番に掲載されているイメージ図の一部が誤解を招くかもしれない。アームの底面が1枚だけ他の手順とは別の方向を向いている。残念ながら私は手順15番までそのことに気付けなかった。このブログを読んでいる皆さんが同じ過ちをしないことを望んでいる。
手順書には記載されていないがもう一つの注意点は、モータの配線はアームの中央を通す必要がある。私は組み立ての邪魔になったり絡まったりすることを避けるため、全ての組み立てが完了した後で配線を行った。
完成したアームをレーザーカットされたMDFの土台に固定し、テストを始めた。開始直後に、このアームは重心が高くなっており電源が入っていない場合は直立での姿勢維持に苦労することが判明した。
そこで稼働時にアームが転倒することを防ぐため、アームの土台を分厚いMDFで作り直して安定させた。
新たに作成した土台には今後のプロジェクトのためにArduinoボードを固定するための穴も用意した。
組み立てが完了した後で、組み立て手順がわかりやすく示された動画を偶然発見した。この動画はarduino.orgからアクセス可能だ。
ライブラリを探索
Braccioライブラリには2つのメイン関数が用意されている。Braccio.servoMovementとBraccio.beginである。Braccio.beginは初期化とアーム初期位置の設定に使用する。
全てのサーボモータは初期化を行うと以下のsafetyポジションに設定される。
- M1:ベース 90°
- M2:肩 45°
- M3:肘 180°
- M4:手首180°
- M5:手首まわりの回転 90°
- M6:グリッパ 10°
Braccio.servoMovementを使用するとBraccioに使用されている全てのサーボモータを1つのコマンドで制御できる。各サーボの動作のステップ間隔をミリ秒単位で設定し、各サーボの移動角度を与えることで、Braccioの全てのサーボを1つのコマンドで制御することができる。
ステップ間隔と各モータのパラメータ範囲は以下に示す通り。
- ステップ間隔:10-30ミリ秒
- M1:ベース 0-180°
- M2:肩 15-165°
- M3:肘 0-180°
- M4:手首0-180°
- M5:手首まわりの回転 0-180°
- M6:グリッパ 10-73°(10°:開いた状態 73°:閉じた状態)
テスト
Braccioの制御にはキットに同梱されたシールドと手持ちのArduino Unoを使用した。付属シールドはUNO R3のピン配置と互換性のあるボードに対して使用可能だ。
これまで旧バージョンのIDEを使用していたので、まずは最新版をダウンロードした。Braccioをサポートしているのはバージョン1.7.9以降となっている。まずは組み立てが問題ないかを確認するためIDE内のサンプルプログラムを使って動かすことにした。
testBraccio90というスケッチを使用し、6つのサーボモータを同時に動かして直立姿勢にする。実際にスケッチを書き込んで動作させてみるとサーボにずれが見られた。
サーボのずれを解消するため、アームを解体してプラスチック製のサーボマウントを動かして調整を行った。残念なことに最初に組み立てた状態から改善はできなかった。
理想を言えば組み立て前にサーボにずれがないことを確認しておく必要があった。6つのモータをシールドに接続してスケッチ:testBraccio990アップロードするだけで確認は可能であった。
その後simpleMovementssketchをテストしてうまく動かすことができた。次にtakethespongeを試した。初めのうちはうまくいったかに見えたが、初期位置に戻る際にグリッパが土台を掴みスポンジをノックしてしまった。
この現象を改善するため最後の動きにおいてM2の移動角度を90°から100°に変更した。再度アームの電源を入れると問題が悪化していることがわかった。アームの角度を増やすのではなく、減らす必要があった。そこでM2の移動角度を75°に変更してアームが初期位置に戻った場合でも十分なクリアランスが確保できるようにした。このような問題はサーボにずれがなければ起こることがないと思われる。
今後の展望
BraccioのロボットアームがArduinoの公式ロボットJohnny6に組み込むことができたら非常に面白いだろうと思った。しかしJohnny6のこれまでのプロジェクトを見ると、Johnny6に対してコンポーネントを追加することは、荷重という点において耐えられないだろうということに気付いた。2つのロボットが協調すればもちろん面白いのだが、もうしばらくはBraccio単体で遊んでみようと思う。