DreamerDreamのブログ

夢想家の夢です。〜揚げたてのモヤっとしたものをラフレシアと共に〜

VPS上でもtf-openposeは精度良く骨格検出してくれます

 

前回、tf-poseを使って骨格検出をしてみましたが、動きはするもののあまり精度が良くありませんでした。

dreamerdream.hateblo.jp

 

先に実戦しておられるこちらのブログで用いられている画像と同じ物を使ってみましたが・・・。

qiita.com

 

 

フリー素材ぱくたそ様のこちらの画像↓

www.pakutaso.com

 

sudo python3 run.py --image=./150415022548_TP_V.jpg

 

僕の実際の環境ではこんな状態になってしまいます。

f:id:DreamerDream:20200803092736p:plain

おかしぃなあ、同じtf-openposeを使っているはずなのに・・・

 

他にも、

 

f:id:DreamerDream:20200803092751p:plain

 

f:id:DreamerDream:20200803092800p:plain

 

 

ん〜、どうも様子がおかしい・・・

 

 

ということで、検出用のmodelを変更してみることにしました。

modelの指定は

cmu / mobilenet_thin / mobilenet_v2_large / mobilenet_v2_small

から選択出来るそうです。

 

 

 

では、実験です。

sudo python3 run.py --image=./150415022548_TP_V.jpg --model=mobilenet_thin

f:id:DreamerDream:20200803123616p:plain

あれ?よけいに精度が悪くなってます。

 

 

sudo python3 run.py --image=./150415022548_TP_V.jpg --model=mobilenet_v2_large

f:id:DreamerDream:20200803123808p:plain

うーん、これなら最初の方が良かったかもしれません。

 

 

sudo python3 run.py --image=./150415022548_TP_V.jpg --model=mobilenet_v2_small

f:id:DreamerDream:20200803124007p:plain

あー、悪くなってる・・・。何故か黒板にまで反応が・・・

 

 

実は女性モデルが苦手なのか?

f:id:DreamerDream:20200803125523p:plain

なんてことは無いですよね。

 

f:id:DreamerDream:20200803125627p:plain

えーっと・・・、ここでは不要なムスコの判定をしてくれているようですが、どうやら全体的に必用な下半身の判定が出来ていない様子です。

 

 

ダメモトで他の画像を試してみたところ、

f:id:DreamerDream:20200803130446p:plain

おお!?

こちらはすごくうまくいっています。

 

 

これは・・・、ひょっとして?

と、少し思い立つものがあり、最初の画像を試してみましたところ、

f:id:DreamerDream:20200803131216p:plain

ほほう!

 

 

f:id:DreamerDream:20200803131441p:plain

なるほど!

 

 

さらに、

f:id:DreamerDream:20200803131816p:plain

これはバッチリ!

f:id:DreamerDream:20200803131943p:plain

ここまですると見え辛い・・・

 

 

お気付きでしょうか?

 

実は元の画像のサイズを小さくしていました。

フリー素材提供先の画像をそのまま引っ張ってきていたので画像が大き過ぎて判定が難しくなっていたようです。

なんという失態・・・

 

前回記事で判定がうまくいかないのは服装のせいだとしていた画像もカンペキです。

f:id:DreamerDream:20200804105550p:plain

精度いいですね。

 

そもそも、run.pyプログラム自体にresizeオプションがありました。

 

sudo python3 run.py --image=./332TSURUTAMA20211_TP_V.jpg --resize=432x368

とすると、大きな画像もそのサイズにしてくれるようです。

 

ということで、精度の悪さは使う人の問題だっただわけで、tf-openpose自体はすごい便利です!

VPS上でも問題無く動作します。

※但し遅いので(画像1枚で数秒かかる)、動画の検出には向きません

今回は以上です。

 

ChatGPT API×Pythonで始める対話型AI実装入門(GPT-3.5&GPT-4 対応)

VPS上で画像から人の骨格を推定するOpenPoseが実行出来るのか実験してみた tf-pose-estimationならとりあえず動く

