2014年7月16日水曜日

Centering Camera(芯出しカメラ)の製作 (その2)



使用したカメラと主な材料
Webカメラ・・・バッファローBSW3K04H(2009年発売、30万画素のCMOSセンサー搭載)

 手動でピンと合わせが出来るカメラを選ぶことがポイントだと思います。

アルミ丸棒 A5056B Φ45×250mm

磨き丸棒 SS400 Φ15



製作過程

図面を描くことはせずに、フリーハンドでスケッチを描き、現物合わせで製作しました。


切断する前に、結合用のねじ穴を蓋部分まで貫通させておきます。


残りの部材から蓋部分をつくります。



シャンク部もでき、パーツが揃いました。フライス作業の写真がありません。





ケース内側のエンドミルによる深堀りは、掃除機で切子をすいながらの作業となり結構大変でした。旋盤による中ぐり作業でできるだけ切削を済ませてからフライス盤での作業に移れば良かったと思いました。



カメラの基板サイズからすると、Φ45のアルミ丸棒はぎりぎりの大きさです。

上の写真を見ると余裕がまったくないことがわかると思います。

Φ50にすればよかったと思います。




CenteringCamreaとして使う場合、緑色のLEDは画面に映ったワークを見にくくする場合がありました。白色光以外は取り外すか蓋をしてしまったほうが良いと思います。最近のWebカメラは白色のLEDがついているようなので問題はないと思いますが・・・。

組み立てて完成です。



シャンクをΦ14.0に仕上げましたが、趣味の機械ではΦ14.0に対応したコレットがない場合があるそうで、Φ12.0にした方が良いと先輩方に教えていただきました。



次回は、光軸のずれ補正とWebカメラによるセンタリングの原理について書こうと思います。







2014年7月14日月曜日

Centering Camera(芯出しカメラ)の製作 (その3)



光軸のずれ補正とWebカメラによるセンタリングの原理

Webカメラのレンズ繰り出し部はプラスチック製の簡単なねじ構造です。繰り出しを加減してピントを調節するたびに光軸がずれてしまいます。

点対称図形の性質をつかうことにより、光軸がずれたままでも簡単にセンタリングできます。以下はその説明です。



図1のようにマシンの主軸とカメラの光軸がずれている場合に、カメラの画像を用いてマシンの主軸に工作物に描かれた円の中心Oにを合わせる方法を考えてみます。



1.準 備・・・カメラの画像に重ねたレーヤー上に、移動可能な4本の線A,B,C,Dを用意したとします。(実際にはカメラの画像はパソコンのモニターに映りますので、モニターにOHPシーを重ねている考えてもよいです。)








2.まず、図2のように線Aと線Bを円に接するように移動します。






3.続いて、主軸を手で時計方向に180°回転させると、画像は主軸O”を中心として反時計回りに点対称の位置に移動することになりますので画像とレイヤーを重ねた画面は図3のようになります。








4.この状態で、円に接するように線Cと線Dを移動します。




こうして得られた、A,B,C,D4本の直線で囲まれてできた長方形は主軸O”を中心とする点対称の図形です。




5.O 、O’、 O”は説明のために表記したもので実際には見えません。しかし、点対称図形の性質から、図5のように長方形に対角線を引くことにより、対角線の交点が主軸O”を知ることができます。






6.主軸の位置O”が分かりましたので、いよいよセンタリングです。主軸の位置O”を中心とする円(図6の赤い円)をレイヤーに記入します。大きさは適当でよいです。






7.レイヤー上に記入した円の大きさを調節しながらフライス盤のテーブルを移動して工作物を動かし、図7のように工作物の円がレイヤーに描いた円と重なればセンタリング終了です。








※ 点対称の図形を得るためにカメラを180°回転させるわけです。しかし、180°は眼見当で十分です。図7の状態で主軸を手でぐるぐるまわしても2つの円がピッタリと重なる程度にセンタリングできます。





2014年7月11日金曜日

Centaring Camera(芯だしカメラ)の製作 (その4)



光軸ずれ補正プログラムの使い方と開発




本題に入る前に少し遊んでみました。
千円札の野口英世の瞳です。



この瞳の中心にセンタリングすることも可能?です。
拡大鏡としても使えるなぁー。
(使用カメラはELECOM UCAM-DLK130Tです。)

【重要】お札に加工をしてはいけません!



さて本題です。

