ロボット

RaspberryPiと3Dプリンターで作るロボットアーム-稼働テストをしてみた

稼働テストをする前の予備知識

ロボットアームのフレームが完成したので、動くかテストしてみます。ロボットアームを動かすのにRaspberryPiを使っていきます。RaspberryPiの設定やサーボモータの動かし方は以下の記事を見てみてください。今回はテストなのでネジでサーボモータ(sg90)を固定せずに。テープで固定します。

また、今回のテストで使ったコードはgithubにアップしてます。

https://github.com/eskmoguran/robot-arm.git

土台と第一関節のテスト

土台と第一関節のテストをやっていきます。まずは土台にサーボモータを取り付けます。今回はテストなので、ネジで固定はしないです。ネジで固定しないのはテストなので、フレームを作り直す可能性が発生するからです。

次に土台に取り付けたサーボモータに第一関節のフレームワークを取り付けます 。サーボモータを取り付ける時は上からフレーム(第一関節)、サーボホーン、サーボモーターの順番で取り付けます。取り付けたら、テスト用のプログラムを書いていきます。

RaspberryPi zero WHにSSHで入ったらロボットアーム専用のフォルダを作成します。そこにテスト用のフォルダを作り、テストプログラムを書いていきます。 下がテスト用のプログラムです。簡単なプログラムでサーボモーターを0-180度動かすプログラムです。

#フレームワーク(土台)と第一関節のテスト

import time
import Adafruit_PCA9685

pwm = Adafruit_PCA9685.PCA9685()

pwm.set_pwm_freq(60)

print("start pca9685")

pwm.set_pwm(0, 0, 150)
time.sleep(1)
pwm.set_pwm(0, 0, 600)
time.sleep(1)
pwm.set_pwm(0, 0, 150)
time.sleep(1)

結果

成功です!!

サーボモーターの動きに合わせて第一関節も0-180度動きました。

第一関節と骨のテスト

土台と第一関節のテストをやっていきます。 先程の第一関節にサーボモータを追加します。一応動かないようにセロテープで固定してます。骨と第一関節でサーボモータを取り付ける時は上からフレーム(骨)、サーボホーン、サーボモーターの順番で取り付けます。取り付けたら、テスト用のプログラムを書いていきます。前回のテストプログラムと同じのを使います。

結果

失敗でした...

サーボホーンの溝とサーボホーンが上手く嚙み合わなかったです。 サーボホーンの溝が少し大きすぎました。

対策

サーボホーンの溝の形を変更します。既存の3Dモデルをfusion360のマイナス方向の押し出しで直していきます。このサーボホーンの寸法は殆どの部品で共通なのでプリントのやり直す数が多いです…..。


掴む所のテスト

最後に掴む所のテストをやっていきます。下の写真のフレームを使っていきます。まずはサーボモータを写真左のフレームに取り付けます。 フレーム同士を取り付ける時は上からフレーム、サーボホーン、サーボモーターの順番で取り付けます。


取り付けたら、テスト用のプログラムを書いていきます。前回のテストプログラムは使わずに新しいプログラムを作成していきます。掴む動作の検証をしたいので0-180度動かさずに0-45度で動かします。

#掴む所のテスト

import time
import Adafruit_PCA9685

pwm = Adafruit_PCA9685.PCA9685()

pwm.set_pwm_freq(60)

print("start pca9685")

#pwm.set_pwm(0, 0, 375)=90度
#pwm.set_pwm(0, 0, 150)=0度

pwm.set_pwm(0, 0, 375)
time.sleep(1)
pwm.set_pwm(0, 0, 150)
time.sleep(1)
pwm.set_pwm(0, 0, 375)
time.sleep(1)
pwm.set_pwm(0, 0, 150)
time.sleep(1)

結果

成功です!!

サーボモーターの動きに合わせて0-45度動きました。物を掴むことも可能でした。

しかし、色々課題が残る結果になりました。テスト用のフレームだったので作り直していこうと思います。課題が下のようになっています。

  1. 物を掴む時に物の厚み分サーボモータが動かない。なのでサーバーモータが無理に動こうとして異音がする
  2. 物を掴む時に滑ってしまう

対策
  1. プログラムを見直す。サーバーモータからのフィードバックがないので無理かもしれません。また。検証の記事をアップしていこうと思います
  2. 掴む所の表面に凹凸をつけようと思います

テストで見つかった点の修正

前回のテストで見つかった修正点を直していきます。サーボホーンの溝は現状は下の写真のようになっています。サーバーホーンが溝に確実にはまるような設計にしたのですが、今回はサーボホーンの形に合うような設計にします。

今さらながら何故こんなガバガバな設計にしたんだろうか...?

この画像には alt 属性が指定されておらず、ファイル名は IMG_20190414_142004-1.jpg です

サーボホーンの溝の寸法を修正する

サーボホーンの溝を修正していきます。小さくプリント時間が短いフレーム(掴むところの土台)をまずは修正します。 サーボホーンを溝に嵌めながら寸法を測ります。寸法を測ってみると大体先端部分で2mm、根本の部分で1mm縮める必要があるので3Dモデルにスケッチを追加します。実際に既存の3Dモデルにスケッチを追加すると以下のような図になります。

デッサンを描いたら、マイナス方向の押し上げで新しい溝を作成します。作成したら下のような3Dモデルになります。このままだと少し角ばった溝の部分は3Dプリンターで印刷する時に失敗する確率が高くなります。なので角を取って滑らかにしていきます。

修正が完了しました。前回の溝より見た目かっこいい気がします。この溝の形状でテストを行っていきます。テストに失敗したら、再び寸法を修正していきます。

溝に上手く嵌るかテストする

今回のテストも実際にフレームとサーボモーターを取り付けてテストを行います。テスト用のプログラムも前回、土台と第一関節で使用したものを使います。サーボモーターを0-180度動かすと連動してフレームが0-180度動くかチェックします。テスト用のプログラムはgithubにコードをアップしていますの宜しければご覧ください。

https://github.com/eskmoguran/robot-arm.git

結果

成功です!!

いい感じに溝にサーボホーンが嵌まり、0-180度しっかりと動いてくれました。

修正前と修正後の写真を見比べてみると下のようになります。このデータはsg90を使う時に何時でも役に立つので、修正しておいて良かったです。

テストの考察

サーボホーンの溝を修正しました。最初にしっかりと設計すればよかったです。下のような順番でやっていくのが賢いやり方かもしれないです。

  1. 簡単なテスト用の3Dモデルを作成する
  2. 簡単なテスト用のモデルでテストを行う
  3. テスト結果を評価して、修正がある場合は①に戻る。
  4. 実際のモデルに適用する

簡単なモデルを作成してテストを行うと3Dプリンターのフィラメントの節約になりますし、次回同じ構造のフレームを作成していこうと思った時にテストの結果が使い回せるので、いいことづくめです。

次回は組み立て編です。実際に部品通しを組み合わせていきます。ロボットアーム編の更新は来週の土日になりそうです。プリントとやり直しとネジ穴を空ける作業で4日ぐらい時間がかかるかもしれません。