連休中の作業のこと [日常のあれやこれや]
どうでもいいけど、TeXShopのアイコンが変わった。iTunesやSafari、App Storeなんかと似てる。色調が違うので見間違うことはないかもしれないけど、やっぱりパッと見、慣れないのでピンと来ない。
ところで、今週始めにシーケンサ屋からRS-232Cでデータをやり取りするための簡単なプロトコルを決めたというメールをもらったので、連休中にそれに従って実装しなおした。相手がいないと確認はできないけど、ダミーのテストプロセスとのやりとりはできた。いや、それは出すのも受けるのも僕が書いてるからできて当たり前なんだけど.....
今回はコリメータレンズに対して光源である半導体レーザの空間的な発光点位置とそのアオリ(合計5自由度)を光学的に検出して調整するための信号を作るのが目的だった。フォトディテクタからの電流を増幅してA/Dして、スペックルが原因と思われるノイズを減らすためにカルマンフィルタっぽい処理を付け加えた。フォトディテクタは合計8個あってそれらの強度差から姿勢を検出して、それ以外に射出瞳から十分遠い場所での光強度分布を見るカメラがついている。カメラの画像にも明らかにスペックルが乗っていて、スムージングした上に滑らかな関数でフィッティングしている。それを一台のMac miniに処理させている。
いろいろやってるけど、これで十分な精度が出ているかどうかはまだよくわからない。休み明けにデータをシーケンサに渡せるようになれば結論が出るはずである。
フォトディテクタからの電流出力は、自分でOPアンプで回路を組んで、NI(National Instruments)社のUSB接続のDAQ(A/DやD/Aやデジタル入出力を持った箱のことをNIではこういう。今回はアナログシングルエンド8入力と2出力とデジタル12ビットの一番安いやつ)をふたつ使ってA/D変換してる。NIの製品にはOS Xのドライバがあるので今回は使えたけど、数年前からバージョンアップが止まっている。しかもドライバは32ビット版しかない。
問い合わせたらOS Xのサポートをやめるということではないけど、現状で新しいバージョンの予定はなく、最新のバージョンが必要なハードゥエアではOS Xをサポートする計画はない、という。それってやる気ない、ってことじゃん。でもまあ、需要は少ないだろうなあ。今回はいいとして、この次はどうするか考える必要がある。
そうなるとやっぱりRaspberry Piの出番だな。ありがたいことにここの宮城大学の研究室で汎用のA/DチップであるMCP3204/08(たぶんNIの安いDAQはこれを使ってるだろう)をつないだ例を紹介してくれている。ArduinoだとはじめからA/Dが乗っているのでそれでもいいんだけど、どのみちハンダ付け作業はしなきゃいけないし、MCP3204/08は周辺回路がほとんど必要ないので大差ない。
それよりもなによりもRaspberry PiはちゃんとしたLinuxなので、なんといってもプログラミングが簡単で、データのやり取りもSocket()が使えるのでずっとシンプルで汎用性が高い。さらにNIのDAQも低コストとはいえ1台3万円するので、かなり安上がりになる。こういう仕事に汎用的に使えるように整備すると便利だな、きっと。電流電圧変換とゲイン調整とA/Dを乗せたRaspberry Piと同じサイズの基板を起こしてもいいけど、そこまでの需要はないか。やっぱり自分でハンダ付けするのがいいか。
無圧縮のカメラ画像をRaspberry Piで受けるのはちょっと難しいな。GigEカメラだとLinuxドライバがあるのでつなぐことはできるだろうけど、Raspberry Piにはちょっと荷が重すぎるだろうな。今回の処理はMac miniでもコアひとつ占有されるぐらいだもんな。
でも厳密な強度分布ではなくて、簡単な特徴抽出やトラッキングならRaspberry Pi専用のカメラで十分だろうな。それならカメラまで含めてハードウェアが一式1万円以下でできる。OpenCVもRaspberry Piで試してる方がおられるので、問題なさそうだし。OpenCVのパフォーマンスがどのくらいかというのは気になるけど、iOSデバイスでそれなりに動くらしいことは間違いないのでとりあえずは大丈夫だろう。しかしそもそも、いわゆる画像処理的な仕事は僕には全然まわってこない。専門外だと思われているらしい。
こんなことを書いていると、面倒だの大変だのかなわんだの休出して疲れただの言ってるくせに、その実は好きでやってるんじゃないか、と言われるかもしれない。はいはい、白状します、おっしゃる通りです。ハンダ付けもボイラープレートコードも結局、好きでやってるんです。いいんだよ、ほっといてくれよ。別に誰かに迷惑かける訳でもなし、ってシーケンサ屋には迷惑かけてるか。
なんのかんの言っても、僕がバラックで組んだレンズ系でレーザからの光がちゃんと波面修飾されてフォトディテクタに入って、僕がハンダ付けした基板で光がちゃんと電気信号に変換されて、それがちゃんと読み込めて、そのノイズだらけの信号が僕の書いたソフトでフィルタリングするとぬるぬると動いているのがわかって、それが現物のレーザの機械的な姿勢にちゃんと対応している、というのがわかるとやっぱり楽しい。
今回はあきらめたけどシーケンサとの通信の実装では、数百行のstatic const NSString*の列を書くのもそれほど苦でない、というかどちらかというとプロトコルを理解したあとではむしろ楽しかった。UDPではうまくいかなかったけど、TCPのポートは開いていることがシーケンサをポートスキャンした結果でわかってるので、そちらの実装をやってみよう。それができればOS Xをシーケンサのホストにすることができる。おちついたらやってみたいな。
ところで、今週始めにシーケンサ屋からRS-232Cでデータをやり取りするための簡単なプロトコルを決めたというメールをもらったので、連休中にそれに従って実装しなおした。相手がいないと確認はできないけど、ダミーのテストプロセスとのやりとりはできた。いや、それは出すのも受けるのも僕が書いてるからできて当たり前なんだけど.....
今回はコリメータレンズに対して光源である半導体レーザの空間的な発光点位置とそのアオリ(合計5自由度)を光学的に検出して調整するための信号を作るのが目的だった。フォトディテクタからの電流を増幅してA/Dして、スペックルが原因と思われるノイズを減らすためにカルマンフィルタっぽい処理を付け加えた。フォトディテクタは合計8個あってそれらの強度差から姿勢を検出して、それ以外に射出瞳から十分遠い場所での光強度分布を見るカメラがついている。カメラの画像にも明らかにスペックルが乗っていて、スムージングした上に滑らかな関数でフィッティングしている。それを一台のMac miniに処理させている。
いろいろやってるけど、これで十分な精度が出ているかどうかはまだよくわからない。休み明けにデータをシーケンサに渡せるようになれば結論が出るはずである。
フォトディテクタからの電流出力は、自分でOPアンプで回路を組んで、NI(National Instruments)社のUSB接続のDAQ(A/DやD/Aやデジタル入出力を持った箱のことをNIではこういう。今回はアナログシングルエンド8入力と2出力とデジタル12ビットの一番安いやつ)をふたつ使ってA/D変換してる。NIの製品にはOS Xのドライバがあるので今回は使えたけど、数年前からバージョンアップが止まっている。しかもドライバは32ビット版しかない。
問い合わせたらOS Xのサポートをやめるということではないけど、現状で新しいバージョンの予定はなく、最新のバージョンが必要なハードゥエアではOS Xをサポートする計画はない、という。それってやる気ない、ってことじゃん。でもまあ、需要は少ないだろうなあ。今回はいいとして、この次はどうするか考える必要がある。
そうなるとやっぱりRaspberry Piの出番だな。ありがたいことにここの宮城大学の研究室で汎用のA/DチップであるMCP3204/08(たぶんNIの安いDAQはこれを使ってるだろう)をつないだ例を紹介してくれている。ArduinoだとはじめからA/Dが乗っているのでそれでもいいんだけど、どのみちハンダ付け作業はしなきゃいけないし、MCP3204/08は周辺回路がほとんど必要ないので大差ない。
それよりもなによりもRaspberry PiはちゃんとしたLinuxなので、なんといってもプログラミングが簡単で、データのやり取りもSocket()が使えるのでずっとシンプルで汎用性が高い。さらにNIのDAQも低コストとはいえ1台3万円するので、かなり安上がりになる。こういう仕事に汎用的に使えるように整備すると便利だな、きっと。電流電圧変換とゲイン調整とA/Dを乗せたRaspberry Piと同じサイズの基板を起こしてもいいけど、そこまでの需要はないか。やっぱり自分でハンダ付けするのがいいか。
無圧縮のカメラ画像をRaspberry Piで受けるのはちょっと難しいな。GigEカメラだとLinuxドライバがあるのでつなぐことはできるだろうけど、Raspberry Piにはちょっと荷が重すぎるだろうな。今回の処理はMac miniでもコアひとつ占有されるぐらいだもんな。
でも厳密な強度分布ではなくて、簡単な特徴抽出やトラッキングならRaspberry Pi専用のカメラで十分だろうな。それならカメラまで含めてハードウェアが一式1万円以下でできる。OpenCVもRaspberry Piで試してる方がおられるので、問題なさそうだし。OpenCVのパフォーマンスがどのくらいかというのは気になるけど、iOSデバイスでそれなりに動くらしいことは間違いないのでとりあえずは大丈夫だろう。しかしそもそも、いわゆる画像処理的な仕事は僕には全然まわってこない。専門外だと思われているらしい。
こんなことを書いていると、面倒だの大変だのかなわんだの休出して疲れただの言ってるくせに、その実は好きでやってるんじゃないか、と言われるかもしれない。はいはい、白状します、おっしゃる通りです。ハンダ付けもボイラープレートコードも結局、好きでやってるんです。いいんだよ、ほっといてくれよ。別に誰かに迷惑かける訳でもなし、ってシーケンサ屋には迷惑かけてるか。
なんのかんの言っても、僕がバラックで組んだレンズ系でレーザからの光がちゃんと波面修飾されてフォトディテクタに入って、僕がハンダ付けした基板で光がちゃんと電気信号に変換されて、それがちゃんと読み込めて、そのノイズだらけの信号が僕の書いたソフトでフィルタリングするとぬるぬると動いているのがわかって、それが現物のレーザの機械的な姿勢にちゃんと対応している、というのがわかるとやっぱり楽しい。
今回はあきらめたけどシーケンサとの通信の実装では、数百行のstatic const NSString*の列を書くのもそれほど苦でない、というかどちらかというとプロトコルを理解したあとではむしろ楽しかった。UDPではうまくいかなかったけど、TCPのポートは開いていることがシーケンサをポートスキャンした結果でわかってるので、そちらの実装をやってみよう。それができればOS Xをシーケンサのホストにすることができる。おちついたらやってみたいな。
2014-08-15 21:05
nice!(0)
コメント(0)
トラックバック(0)
コメント 0