OS X用GigE Visionカメラドライバ - その35 [OS X用GigE Vision]
GigE VisionカメラのOS Xドライバを仕上げないといけない。大したことない仕事に時間を取られて、ちょっと時間的に厳しくなってきた。
今日と次回でGEN<i>CAM規格のなかでは異色の存在であるSwissKnife系の実装について考える。こういう数式の解析は、知ってる人には簡単だけど、知らない人には妙に敷居が高い。僕は会社に入ってすぐのころ、たまたまUCSD pascalコンパイラのソースとその解説ドキュメントを見せてもらったことがあって、その構文解析の部分を理解することができたとき、実にうまくできてるなあ、と感心した。懐かしい。これまでその経験が役に立つことはほとんどなかったけど、今でもほいほいと書けることがわかってちょっとうれしい。
いや、それは僕の記憶力が高いからではなくて、スタックの効果さえ理解すれば中身は簡単。ほんとは動作原理を説明してその面白さを伝えたいけど、僕には初心者向けに解説する力も時間もない。残念だけど、雰囲気を見てもらって興味がある人は専門のサイトを参照してもらいたい。
今日と次回でGEN<i>CAM規格のなかでは異色の存在であるSwissKnife系の実装について考える。こういう数式の解析は、知ってる人には簡単だけど、知らない人には妙に敷居が高い。僕は会社に入ってすぐのころ、たまたまUCSD pascalコンパイラのソースとその解説ドキュメントを見せてもらったことがあって、その構文解析の部分を理解することができたとき、実にうまくできてるなあ、と感心した。懐かしい。これまでその経験が役に立つことはほとんどなかったけど、今でもほいほいと書けることがわかってちょっとうれしい。
いや、それは僕の記憶力が高いからではなくて、スタックの効果さえ理解すれば中身は簡単。ほんとは動作原理を説明してその面白さを伝えたいけど、僕には初心者向けに解説する力も時間もない。残念だけど、雰囲気を見てもらって興味がある人は専門のサイトを参照してもらいたい。
OS X用GigE Visionカメラドライバ - その34 [OS X用GigE Vision]
もう10ヶ月前のことになるんだけど、無圧縮カメラのデータを1000BaseTで送るためのGigE Visionをおさらいして、それで通信するカメラをOS Xでも使えるようにしようとしていた。カメラ固有の機能を使うためには、それをXMLファイルに記述したGEN<i>CAMという規格に対応する必要がある。ところがこの規格が結構面倒で、実装に悩んでいた。とりあえず機能を記述したXMLファイルをカメラから読み出して、それを読める形にまとめ直して、必要な機能だけを直接ハードコードする形でずっとカメラを使っていた。
ところが、最近になって社長副社長のおともだちのツテで、それまで使っていたドイツの会社のカメラから、カナダの会社のカメラに切り替えることになった。めんどくさいんだけど少し安く手に入ることでもあるので諦めて切り替えることにした。ところがそのカナダのカメラのXMLが300kB以上ある。情報量としては原稿用紙200枚ぐらいの中編小説並み。それまでのドイツメーカのが20kBほどだったので人間が読んでもなんとかなったけど、もう限界。しかたないのでGEN<i>CAMに対応したコードを書くことにする....
ところが、最近になって社長副社長のおともだちのツテで、それまで使っていたドイツの会社のカメラから、カナダの会社のカメラに切り替えることになった。めんどくさいんだけど少し安く手に入ることでもあるので諦めて切り替えることにした。ところがそのカナダのカメラのXMLが300kB以上ある。情報量としては原稿用紙200枚ぐらいの中編小説並み。それまでのドイツメーカのが20kBほどだったので人間が読んでもなんとかなったけど、もう限界。しかたないのでGEN<i>CAMに対応したコードを書くことにする....
OS X用GigE Visionカメラドライバ - その33 [OS X用GigE Vision]
GenApiとGenTLの実装の前に、とりあえずGigEカメラのXMLファイルを自分で読んでカメラのレジスタをハードコードして画像を読めるようしたんだけど、安物のカラーカメラではBayer配列を受け取って自前でRGBに変換しないといけない。それをごく普通にCで書いたら1280x960ピクセルの30fpsでCPUコアをまるまるひとつ消費してしまった。こういうのはGPGPUにやらせるべき仕事なのでそうしたい。Core Imageのフィルタにでもあると簡単だったんだけど、そんなプリミティブなのはない。しょうがない、OS XのOpenCLを勉強しよう。他にあとで役に立つかもしれないし、ちょっとがんばろう。
ところで、こないだいかにも中の人っぽいコメントをもらって、いろいろ教えてもらえたらいいな、と思っていたんだけど返事がもらえない。どうやら通りすがりに上から目線で自分の言いたいことだけを投げ込んだみたいで、僕にとってあまり有益ではないらしい。まあ、誰もがみんな親切とは限らないのは当然だし、コメント主の指摘も要約すれば「好きにすればぁ」ということだと理解できるので、僕は僕なりに勝手に続けることにする。
前回はGenTLのAPIをおさらいしてみた。APIとしては素直なものでわかりやすく、少なくともGenTLを使う側からは何も難しいことはない。その上でさて僕はどうするか、というのを考えることにする。
ところで、こないだいかにも中の人っぽいコメントをもらって、いろいろ教えてもらえたらいいな、と思っていたんだけど返事がもらえない。どうやら通りすがりに上から目線で自分の言いたいことだけを投げ込んだみたいで、僕にとってあまり有益ではないらしい。まあ、誰もがみんな親切とは限らないのは当然だし、コメント主の指摘も要約すれば「好きにすればぁ」ということだと理解できるので、僕は僕なりに勝手に続けることにする。
前回はGenTLのAPIをおさらいしてみた。APIとしては素直なものでわかりやすく、少なくともGenTLを使う側からは何も難しいことはない。その上でさて僕はどうするか、というのを考えることにする。
OS X用GigE Visionカメラドライバ - その32 [OS X用GigE Vision]
OS X用GigE Visionカメラドライバ - その31 [OS X用GigE Vision]
GEN<i>CAMの規格をざっくり読んで、それにいちゃもんをつけてたんだけど、前回だけで終わらなかった。それだけ気に入らないところがいっぱいある、ということなんだけど、そう感じるのは僕だけかなあ。かなりボッコボコに書いてるので、他所から文句言ってもらいやすいようにとりあえず今日でいちゃもんはまとめてしまう。中の人に見てもらいたいなあ。Baslerの人に見てもらうためには英語で書かないとダメか....
OS X用GigE Visionカメラドライバ - その30 [OS X用GigE Vision]
これでざっくりとした全体像がつかめたということにしよう。しかしこれがどこまで正しいのかよくわからない(誰も言ってくれないので、ってあたりまえか)。これに従って実際に実装してカメラを動かしてみる必要がある。
ということで、今回はGEN<i>CAMの規格を読んで気に入らないところ、変だろと思うところ、僕だったらこんなことしないと思うところを列挙する。
ということで、今回はGEN<i>CAMの規格を読んで気に入らないところ、変だろと思うところ、僕だったらこんなことしないと思うところを列挙する。
OS X用GigE Visionカメラドライバ - その29 [OS X用GigE Vision]
とりあえず前回までで抄訳は終わった。訳しててフラストレーションが溜まった。ずっとまえにAppleのI/O Kitのreferenceの訳をしたときにはそんなことはなかった。フラストレーションの原因は「ああ、こうだったらいいな」「僕だったらこうするのにな」というところが少なからずあったせい。規格書を読んでそう思うことって今まで経験したことがなかった。まあ、ふつうはそうじゃないだろうか。
ようするにはっきり言ってGEN<i>CAMの規格は抽象化のレベルが低い、と僕は思う。具体的にどこかどう、という話をしたい(そして「ばかものめ、GEN<i>CAMの規格はよくできていて美しいのだ」という人の話を聞きたい)けど、そのまえにGEN<i>CAMの規格に対する僕の理解が正しいかどうかを確かめるために僕なりにまとめておく。ちょっと長くなるけど、いっきに今回だけで終わらせる。
できればGEN<i>CAMの仕様をご存知の方がフィードバックしてくれるとうれしいんですが.....
ようするにはっきり言ってGEN<i>CAMの規格は抽象化のレベルが低い、と僕は思う。具体的にどこかどう、という話をしたい(そして「ばかものめ、GEN<i>CAMの規格はよくできていて美しいのだ」という人の話を聞きたい)けど、そのまえにGEN<i>CAMの規格に対する僕の理解が正しいかどうかを確かめるために僕なりにまとめておく。ちょっと長くなるけど、いっきに今回だけで終わらせる。
できればGEN<i>CAMの仕様をご存知の方がフィードバックしてくれるとうれしいんですが.....
OS X用GigE Visionカメラドライバ - その27 [OS X用GigE Vision]
また明日から安曇野。歳をくったせいかどうも体調が脆くなってて、しかもこないだから万全とは言えないので、あまり行きたくない。
ところで、抄訳の続き。今日はSwissKnifeノードのところ。Gen<i>Camの一番特徴的な部分ではあるけど、読んでてこれ決めたやつの技術的なセンスは、やっぱりどうもイマイチだよなあ、としみじみ思った。少なくとも僕ならこんなことしない。それについては訳が終わってからまとめることにして、これを過ぎるとあともう少し。早く終わらせたい。
ところで、抄訳の続き。今日はSwissKnifeノードのところ。Gen<i>Camの一番特徴的な部分ではあるけど、読んでてこれ決めたやつの技術的なセンスは、やっぱりどうもイマイチだよなあ、としみじみ思った。少なくとも僕ならこんなことしない。それについては訳が終わってからまとめることにして、これを過ぎるとあともう少し。早く終わらせたい。