Chimera Advanced Usage¶
Chimera Concepts¶
These are terms commonly found within the software; they represent concepts that are important to understand in order to fully exploit Chimera‘s capabilities.
- Manager:
- This is the python class that provides every other instance with the tools to be able to function within :program:chimera: initialization, life cycle management, distributed networking capabilities.
- ChimeraObject:
- In order to facilitate the administration of objects, the Manager functionality among other utilities is encapsulated in a ChimeraObject class. Every object in chimera should subclass this one. More details are available in Chimera objects.
- Location:
Every chimera object running somewhere is accessible via a URI style identifier that uniquely locates it in the distributed environment; it spells like: [host:port]/ClassName/instance_name[?param1=value1,...].
The host:port may be left out if the referred object is running in the localhost, and/or have been defined in the configuration file.
Advanced Chimera Configuration¶
Every ChimeraObject has a class attribute, a python dictionary that defines possible configuration options for
the object, along with sensible defaults for each. This attribute, named __config__
, can be referred to when
looking for options to include in the configuration file. For example, the telescope interface default
__config__
:
__config__ = {"device": "/dev/ttyS0",
"model": "Fake Telescopes Inc.",
"optics": ["Newtonian", "SCT", "RCT"],
"mount": "Mount type Inc.",
"aperture": 100.0, # mm
"focal_length": 1000.0, # mm unit (ex., 0.5 for a half length focal reducer)
"focal_reduction": 1.0,
}
can have attribute members overwritten and/or added from the plugin and from the configuration file and the others will keep their default values.
For example, on the meade plugin, besides the default options listed above, we add the configuration option on the instrument class:
__config__ = {'azimuth180Correct': True}
and, on the configuration, we can change the defaults to a different value:
# Meade telescope on serial port
telescope:
driver: Meade
device:/dev/ttyS1 # Overwritten from the interface
my_custom_option: 3.0 # Added on configuration file
Default configuration parameters by interface type¶
- Site
__config__ = dict(name="UFSC",
latitude=Coord.fromDMS("-23 00 00"),
longitude=Coord.fromDMS(-48.5),
altitude=20,
flat_alt=Coord.fromDMS(80),
flat_az=Coord.fromDMS(0))
- Auto-focus
__config__ = {"camera": "/Camera/0",
"filterwheel": "/FilterWheel/0",
"focuser": "/Focuser/0",
"max_tries": 3}
- Autoguider
__config__ = {"site": '/Site/0', # Telescope Site.
"telescope": "/Telescope/0", # Telescope instrument that will be guided by the autoguider.
"camera": "/Camera/0", # Guider camera instrument.
"filterwheel": None, # Filter wheel instrument, if there is one.
"focuser": None, # Guider camera focuser, if there is one.
"autofocus": None, # Autofocus controller, if there is one.
"scheduler": None, # Scheduler controller, if there is one.
"max_acquire_tries": 3, # Number of tries to find a guiding star.
"max_fit_tries": 3} # Number of tries to acquire the guide star offset before being lost.
- Camera
__config__ = {"device": "Unknown", # Bus address identifier for this camera. E.g. USB, LPT1, ...
"ccd": CCD.IMAGING, # CCD to be used when multiple ccd camera. IMAGING or TRACKING.
"camera_model": "Unknown", # Camera model string. To be used by metadata purposes
"ccd_model": "Unknown", # CCD model string. To be used by metadata purposes
"ccd_saturation_level": None, # CCD level at which arises saturation (in ADUs).
# Needed by SExtractor when doing auto-focus, autoguiding...
# WCS configuration parameters #
"telescope_focal_length": None, # Telescope focal length (in millimeters)
"rotation": 0. # Angle between the North and the second axis of the image counted
# positive to the East (in degrees)
}
- Dome
__config__ = {"device": "/dev/ttyS1",
"telescope": "/Telescope/0",
"mode": Mode.Stand,
"model": "Fake Domes Inc.",
"style": Style.Classic,
'park_position': Coord.fromD(155),
'park_on_shutdown': False,
'close_on_shutdown': False,
"az_resolution": 2, # dome position resolution in degrees
"slew_timeout": 120,
"abort_timeout": 60,
"init_timeout": 5,
"open_timeout": 20,
"close_timeout": 20}
- Filter wheel
__config__ = {"device": "/dev/ttyS0",
"filter_wheel_model": "Fake Filters Inc.",
"filters": "R G B LUNAR CLEAR" # space separated filter names (in position order)
}
- Focuser
__config__ = {"focuser_model": "Fake Focus Inc.",
"device": "/dev/ttyS1",
"model": "Fake Focuser Inc.",
"open_timeout": 10,
"move_timeout": 60}
- Point Verify
__config__ = {"telescope": "/Telescope/0",
"camera": "/Camera/0",
"filterwheel": "/FilterWheel/0",
"tolra": 0.0166666666667,
"toldec": 0.0166666666667,
"exptime": 10.0,
"filter": "R",
"max_trials": 5,
"max_fields": 5}
- Telescope
__config__ = {"device": "/dev/ttyS0",
"model": "Fake Telescopes Inc.",
"optics": ["Newtonian", "SCT", "RCT"],
"mount": "Mount type Inc.",
"aperture": 100.0, # mm
"focal_length": 1000.0, # mm unit (ex., 0.5 for a half length focal reducer)
"focal_reduction": 1.0,
}
__config__ = {"timeout": 30, # s
"slew_rate": SlewRate.MAX,
"auto_align": True,
"align_mode": AlignMode.POLAR,
"slew_idle_time": 0.1, # s
"max_slew_time": 90.0, # s
"stabilization_time": 2.0, # s
"position_sigma_delta": 60.0, # arcseconds
"skip_init": False,
"min_altitude": 20}
__config__ = {"default_park_position": Position.fromAltAz(90, 180)}
- Weather Station
__config__ = {"device": None, # weather station device
"model": "unknown", # weather station model
}
Fake Instruments default configuration parameters¶
- Camera
__config__ = {"use_dss": True,
"ccd_width": 512,
"ccd_height": 512}