Release Date: Oct 6, 2011
Generic Release Name: BP13
Public Release Name: Non-sidereal Observing - first version release BP13
General Description: This release contains non-sidereal tracking and hot spot drift guiding
Telescope Operator Overview Information
The sound control in the LSSGUI has been improved. There is now a queue for sounds, so the GUI performance will not suffer if many sounds are requested rapidly. The queue can be cleared and its length is displayed. A sound event can be replayed by double clicking the event in either window.
The BP11 MCSPU executable will not work with BP13.
The BP11 LBC control program will not work with BP13.
Support Astronomer Overview Information
The IRTC now supports two cameras. See help on commands SetCamera and ShowCamera. The default camera is IRTC2 (the one we've always had on the telescope) except for client 'IRC1' where IRTC1 is the default. The list of possible client names is now irc, IRC, IRC1, IRC2, IRCL, and IRCR.
The PSF can now perform mode 1 pointing adjustments using monocular range balancing. There is a control button on the PSFGUI arbitrator form to enable/disable this feature. The default is disabled.
The TCS now supports the acquisition of non-sidereal targets via the NSIGUI or the IRC software. It is envisioned the observers will use the NSIGUI until the instrument support software can be modified to accommodate this new functionality.
The IIF RunAO command has a changed interface. See the IRTC section below for details.
The Details
Specific Tests that need to be performed with the Telescope
Update to include sequence number on mount polynomials.
Networks
none.
PLCs
Shutter door ladder logic program modified to reflect the work done to the outboard latch stations over the summer shutdown.
TCS Subsystems and GUIs, and significant configuration files
tcs.conf
PCS support - Modified the tcs.conf file by adding the EPHEM_DIR variable. This variable defines the location for the ASCII ephemeris file which is retrieved from JPL Horizons in support of non-sidereal targets.
Clean up main and add try/catch around addSource. Issue event and exit if configuration file is missing.
Rename IIF_C.hpp to IIF_C.h.
Allow skip collimation for 'small' Offsets for side 'both' in binocular mode.
Use class methods for serializing in Position, Offset, and Hotspot classes, and remove method 'AssemblePositionOptionalXML'
Support user-defined top-level XML tag when serializing Position class.
First cut at supporting non-sidereal tracking data in the IIF. A new class NonSidereal has been created. It is defined analogous to Position, Offset, and Hotspot, and is optional in a Preset.
Do not check for offSource immediately after a failed Offset or RunAO; instead wait for onSource to become true once. This prevents a failed Offset/RunAO from causing a canceled Preset if the telescope stays offSource after the command fails (IssueTrak 3436).
Do not create all the IIF commands when the IIF object is instantiated. The old behavior was causing the IIF to run out of file descriptors when there were many ICE proxies established since each one has an IIF object. The new behavior means a command object is created whenever it is needed, and then deleted when the command finishes (just like all the other subsystems) (IssueTrak 3398).
Add UpdateNonSiderealTarget command.
Treat offsets in Presets with very small values(< 5e-10 rad) as no offset.
Reject Presets that have both non-sidereal and offset specified.
Cancel a Preset if thin shell is not ready when it should be (IssueTrak 3435).
Make the ICE proxy name available to all commands to allow for future special handling for some proxies.
Add support for a 'Preset non-sidereal override'. Non-sidereal information can now be stored in the IIF (sent with the IRC for example) which will be used in a subsequent Preset command from another instrument. This is to support non-sidereal tracking before instruments can directly send non-sidereal requests in their Presets.
Add sounds to Preset command done events (different sounds for complete, warning, failed).
Add sounds to preset canceled events.
Allow asynchronous Presets to change sidereality if BinocularControl CLEARPRESET has been issued. Otherwise asynchronous Presets must be the same type of sidereality.
Add data from GetRotatorTrajectory to the ICE result object.
Change 'unsigned int' to 'size_t' for string size/length variables for 64 bit compatibility.
Add handle_critical() for telemetry R14.
Do not resume AO if the AO offset fails in OffsetPointing, instead fall back to AGW guiding/active optics if possible. This is to support an offset outside the W stage patrol field in the same way we do for AGw guiding.
Toggle guiding/active optics on/off if the AO loop is opened/closed after it has been successfully started to support AO engineering tests.
Allow small numerical slop when comparing NonSidereal objects
Use complete Nonsidereal object when checking left=right non-sidereal targets in Preset.
Allow LINC to use the GetTrajectory command.
Change RunAO command to take a new enum operation type instead of a boolean to support additional flexibility for AO engineering (IssueTrak 3538).
Do not prevent a monocular asynchronous non-sidereal Preset.
Add reflective memory variables so instruments have access to both the requested Preset mode (S_PresetMode) and the effective mode (S_EffectiveMode) (IssueTraks 3351 and 3350).
Allow guide and active mode for non-sidereal Presets.
Do not cancel operating Presets with Cancel Sync Presets button (IssueTrak 3608). Add command cancel to cancel operating Presets.
Synchronize GetRotatorTrajectory with both Preset and Offset so the PCS will always have new data. This allows the LBC to issue GetRotatorTrajectory without having to know if the PCS has the new target/position yet. (IssueTrak 3595).
IIFGUI Version 3.8
Remove Version and standby displays; put the versions in the 'About' box.
Reorganize main and add try/catch around addSource().
Slightly compact the main window.
Support display of and clearing the new 'Preset non-sidereal override' state.
Show more complete AO status: Off, RIP, Open, Closed.
Use violet color to indicate Preset mode when the effective and requested modes are not the same.
Display PCS achieved RA and DEC instead of target data.
Add displays for BinocularControl requests (IssueTrak 3608).
added _initialHotspot member to AGWCamera to maintain reference spot for pointing in place while dynamically updating _hotspot with changing refraction
added SFP2CCDoffset function to AGWUnit class and delegated subclasses to allow for a moving hotspot instead of a moving probe
added the commandline program setHotspot back to the suite of commands for GCS to be able to tweak hotspot during closed loop guiding
new gcs.conf entry: GCSL/R.driftingHotspot, defaulting to false if not present to match previous behavior of GCS
GCS now allows for a drifting hotspot in closed loop guiding by asking PCS in every cycle where the Guidestar SFP should be and translating this into a pixel drift, IT #2853 this new feature can be turned off by setting GCSL/R.driftingHotspot to false in gcs.conf (this will be checked in every guide cycle) if it turned out to be faulty.
new DD variables GuideCam.initialHotspot_x/y to reflect which hotspot settings the GCS starts with for a given AGW. The set/getHotspot commandline tools can report and change these values in closed loop.
the GuideCam.hotspot_x/y values now reflect the dynamic, drifting hotspot on the CCD if this feature is enabled.
support for basic non-sidereal guiding added by adapting the guide cam ROI to a drifting hotspot. When the relative hotspot in the guidecam image drifts more than 50% off center, GCS tries to replace the ROI on the CCD to get the hotspot back in the center of the image as long as the ROI stays within CCD boundaries. This feature only works if the GCSL/R.driftingHotspot variable in gcs.conf is set to true
IT #3640 config files for AGW1 were added and updated
updating new DD variable GuideCam.mean_values_valid to indicate if the averagedSeeing has been calculated or set to a default value
copied OSU_L.cfg MODSAGW configuration file from the mountain to add to SVN
network setup changes now allow to talk to agw-control at all times and the switch to the backup machine is done transparently on IP level, gcs.conf now reflects that
slowed down the guide cam temp update rate when in Acquire mode to about once a minute
added a delay before updating camera temperatures and clearing receive buffer as it appears that sometimes there is an OK coming through from!AzCam AFTER the buffer was cleared and messing up the command/response synchronicity (IT #3452)
added explicit events and syslog messages, describing possible initialization issues with the different components of the AGW units. Issues are described in detail and a possible cause for the problem is listed as well to help the TO in deciding which corrective measures have to be taken. (closes IT #3468)
fixed a problem with CamImage not writing to a FITS block size boundary when saving a subframe image to disk. This caused the GUI to reject the loaded image (IT #3370)
Improve sound support by adding a separate thread with a queue to allow sound to 'stack up' without delaying the GUI display. A new GUI button clears the sound queue to avoid screaming and swearing if an hour's worth of sounds get queued.
Sounds can be re-played by double clicking on an event in either window.
The MCS GUIs have been changed a lot. The main GUI has been reduced in size by half. It now has a 'set encoder' button and an on-source display. Under normal conditions the T.O. should be able to do everything necessary to bring up the AZ & EL axes by using just this GUI.
The azimuth and elevation sub-GUIs have had new status information added including motor torques, plus new sub-GUIs showing error status bits.
Time-to-limit displays have been added to Azimuth and rotator GUIs. 'ON_SOURCE' has been added to the rotator GUIs.
Obsolete and non-functional status information has been removed from the Power status GUI and HBS-system GUI.
The Enclosure sub-GUI now shows the enabled/disabled status of the bogies and allows the operator to change that status. The Encl_Folw_Tel signal has been added to the display.
Tool-tips in general have been corrected and expanded.
The mcs/sound/ directory has 44 new sound files (used in events by MCSPU) and each foo.wav sound file has a corresponding foo.txt file which contains the text that was used to generate the foo.wav file.
Support for left rear rotator has been added to the MCSGUI.
The MCSPU has had Left Rear Bent Gregorian rotator added to it.
Some bugs have been fixed (IT #3651, 3643, 6309.).
The MCSPU now monitors the rpc call rates from TCS and logs when they change significantly. This should help diagnose any communication problems with the TCS that may occur in the future.
Logging has been upgraded in general to help diagnose future problems.
Non-Sidereal Support - New Non-Sidereal Target support methods: no separation check is performed on the Binocular Preset for non-sidereal targets. The two sides of the telescope MUST preset to the same location with the same tracking rate. The telescope sides can be mis-aligned via an offset.
setDifferentialRateTarget() - The target is defined by the quintuple: time, RA, Dec, differential tracking rate in RA, and differential tracking rate in Dec.
setNSEphemerisTarget() - The target is defined by an ephemeris file acquired from JPL Horizons. Each ephemeris line in the file consists of (at least): time, RA, Dec, differential tracking rate in RA, and differential tracking rate in Dec. The quintuple used for defining the target is based upon linear interpolation of the data bracketing the current time. Extrapolation is performed implicitly by the pointing kernel routines based upon the time.
updateDifferentialRateTarget() - Allows the observer to update the differential tracking rates by providing new absolute rate values (versus delta values). When this is done, the time is set to "current time" and the RA and Dec are set to the "achieved" values. Note this routine is always applied to BOTH sides of the telescope in Binocular mode; the two telescope sides MUST have the same tracking rates.
Modified the Offset routines to accommodate non-sidereal targets.
New internal and external data dictionary items have been created to support non-sidereal targets. The public (external) data dictionary items are, where S = L or R:
S_NSRATRKRate: Differential tracking rate for RA, double, arcseconds/hour
S_NSDECTRKRate: Differential tracking rate for Dec, double, arcseconds/hour
S_NSTRKEpoch: Differential tracking reference epoch, double, MJD UTC (days)
S_NSTRKEquinox: Tracking equinox, string
S_NSTRKFrame: Tracking coordinate frame, string
When computing the requested separation of non-sidereal targets on an offset to determine if the binocular pointing constraint has been violated, the instantaneous non-sidereal object position is computed manually. The new position is based upon the Preset RA and Dec, the elapsed time since the Preset, and incorporates the differential tracking rates.
Modified the creation of the default guide star for non-sidereal targets for LBC and MAT only. When the fundamental non-sidereal object routine, setDifferentialRateTarget(), is executed, a non-sidereal target is created. For LBC and MAT only, a sidereal guide star is also created at the RA/Dec of the non-sidereal target at time "now". This is done particularly in this manner as a non-sidereal target can be specified with an epoch for the past or future; the pointing kernel uses the differential tracking rates to compute the RA/Dec for time NOW for the target.
General
Re-instated code to enforce an error if the separation of each telescope side is greater than the specified error limit. This supplements the current warning code.
Replaced doSeparationCheckError with copointingLimitError which can be invoked by the commands: SetEquatorialTarget, OffsetTelescopeEquatorial, and OffsetTelescopeDETXY.
Modified the PCS diagnostic file - Added the SX and DX rotator sequence numbers and the MJDUTC for better cross-checking against other diagnostic sources. Also, added back the velocity and acceleration coefficients for the rotator polynomials.
Added handle_critical(string) implementation to the callback which inherits from ambassador class for Telemetry Release R14.
Created new variables for Telemetry in the "telescope" telemeter
targetNSRARate double radians/day
targetNSDECRate double radians/day
Added try/catch around the "addSource" lines which access the subsystem ".conf" files such that an event is now generated when a configuration file cannot be accessed; the PCS will exit.
pcs.conf
Added INIT_DIR_PCS to pcs.conf for the planetary ephemeris files and cleaned up arrangement for downtown vs testing vs mountain variables. The downtown and testing variables are explicitly annotated. Use of this functionality is for testing only.
PCSGUI
For the mount/rotators form, read the MJD from the mount polynomials which are always generated; formerly used the rotator polynomials which are only generated if the authorized instrument is using a telescope rotator.
Modified the MJD display on the mount/rotators form to have a format of f13.7. Also, changed the label to MJDTAI.
Clean up main and add try/catch around addSource. Issue event and exit if configuration file is missing.
Do not perform shell offload at Preset time; just zero Z2, Z3, and Z4 on the secondary. IssueTrak 3397. This is patched in BP11 June 9.
Protect the collimation temperature compensation calculation from really bad temperature values: issue an event and skip the calculation. IssueTrak 3346.
Add handle_critical() for telemetry R14.
Put adaptive secondary values in psf.conf for the left side.
Implement mode 1 pointing adjustments using (optional) monocular range balancing and add the control flag to arbitrator telemetry.
Calculate the range balanced desiredTip and desiredTilt for mode 1, mode 3a, and mode 3b pointing adjustments, and send them to the PCS.
Return a warning from adjustPointing() if a limit is reached.
PSFGUI Version 4.35
Clean up main and add try/catch around addSource().
Add 'Stop all GUIs' button to stop all GUIs on the entire cluster. The list of GUIs to stop is kept in tcs.conf.
Use WEXITSTATUS macro to get return status from system() calls.
Add a short (1.5 sec) delay after stopping a subsystem and then issue a network 'trigger' so all networkservers will update. This is to help keep the display updated correctly if a subsystem doesn't stop.
The ArgumentList class was modified to not use the DOM parser (xerces), and to extend type checking to more simple data types. This last change makes it incompatible with previous builds.
Replace 'unsigned int' with 'size_t' when dealing with sizes of STL container objects for 64 bit compatibility. The ArgumentList class was not modified.
datadictionary - reflective memory and event support
Replace 'unsigned int' with 'size_t' when dealing with sizes of STL container objects for 64 bit compatibility.
eventhandler - event handling
Replace 'unsigned int' with 'size_t' when dealing with sizes of STL container objects for 64 bit compatibility.
networkconfig - subsystem management
Remove WXGUI, PRESETGUI, TEL, and SDB from the process list checked with 'netconfig ps'. Change MAT to MATGUI in same list.
Replace 'unsigned int' with 'size_t' when dealing with sizes of STL container objects for 64 bit compatibility.
Remove method getTelemetryIP() since it is no longer needed.
Add method trigger() to generate a network 'trigger' packet.
reflectivememory - global shared memory
Do not return error for gshmmconfig -z (used by TCSGUI 'start all') if the error is ENOENT (shared memory segment does not exist); instead go ahead and create it. This will eliminate the 'file does not exist' error from TCSGUI 'start all' the first time after a machine has been rebooted.
Replace 'unsigned int' with 'size_t' when dealing with sizes of STL container objects for 64 bit compatibility.
Check if recvfrom() (in GshmServer.cpp) returns too early with a timeout, and print a message to SysLog if so. This is to help understand shared memory loop timeouts.
rpc - communication protocol
If the connect call in RPC.cpp fails with EADDRNOTAVAIL, loop on wait and retry since this error means all ports are currently bound to sockets in TIME_WAIT. This may not happen on the mountain, but it does in stress testing.
setvalue - reflective memory access
Replace 'unsigned int' with 'size_t' when dealing with sizes of STL container objects for 64 bit compatibility.
Change the camera IP address to 192.168.18.171. Patched in Version 2.4
Remove whitespace in fields parsed by the ListString class. This allows one to use whitespace to align fields in several irc input files.
First cut at supporting non-sidereal tracking. New commands SetNonSidereal and ClearNonSidereal set and clear a NonSidereal object passed to the PresetTelescope command.
Add UpdateNonSiderealTarget command.
Support 'Preset non-sidereal override' by augmenting the UpdateNonSiderealTarget command to support sending non-sidereal information to be saved in the IIF.
Version 3.0
Add support for two cameras (IRTC1, IRTC2) in IRS, IRC, and IRTCGUI. Associate the camera number with the proxy name. Use the IRTCGUI invocation name as its proxy. New IRC commands SetCamera and ShowCamera. Create new symbolic links IRC1, IRC2, IRTC1GUI, IRTC2GUI as camera specific executables
Improve IRC help formatting.
Change unsigned int to size_t where appropriate.
Support new operation type flag for RunAO instead of a boolean REPOINT flag. The string argument now controls what parts of the command are performed. See the IRC help for command RunAO.
Add ICE remove() command.
Add NSIGUI as new executable for generating non-sidereal target data.
Add NSQuery command for command line access to the non-sidereal query engine.