001 package edu.nrao.sss.model.resource; 002 003 /** 004 * A TelescopeMotionModel. 005 * Things we need to know: 006 * <ul> 007 * <li>Previous location of antenna</li> 008 * <li>Desired new location</li> 009 * <li>axis 1 and 2 movement rates</li> 010 * <li>axis 1 and 2 acceleration (and maybe decceleration too)</li> 011 * <li>antenna settling time</li> 012 * <li>min setup time. Slew time must be >= this value regardless of mechanical movement time.</li> 013 * <li>min and max values for each axis</li> 014 * </ul> 015 */ 016 public interface TelescopeMotionModel 017 { 018 /** 019 * May pass in SkyPos objects later. Problem is their time dependence. 020 * Assuming args are in radians. 021 */ 022 public double calculateSlewTime(double[] from, double[] to); 023 024 /** 025 * returns the maximum speed the antenna can slew on axis {@code axisNumber} in radians/s. 026 */ 027 public double getMaximumSlewRate(int axisNumber); 028 029 /** 030 * returns the acceleration the antenna can slew on axis {@code axisNumber} in radians/s/s. 031 */ 032 public double getSlewAcceleration(int axisNumber); 033 034 /** 035 * returns the minimum angle the antenna can move to on axis {@code axisNumber} in radians. 036 */ 037 public double getMinimumAngle(int axisNumber); 038 039 /** 040 * returns the maximum angle the antenna can move to on axis {@code axisNumber} in radians. 041 */ 042 public double getMaximumAngle(int axisNumber); 043 044 /** 045 * returns the amount of time it takes for the Antenna to settle into 046 * position in seconds. This should include <em>any and all</em> time from the point 047 * the antenna stops moving to when it is ready to actually collect data. 048 */ 049 public double getSettlingTime(); 050 051 /** 052 * returns the minimum amount of time it takes to setup an antenna regardless 053 * of the time it takes to physically move (in seconds). 054 */ 055 public double getMinimumSetupTime(); 056 }