===== Observing procedure ===== 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 * if not the same as last object, acquire object in guider * perform requested observing sequence * 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: * one runs copy command to sync /data/1m to astronomy /home/1m * second checks for existence of an MJD file and sends failure email if it finds one ==== Status window ==== The status process running on song1m shows a diagnostic window such as the figure below {{ :software:status_window.png?direct&400 |}} This window has a few important diagnostics to understand and keep an eye one: * x * y * z ==== Morning ==== 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 ==== Troubleshooting ==== If observing did not complete successfully: * check the webcam to ensure that dome is closed! * if not closed, or if closed but telescope not in park position, issue domeclose() command from an aposong window (you may wish to start a new one if you want to leave the incompleted observing one open for inspection) * if dome does not close, may need to call APO! * if telescope is not parked, make sure mirror covers are closed with mirror_covers() and then T.park() * to determine failure mode: * attempt to understand where script failed * check guider window to see if guider program is still running * check for any errors in status window * check pwi1m computer to see if Planewave had issues, either disconnected or one axis disabled * check spec1m computer to ensure ASCOM Remote and Alpyca server are running ==== Weather ==== * The APO [[https://weather.apo.nmsu.edu/cgi-bin/weather.py| weather status page]] provides site information about the status of the 2.5m and 3.5m telescopes. * [[https://irsc.apo.nmsu.edu/|Infrared]] all-sky camera at APO * [[https://mainapo.apo.nmsu.edu/mainpage/allskycamera/|Optical]] all-sky camera at APO