映像や画像から機械学習を用いて骨格を検出するプロジェクトの一つ「OpenPose」を用いた映像がこちらです↓


Realtime Multi-Person 2D Human Pose Estimation using Part Affinity Fields, CVPR 2017 Oral

 

めちゃめちゃスゴイ精度ですね。

 

この技術を用いると、特殊なスーツやセンサーを用いずとも機械に人の動きを入力する事が出来ますし、防犯カメラ映像から不審者を割り出すことも今までより容易になります。

なにより、これ出来たらカッコイイ!!これは是非やってみたい!!!!

 

しかし、本家OpenPoseは主にGPUを用いたアルゴリズム版で、別にCPU版の設定もあるそうですがこれは情報が少なくて難しそうでした。

 

VPSで使う場合はもちろんGPUなどありませんからCPUで判定させることになります。

 

そこで、色々と調べて回るとどうやらtf-openposeという、本家OpenPoseの真似をしてGoogleの誇るTensorFlowを使ったTensorFlow版OpenPoseというものがCPUのみで動作するということを知りました。

加えて、本家OpenPoseは研究用途はフリーライセンスでOKだそうですが商用利用は有料になるそうです。tf-openposeは商用利用まで無料のお手軽版のようです(その分精度は期待してはいけませんが)。

 

以前にラズパイでTensorFlowのラッパーライブラリーであるkerasを用いた画像判定をしたことがあるのでTensorFlowには少しだけ馴染みがあります。

dreamerdream.hateblo.jp

tf-openposeは、tf-pose-estimationやtf-pose等とも呼ばれており、開発中のプロジェクトということもありネットでの情報も錯綜しています。

僕も導入には結構手間取りましたので個人的な備忘録として今回は残しておきます。 

 

環境はConohaのVPSの一番安いプラン、CentOS8.2です。

<過去記事>

dreamerdream.hateblo.jp

 

 

 

事前に必用なライブラリ類インストール

結構いろいろなライブラリが登場します。

サーバーに組み込んでしまうとアップデートの度に不安定になるかもしれない、という不安が頭をよぎります。

 

openCVー画像処理用

sudo pip3 install opencv-python

 

gitーソースコードの取得用

sudo dnf install git

 

gccーC言語等のコンパイラ

sudo dnf install gcc

 

swigーC++コードをpythonから呼ぶラッパライブラリー

sudo dnf install swig

 

その他インストールに必用な開発パッケージ

sudo dnf -y install gcc gcc-c++ kernel-devel

sudo dnf install python3-devel

  

 

TensorFlowのインストール

tensorflowーGoogleの開発した機械学習ライブラリで今回インストールするのは、これを利用したOpenPoseですので、まずこれが無いと使えません。

sudo pip3 install tensorflow

僕の環境だとこれでバージョン1.4がインストールされたようですが、こちらの記事によりますと、

CentOS 8 TensorFlowをインストールする方法 | mebee

バージョン1.6以降はAVX命令に対応したCPUでないと使えないそうです。(なにそれ?)解りませんが、バージョンを指定したインストール方法はこう記述するというメモ。

sudo pip3 install tensorflow==1.5

 

バージョン確認

python3 -c 'import tensorflow as tf; print(tf.__version__)'

 

 

 

tf-pose-estimationインストール

いろいろと環境を整えた上でやっと本丸のインストール作業になります。

 

 <参考>

MacでOpenPose(tf-pose-estimation)のHelloWorldをしました - Qiita

 

gitからコードを拝借します。 

sudo git clone https://www.github.com/ildoonet/tf-pose-estimation

 

ディレクトリに移動して

cd tf-pose-estimation/

必用なもののインストールがtxtファイルに纏めてあるのでお任せします。

sudo pip3 install -r requirements.txt

 

ディレクトリ移動 

cd tf_pose/pafprocess

 

ビルド実行

