ソフトウェア開発部のつのだです。
例年から2ヶ月遅れで始まったツール・ド・フランス中継の観戦をここ最近は楽しみにしています。デバッグで明け方まで望遠鏡の下で粘った夜型な生活から復帰できずにいるのが幸い(?)してリアルタイムで観戦できます。
つい先日、先輩に生活タイムゾーンがローマになっていると指摘されました。言われてみればパスタもエスプレッソも好きなので心がヨーロッパにあるようです。ちゃんと日本に帰って来たいですね…。
今回はGearBoxで使用しているINDIGO(インディゴ)についてと、弊社のINDIGOプロジェクトへの貢献についてご紹介したいと思います。
GearBoxの正体が小型コンピュータの「Raspberry Pi」であることは以前ブログの中でも紹介がありました。
GearBoxの中心・INDIGOって?
INDIGOはオープンソースで開発されている天文機器分散制御システムです。
そもそも天文機器制御システムとしてはASCOMというものがありますが、その名にあるように元々MicrosoftのCOM技術を使用しているため、Windowsをターゲットとしてドライバ開発が行われています(近年はASCOM AlpacaというAPIを通してMacやLinuxからASCOM機器制御を行えるようになっているようですが、どのみち機器制御用のWindowsが必要なようです)。
ステラナビゲータはVer.9から望遠鏡のASCOM制御に対応しています。
これに対して、LinuxやMacから直接機器制御を行うシステムとしてINDIというものがあります。
INDIは機器を接続したINDIサーバーに対してTCP通信でXMLをベースとしたメッセージをやり取りし機器制御やデータ交換を行う、ネットワーク経由での動作を前提としたシステムです。
ASCOMもINDIも仕様がオープンになっており、開発者は仕様に従って実装を行うことでシステムにドライバを追加することができます。
天文業界は技術やデータがオープンに公開される傾向があると感じています(オープンソースソフトウェアが好きな私が、この業界を好きな理由の一つです)。
INDIGOはINDIをベースとして派生した別プロジェクトで、INDIの通信プロトコルをベースにWebブラウザで動作するWebSocketでも動作するよう拡張が行われており、INDIGOは次世代のINDI規格を謳っています。
そのため、INDIGOは実はWebブラウザだけで操作することができます(しかし、現状かなりクセがあります)。
ステラナビゲータは11.0eアップデータから望遠鏡のINDIGO制御に対応しました(INDIとINDIGOは微妙にプロパティ名が異なっており、現時点でのステラナビゲータはINDI制御には未対応です)。
「GearBox」開発とINDIGOプロジェクト
GearBoxの開発当初はindi_gphoto_ccdというドライバを使用したカメラ制御を検討していました。しかしこのドライバが使用しているlibgphoto2は、一部のカメラでそこそこ動作したとしても大半のカメラで満足に動かない問題がありました。
libgphoto2のプロジェクトに修正を投げても、修正が受理されるのに数か月かかることもあり、このままlibgphoto2を利用すべきか悩んでいた所、INDIGOプロジェクトでindigo_ccd_ptpというドライバが開発されていることを知りました。
indigo_ccd_ptpはPTPと呼ばれるカメラ制御プロトコルを直接読み書きしてデジタルカメラを制御するドライバで、CanonやNikonのカメラの他、SONYのカメラへの対応を目指していました。
GearBox開発当初はこのドライバは開発中だったため、制御がそこそこ失敗するもののlibgphoto2とは比べ物にならない安定性が感じられたため、このドライバを安定して動作させることを目標にしました。
そもそもindigo_ccd_ptpはメーカー製SDKのような整えられたインターフェイスを介さず、直接PTPでカメラと通信するものです。そのため、カメラの返すプロパティ一覧とにらめっこしながら、このプロパティを変えるとカメラ本体のどの設定が変わる、という泥臭いハックが行われています。
デジタルカメラは販売された世代に応じて微妙にPTPプロパティの動作が異なるらしく、このカメラでは動くとしても、あのカメラでは動かないということが多々あります。社内のカメラで一通りの動作を確認し満足に動くようになっても、先輩の私物のカメラでは動かないという事もあり、徹底的に動作確認を行うことになりました。
問題の原因を探って修正をINDIGOプロジェクトに送るのですが、ドライバの開発者であるPeter氏が迅速に受理・修正指示を行ってくれたため、非常にスムーズに開発が進みました。
様々な人の協力で作られた「ステラショット2」と「GearBox」
ステラショット2は、社内の私物カメラをかき集めたり、社外からカメラを借用するなど、非常に多くの人の助けを借りることで対応機器を増やしています(製品仕様ページの対応機器表参照)。
また、GearBoxファームウェアの主な機能追加・修正項目には望遠鏡ユーザーの皆様からのご報告を受けてINDIGOの修正を行ったものが含まれます。
この場を借りてご協力していただいた方々に感謝申し上げます。
オープンソースは無償・自由であることが注目されますが、その背後には様々な人々の協力があって成り立っています。
GearBoxの開発者として、INDIGOプロジェクトへの貢献を今後も続けていきたいと思っています。