기기정보

Goto & 사진 촬영 자동 스크립트.

by 박현권 posted Feb 14, 2006
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
http://astronet.co.kr/cgi-bin/zboard.php?id=gallery_dso&no=1071올해 참가할 수 있을지 모르겠지만, 만약에 메시에 마라톤에 참가한다면, 메시에 로봇 마라톤을 해보겠다고 한적이 있습니다.
그래서 만들어 본 것입니다.

기본은 다 되는 핵심 코드만 추렸습니다.
하는 일은
대상까지 적도의로 찾아가서, CCD 로 촬영하고, 파일로 저장하는 것입니다.
대상의 RA, DEC값을 저장해둔 엑셀 파일을 디비처럼 사용하고 있습니다.

TheSky와 적도의가 싱크되어 있고, CCD가 연결되어 있다면
아래 스크립트를 도스창에서

cscript   test.js    51

과 같이 실행 해 주면 됩니다.


아래 링크는 작년도 결과인데,
http://astronet.co.kr/cgi-bin/zboard.php?id=gallery_dso&no=1071

작년도에 M51을 11시 23분에 찍었습니다.
올해도11시 23분에 자동으로 스케줄링 해서 찍으려면,

도스창에서

at    23:23     cscript     test.js     51

이라고 해 두면 되겠습니다.

메시에 마라톤을 위해서 만들었지만,
자동화 스크립트가 여러모로 많은 도움이 될거 같네요.

예를 들면,

1. 새벽에 다크를 찍는 일이라거나
2. CCD온도를 조금씩 내리는 일이라거나
3. 가이드 캘리브레이션
4. 새벽에 경통이 처박는 일이 없도록 새벽 6시 경에, 경통을 서쪽이 향하도록 하는 스크립트를 돌려주거나... (세미 파크 기능...)


향후 RO할때 많은 도움이 될 것 같습니다.

/***********************************************************
// My Lib
***********************************************************/
function alert( a ){
        WScript.Echo(a);
}

function sleep( a ){
        WScript.Sleep(a);
}
/***********************************************************
// Initialize Telescope
***********************************************************/
var scope;
try{
        scope = new ActiveXObject("TheSky.Telescope");
}catch(e){
        var chsr = new ActiveXObject("DriverHelper.Chooser");
        chsr.DeviceType = "Telescope";
        var scopeProgID = chsr.Choose(scopeProgID);
        scope = new ActiveXObject(scopeProgID);
        chsr = null;
}
scope.Connected = true;

if(! scope.Connected){
         alert("오류:망원경 연결 실패...");
        quit();
}

/***********************************************************
// Initialize CCD Camera
***********************************************************/
var cam = new ActiveXObject("MaxIm.CCDCamera");
cam.LinkEnabled = true;

if(! cam.linkEnabled){
        alert("오류:카메라 연결 실패...");
        quit();
}

/***********************************************************
// Utils
***********************************************************/
var util = new ActiveXObject("DriverHelper.Util");

var sheet = GetObject("messier.xls").ActiveSheet;
/***********************************************************
// Main
***********************************************************/
function gotoAndTakePictureOf( obj ){
        alert(sheet.cells(obj,1));
        scope.SlewToCoordinates(sheet.cells(obj,3),
                                sheet.cells(obj,4));        

        cam.Expose( 1, 1, 0 );
        while(! cam.ImageReady){
                 sleep(100);
        }
        cam.SaveImage("M"+obj+".fit");
        alert("촬영 완료: M"+obj+".fit로 저장하였습니다.");                
}                                

function main(){
        if(WScript.Arguments.length == 1){
                gotoAndTakePictureOf( WScript.Arguments(0) );
        }else{
                alert("USAGE: cscript test.js messier#");
        }
}

main();