sudo swig -python -c++ pafprocess.i && python3 setup.py build_ext --inplace 


ここでエラー

running build_ext
building '_pafprocess' extension
swigging pafprocess.i to pafprocess_wrap.cpp
swig -python -c++ -o pafprocess_wrap.cpp pafprocess.i
Unable to open file pafprocess_wrap.cpp: Permission denied
error: command 'swig' failed with exit status 1

色々弄ったけど、結局なにやら権限がどうのってなってるっぽいので、・・・僕はこういうの面倒くさいので全権限スルーにしちゃいました(おいおい。。)

cd ../

sudo chmod 777 */*

cd pafprocess

 

で、上のコードを実行したら通りました。

 

上層ディレクトリを変更

cd ../..

cd models/graph/cmu

 

シェルコードファイル実行

sudo bash download.sh

ここでしばらく時間がかかります。

 

上層ディレクトリへ移動

cd ../../..

 

サンプル画像をダウンロード(フリー素材ぱくたそから拝借しています。)

sudo wget https://www.pakutaso.com/shared/img/thumb/332TSURUTAMA20211_TP_V.jpg

 

tf_poseがインポートできるかチェック

sudo python

>>import tf_pose

>>exit()

 

 

<参考>

GPU無しで画像のみから人間のボーン推定が出来るtf-openposeを導入する - Qiita

こちらを参考に

sudo nano run.py

で実行ファイルの中身のオプションを参考にして引数を設定(バージョンによって違うみたい)僕の環境では実行コードはこのようになりました。

sudo python3 run.py --image=./332TSURUTAMA20211_TP_V.jpg

 

tensorflowを使うにはマシンスペックが低過ぎるみたいで(最低限のVPS構成ですからメモリーも512MBしかありません)、

W tensorflow/core/framework/allocator.cc:107] Allocation of 2359296 exceeds 10% of system memory.

このような警告表示がズラーっとされてめっちゃ時間がかかりますが、きちんと処理自体はされています。

 

 

しかし、当然ながら作成された画像は画面が無いので見れません。

 

ということでrun.pyの中身を少し変更します。といっても単純にOpenCVを使ってファイルを別に保存するだけです。

 

ひとまず、一通り処理をして画像表示しているコードの後ろに画像保存コードを追記します。

plt.imshow(tmp2_even, cmap=plt.cm.gray, alpha=0.5)
plt.colorbar()
plt.show()
cv2.imwrite('./OUTPUT.jpg',image) <ー追加
print('SUCCESS!') <ー追加

ターミナルで「SUCCESS!」と表示されていれば無事に出力出来たということですね。

 

 

画像の確認は予めサーバーソフトで画像をブラウザ経由で表示できるようにしています。

 

 

 

実行結果

f:id:DreamerDream:20200731202314p:plain

 

え?

ちょ、なんか思ってたんと違うくない??。。。

 

 

 

たぶんモデルが・・・、服装に見えにくいからですよね?きっと。

 

 

 

 

気を取り直して他の画像をダウンロードし直します。

sudo wget https://www.pakutaso.com/shared/img/thumb/AL002-iroppoinyuushitu20140722_TP_V4.jpg

 

 

実行!

 

はいいっ!!!

f:id:DreamerDream:20200731203130p:plain

・・・・・。

 

 

 

なにこれ?

 

 

 

 

 

<続↓>

dreamerdream.hateblo.jp

 

VPSで構築したDjangoサーバーをCentOS7からCentOS8へ移行するために CentOS8でDjangoが動くか試してみた

CentOS8がリリースされ、僕の構築したサーバーもゆくゆくは移行しないといけないのでCentOS8でもこれまでと同じようにDjango環境が構築できるのか?テストをしてみました。 

少しだけ使い勝手が違いましたが、概ね同じような要領で構築できました。

 

CentOS8からはpython3系のみになりましたので、python2系を活用されている方は少し問題が出る事もあるかもしれません。

RaspbianからCentOSに移行した時ほどの衝撃はありませんでした。

 

<過去記事 初めてのVPS契約>

dreamerdream.hateblo.jp

 

今回、サーバー追加で一番安いプランで申し込みました。

f:id:DreamerDream:20200802212651p:plain



ConohaのVPSプランはサーバーを「1時間1円から」というお手軽価格で運用する事が出来ます。

※サーバーを構築してイメージ保存しておき、動かさない時はサーバーを消す。再度使うときは保存イメージから復元するという方法を取ると最低限の料金で利用できます。

 

ここからは、過去記事に沿って環境づくりを進めます。

少し違うところだけポイントとしてコメントを入れます。

 

まずはVPSの環境づくり

VPSの使い方 ②初期設定 - DreamerDreamのブログ

OS8からはパッケージ管理ソフトがyumからdnfに変わったそうです。

理由はyumはCentOS8では廃止されたpython2系、dnfはpython3系ということです。

けど、yumコマンドを読み出しても今の所OK!なので肩肘張る必用はありません。

詳しいサイトによりますと↓

[CentOS8] yum を愛するあなたに送る、 dnf 乗り換え講座 | 株式会社ビヨンド

通常の管理ならyumがdnfに変わっただけでコマンドはほぼ同じ。むしろモジュールという概念が入って扱いやすくなったということです。

 

VPSの使い方 ③不要なサービスとポートを閉じる - DreamerDreamのブログ

これもこれまでと同じファイヤーウォールの設定でOKです。

 

VPSの使い方 ④必用なアプリをインストールする - DreamerDreamのブログ

CentOS8はpython2系は完全に廃止られたっぽいからpython3オンリー。

逆にpython3が最初から入っているので改めてインストールする必用はありません。

pip3も入ってます。

 

wsgiのインストール

sudo dnf install -y python3-mod_wsgi

 

VPSの使い方 ⑤SWAP領域を拡大する - DreamerDreamのブログ

ここまででVPSの設定は完了です。

 

Djangoのインストール

Djangoの使い方①基本(超簡単!5ステップでDjangoを動かす) - DreamerDreamのブログ

 

Djangoの使い方②基本のアプリケーション作成(HelloWorld!) - DreamerDreamのブログ

 

Djangoの使い方③サーバー連携Ⅰ(Apache2とDjangoの連携テスト) - DreamerDreamのブログ

この中の

sudo apt-get install libapache2-mod-wsgi-py3

コマンドは通らないようで、dnfからは

sudo dnf install httpd python3-mod_wsgi

とすると通ります。

 

ここまでで、今まで運用していたCentOS7からの以降準備は万端です。

Djangoも問題無く動いてくれたのでとりあえずこの状態でサーバーをイメージ保存しておきます。

 

 

 

ソニー製ブルーレイレコーダーの故障「BDZ-AX1000」のブルーレイドライブを交換修理してみた 中古品からの部品取り方法

我が家ではソニー製ブルーレイレコーダーBDZ-AX1000が古いながらも絶賛活躍中です。

このレコーダーはキーワード録画とか2番組同時録画など便利な機能が付いているので重宝しているのですが、この前HDDの映像をブルーレイディスクに録画しようと試みたところブルーレイが焼けない、それどころかブルーレイのディスク自体を認識しないという不測の事態が発生しました。

<BDZ-AX1000>

SONY 1TB 2チューナー ブルーレイレコーダー BDZ-AX1000

 

これには困りました。

HDD中に残してある大切な思い出のビデオカメラ映像等もバックアップ出来ないことになります。

ということで、ひとまずレンズクリーナーで修復を試みました。

 

 

 

 

ブルーレイの場合、DVDやCDとがレンズが別になっているのでブルーレイ専用のレンズクリーナーが必用になります。 

しかし、何度試みても修復はされません。

 

調べてみるとどうやらブルーレイドライブの故障は結構あるようで、メルカリ等でもブルーレイドライブのみ出品されていたりします。

 

しかもブルーレイが使えないドライブは安く出品されており、使えるドライブは1万円以上で出品されています。 

Amazonでも中古ドライブが約1万円ですね。

 

 

さらに調べてみると

BDZ-AX2700

BDZ-AX2000

BDZ-AX1000

BDZ-AT500

BDZ-AT300S

BDZ-AT900

 

これらのレコーダーに使われているブルーレイドライブが共通の「BRD-400T」という共通型番のドライブだということが判明しました。

レコーダーの型によってトレーのベゼルが違うだけのようです。

 

これならドライブ単品よりもブルーレイの動作が確認済みの上記のブルーレイプレーヤーを1万円以下で入手できたならかなりお得に部品取りが出来そうです。

しかも取り出したプレーヤーも通常のHDDレコーダーとしても使えます。

 

そこでしばらくメルカリに貼り付いていましたら、運良く動作確認済みのBDZ-AT300Sが1万円以下で出品されましたのでポチりました。

<BDZ-AT300S>

 

 

今回はそのプレーヤーの分解修理方法の自分用備忘録です。

 

お決まりですが、ここで注意事項を書いておきます。

<注意>

分解修理は自己責任になります。

このブログで紹介しています内容はあくまで私的な備忘録であり、決して機械の分解修理を他人に勧めるものではありません。

分解に際しては感電、故障、負傷等のリスクが伴います。

このブログ内容が原因で故障事故負傷などいかなる損害を負ったとしてもブログの執筆者ならびブログサービス管理会社等は責任を負いません。

 

 

BDZ-AT300Sの分解は簡単です。

5カ所のネジ(+)を外すだけです。

f:id:DreamerDream:20200728095921p:plain

蓋を開くと目的のドライブもすぐ見えますしドライブ四隅のネジを外すと取り出せます。

f:id:DreamerDream:20200728100020p:plain

 

 

問題はBDZ-AX1000の分解です。

まずは横のカバーを外しますが、これがまず☆型ネジです。

f:id:DreamerDream:20200728094909p:plain

f:id:DreamerDream:20200728094919p:plain

ネジを外すと左右のパネルが開きます。

f:id:DreamerDream:20200728094931p:plain

 

正面から見て右のフロントカバー横のネジ(+)を一個外します。

f:id:DreamerDream:20200728100443p:plain

 

そうしたら、本体下と横にあるブラスチックのハズレ止めを外しながらバコッと上面カバーを開きます。

文字で説明すると難しいので図示するとこんな感じです↓(▲がハズレ止めの位置)

f:id:DreamerDream:20200728100943p:plain

こんな感じで前面の表示カバーと蓋まで外れます。(後ろから見た写真)

f:id:DreamerDream:20200728100601p:plain

 

ここまで外れたらあとはBDZ-AT300Sと同じ要領でカバーが外せます。

f:id:DreamerDream:20200728120712p:plain

しかし、BDZ-AT300Sは1カ所だったサイドのネジが2カ所とやはり要所要所丈夫な作りになっています。

f:id:DreamerDream:20200728120726p:plain

 

カバーを外すと中身は丸見えです。

長年使っているのでスゴイ埃です。

f:id:DreamerDream:20200728120805p:plain

 

ブルーレイドライブを取り外します。(黒い突起はネジ回しです)

f:id:DreamerDream:20200728121023p:plain

 

AT300S(左)とAX1000を比べると電源線の長さが違うだけです。

f:id:DreamerDream:20200728121038p:plain

赤色は単なるSATAケーブルですので、電源線の電圧と極性さえ解れば他のドライブでももしかしたら認識するのかもしれません。(今回は実験はしません)

※以前にPanasonicのレコーダーを分解したことがありますが、Panasonicに搭載されているブルーレイドライブはフラットケーブルが採用されており汎用性は無さそうに見えました。

 

電源線はドライブの根元のコネクターを引っ張れば簡単に外れます。方向も色も形状も同じ端子なので入れ替えるだけで移植の準備は完了です。

 

移植完了後のBDZ-AX1000(埃掃除済)

f:id:DreamerDream:20200728121052p:plain

 

故障ドライブを入れたBDZ-AT300S

f:id:DreamerDream:20200728121105p:plain

 

見比べてみると結構共通の部品も多そうです。

 

面白いのはAX1000がWDのHDDが採用されているのに対してAT300SがHITACHIなんですね。(中古なのでもしかしたら交換済かもしれませんが)

 

どちらもHDDは単純なSATAドライブですので2TBなど大容量のHDDに交換して録画容量を増やすことも簡単に出来そうです。

 

今回は以上です。

Elecrowの5インチHDMIタッチパネル液晶ディスプレイを使ってみた

こちら、Amazonから入手出来るElecrowのタッチパネル液晶ディスプレイです。

 

 

このディスプレイ、RaspberriPi用に作られた静電容量式のタッチパネル搭載の非常に優れたディスプレイだということです。

但し、ラズパイ同様に基板剥き出しなので扱いには注意も必用です。

 

梱包は丁寧に緩衝剤で包んであります。

肝心の液晶パネルは保護フィルムの上にさらにフィルムを重ねてある徹底ぶりです。

f:id:DreamerDream:20200727120551p:plain

今回はこのディスプレイの保護フィルムは勿体ないのでそのまま使う事にしました。

f:id:DreamerDream:20200727120653p:plain

保護フィルムを剥がす為のテープだけを除去しました。

 

付属品はインストールCDの他、説明書、サービスカード、USBケーブル、HDMIケーブル、ミニHDMI変換端子、基板用の足と至れり尽くせりの内容です。

HDMI端子にはカバーもきちんと付いています。f:id:DreamerDream:20200727120603p:plain

 

ディスプレイ用の足はこのように基板を浮かせて置けるので基板を傷めず安心してディスプレイ表示を試す事が出来ます。

f:id:DreamerDream:20200727120613p:plain

 

このディスプレイ、このままRaspberryPiに繋いだだけでも機能するのですが、そのままでは640×480サイズの表示が800×480に横に引き延ばされてしまいます

このままでも使えなくは無いのですが、少し違和感がありますので説明書の通りにSDカードの内容を書き換えます。

 

RaspberryPiの起動用SDカードのboot領域にconfig.txtというテキストファイルが存在しているのでそのテキストの一番下に下記内容を書き加えるだけです。

ラズパイ側からは直接設定出来ないみたいなのでSDカードを別のパソコン等で編集します。

※説明書での説明

f:id:DreamerDream:20200727120624p:plain

 

説明書での説明をそのまま打ち込むのは手間なのでElecrowのサイトからコピペするのが楽です。

<Elecrowのサイト>

HDMI Interface 5 Inch 800x480 TFT Display - Elecrow

<抜粋>

# --- added by elecrow-pitft-setup ---
hdmi_force_hotplug=1
max_usb_current=1
hdmi_drive=1
hdmi_group=2
hdmi_mode=1
hdmi_mode=87
hdmi_cvt 800 480 60 6 0 0 0
dtoverlay=ads7846,cs=1,penirq=25,penirq_pull=2,speed=50000,keep_vref_on=0,swapxy=0,pmax=255,xohms=150,xmin=200,xmax=3900,ymin=200,ymax=3900
display_rotate=0
# --- end elecrow-pitft-setup ---


SDカードをRaspberryPiに挿して起動したら完了です。

 

640×480の時の表示(斜めだけど)

f:id:DreamerDream:20200727122216p:plain

800×480の時の表示

f:id:DreamerDream:20200727122228p:plain

きちんと設定すると表示領域が増えるので使い勝手も格段に良くなります。

 

 

 

ディスプレイも基板剥き出しだと使い勝手が良くないので3Dプリンターでケースを作りたいと考えていましたら、Thingiverseにそのものズバリのケースを公開してくれている先輩を発見しました。 

www.thingiverse.com 

www.thingiverse.com

 

これらの5インチ用のデータを有り難く利用させてもらって作ったケースがこちらです。

f:id:DreamerDream:20200727120725p:plain

なかなかイイ感じです。

f:id:DreamerDream:20200727120707p:plain

 

RaspberryPiと繋げるとこんな感じになります。

f:id:DreamerDream:20200727120748p:plain

 

ラズパイをディスプレイの後ろにマウントすることも出来ますが・・・、少しケーブルが目立ってしまいます。

f:id:DreamerDream:20200727120738p:plain

ともあれ、きちんと使えるので良しとします。

f:id:DreamerDream:20200727120759p:plain


やはり3Dプリンターは便利ですね。

dreamerdream.hateblo.jp

 


ということで、今回はラズパイ用タッチパネルディスプレイの紹介でした。

 

 

3Dプリンターでロボットハンドを作ってみた② ギアを追加してパワーアップさせてみた

前回、ロボットアーム先端用のロボットハンドの動作実験をしました。

 

いろいろ課題を見つけたものの稼動性は良かったのでひとまず実験成功。

ということで、このモデルデータを元に改良バージョンを作りました。

<前回のもの>

dreamerdream.hateblo.jp

 

改良点

新(右)旧(左)比較です。

f:id:DreamerDream:20200717153121p:plain

f:id:DreamerDream:20200717153133p:plain

ぱっと見た目的には新型のハンド部分の形状が違います。

中身は他にもいろいろと弄っています。

 

<改良点>

  • 前回1/5の5段の減速だったものをパワー不足のため、さらに1段増やして6段にして1/15625という減速にしました。
  • ギア自体を薄くしてあるので本体は2mm薄くなりました
  • ヒンジ部分のパーツを太く補強しました。
  • 固定具改良で組立時の稼動部にワッシャが不要になりました。
  • モーターが他のギアに干渉しないように初段ギアに傘を付けました
  • 稼動域の取得のため10kΩのポテンショメーターを設置しました。

<ポテンショメーター>

f:id:DreamerDream:20200717153145p:plain

 

 

 

動作

動作の様子です。


3Dプリンター製ロボットハンド(改良型)

 

動作速度は遅いものの、このぐらいのパワーがあればロボットハンドとして充分に使えそうです。

前回5Vだと動きませんでしたが、可動部分の見直しで今回は5Vから動作するようになったので部品の稼動性も良くなっているようです。

 

実験中にギアが欠けたこともパワーの強さを物語っていますね。

この分だと最終段はもう少し厚くしても良さそうです。

f:id:DreamerDream:20200717153156p:plain

 

データ 

パーツのデータを備忘録として残しておきます。

 <Googleドライブ>

RoboHand-v2 - Google ドライブ

 

組立は前回のブログ同様です。

 

このようにトライ&エラーで物を作れるのが3Dプリンターの醍醐味ですね。

 

dreamerdream.hateblo.jp

 

3Dプリンターでロボットハンドを作ってみた① ミニDCモーターを利用して減速機から自作する

以前からロボットアームに興味が出て来てそのための減速機をいろいろ調べて実験していましたが、現時点ではあまり満足な減速機は出来ていません。

dreamerdream.hateblo.jp

 

今回はロボットアームの先端部分のロボットハンドだけを普通のギアを使って作りました。

<動作の様子>


3Dプリンターでロボットハンドを作ってみた

まず実験として動いてくれたので、備忘録として残す事にしました。

また何方かのお役に立てましたら幸いです。

 

今回使用ているフィラメントはこちら、eSUNのPLA+の「赤銅色」です。 

eSUN PLA Lite フィラメント 1.75mm, 3Dプリンター用フィラメント アップグレード PLA フィラメント、寸法精度 +/- 0.03mm, 1KG スプール (2.2 LBS) 3D プリンター用フィラメント、ファイヤーレッド

こちらのeSUNのフィラメントは以前に紹介していましたが、かなり使いやすくて気に入りましたので今回は色違いをリピート購入です。

dreamerdream.hateblo.jp

赤銅色という色を知らなかったのですが販売ページの画像で見るより実際に見ると落ち着いたシックな赤色なので結構気に入りました。

 

 

今回作ったロボットハンドのサイズはこのぐらいです。横幅12センチ強というところでしょうか?

f:id:DreamerDream:20200714150505p:plain

 

使用モーターはAmazonで「ミニモーター」として売られている安いモーターです。

 

僕はDVDドライブから取り出したモーターなので詳細不明ですがどうやらサイズ的には同じものです。

定格5V仕様だそうですが、ロボットハンドでは12Vで動かしています。 

 

ロボットハンドの先端なので出来るだけ軽いモーターで動かしたかったのですが、結局減速機で本体が重くなっているので素直にサーボモーターを使った方が良かったのかもしれません。

ですが、せっかく設計したのでこれをベースに改良してより軽くより使えるようにしたいと意気込んでいます。

 

データ

データは.stlファイルで纏めています。

<Googleドライブ>

RoboHand - Google ドライブ

データはBlenderで作成しています。

 

 

組立

使用ネジは全てM3ネジ(殆ど30mm)

モーターギアは一番小さいギアを入れます。

f:id:DreamerDream:20200714150300p:plain

ただ、潤滑剤を他のギアに塗布して使っているうちに滑ってしまうようなのでナイロンやビニール等を軸の間に挟んだ方が良さそうです。

細い軸にしっかりと止めるにはPLAだけだと難しいように思います。

 

メインになるギアは5枚あり、それぞれが1/5で減速するので最終的に減速比は1/3125になります。

非力で高回転なモーターなので最低限物を掴むにはこれぐらい減速は必要なようです。

パワー的にはスピードを犠牲にしてもう一段足しても良いぐらいです。

f:id:DreamerDream:20200714150316p:plain

ギアは「gires_main_01〜06」まで下から順番に重なるように、またセパレーターを間に挟みながら組み立てます。

同じ減速機ですが上段になるほど圧力が強くなるので厚くなるよう設計しています。

 

最終段は3㎝の同じギアを合わせます。

f:id:DreamerDream:20200714150334p:plain

ハンドを開閉するためのM3ネジをギア内側から飛び出させて左右対称の同じ角度になるようにセットします。

 

外の支柱は2個イチです。3Dプリンターで出力しやすいよう分割しています。

f:id:DreamerDream:20200714150350p:plain

微妙に切れ目がある方が根元になるのですが、どちらでも良さそうです。

可動部分のパーツが細すぎるは今後の改良点として挙げておきます。

 

可動部分には全てM3ネジのワッシャを入れておきます。

f:id:DreamerDream:20200714150401p:plain

ワッシャが無いと本体との摩擦でスムーズに動きません。 

 

ハンド開閉用のネジ部分にスペーサーを入れます。

f:id:DreamerDream:20200714150413p:plain

 

ハンドの動力部分をこの向きで組みます。

f:id:DreamerDream:20200714150426p:plain

 

このように上下左右対称になるように組みます。

f:id:DreamerDream:20200714150440p:plain

 

先端クリップ部分も同じように上下左右対称にネジで固定したら完成です。

f:id:DreamerDream:20200714150452p:plain

先端部分に滑り止めのゴムを付けるとより実用的です。

 

 

今後の改良予定

  • 稼動部をもう少し太く補強する
  • 先端クリップ部分は本体の高さより1ミリ小さく設計していたがその必要はないので辞める
  • ネジを強く締め上げるとギアが硬くなるのでもう少し遊びを多く作る
  • ギア自体に思ったほど負荷がかからないことが解ったのでギアをもっと薄くする
  • もう一段減速させる
  • 角度センサー用のボリュームを取り付ける

 

今回は以上です。 

 

 

 

 <続き>

dreamerdream.hateblo.jp

 

kampa.me