ほしぞloveログ

天体観測始めました。

カテゴリ:アイデア、理論など > 制御


勉強会の呼びかけ

前回5月18日(水)の記事で、CGX-Lの周期的な揺れのことを書きました。制御の発振でこの揺れが説明できるのではという内容です。



最後の方にオートガイドとかの制御に興味がある人がいたら、Zoomで勉強会でもしませんかと書いておきました。するとTwitter上で何人か反応があり「数人でも集まるならやってみようか」とその日のうちに呼びかけてみました。

その際、私はモーターのことがあまりよくわからないので、補足で説明してくれる方を募ったら、その日のうちにけーたろさんとbotchさんが反応してくれて、勉強会は3人で話すことに。日時を3人の都合がつく、日曜の20時からとしました。トークを頼んだのが木曜で、3日後の日曜での勉強会なのでかなり急なのですが、お二方とも快く引き受けてくれました。


内容

すぐにタイトルと内容のアブストラクト、さらに順序と時間が決まり、Twitter上でもアナウンスしました。

Sam: 「実践制御フィルターの設計」(20:00-21:00)
  • 実際の制御ループを各種計算しながら、制御フィルターをどう組めばいいかを考えて、その過程で制御一般の理解を目指します。一番の目的ができる限り理解して欲しいというものなので、自分のできる限りでわかりやすく解説するつもりです。わからなかったらすぐツッコミお願いします。

botch: 「駆動回路の四方山話」(21:00-21:30)
  • 望遠鏡を駆動する回路を3つのブロックに分けお話しします。難しそうなところは解りやすく、簡単そうなところは掘り下げてお話しする予定です。ハードだけでなくソフトの話も出来れば良いなぁと思っています。

けーたろ: 「赤道儀の駆動部の種類と特性」(21:30-22:00)
  • 赤道儀のモーター中心のハード面の解説をします。DCモータとステッピングモータの違いや各電子回路の仕組みを、赤道儀やオートガイドの歴史を遡りながらお話ししようと思います。制御の深くやばい解説のお二方と、現存機材との橋渡しですね♪間違指摘やわからない点等のツッコミをお願します。 
22:00から懇親会

となりました。


当日

さて5月22日の日曜当日、19時くらいから会議室は開けておきましたが、結構ギリギリになっても数人しか集まりません。19時45分の開始15分前でけーたろさんとXRAYさんと私の3人のみ。さすがにテーマが難しすぎたかと心配になりました。

5分前で8人、1分前で10人となんとか集まってきましたが、この時点で二人目の講演者の botchさんが来ていません。けーたろさんと心配していましたが、ちょうど20時頃でしょうか、無事にbotchさんも参加して開始することができました。

スライド2

私の話は制御理論とフィルターの実装ですが、半分予想通りというか、途中で時間が足りなくなってしまい、オープンループ伝達関数などのところはカットしてしまいました。それでも、フィードバックフィルターがどのような考えて実装されているかはある程度は伝わったのではと思います。最後は今回問題だった、CGX-Lを例にに赤道儀の制御ループを推測し、ある程度矛盾のない数値に落とし込みました。結論としては今回の周期的な揺れは制御による発振ではないかと推論しましたが、懇親会の時にこたろうさんとけーたろさんは「何かメカ系のトラブルでは?」という推測でした。また何か結論につながるようなものが見つかったら報告しようと思います。

次の botchさんのトークですが、実際の赤道儀制作に基づいたようなお話で相当充実してました。というか、botchさんのお顔を見てちょっとびっくりしてしまいました。私があらかじめ疑問としてお伝えしていた「古典制御理論は線形性を仮定しているが、モーターのようなパルス的な応答を持つものはどう扱ったらいいのか?」というのにもある程度お答えしてくれたのかと思います。

botch

最後のけーたろさんですが、実際にモータを動かすところをカメラで見せてくれて、DCモーターとステッピングモーターの違いを非常にわかりやすく説明していただきました。けーたろさんはハンドルネームにも「星より機材」とつけているように、ここらへんの機材のことが大好きで、モーター関連も完全に趣味で試しているそうです。

けーたろ2

時間は少々オーバーしましたが、22時10分頃に無事に3人のトークが終わりました。

今Zoomのレポート機能で人数を数えてみたら、数分で出てしまった人を除いてもなんと37人も参加してくれていました。当日の懇親会の時点の画面で確か25人くらいというのは見てましたが、マニアックな話にこんなにも集まっていただいて、今更ながら驚いています。


お楽しみの懇親会

トークもそうですが、懇親会でもとても楽しい話がたくさんできました。こういった会合ではむしろ懇親会の方が楽しかったりしますよね。ブレイクルームも作ったのですが、ずっとメインルームにいてしまって覗くことができなかったのが残念でした。

