Software Release Notes for Build "BP13"

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 IIF will generate sounds for some conditions.
  • 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

Patches to the Release

  • none.

Known Bugs

  • none.

Release Overview

  • none.

IIF list of Public Data Dictionary Variables

Operating System, System Configuration, TCS and Hardware Computers

TCS Servers / Workstations

  • none.

agw-control computer

  • none.

jet computer, DSP, FPGA

  • Update to include sequence number on mount polynomials.


  • none.


  • 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


  • 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.

AGw control server

  • none.

AOS - Adaptive Optics

  • none.

ECS - Enclosure Control

  • Ball detent data and buttons removed from the left and right latch station dialogs in the ECS GUI.

ENV - Environmental Sensors

  • ENV Version 1.10
    • Clean up main and add try/catch around addSource. Issue event and exit if configuration file is missing.
    • Add handle_critical() for telemetry R14.
  • ENVGUI Version 1.7
    • Clean up main and add try/catch around addSource().
    • Put versions in 'About' box.

IIF - Instrument Interface

  • IIF Version 8.12
    • 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).
    • Add buttons for canceling Presets.

GCS - Guiding Control

  • 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 MODS AGW 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)

LSS - Logging and Events

  • LSSGUI Version 1.12
    • 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.
    • Add a display for the length of the sound queue.

MCS / mcstemp - Mount Control

  • 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.
  • MCSPU telemetry now uses rev. 14 teleemtry.
  • 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.

OSS - Optical Support

  • none.

PCS - Pointing Control

  • PCS Version 6.15
    • 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.


  • 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.

Pointing Kernel / Pointing Kernel tools

  • none.

PMC - Primary Mirror Cell

  • PMC Version 5.19
    • Clean up main and add try/catch around addSource. Issue event and exit if configuration file is missing.
    • Add descriptions to telemetry.
    • Add handle_critical() for telemetry R14.
  • PMCGUI Version 5.16
    • Clean up main and add try/catch around addSource().
    • Put versions in 'About' box.

PSF - Point Spread Function

  • PSF Version 5.1
    • 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().
    • Put versions in 'About' box.
    • Add desiredTip and desiredTilt displays.
    • Make toggle buttons work more naturally.


  • TCSGUI Version 1.22
    • 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.

WX - Weather Station

  • none.

TCS Common Software

commandreturn - client command status returns

  • none.

commandsequencer - client/subsystem command handling

  • none.

core - foundation routines

  • 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.

tcs_config - tcs configuration

  • none.

TCS Tools

DDEditor - Data Dictionary Editor

  • none.

DDBrowser - Data Dictionary Browser

  • none.

DDViewer - Data Dictionary Viewer

  • none.

Event Editor

  • none.



  • none.

Instruments and Environmental Sensors

DIMM - Differential Image Motion Monitor

  • none.


  • none.


  • none.

IRTC - Infrared Test Camera

  • Version 2.5
    • Change the camera IP address to 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.
    • Add non-sidereal query engine to IRTC repository.
    • Change the camera address back to

LBC - LBT Binocular Camera

  • The name of the IIF header file has been changed from IIF_C.hpp to IIF_C.h. This is not backward compatible with build BP11.
  • The PresetTelescope command has a new pointer argument for the non-sidereal data. This is not backward compatible with build BP11.

LBTO Weather Station - 3DWGUI

  • none.

MAT - Mount Axilliary Telescope

  • none.

All Sky Monitor

  • none.
-- NormCushing - 22 Feb 2011
Topic revision: r7 - 17 Nov 2011, ChrisBiddick
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback