Observing is done using virtual destop on the song1m virtual machine.
Typically, there will be 3 active desktops on song1m. On the first one, there should be a terminal with at least 5 tabs, running the following processes:
aposong : main control window
status : populates status window and databases
guider : process that waits for guide commands from aposong
video1m : shows a continuous webcam view using the VLC player (more practical than the web interface for the webcam, which you would need to point the webcam). There should be a browser open for the web interface if needed.
override : runs the webapp that allows APO operators to allow 1m to open even if their telescopes are not yet open, if they deem conditions reliable
On the second desktop, have a vnc window logged into spec1m (vncviewer spec1m.apo.nmsu.edu from a song1m terminal), which should have running:
spectro_app : runs the Alpyca server for control of chiller, relays
ASCOM Remote : provides Alpaca access to ASCOM driver for QHY 600 (click the desktop icon to start it)
On the third desktop, have a vnc window logged into pwi1m (vncviewer pwi1m.apo.nmsu.edu from a song1m terminal),
PWI4 : open from desktop icon
ASCOM Remote : provides Alpaca access too ASCOM drivers for telescope, CCD cameras (open from desktop icon)
dome_app : runs the Alpyca server for control of stages, iodine thermal controll
Under normal operations, robotic observing is accomplished with a single command in aposong. For example:
robotic.observe(focstart=33200,display=disp)
where focstart is an inital focus guess that may need to be adjusted seasonally, and disp is a pyvista display object if you want to see images as they are being taken.
The basic robotic workflow is:
touches an MJD file to show sequence has started
wait until sunset+dt_sunset (dt_sunset can be set with keyword to robotic.observe, default=0)
wait until safe to open, as determined from either 2.5m open, 3.5m open or override set
open dome and mirror covers, and turn on telescope fans
wait until sunset (if not yet there)
open louvers
wait until nautical twilight+dt_nautical (also set by keyword, default=0)
do an initial focus run (until initfoc=False keyword is given)
loop until morning nautical twilight
if unsafe to observe, close dome and wait 90 seconds
else if dome is closed and now safe to open, open dome
else if it has been more than dt_focus (default=1.5 unless specified by keyword), do a focus run
else choose best object to observe
close dome, turn off fans, close louvers, stop guider, park telescope and dome (all via domeclose())
take morning cals
create guider movies, focus plots, reduce data, and make web page
sends successful completion email with webcam snapshot attached, removes MJD file
Two cron jobs run at 8:00 each morning:
The status process running on song1m shows a diagnostic window such as the figure below
This window has a few important diagnostics to understand and keep an eye one:
After each night of observing, you should check:
webcam to ensure that dome is closed!
aposong window to see if robotic sequence completed normally, which will leave it at a python prompt
if sequence completed normally, check web pages to see what was observed, check focus curves, check throughput plots as desired
if sequence didn't complete normally, try to figure out what happened! May be useful to create the web pages, etc., manually, using
robotic.mkhtml(int(Time.now().mjd))
Can also consult logs in /data/1m/logs/daily.log