懇懇親会でも話題になったのですが、画像処理とかならまだしも、こういったちょっと変わったテーマに絞ったマニアックな勉強会は、ローカルなグループではあったかもしれませんが、オンラインとかではこれまであまりなかったのではということでした。まだいろんなテーマがあると思うので、今後も機会があれば何かできればいいかと思っています。

懇親会は午前1時まで続きました。会議の設定時間が午前1時までで延長ができなさそうだったので、正確には0時58分に解散しました。最後に残っていたのは7人でした。月曜で皆さん仕事などあるかと思います。こんな遅くまでお疲れ様でした。


お礼

ちょっとした思いつきで準備もそこそこで、けーたろさん、botchさんには時間もギリギリの中かなり無理を言って準備をしてもらってたかもしれません。素晴らしいトークをありがとうございました。改めてお礼を述べさせてください。

また、参加してくれた皆様、楽しんでいただけましたでしょうか?TwitterでXRAYさんが「有料でもいいくらいの内容だった」というような旨の発言をされていたのは、ちょっと予想外でうれしかったです。 最初はホントに数人の参加者でもいいかと思っていたのですが、蓋を開けてみれば期待より遥かに多くの方に参加していただきました。どうもありがとうございました。

また何かネタがあればやってみたいと思います。あぷらなーとさんとか相当マニアックなネタ(笑)を持っているかと思うので、ちょっと期待してしまいます。Twitterで呟くと思いますので、もし興味がある方はちょっと気にしてみていてください。 


Twitterでおののきさんももやすがガイド鏡に言及されていて、タカsiさんが0.5秒ガイドに助けられているとコメント、更におののきさんがCGXが暴れることがある時に(速いガイドが)効果があると言っています。



私もCGX-Lでの赤経側で発振のように周期的に揺れが出る傾向があり、ガイド鏡のサンプリングレートを0.2秒にすると軽減したことがあります。



原因はある程度推測していたのですが、いまいち自信がなくそのときはブログ記事を一旦書いて、削除した覚えがあります。でもおののきさんも同じように、ガイドを速くしたら暴れを抑えられると書いているので、同じ現象かはわかりませんが、可能性の一つとして書いておこうと思います。


発振のメカニズム

今回の周期的に揺れが大きくなる現象が、推測する「発振」だとして話を進めると、制御の言葉で言う「位相遅れ」というのを理解しなくてはいけません。制御に詳しい方や、回路などに詳しい方はこの時点ですでにピンときているかもしれません。

まず何か揺れているもの、例えば振り子を考えてみましょう。紐にぶら下げた質量、何でもいいですがここではすぐ横にあるMacのバッテリーで代用しましょう(本来は振り子ではありません(笑)。もし同じように試す場合は目的外使用ですので自己責任でお願いします。)

ケーブルにつられたバッテリーは、持っている根本の揺れに依存して、常に揺れています。特に振り子の長さだけによって決まる共振周波数あたりでは、揺れは増幅され大きく揺れます。

A2E3BC2F-66C0-4808-9AC5-199C9549EEC6

その揺れを抑えるために、あるセンサー(ここでは「目」)を用いてその揺れを観測し、揺れを抑えるようにアクチュエーター(ここでは空いている方の手の「指」)を用いてバッテリー本体に力を加えます。バッテリーが大きく揺れている時、目でその揺れを見て、その揺れが収まるように指で突いて力を加えてやり、それを何度かすることで徐々に揺れの振幅を小さくすることが可能です。

7964D119-25B6-46D1-ACC2-82B50B0FEB25

力を加えるタイミングに注目してみましょう。揺れを抑えるためには、「振り子が指に迫ってくる」時に力を加えているはずです。もしこのタイミングが遅れて「振り子が指から離れていく」時に力を加えると、揺れは収まるどころかどんどん大きくなっていくはずです。これが「発振」です。


位相余裕と発振

もう少し考えます。この振り子の大きな共振周波数あたりでの揺れは、ある振幅と位相をもって揺れています。位相というのは1周期で360度となるような時間的なタイミングを表します。振り子が指から最も離れて、方向が反転する瞬間の位相を0度とします。振り子が指に迫ってきて、最も近づいて方向がさらに反転する瞬間が位相180度です。振り子の揺れを止めるためには、位相が180度になる手前で力を加える必要があります。位相が180度を超えて力を加えると「発振」するということです。この時の「180度になるどれくらい前」に力を加えているかというのを「位相余裕」と呼びます。通常位相余裕は数10度は欲しくて、0度に近づくほど発振に近くなります。

ここまでは共振周波数付近のみでの説明でしたが、実際は大きな揺れではないですが、振り子は共振周波数以上でも以下でも揺れています。常に速い細かい揺れがあるとかを想像してください。目でこの揺れを見るのは難しいかもしれませんが、それこそ望遠鏡などで拡大して見てやれば小さな揺れも見えますね。これらの速い揺れもやはり抑えてやりたいわけです。でも速い揺れに対しては反応も早くなくてはダメで、その反応が遅れると「位相余裕」がなくなっていきます。速い揺れに対して遅い力で抑えようとしても、反応が遅いために「位相余裕」がなくなり揺れが増幅される、これが「発振」です。


