Ignore:
Timestamp:
10/21/09 10:49:36 (15 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Cosy/main
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Cosy/main/MCosy.cc

    r9439 r9516  
    349349
    350350    return point.SetPosition(dst, track);
     351}
     352
     353void MCosy::TrackPlanet(const Int_t &p) // ra, dec [rad]
     354{
     355    MTracking track(this);
     356    track.SetOut(fOutRep);
     357
     358    track.SetPointAcc(0.03, 0.01);
     359    track.SetPointVelocity(0.3);
     360    track.SetTrackAcc(0.01, 0.01);
     361
     362    track.TrackPlanet((ePlanets_t)p);
    351363}
    352364
     
    657669        {
    658670            RaDec dest = ((RaDec*)mp)[0];
    659             if (fStarguider)
    660                 fStarguider->SetPointingPosition(((RaDec*)mp)[1]);
    661671            if (!CheckNetwork())
    662672                return 0xebb0;
     
    670680        return 0x8888;
    671681
     682    case WM_PLANET:
     683        //cout << "WM_PLANET: START" << endl;
     684        {
     685            const Int_t p = ((Int_t*)mp)[0];
     686            if (!CheckNetwork())
     687                return 0xebb1;
     688
     689            TrackPlanet(p);
     690        }
     691        //cout << "WM_PLANET: done. (return 0x8889)" << endl;
     692        return 0x8889;
     693/*
    672694    case WM_NEWTRACK:
    673695        //cout << "WM_NewTrack: START" << endl;
     
    675697        //cout << "WM_NewTrack: done. (return 0x9999)" << endl;
    676698        return 0x9999;
    677 
     699*/
    678700    case WM_LOADBENDING:
    679701        //cout << "WM_LoadBending: START" << endl;
     
    826848    {
    827849        tout.Start(999);
    828         fCom->SendReport(fStatus, fRaDec, fZdAzSoll, bendist, fTrackingError, armed,
     850        fCom->SendReport(fStatus, fRaDec, fHourAngle, fZdAzSoll, bendist, fTrackingError, armed,
    829851                         fStarguider ? fStarguider->GetStarguiderMode() : 0);
    830852    }
  • trunk/MagicSoft/Cosy/main/MCosy.h

    r9439 r9516  
    3030//#define WM_CALIB        0x1004
    3131#define WM_TPOINT       0x1005
    32 #define WM_NEWTRACK     0x1006
     32//#define WM_NEWTRACK     0x1006
    3333#define WM_LOADBENDING  0x1007
    3434#define WM_RESETBENDING 0x1008
     
    4646#define WM_STARGTPOINT  0x1014
    4747#define WM_STARGMODE    0x1015
     48#define WM_PLANET       0x1016
    4849
    4950class Dkc;
     
    7778    TMutex fMutexGui;
    7879
    79     ZdAz  fTrackingError; // [rad] Tracking Offset between SE and calc-pos
    80     ZdAz  fZdAzSoll;      // [rad] Soll position when moving
    81     RaDec fRaDec;         // Position to track
    82     ZdAz  fAccuracy;      // Actual accuracy of Tracking
    83     ZdAz  fMin;
    84     ZdAz  fMax;
     80    ZdAz     fTrackingError; // [rad] Tracking Offset between SE and calc-pos
     81    ZdAz     fZdAzSoll;      // [rad] Soll position when moving
     82    RaDec    fRaDec;         // Position to track
     83    Double_t fHourAngle;     // Hour Angle of Position to track
     84    ZdAz     fAccuracy;      // Actual accuracy of Tracking
     85    ZdAz     fMin;
     86    ZdAz     fMax;
    8587
    8688    MPointing fBending;
     
    101103
    102104    int  SetPosition(const ZdAz &dst, Bool_t track=kFALSE);
     105    void TrackPlanet(const Int_t &p);
    103106    void TrackPosition(const RaDec &dst);    // ra, dec [rad]
    104107    void TrackPositionGRB(const RaDec &dst); // ra, dec [rad]
  • trunk/MagicSoft/Cosy/main/MTracking.cc

    r9443 r9516  
    44
    55#include "dkc.h"
    6 //#include "shaftencoder.h"
     6
     7#include "SlaStars.h"
    78
    89#include "MCosy.h"
    9 #include "SlaStars.h"
     10#include "MStarguider.h"
    1011
    1112#include "MDriveCom.h"
     
    1718//#define EXPERT
    1819#undef EXPERT
     20
     21MTracking::MTracking(MCosy *cosy)
     22    : MSlewing(cosy), MThread("MTracking"), fSlalib(fCosy->fObservatory),
     23    fTrackAcc(0, 0), fOut(0)
     24{
     25}
    1926
    2027// --------------------------------------------------------------------------
     
    146153// velocities are limited to the maximum velocity.
    147154//
    148 Bool_t MTracking::LimitSpeed(const ZdAz &vt, const SlaStars &sla) const
     155Bool_t MTracking::LimitSpeed(const ZdAz &vt) const
    149156{
    150157    // vt [deg/min]
     
    159166
    160167    // Calculate approximate velocity of both axis
    161     ZdAz vcalc = sla.GetApproxVel(fCosy->fRaDec);  // [rad/rad]
     168    ZdAz vcalc = fSlalib.GetApproxVel(fCosy->fRaDec);  // [rad/rad]
    162169
    163170    //vcalc *= 1./(24*60);          // [U_tel/min]
     
    209216}
    210217
    211 void MTracking::TrackPosition(const RaDec &dst) // ra, dec [rad]
    212 {
    213     SlaStars sla(fCosy->fObservatory);
    214 
    215     //
    216     // Position to actual position
    217     //
    218     sla.Now();
    219     ZdAz dest = sla.CalcZdAz(dst);
    220 
    221     gLog << all << sla.GetTime() << ": Track Position " << dst.Ra()*kRad2Deg/15 << "h, " << dst.Dec()*kRad2Deg <<"deg" << endl;
     218void MTracking::UpdateSlalib(SlaPlanets &sla)
     219{
     220    if (fTrackType<0)
     221        sla.Set(fTrackPos);
     222    else
     223        sla.SetPlanet((ePlanets_t)fTrackType);
     224
     225    if (fCosy->fStarguider)
     226        fCosy->fStarguider->SetPointingPosition(sla.GetRaDec());
     227}
     228
     229void MTracking::UpdateSlalib(Double_t dt=0)
     230{
     231    fSlalib.Now(dt);
     232    UpdateSlalib(fSlalib);
     233
     234    fCosy->fRaDec     = fSlalib.GetRaDec();
     235    fCosy->fHourAngle = fSlalib.GetHourAngle();
     236}
     237
     238void MTracking::UpdateSlalib(SlaPlanets &sla, Double_t mjd)
     239{
     240    sla.SetMjd(mjd);
     241    UpdateSlalib(sla);
     242}
     243
     244bool MTracking::Move()
     245{
     246    const RaDec &dst = fSlalib.GetRaDec();
     247
     248    ZdAz dest = fSlalib.GetZdAz();//fSlalib.CalcZdAz(dst);
     249
     250    gLog << all << fSlalib.GetTime() << ": Track Position " << dst.Ra()*kRad2Deg/15 << "h, " << dst.Dec()*kRad2Deg <<"deg" << endl;
    222251
    223252    // If the star is culminating behind the zenith (South) we want to
     
    225254    // culminating before the zenith (north) we want the star to be
    226255    // aligned between -180 and 180deg (which is the default of CalcZdAz)
    227     if (sla.GetPhi()>dst.Dec() && dest.Az()<0)
     256    if (fSlalib.GetPhi()>dst.Dec() && dest.Az()<0)
    228257    {
    229258        // align az from -180/180 to 0/360
     
    238267    {
    239268        gLog << err << "ERROR - Cannot start tracking, positioning failed." << endl;
     269        return false;
     270    }
     271
     272    return true;
     273}
     274
     275void MTracking::TrackPosition(const RaDec &dst)
     276{
     277    fTrackPos  = dst;
     278    fTrackType = -1;
     279
     280    // Start tracking
     281    Track();
     282}
     283
     284void MTracking::TrackPlanet(ePlanets_t planet)
     285{
     286    fTrackPos  = RaDec();
     287    fTrackType = planet;
     288
     289    // Start tracking
     290    Track();
     291}
     292
     293void MTracking::Track() // ra, dec [rad]
     294{
     295    // Position to corrent nominal position
     296    UpdateSlalib();
     297
     298    if (!Move())
    240299        return;
    241     }
     300
     301    //fCosy->fRaDec = fSlalib.GetRaDec();
    242302
    243303    // Initialize Tracker (slalib or starguider)
    244     fCosy->fRaDec = dst;
    245 
    246304    RunThread();
    247305
     
    256314
    257315    // Get current nominal local position
    258     sla.Now();
    259     ZdAz pos = sla.CalcZdAz(fCosy->fRaDec);
     316    UpdateSlalib();
     317    //fCosy->fRaDec = fSlalib.GetRaDec();
     318
     319    ZdAz pos = fSlalib.GetZdAz();//fSlalib.CalcZdAz(fSlalib.GetRaDec());
    260320
    261321    // Some output
    262     XY xy(TMath::RadToDeg()*dst.Ra()*24/360, TMath::RadToDeg()*dst.Dec());
    263     gLog << all << sla.GetTime() << " - Start Tracking: Ra=" << xy.X() << "h Dec=";
     322    XY xy(TMath::RadToDeg()*fCosy->fRaDec.Ra()/15, TMath::RadToDeg()*fCosy->fRaDec.Dec());
     323    gLog << all << fSlalib.GetTime() << " - Start Tracking: Ra=" << xy.X() << "h Dec=";
    264324    gLog << xy.Y() << "\xb0 @ Zd=" << pos.Zd()*kRad2Deg <<"deg Az=" << pos.Az()*kRad2Deg <<"deg" << endl;
    265325
     
    295355        // Request Target position for Now+dt
    296356        //
    297         sla.Now(dt);
     357        UpdateSlalib();
     358        //fCosy->fRaDec = fSlalib.GetRaDec();
    298359
    299360        //
    300361        // Request nominal position for this time in the future (To+dt)
    301362        //
    302         const ZdAz pointing = sla.CalcZdAz(fCosy->fRaDec); // [rad]
     363        const ZdAz pointing = fSlalib.GetZdAz(); //fSlalib.CalcZdAz(fSlalib.GetRaDec()); // [rad]
    303364        ZdAz dest = fCosy->AlignTrackingPos(pointing);     // fix ambiguity
    304365
     
    329390        //v.Az(v.Az()*(1+TMath::Min(0.3, kpAz)));
    330391
    331         if (LimitSpeed(v, sla))
     392        if (LimitSpeed(v))
    332393        {
    333394            gLog << dbg << "vt: " << v.Zd() << " " << v.Az() << "re/min" << endl;
     
    372433    }
    373434
    374     sla.Now();
     435    fSlalib.Now();
    375436
    376437    CancelThread();
     
    379440    fCosy->StopMovement();
    380441
    381     gLog << all << sla.GetTime() << " - Tracking stopped @ Zd=";
     442    gLog << all << fSlalib.GetTime() << " - Tracking stopped @ Zd=";
    382443    gLog << fCosy->fZdAzSoll.Zd()*TMath::RadToDeg() <<"deg Az=";
    383444    gLog << fCosy->fZdAzSoll.Az()*TMath::RadToDeg() <<"deg" << endl;
     
    391452    gLog << inf2 << "- Tracking Thread started (" << MTime(-1) << ")" << endl;
    392453
    393     SlaStars sla(fCosy->fObservatory);
    394     sla.Now();
    395 
    396     ZdAz soll = sla.CalcZdAz(fCosy->fRaDec); // [rad]
     454    SlaPlanets sla(fSlalib.GetObservatoryKey());
     455
     456    UpdateSlalib(sla);
     457
     458    //ZdAz soll = sla.GetZdAz(); //sla.CalcZdAz(sla.GetRaDec()); // [rad]
    397459
    398460    //
     
    434496        if (phca1)
    435497        {
    436             ZdAz dummy = sla.CalcZdAz(fCosy->fRaDec, mjdzd);
     498            UpdateSlalib(sla, mjdzd);
     499
     500            ZdAz dummy = sla.GetZdAz();//sla.CalcZdAz(radec, mjdzd);
    437501            dummy = fCosy->AlignTrackingPos(dummy);
    438502            fCosy->fZdAzSoll.Zd(dummy.Zd());
    439             soll.Zd(fCosy->fBending(dummy).Zd()); // [rad]
    440 
    441             fCosy->fTrackingError.Zd(soll.Zd()-istse.Zd());
     503            fCosy->fTrackingError.Zd(fCosy->fBending(dummy).Zd()-istse.Zd());
    442504
    443505            TThread::CancelPoint();
     
    445507        if (phcaz)
    446508        {
    447             ZdAz dummy = sla.CalcZdAz(fCosy->fRaDec, mjdaz);
     509            UpdateSlalib(sla, mjdaz);
     510
     511            ZdAz dummy = sla.GetZdAz();//sla.CalcZdAz(radec, mjdaz);
    448512            dummy = fCosy->AlignTrackingPos(dummy);
    449513            fCosy->fZdAzSoll.Az(dummy.Az());
    450             soll.Az(fCosy->fBending(dummy).Az()); // [rad]
    451 
    452             fCosy->fTrackingError.Az(soll.Az()-istse.Az());
     514            fCosy->fTrackingError.Az(fCosy->fBending(dummy).Az()-istse.Az());
    453515
    454516            TThread::CancelPoint();
  • trunk/MagicSoft/Cosy/main/MTracking.h

    r9132 r9516  
    44#ifndef COSY_MSlewing
    55#include "MSlewing.h"
     6#endif
     7
     8#ifndef COSY_SlaPlanets
     9#include "SlaPlanets.h"
    610#endif
    711
     
    1721{
    1822private:
     23    SlaPlanets fSlalib;
     24
    1925    ZdAz fTrackAcc;
     26
     27    Int_t fTrackType;
     28    RaDec fTrackPos;
    2029
    2130    MLog   *fOut;
    2231
     32    void UpdateSlalib(SlaPlanets &sla);
     33    void UpdateSlalib(Double_t dt);
     34    void UpdateSlalib(SlaPlanets &sla, Double_t mjd);
     35
    2336    bool SetVelocity(const ZdAz &v);
    24     bool LimitSpeed(const ZdAz &vt, const SlaStars &sla) const;
     37    bool LimitSpeed(const ZdAz &vt) const;
    2538    bool InitTracking();
     39    bool Move();
     40    void Track();
    2641
    2742    Int_t Thread();
    2843
    2944public:
    30     MTracking(MCosy *cosy) : MSlewing(cosy), MThread("MTracking"), fTrackAcc(0, 0), fOut(0) { }
     45    MTracking(MCosy *cosy);
    3146
    3247    void TrackPosition(const RaDec &dst); // ra, dec [rad]
     48    void TrackPlanet(ePlanets_t planet);  // ra, dec [rad]
    3349    void SetTrackAcc(Float_t zd, Float_t az) { fTrackAcc.Zd(zd); fTrackAcc.Az(az); }
    3450
Note: See TracChangeset for help on using the changeset viewer.