ホーム > 技術支援サービス > CodeV における、自動設計テクニックの例
私がレンズ設計を学んだ時代は、邦書といえば松井吉哉さんの名著”レンズ設計法“がほとんど唯一の市販書でした。
このため、好むと好まざるとにかかわらず、 ベレークなど海外の成著も参考に試行錯誤を繰り返したものです。 時は流れて現在ではここに示すだけでなく、内外を問わず、幾多の教科書/参考書が書き下ろされています。
それぞれ、識者の知識と経験が集約されていて、ありがたい時代になったものだと感じます。いずれも光学の基礎の 重要性を踏まえて、段階を踏んだ記載に整えられています。 しかし、一方では汎用性の高い議論が展開されがちです。 ましてや特定のCADソフトを前提とした具体論が例示されることは極めて稀といえます。
そこで、ここでは CodeV を ツールとして選択したユーザに特化して、CADの能力に依存した設計手順を例示したいと思います。
『光学の先生ごめんなさい。』
『基礎は設計オペレーションを通して徐々に勉強します。まずは、設計作業をしたいんです!』
最適化、あるいは自動設計。なんとも甘美な表現です。この用語を耳にして仕様書を入力すれば自動的に 設計が行われると期待したのは、あなただけではありません。 これについて、幾多の教科書にはこう書かれています。 『自動設計といっても自動化されるのは最適化過程だけであって、初期データや制御パラメータの取捨選択、 ターゲットのとり方など、設計者の主体性が依然としてその本質であることに変わりはない。』このことの意味は 次の順序で理解します。 まず第1に光学系の自動設計とは、 目標とする光学系の特性を満たすようなレンズ構成 データを、パラメータフィッティングによって求めるものだ、ということです。 こう考えれば『自動設計を実行するには、 どのレンズ要素を設計パラメータに使って収差の程度を改善したいのか、その際に守るべき制約(全長や倍率など)は 何かを明確にしなくてはならない』ことに納得できます。 これら一連の情報を入力することで、オリジナルレンズの パラメータを変更し、目的にかなったレンズ系に変形する(=フィッティングする)プロセスが自動設計のプロセスといえます。
一般的に設計パラメータは、面形状・面間隔(レンズ厚)・材質を任意に指定することで指定されます。 しかし自動設計にあたって、全ての要素をいきなりフリーパラメータとして 指定してはいけません。とりわけ設計の 初期段階ではレンズ系の成り立ちが大胆に変化します。 このようなときにはまずは曲率だけをフリーに設定します (CCY sj 0)。 空気間隔はもちろん、レンズの肉厚も固定したままにします。 そうでないと、レンズ間隔が大きく 広がりすぎ、光線が次段のレンズに入射しなくなります。 この段階では、レンズ間隔は専ら手動で設定します。 光路図をよく観察しながら、各レンズに入射する光線が最少偏角をとりながら通過していく様に導きます。あるいは、 この操作がうまくできなければ、何もしないほうがよいです。 なお、この操作は試行錯誤で行いますから、いろいろ 工夫しているうちに元のデータに戻れなくなることがあります。 逐次、データを保存しながら操作します。 設計段階が 進んでレンズ系の形状変化が小さくなってきたら、その時初めて空気間隔をフリーパラメータとして指定します(thc sj 0) 。 しかし、しばしばレンズ間隔が甚大になり、実用的でない解に向かって収束します。 このため、すべての空気間隔を同時に フリーにすることなく、一ヶ所か二ヶ所ずつ、 フリーパラメータ化します。また 5-3Cで紹介している制約条件のひとつ、OALを使って、”OAL Si..j < value” のように i 面からj面までの面間隔を value 以下に 制限することが有効です。ここで、valueには具体的な数値が入ります。
一方、肉厚について、筆者はフリーパラメータとすることはほとんどありません。
その理由は、肉厚は機械的要因や、 メカニカルなインターフェースと密接な関連があり、 光学的な要請だけで最適値が決定できず、光学設計ツールとしての codeVに自在に決定されてはこまるからです。
その背景として肉厚は;
それらに加え、つぎのような事情があります。
このような事情から、肉厚については光学パラメータというよりも機械パラメータと考えて、自動設計の対象としないのです。 しかし、実際にはレンズの肉厚が顕著に性能に影響を 与えることもあります。このため、筆者は 設計の中盤以降で設計解がどの程度、そういうケースに該当するのかを確認するためにだけ、試行的に肉厚をフリーパラメータとして指定しています。 なお、面間隔の特別なパターンとしてデフォーカスがあります。 デフォーカスとはガウス像面(近軸像面)と最良像面との差です。収差の発生状況にもよりますが、一般的には ガウス像面と最良像面は一致しません。 このため、デフォーカスを許すかどうかというのは自動設計の自由度を 上げるために大変に有効なのです。 デフォーカスは面間隔固定の設計段階、つまり、設計の初期段階からフリー パラメータ化しても系が大きく崩れることは(通常は)ありません。
CODEVを使って設計を進める作業は手動による系の大胆な変更と、自動設計マクロの書き換えによって系が逐次、 最少自乗的に改良されることによってなされます。 ここでいう自動設計マクロとは、すなわち、設計仕様書をcodeV マクロの形で記述したものです。逆にいえば自動設計マクロとは、そのようなものです。 このファイルに 記述すべき情報は『 ① 光学性能を何で規定するか、② 性能を満たすためのパラメータ変形に あたって制約をかけるべき条件は何か、 ③その範囲はどの程度がということ』なのです。
① 光学性能を何で規定するか
CODEVはデフォルトでは光学性能をスポットダイアグラムによって規定しています。その詳細を規定するためにはWTA,WTX,WTY,WTW,DEL等のコマンドを使います。 しかし、その詳細はここでは述べません。ORAまたはサイバネット社編さんの手引書を復習してください。
② 性能を満たすためのパラメータ変形にあたって制約をかけるべき条件は何か
③ その範囲はどの程度か
これらは”コンストレイント(制約条件)”として指定します。繰り返しますが、これは設計にあたって維持すべき 光学的・機械的条件そのものです。
たとえば、焦点距離 や倍率を一定に保ったり、バックフ ォーカスを 所定の値 よりも長く維持したり、あるいはこれらを同時に成立させたりする指定です。
コンストレイントを指定 すれば、 CODEVはその指定の範囲でだけレンズ系を変形しようとします。
コンストレイントの規定方法には3種類あって、それは等号条件,不等号条件,重み付きコンストレイントとして 表現されます。
EFL = 100.0 !これは等号条件の例です。焦点距離を100mmに維持します。 RED > 2.0 !これは不等号条件の例です。倍率を2倍以上に維持します。 EFL = 100 ; WTC 0.1 ! これは重み付きコンストレイントの例です。 100mmを基準に焦点距離の不一致量が収差の一部として最少自乗的に取り扱われます。 |
コンストレイントには、その主旨からいって仕様書記載の値をそのまま記載したいのですが、設計の初盤では それはご法度です。 いきなり与えた初期レンズデータに対して仕様書どおりのコンストレイントをいきなり作用させると、収差が期待 ほど小さくなら なかったり、エラー終了したり、製造不能なほどに不自然なレンズ形状しか得られなかったりします。 ですので次の 各項目に注意 しながら、初期設計解を徐々にコンストレイントを満たす解に変形していくのです。
STEP1)
仕様書の内容に比較的近い設計解を特許等から検索し、初期データとして使う。
STEP2)
焦点距離、あるいは倍率設定、共役間距離のように基本的な量についてはscaコマンド等でスケーリングして、仕様書の値にあわせる。 このとき、開口径、画角を仕様書どおりに指定すると光線が系を通過しない場合は、あえて開口を絞ったり、画角を狭くしたりしながら、とにかく光線が楽々通るような仮の仕様を設定する。
STEP3)
自動設計マクロを作成する。このことき、仕様書に記載すべき情報はすべてコンストレイントとして指定する。
ただし指定するのは項目だけで、 その値は現状値付近を含む不等号条件か、あるいは重み付きのコンストレイントとする。
不等号条件の範囲は、一端を現状値とし、他端は仕様値とする。
こうすれば、現状よりも仕様からはずれることはない。
ただし、STEP2でスケーリングであわせた仕様条件はそのまま等号条件として指定しても良い。
STEP4)
AUTを実行する。そうすると初期状態と比較して収差が小さい系、つまり光線が容易に通過しやすい系へと変形される。
STEP5)
開口径や画角を徐々に仕様に近づけながら、STEP3)とSTEP4)を繰り返す。
場合によってはSTEP5)は、かなり微小なきざみで開口径や画角を広げていかなければならないことがあります。このような場合には、マクロ機能を使うと便利です。 表1を御覧ください。このマクロは、起動されるたびに開口径と画角を 1%ずつ拡大しながら自動設計を実行します。 また、このマクロは最終行で自分自身を呼び出していることに注目してください。 こうすることで、マクロ全体が繰り返し処理されます。 また、このマクロ中にはDRAが指定されているので最新のレンズ形状の 断面図が常に表示されます。 これを監視しておき、曲率半径が強くなりすぎたり、コバ厚が薄くなりすぎたりしていないか注意します。 問題が発生しがちならば、曲率とレンズ直径の比を制御するコンストレイント BLO や、コバ厚を制御するコンストレイントETを次のように指定して変化を抑制します。
BLO Sj < 0.65 |
ET Sk > 1.00 |
しかし設計の初盤では、コンストレイントを使うよりも積極的に別のレンズタイプへと発展させることが有効です。 つまり、 曲率が強くなるレンズは面を分割し、コバが薄くなるレンズは中心厚を厚くするのです。 必要に応じて、空気間隔を調整する のも良いでしょう。 このとき注意 することは、レンズを通過する光線が最少偏角の条件に近づく方向に制御することです。 この種の操作ついては、さらに5-3C)を参照してください。
あらかじめ、na=0.3;yan 0 10 という設定がされたデータを前提に考える。 |
na 1.01*(NA) |
yan f2 = 1.01*(yan f2) |
aut |
: |
dra |
go |
in macro_name.seq } このマクロがmacro_name.seqという |
名前で保存されているとする |
表1:起動される度に開口径と画角を1%ずつ拡大しながら自動設計を繰り返すマクロ
さて、レンズデータが仕様に定められた開口径と画角を満たしたら、次の段階は
STEP6)
仕様書に定められたその他のコンストレイントをSTEP5と同様に徐々に目標値に近づける。
しかし、開口径や画角以外のコンストレイントはレンズの特性を評価して初めて求められる量であって、外部から与える量では ないので、指定にあたっては若干の工夫が必要です。 この工夫を例示したのが表2です。自動設計処理中に像距離IMDをもとめ、 それが0.5mmだけ長くなるようなレンズとして 変形されるように指定しています。 このような指定を必要なだけ加えます。この操作を 繰り返すことで最終的にすべての仕様が満たされます。 ただし設計途上においては常にレンズの断面図を監視し、必要に応じてコンストレイントの追加かレンズタイプの変更操作(3章を参照)を行うことに注意してください。 また、この段階まではレンズの 構成枚数が徐々に増える方向に設計が進んでもあえて気にしないことにします。 それは設計の中盤以降で検討することであって、この段階ではまだ、仕様項目さえ満たしていないのですから。
aut |
: |
@imd_data == (imd) |
@imd_data = (imd)+0.5 |
: |
in macro_name.seq このマクロが macro_name.seqという名前で保存されているとする。 |
この場合であれば imd = (imd)+0.5 という1行でも書ける。 |
表2:起動される度に像距離を0.5mmずつ延長するマクロ
ここまでの操作によって、すべての仕様項目が満たせたら;
STEP7)
GSを使って大域的な解の探査を行い、別解を求める
という段階に進みます。GSの機能はCODEVの最適化エンジンのもつ最大の特徴のひとつであると筆者は捕らえています。 この機能が現れてからは設計品位が向上しただけでなく、 設計手順(手法)そのものが大幅に変わってしまいました。 今回紹介している手順は正にこれを前提としたものです。
STEP8)
エレメントの分割・統合・入れ替え。削除を行う。
GSを実行すると、幾多のレンズ系がリストアップされます。これらを順次評価すると、これまでにない別解が探査され ていることに気づきます。 そのうちいくつかは、3章紹介している “レンズの統合” の操作によって複数のレンズを1枚にまとめられる構成をしていることがあります。 もし、そうなっていなければ、 やはり3章で紹介している“面の順序の入れ替え”を行って、別の系に乗り換えてみます。 ただしこの操作を行った場合 には、いったんSTEP6に戻らなければならないかもしれません。 また、3章の“レンズの削除” も試みます。 その後、ふたたびSTEP7を実行するのです。 このような繰り返し処理が進むにつれて、評価関数の構成を徐々に細かく指定していきます。 これが設計中盤の姿です。具体的には、一般にWTAは小さな値に変更していきますし、WTX,WTYは、設計画面に表示されるERROR FUNCTIONのテーブルを見ながら、収差量の大きな物点に対して集中的に重みを割り当てます。 また、DELは適宜小さくし追跡光線本数を必要かつ 十分な程度に増やします。このようなに操作によってレンズ設計解は徐々により好ましいものへの改良され、最終的には目的とする収差レベルまで改善されます。 なおこの段階では、以前設定した不要なコンストレイントが残っていたり、相関の強い複数のコンストレイントが混在していないか注意します。 そのための補助情報として、設計画面中に表示されるactive constraintsの表示を監視します。 この監視を通して何が制約として利いているのか良くチェックし何らかの条件を緩められないか常に検討するのです。
STEP9)
原器あわせ
設計の最終段階には、”原器あわせ”と呼ばれる作業があります。既存のニュートンゲージの曲率半径にあわせて設計解を 丸める作業です。 ゲージ一覧を眺めながら、逐次曲率半径を固定していきます。 この操作は自動設計処理の観点からはフリーパラメータの減少を意味にしますので、徐々にコンストレイントの数を減らしていくことに注意が必要です。
特定の仕様を満たすレンズ設計解はただひとつに限定されるものではありません。 種々の方針、たとえば高屈折ガラスを多用してレンズ枚数を削減したり、逆に屈折率は低くても非球面を使うことで収差を抑制したりといった方針によって設計解は多様性をもちます。 しかし一方では無限の構成パターンに発散しているわけでもなく、目的を特定すれば類似性をもついくつかのパターンに 分類できます。 このようなパターンをレンズタイプといいます。設計目的が各々の設計者にとって 初めての経験に属する場合、 最適なレンズタイプを事前に設定できないこともしばしばです。 このような場合には、目的に適合しやすいと想像されるレンズタイプで設計を開始することになります。 このような場合、設計しながらいっそう目的に適合したレンズタイプに導いていく必要があります。ここでは、そのための具体的な手法について紹介します。 ただし、解析的な手法については良書に まかせ、ここではCODEVを通して数値評価によってレンズタイプを変更する方法に限定して紹介します。
レンズ面の分割Ⅰ:
thoを参照しながら収差を多く発生している面をみつけ、その面を分割します。あるいは曲率が強くてどうしようもない面を分割します。 その手順は;
レンズ面の分割Ⅱ:
曲率が強くなりすぎる場合も上記と同様に面を分割します。あるいは次の手法をとります。
このまま4面とも曲率をフリーパラメータ化する方法もありますが、1枚が元の形状に戻り、1枚はパワーのない面に収束していく傾向があります。 これでは別タイプへの変形には繋がりません。そこで当該の面を固定してしばらく自動設計を実行したのち、はじめて当該面をフリーパラメータ化するか、 あるいは分割した2枚のレンズを同形状を条件として設計しばらく設計を続け、後にフリーパラメータ化します。
面の順序の入れ替え:
FLY s1..i-1 でレンズの前後を入れ替えます。あるいは部分的に入れ替えることによりパワー配置(凹凸の順序)を変えます。
この操作は近軸的に無理が生じているとき、とくに有効です。
レンズの統合:
レンズ面の面間隔が徐々に近づき、向かい合った面の曲率が徐々に近づいていくことがあります。
さらにレンズ材料を自動設計のフリー パラメータ として指定しているときにはそれさえ類似材に近づいていくことがあります。
このような状況は屈折率のコンストレイント 境界付近で起こることが多りがちです。
このような場合には特に注意して監視し次の手順でレンズを統合します。
レンズの削除:
自動設計マクロで当該のレンズのパワーにコンストレイントをかけます。例として efy sj..k = (ef ysj..k)*1.05この場合ですと、
1回AUTが実行されるごとにレンズがもつパワーが5%だけ減少します。同時に手動操作により肉厚を薄くしていきます。
このようにして、系にとって無視できるだけの小さなパワーしかもたなくなったら、 データごと削除します。
削除直前は当該のレンズは薄い平面ガラスのような状態になっています。
レンズの削除(パワーの小さなメニスカスレンズの場合):
工程②と③を随時組み合わせながら、最終的に同一曲率で肉厚ゼロのレンズに誘導し、最終的には、レンズ系からデータごと削除します。 ただし、メニスカスレンズはパワーが小さくても収差補正の点から意味をもったレンズであることも多いので無理は禁物です。
GSを使う:
CODEVの最適化エンジンに備わる目玉のひとつであるGS(Global Systhesis)を使う方法です。GSは大域的な探査プロセスにより多数のローカルミニマムを探査してくれます。
このうちのいくつかは別のレンズタイプが探査されています。
筆者などは帰社時にGSを 走らせておき翌朝結果を確認したり、接客中にGSに頑張っておいてもらうなどして仕事の効率を稼いでいます。
その他のレンズ形状制御:
同曲率の向かい合わせの空気間隔は偏芯公差が厳しいものです。
接合するか、おおきく離すかする必要があります。 ただし多くの場合、大胆な変更は系を崩すので、少しずつ、時間をかけて行うことが肝要です。
両凸レンズまたは量凹レンズの表裏面の曲率が近いときはおもいきって、同一の曲率半径に揃えます。 これは曲率半径が少なくとも2倍程度は 違わないと、 レンズの組み立て工程において作業者が表裏の判断に迷うからです。 こういうところに注意すると、歩留まりやトラブルの減少が 期待できます。 製造工程まで気を 配らなければならないのは他の技術分野と同様ですが、いくらCODEVが優秀とはいえ、ここまでの配慮は設計者= ヒトにしかできません。 光学性能と製造性のバランスは 設計者に委ねられたポイントのひとつです。
ここでは自動設計の実務で有効なちょっとしたノウハウを紹介します。いずれも”ちょっとした” 程度のノウハウですが状況に応じて効果は絶大です。 試してみてください。
表3:ちょっとしたノウハウ一覧(今後、書き増していきます)
自動設計マクロにおいて、AUTを指定するまえにset NA/NAO/EPD , set VIG 等を設定しておく。 |
自動マクロは極力シンプルにする。とくに近軸的に矛盾がないか要注意。 |
焦点距離、レンズ長など、単純な条件は自動設計に入る前にスケーリングであわせておく。 |
高次非球面が多用されている系はほんのすこしずつ、長時間に渡って収束するのでMNCを大きくして粘り強く解く。 |
テレセンを指定するときは、EXP , ENP を逆数で指定して、メトリックをあわせる。 |
ガラス自動の場合は、ガラスの可動範囲をちゃんと考える。デフォルト設定のままでは低価格レンズには広すぎるし、最高級レンズには狭すぎる。 |
色収差を特に気にする場合には、ガラス自動時には分散モデルもあわせて指定する。 |
可視域外の色収差補正をする場合は、当該の波長域に対する分散図を作成しておく。 WTFをゼロに設定して 設計することもある。 たとえば配光は重要だが性能はどうでも良いレンズ。 具体例として街角の照明写真の 自動撮影機のレンズの最周辺。 |
メリジオナル/サジタルのいずれかだけが特に重要な場合には、wtx=0,wtf=valueと指定する。 |
実務では、自動設計の初期データとして自社の従前のレンズデータか、あるいは公開特許情報や市販のレンズデータベースが多用されてきました。 しかし、ここに記載した手順とノウハウを駆使すればBK7等の汎用単一材料からなる単純な取りプレットレンズを初期データとして適当に“でっち上げ”、それを基にCODEVとの会話と積み上げることでどんなレンズにも収斂させていけます。 しかし逆にここに示した方法だけが全てではありません。 この方法の上をいく試行錯誤こそ、冒頭に記した“設計者 の主体性”なのです。
発展的なレンズ設計技法のおおくはズームの機能との組み合わせの中で達成されます。その一例として、表4にあげる光学系があります。 このセミナ?の評判が良く、読者からのご希望が多数寄せられれば、今後の、一件ずつ解説していきます。
表4:発展的なレンズ設計技法が要求される例
想定される状況 | 実際の例 |
ズーム系においてポジションごとのOALをそろえたい。 | 全長固定型ズームレンズ |
微小フレネルレンズ系において、輪帯の位相をそろえて設計したい。 | 光通信用レンズ |
スキャニングミラーを含む光学系だ。 | ガルバノスキャナレンズ |
偏芯があっても性能劣化が小さい光学系を設計したい。 | 両面非球面単純レンズ |
瞳が多重化された系において、実像を同一座標に位置付けたい。 | 2光束ファイバ分光ユニット |
瞳が多重化された系において、虚像を同一座標に位置付けたい。 | ヘッドアップディスプレイ |
軸上色収差は許容されるが、倍率色収差が許容されない場合。 | 3版式CCDカメラ |
軸上色収差は許容されないが、倍率色収差が許容される場合。 | ロングスリット分光器 |
使用波長と検査波長が異なっている。 | 紫外線用転写レンズ |
往路と復路の両方向から個別の設計条件が規定される。 | フーリエ変換レンズ テレセンスキャナ |
CODEVを使って設計を進めると、多数のファイルが生成されます。 業務の進行とともに複数のレンズ系のデータが蓄積されてくると、そのうちどのファイルが何のデータだか判別できなくなります。 こういう事態をさけるために、筆者が勤務するジェネシアでは 次のようにファイル名を統一しています。
一連の設計が完了すると、一時ファイルはすべて削除、トピックデータは一つのフォルタにまとめて保存しておきます。 これは次に似たレンズ系を取り扱う際のスタートデータとするためです。 なお、自動設計マクロも最終的には AGE1026C.seqのように正式なレンズ名と対応付けて保存すると便利です。