赤道儀のガイド制御ループでの遅延

さて、これらのことを今回の赤道儀の周期的な揺れに置き換えてみましょう。まず、センサーはガイド鏡のCMOSカメラで、対象はガイド鏡で見たガイド星の位置になります。アクチュエーターは赤道儀についているモーターです。位相を遅らせる原因はさまざまなものがあります。
  1. まず、カメラで星を見てPCに取り込むまでに時間がかかります。時間の遅延になるので位相余裕を食います。
  2. カメラの画像から星の位置を計算をするのに時間がかかります。ここでも位相余裕を食います。
  3. その位置をもとに、どうフィードバックフィルターを設計して赤道儀に返すか(PHD2のパラメータ調整に相当)ですが、フィルターの設定度合いによって遅延が起きます。
  4. モーターは信号が来て初めて動くので、そこでも当然遅延が発生します。
  5. モーターが動いても、実際の赤道儀が反応するまでには有限の時間が必要なので、ここでも遅延が発生します。
これら遅延の全てが位相を食っていき、位相余裕が0度より多く残っていれば発進を防ぐことができ、揺れを抑えるという制御は成立します。


では何が原因か?

こうやってみると遅延だらけですが、この中で今回重要なのは、センサーから星の位置を特定するまでの遅延と、赤道儀のメカ的な遅延です。

まず、PHD2でのガイドのタイミングを0.5秒とか、0.2秒とか速くしたということは、カメラからの読み取りのサンプリングレート速くし、情報を速く取り入れるということに相当します。遅延が少なくなるので、位相余裕が食われにくくなります。

ではなぜCGXやCGX-L特有で揺れが問題になるのか?一つは大きくて重い赤道儀だからというのがあると思います。赤緯体よりは赤経体の方が(赤緯体自身も含むので)重いはずです。揺れなので慣性モーメントで議論すべきですが、当然赤経体の慣性モーメントも大きいです。慣性モーメントが大きいということは、外力に対して反応が遅いということを意味しているため、ガイド信号に対する応答も遅く、遅延の原因になり、位相余裕を食います。その他にCGXやCGX-L特有でメカ的に何かロスなどがあり、遅延を発生しているという可能性もあるかもしれません。

いずれにせよ、大きく重い赤道儀を駆動する場合、発振は起きやすいということは定性的にはそれほど間違ってはいないでしょう。


解決策の例

では解決策はというと、
  1. 応答を速くすることができる場所でできるだけ速くする。今回はカメラの取り込みのレートを、1秒とかから0.5秒や0.2秒と、2倍から5倍くらい速くしたこと。
  2. もう一つは、制御全体のゲインを下げることです。これはPHD2の「Agressiveness」を下げるとかでしょうか?結局トータルのゲインは赤道儀自身の応答(周波数で測った伝達関数)を含むので、PHD2の一つのパラメータだけで調整できるものでもありません。いずれにせよ、制御が効いている周波数帯域で位相余裕が残っていればいいわけですから、制御帯域を狭め位相余裕が残っている遅い周波数帯だけで制御するというセンスです
こう考えると、CGXやCGX-Lは高周波の応答が悪い何らかの理由があるのではという推測も出てきます。

とまあ、対処療法的にはいくつか解決策も考えることができるので、他にもアイデアがあれば試していきたいと思います。ただし、あくまでこの揺れが「発振」によるものだとしてですが。


少し冷静に、発振でない可能性も

あと、ここまで書いたことは古典制御の範囲で「線形性」を仮定しています。モーターを使った制御の場合は線形性は保証されません。モーター制御の話は詳しくないので、もしかしたら全然勘違いしたことを書いている可能性もあります。その場合はゴメンなさい。

今回議論した、「制御の位相余裕がないことによる発振」ではない可能性としては、何か周期的な機械的な歪みがあることが考えられますが、調べてみるとCGX-Lによくある現象の様です。系統的に何かCGX、CGX-Lにメカ的に問題がある可能性はありますが、状況によって大きく変わるというのはメカものというよりは、制御系と考えた方がスッキリします。


まとめ

制御についてこのブログで扱ったことは今回が初めてかと思います。

ガイド制御ループの位相遅れが原因の、位相余裕の無さによる発振と考えるとかなりすっきりすると思いますが、まだ他のCGX系特有の別の理由の可能性もあり得ます。私のところでもすでに何度か再現していて、そこそこ再現性はありそうなので、もう少しじっくり見ていきたいと思います。

今回の話は古典制御のさわりみたいなものですが、理解しておくと望遠鏡にも色々役立つことは多いと思います。もし興味がある人がたくさんいるなろ、Zoomとかで勉強会を開くとかもいいのかもしれません。結構マニアックな話になると思いますが、そんな人いますかね?

このページのトップヘ