私の会社で使う簡易検査機を開発しまして、幾つか使えるものが出来ました。
実際に現場の方にも御利用頂いております。
他の製品の検査への展開をする事になったのですが、職場だけでは開発が難しく思いましたので、自宅にて似たような検査システムを組んで実験を行えるようにしてみました。
仕事の絡みがあるので詳細は記載出来ないのですが、凡そこんな感じのものです。
構成は、小型のタッチ スクリーン、4K解像度のUSBカメラ、Ubuntu PC、Raspberry Pi 4 Model B、Raspberry Pi Pico、サーヴォモーターなどなど。
機械学習フレームワークはPyTorch。
昔ながらのconvolutional neural network系ですが、Raspberry Piで動作出来るよう、処理を限界まで軽くする為に沢山のノウハウを盛り込んであります。
Metric learning、hard example mining、easy exampleの省略、ネットワーク構造などなど、工夫を凝らしました。
上の動画は、別の机の脇にある高性能なミドル タワー型Ubuntu PCのPythonスクリプトとMatplotlibでランダム ウォークのグラフを生成し、タッチ スクリーンに表示しながらRaspberry Pi PicoにUSBケーブルでPySerialの通信で値を転送し、LEDをPWM点灯させているところです。
これ自体には特に意味は無く、基本的な機能の実験です。
現在は、複雑な形状で固定位置での撮影が難しい製品を回転させながら撮影しようかと電子工作をしているところです。
サーヴォ モーターとボール ベアリングの回転板とアルミニウム フレームと金具でロボットアームを試作してみました。
対象物を把持するグリッパーの指部分とその他2軸の回転軸を凡そ一致させてあります。
まだ回転台の連結部をどう作るか試行錯誤しましたが、どうにか巧く出来ました。
Raspberry Pi PicoのMicroPythonプログラムも作り込みました。
正確かつ滑らかに駆動し、ガタつきません。
ロボット アームの指部分にスポンジ ゴムと圧力センサーを取り付けました。
圧力センサーは抵抗器との分圧により抵抗値の変化を電圧値の変化にしてRaspberry Pi Picoでアナログ/デジタル変換しています。
圧力センサーの端子の片方をRaspberry Pi PicoのADC_VREF端子に接続。
もう片方を1kΩの抵抗器とADC2端子に接続。
抵抗器のもう一端をAGND端子に接続しました。
対象物を圧力センサーに接触させるとそれを検知してUSBケーブル経由でUbuntu PCに信号を送信します。
そしてPCからRaspberry Pi Picoにサーヴォ モーターの制御コマンドを送信し、Raspberry Pi Picoがモーターを駆動します。
フィルム状の圧力センサーである “FSR400” に被覆線をハンダ付けして熱収縮チューブを被せました。
基板との接続にはQIコネクター(2550コネクター)を使用しています。
QIコネクターのコンタクト ピンと被覆線との接続は通常は圧着工具で圧着するのですが、この時点では適切な圧着工具を持っていなかったので、ラジオ ペンチで芯線バレルと被覆バレルを少し丸めてからハンダ付けで接続してあります。
ユニヴァーサル基板の裏面に被覆線の配線を追加しました。
出来れば圧力センサーと分圧の抵抗器の配線も錫メッキ線で行いたかったのですが、錫メッキ線を使い切ってしまったので已む無く被覆線で済ませました。
圧力センサーに指で触れた時の分圧抵抗による電圧値をRaspberry Pi PicoのADCで取得してPCに送信してCVSファイルにしてLibreOffice Calcで時系列縦棒グラフにしてみました。
はっきりと3回の接触を検出出来ています。
但し、指の腹で触れると軽い接触でもこのグラフの様にはっきりと検出出来るのですが、物体の平らな面を圧力センサーの面に平行に当てても少々力を加えないと値が変化しませんでした。
ですので、圧力センサーの検出面に小さく丸く打ち抜いた薄いプラスティック板を両面テープで貼って圧力を伝えやすくしました。
Raspberry Pi PicoでPWM信号を出力してサーヴォモーターを駆動する場合、通常は目的の角度に対応したデューティー比のPWM信号を出したらサーヴォモーターは等速度でその角度まで回転して停止します。
従って、回転前後で反動があり、また、突然動き出すので装置の使用者は驚くかもしれません。
私は頭を捻り、思案してこのサーヴォモーターの回転速度を滑らかに曲線的に遷移させる制御に成功しました。
動画の様に、回転の始まりは緩やかで、その後加速し、停止間際に再び回転速度が遅くなって停止します。
この制御により、反動を低減し、人に優しい動きにする事が出来ました。
また、低速領域でもガタつかない様にPWM周波数と割り込みタイマー周波数を高く設定してあります。
関数により曲線的な速度変化をしますが、凝ったプログラムにより正確な駆動を実現しています。
Raspberry Pi PicoからのPWM信号によるサーヴォモーターの速度制御としてはかなり良く出来た方ではないでしょうか。
そして、2023年10月15日時点で、自宅で試作した外観検査機のロボット アームを急遽サンプル画像の撮影に使用する為に職場に持ち込む事になりました。
ロボット アームを設置して検査対象物を撮影する為にディスプレイとカメラの取り付け位置を変更しました。
ロボット アームの指部分の金具に検査対象物を接触させると圧力センサーが接触を検知して自動的に対象物を把持します。
サンプル画像撮影は半自動で行う必要があるので、PC側からキーボード入力でコマンドを送ってロボット アームを任意の角度で回転させて撮影を実行します。
サーヴォ モーターは3個使われており、指は90°弱、回転台とロールは180°の回転が可能です。
ケーブルの保護などを行う必要がありますが、今回は間に合いませんでした。
職場でサンプル画像の撮影が済んだら自宅に持ち帰るかもしれません。
その場合は職場で新たに材料を購入して貰って組み立てる事になると思います。
コメント