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でしか試していませんが、他のディストリビューションでも同様に動くと思います。
 



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



2014年6月10日火曜日

Centering Camera(芯だしカメラ)の製作 (その5)



Centaring CameraのプログラムをKnoppix(USB版)にインストールする方法です。

Ⅰ.用意するもの


1. Knoppix7.2.0がインストールされたUSBメモリ(8GB以上)
Knoppix7.2.0日本語isoファイルknoppix_v7.0.2DVD_20120530-20120615.isoをDVDに焼いて起動し、そこからUSBメモリ(8GB)にインストールます。

KnoppixのUSBへのインストール方法等はインターネットで確認してください。
間違ってもハードディスクにインストールしないようにくれぐれも気をつけてください


Knoppix7.2.0日本語DVD版のisoファイルはhttp://www.risec.aist.go.jp/project/knoppix/
がKnoppix日本語版の本元ですが。2014.6.3現在接続できないようです。
かわりに、Knoppixのアーカイブのftp://ftp.dnsbalance.ring.gr.jp/archives/linux/knoppix/iso/からknoppix_v7.0.2DVD_20120530-20120615.isoをダウンロードできます。



2. USBカメラ
 エラー処理ができていないので、パソコンにカメラがついていない状態では起動できません。事前に用意してください。





センタリングする上では、レンズ部を回転させることでピント調整できるものがよいです。個人的にはUCAM-DLK130TBKのようなものがお勧めです。私は2年前に電気店で¥980で購入しました。



Ⅱ.インストール

Knoppix7.2.0には python2.7、pygame、Wxpython、Numpy がすでにインストールされていますので OpenCv と pgu をインストールするだけで済みます。
Knoppixを起動してインターネットに接続します。

3. OpenCvをインストール

“設定”の中にある、Synapticパッケージマネージャーを使用します。

Synapticパッケージマネージャーが起動したら、“再読み込み”をクリックし、更新してから opencv を検索します。検索結果の中から、“python-opencv”を選択してインストールします。



4. pgu (pygameユーティリティ) のインストール

pguを解凍してできたpguホルダーとdataホルダーをデスクトップに置くだけです。

方法は
http://code.google.com/p/pgu/ などからpgu-0.16.zipをダウンロードして解凍する。
※pgu-0.18では動きませんでした。注意してください。

② 解凍してできたフォルダーの中の
・pguホルダーと
・dataホルダー
をデスクトップにコピーする。

この作業はknoppix上で出来ますが、Windows上で行ってknoppixにコピー&ペーストしても同じです。




5. プログラムファイルのコピー&ペースト

 Centaring Camera(芯出しカメラ)の製作(その7)を開き、Web画面上からファイルをコピー&ペーストしてテキストファイル形式で保存します。 

これらのファイルは /home/knoppix に置きます。

/home/knoppix/Desktop/KNOPPXではありません

使うのはknoppixのウェブ・ブラウザとKnoppixのLeafpadです。

保存時の文字コードに関しては”現在のロケール(UTF-8)” ”LF"の設定です。

Windows環境では文字化けが起きてうまくいきませんでした。


(1) CenteringCam_VerB.py(プログラム本体)を /home/knoppix に保存。

(2) resolution.txt(使用するカメラの解像度が記入されている。)を保存。

(3) coordinate.txt(座標データが保存される。)を保存する。


この写真にはmanual.jpgがまだ置かれていません。



(4)  manual.jpg を(その7)のWeb画面から画像をクリックしてコピーし、resolution.txt 、 coordinate.txt と同じフォルダーに置いてください。





Ⅲ.プログラムの起動

プログラムの名前 : CenteringCam_VerB.py

WebCameraが接続されていることを確認して早速起動してみます。
方法1  コマンド入力
 Terminal emulatorを起動して、



のようにコマンドを入力して起動します。

しかし、この方法は面倒ですし、Terminarl も開いてしまいます。

方法2  アイコンクリック
プログラムのアイコンをクリック して下の写真のようにプロパティを編集します。


開くアプリケーションに python と入力します。



”実行可能にする”のチェックを外します。



これで、アイコンをクリックするとプログラムが起動します。



以上でインストールは終了です。





【起動しない場合】

(1) カメラのID番号は0番から始まります。
 250行目あたりの

   capture = cv.CreateCameraCapture(int(0))

 がWEBカメラのID番号指定です。カメラのID番号は0番から始まります。 2台目のカメラだと0を1に変える必要があります。もし起動しないときはint( )の数値を変えてみてください。
 私の経験では、USBを抜き差しすると、CenteringCamを起動してプログラムが動いた後数秒経つと動かなくなるなど動作が不安定な機種がありました。

(2) カメラの解像度が合っていないのかも知れません。resolution.txt の数値を確認してください。

(3) ファイルの名前が間違っていると動きません。resolution.txt 、 coordinate.txtを確認してください。 

ちなみに、我が家ではデスクトップ1台とノート2台の上で順調に動いています。




【現在判明している問題点】

Linuxで動かすと

①NumLockを押すとテンキーで数値を入力できるようになりますが、テンキーのEnterキーはうまく機能しません。

②全角入力モードの場合、数値入力時にTabでデータを選択するようになっています。半角入力で数値を入力してください。



【寸法測定の注意点】工作物の上にスケールを置いてmm/dotを計算しても、スケールの厚さがあるために工作物の表面上の値にはなりません。mm/dotを確定した後に工作物をスケールの厚さだけカメラに近づける必要があります。



【プログラムの使用に関して】
このプログラムは個人の趣味で作成したものです。不具合や間違いがあるかもしれません。また、使い勝手の悪い点が多々あります。インストールも含めて、すべて自己責任で使用してください。



【参考】
・バッファローコクヨサプライのBSW3K04Hで640×480、800×600、1280×960のすべてのモードで動作することを確認をしました。
・ELECOMのUCAM-DLK130TBKで640×480、800×600、1024×768、1280×800、1280×960、1280×1024の各モードで動作することを確認をしました。







2014年6月7日土曜日

Centering Camera(芯だしカメラ)の製作 (その6)


今日はプログラムのアイコンにシンボリックリンクを張ります

CenteringCamも、デスクトップにショートカットアイコンをおいて便利に使えます。

LInuxではシンボリックリンクを貼るというそうです。

”ln -s” コマンドをつかって以下のよう記述します。





デスクトップにアイコンを表示することができました。



    Terminarl も開きません。すっきりです。



いよいよ次回はプログラムのコードです。









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

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