Ⅰ.ソフトの使用方法(CentaringCamの使用例をYouTubeの動画で説明)


 ソフトの使用例として、YouTube に上の写真の動画

をアップしましたのでご覧になってください。1分46秒ほどです。

 2本の罫書き線に接するΦ4.0のエンドミルによる穴加工をするためのセンタリング作業です。(青竹を使わずに直接罫書き線を引いているので線が見にくくて申し訳ありません。)

動画の後にフライス盤のテーブルをX 、Y方向にそれぞれ2.0mmずつ動かしてΦ4.0のエンドミルで穴加工して終了です。
加工後の結果は下の写真でご覧ください。



  この程度の精度で芯だしできます。
  (見やすいように青竹を薄く塗ってみました。)



Ⅱ.使用言語に関して
プログラムはPythonで組みました。

pythonを選んだ理由は

1. GoogleやNASAなどでも使われているそうで興味があった。
2. つくったプログラムを自由に配布できる。
3. LinuxでもMacでもうごく。
    (Macでうごくかどうかは試していないので確証はありません)

などです。

 ExcelのVBAの解説本のようなメソッドの使用例解説型の書籍があると助かるのですがそのような本は見つかりませんでした。

役立ちそうな書籍を2冊を購入してみましたが、基本的(非常に重要)なことは参考になりましたが、今回のプログラムを組むうえで必要としたもろもろの情報はあまり得られませんでした。

pythonそのもの自体にguiやレイヤーやカメラ関係のモジュールが十分用意されていないから仕方ないのでしょう。

そのため、もっぱらインターネットが頼りとなりました。
何か使えそうな情報はないかとインターネットで検索し、私の希望に合いそうな情報を見つけると関連する情報を調べ、実際に組み込んで動きをチェックするということを繰り返しながら少しずつ組上げていきました。

その結果、pygameやwxPythonそしてNumpyやOpenCvなどをインポートし、モジュールを使わせてもらうことになりました。

今回はじめてpythonでプログラムを組みましたが

  1. インタプリタ言語であった(コンパイルもできる)
  2. PyScripterというGUI Editorがとても使いやすかった
の2点が、試行しやすくしてくれたと思います。

※PyScripterはお勧めです。(作者は日本人だそうです)


 上の写真はpyscripterの画面です。Webカメラからcaputureする部分です。

エラー処理ができなかったので、カメラが認識されないとプログラムが起動できません。

OSがカメラをデバイスとして認識しているのにプログラムが起動しない場合(カメラを複数台接続している場合などに起こるようです)は、上の写真の真ん中辺にある

capture = cv.CreateCameraCapture(int(0))

のint(0)をカメラごとにint(1)、int(2)などに変える必要があります。


【コンパイル】
 残念なことにCenteringCamはコンパイルを通りませんでした。コンパイル不成功です。



Ⅲ.Webカメラの選定
 
 使用するWebカメラには注意が必要です。

1.USBビデオクラス対応のWebカメラがよい

USBビデオクラス非対応の場合は固有のドライバーを必要としますので、Linuxではうまく動かない場合があると思います。

2.レンズが手動で繰り出しできるカメラがよい

自動焦点カメラだと工作物に十分近づけられないかも知れません。自動焦点カメラは使ったことがないのでこれ以上のことは言えません。

 カメラを数ミリメートルまで近づけると下のの写真(千円札の瞳)程度に拡大できます。

千円札の野口英世の左眼です。気に入っているのでもう一度載せています。



Ⅳ.OS(プラットフォーム)の選定について
 フライス盤などのような油にまみれる環境で使うには、古いパソコンが気兼ねなく使えて相応しいと思います。

 OSにLinuxを選定すれば、10年以上前に購入したパソコンでもCentaringCamは快適に動きます。
 KnoppixはUSBにインストールしておくと起動も動作も速く、ハードディスクを使わないので気楽に試せます。

 ※Knoppixでしか試していませんが、他のディストリビューションでも同様に動くと思います。
 



次回は、プログラムのインストールについて書こうと思います。



Centaring Camera(芯だしカメラ)の製作 (その4)

光軸ずれ補正プログラムの使い方と開発 本題に入る前に少し遊んでみました。 千円札の野口英世の瞳です。 この瞳の中心にセンタリングすることも可能?です。 拡大鏡としても使えるなぁー。 (使用カメラはELECOM UCAM-DLK130T...