Changelog¶
1.10.0 - August 7, 2025¶
🔥 Breaking change¶
Until Kaiju can be properly updated to compiles on Python 3.11+,
jaegerwill only support 3.10.
✨ Improved¶
Add
too_idandtoo_programto configuration summary files.
🔧 Fixed¶
Prevent repeated positioners appearing in the permanently disabled list.
Improved handling of FVC images with no light.
Include
too_idandtoo_programin output ofconfiguration_to_dataframe().
1.9.1 - February 24, 2025¶
✨ Improved¶
#210 Move the default values for
offset_min_skybrightnessandsafety_factorto the configuration file. The default values are nowoffset_min_skybrightness=0andsafety_factor=None.Add field
disabledto the summary file for robots that are disabled or offline.Bump
sdss-coordioto>=1.14.0.
🏷️ Changed¶
Set the default values for
scale_fudge_factorto 1.
🔧 Fixed¶
Fixed a crash loading a configuration when a ToO can be found in the field but cannot be matched to any valid hole ID.
Move the check for invalid offsets to the right place.
Correctly use
offset_min_skybrightness=0andsafety_factor=None.assigned=0only when a robot does not have an assigned target in a design, not when the alpha/beta coordinates are invalid or the target offsets are invalid. For those casesvalid=1.Set
decollided=1for robots that are decollided or un-deadlocked.
1.9.0 - January 22, 2025¶
🚀 New¶
#208 Add actor command
calibrations reset-offsetsto zero the alpha/beta offsets in one or more positioners.
✨ Improved¶
Improved handling of sextant controllers.
configuration randomnow calculates paths only once.
🔧 Fixed¶
Prevent the ToO code from selecting the same target for two different positioners.
Fix a case when the configuration fails to retrieve the trajectory paths because there are no robots that need updated coordinates.
Pin
pymodbusto 3.7.x.
1.8.0 - October 24, 2024¶
🚀 New¶
Drop
poetryand useuvfor project management. Update GitHub workflows.
✨ Improved¶
⚙️ Engineering¶
Relax Python requirement to
^3.10,<4.
1.7.7 - August 9, 2024¶
✨ Improved¶
Add
rot_ref_angleoption to the FVC command to set the reference rotator angle for fiducial fitting.
🔧 Fixed¶
Set the configuration epoch for
DitheredConfigurationas the epoch of the parent.Use the configuration focal scale in all calls to
icrs_from_positioner_dataframe().
🚑 Hotfix¶
#205 Added a hotfix for an issue caused when the back-illuminated fibres don’t turn on during and FVC loop (cause under investigation). When light is not detected in the FVC image the code will retry up to three times, each time turning the LEDs off and then on again.
⚙️ Engineering¶
Add back
pyarrowdependency.
1.7.6 - July 2, 2024¶
🏷️ Changed¶
#204 Replace the old
confSummary_testpaths which have not become the default. When a configuration or FVC writes a configuration file, it does so to$SDSSCORE_DIRwith the new formatting (i.e., using thousand and hundred groupings). Additionally, and at least for now, it also writes the same file to$SDSSCORE_LEGACY_DIRwith the old format (only hundred groupings).
⚙️ Engineering¶
Upgrade
sdsstoolsto 1.7.1 with support for Numpy 2.0.Upgrade
polarsto 1.0.0.
1.7.5 - June 15, 2024¶
🏷️ Changed¶
Disabled
alert_fluid_temperature.
1.7.4 - May 30, 2024¶
✨ Improved¶
Bumped
kaijuto 1.4.0 with speed-up improvements.
1.7.3 - May 26, 2024¶
🔧 Fixed¶
Fix import of
osintarget/tools.pywhich was affecting the loading of cloned configurations and possibly other features.
1.7.2 - May 24, 2024¶
✨ Improved¶
#203 Implementation of targets of opportunity. When a
Designis created (and unlessuse_targets_of_opportunity=False) design targets can be replaced with ToOs from a dump file (defaults to$TOO_DATA_DIR/current). The replacement options are managed viaconfiguration.targets_of_opportunitywhich accepts the following optionsconfiguration: targets_of_opportunity: replace: true path: $TOO_DATA_DIR/current exclude_design_modes: ['^.+?_eng$', '^.+?_rm_?.*$'] max_replacements: 2 categories: ['science'] minimum_priority: [6000, 3000, 0]
Initially disabled in the configuration.
🔧 Fixed¶
Fixed FVC
apply_corrections()only setting the values of robots with invalid transformations.
1.7.1 - May 8, 2024¶
✨ Improved¶
Use
positionerToWokandwokToPositionerfunctions fromsdss-coordio 1.11.0which allow to convert wok to and from positioner coordinates as an array (all holes at the same time), which very significantly improvesDesigncreation time.Enabled chiller fault alarms.
1.7.0 - April 29, 2024¶
This is marked as a minor version although it should not have any visible changes, but the codebase has significantly changed and there’s potential for regression issues that are better tracked as a clearly different version.
⚙️ Engineering¶
#202 This started as a quick rewrite of some parts to use
polarsand ended as a mid-to-large refactor of significant parts of the code, especially theConfigurationandAssignmentclasses.The main highlights are:
Dropped support for Python 3.9 and extended support up to 3.12. For Python
>=3.11the1.4.0b1version ofkaijuis used.The code does not use
pandasanymore, andpolarsdata frames are used everywhere.jaegerstill handlespandasdataframes when they are returned by other libraries (mostly from theFVCTransformcode incoordio).The
ConfigurationandAssignmentclasses have been completely rewritten. Coordinate transformations code is now mostly injaeger.target.coordinates. The new code should be significantly cleaner and easier to maintain.AssignmentData*has been renamed toAssignment*.Some modest efficiency improvements to the coordinate transformations in
Assignment. Before some conversions from ICRS to wok and vice-versa were done on a per-target bases. Now they are doing for all the targets at once, but the bottleneck is still the conversion between wok and positioner (and vice-versa) which has to be done as a loop for each target.Simplified the singleton patter for
FPS.Significantly extended the test suite. Now
Design/Configuration/AssignmentandFVCare reasonably covered.Added a test database for CI testing.
Added a
configuration_to_dataframefunction that generates aconfSummary-like dataframe that could be saved tosdsscoreas Parquet (currently not doing that).Added
ra/dec/alt/az_observedtoconfSummary.Moved all codebase from
python/tosrc/.
1.6.4 - April 29, 2024¶
🔧 Fixed¶
Change LCO expected scale factors after IMB modifications: apply only to LCO.
1.6.3 - April 1, 2024¶
✨ Improved¶
Add
--extra-epoch-delaytojaeger configuration loadandpreload. This parameter adds an extra delay to the configuration epoch. It is mainly used by HAL when it preloads a design ahead of time
1.6.2 - February 27, 2024¶
🏷️ Changed¶
Change LCO expected scale factors after IMB modifications.
1.6.1 - January 15, 2024¶
✨ Improved¶
Reset cherno offsets when a design gets loaded.
Use
coordio1.9.2 withsdss-sep.
🔧 Fixed¶
Fix some warnings and retries during broadcasts when a robot has been marked offline.
Fix future deprecation in Pandas by downcasting columns in the assignment fibre data.
Fix docs builds.
1.6.0 - December 22, 2023¶
🔥 Breaking changes¶
Deprecate Python 3.8.
🏷️ Changed¶
Use
sdsstoolsversion ofyanny.
🔧 Fixed¶
Ensure that `fvc_image_path`` is populated.
1.5.0 - September 29, 2023¶
🚀 New¶
#200 Save copy of
confSummaryfiles to$SDSSCORE_TEST_DIR, if present. For testing purposes only, for now.Modify default ZB orders passed to the FVC transformation and add flag
--polidstojaeger fvc loopto manually set the orders.Increased timeout for
jaeger configuration preload.
✨ Improved¶
#199 Subtract FVC dark frame during FVC image processing.
#200 Initial test to update files in
sdsscore_test.#201 Move FVC dark frames to calibration folder where they won’t be deleted in the future.
Updated call to coordio’s
object_offset().Chiller: do not depend on IEB when setting absolute values.
🔧 Fixed¶
If measured alpha vs reported alpha are on either side of the wrap at 360 deg, then adjust the offset for the FVC loop.
Update IEB info before calling
write_proc_image().
⚙️ Engineering¶
Lint using
ruff.
1.4.0 - April 15, 2023¶
🚀 New¶
Allow to specify the wavelength to use for BOSS and APOGEE fibres when creating a configuration. Using
jaeger configuration load --boss-wavelengthor--apogee-wavelengthwill specify the wavelength to use for atmospheric refraction and affect the positioning of the fibre. The closest valid focal plane model is used in this case. Only assigned fibre of the specified fibre type are affected.
🏷️ Changed¶
Changed the default value of the safety factor for the offset function to 1.
1.3.4 - April 12, 2023¶
🚀 New¶
Add flag
--offset-min-skybrightnesstojaeger configuration load/preloadto set thecoordio.utils.offset_definitionoffset_min_skybrightnessparameters. Defaults to 0.5.
🏷️ Changed¶
Add a 3 minute timeout for
jaeger configuration preload(normal configuration load does not time out).COS-103 Add
locked_alphaandlocked_betakeywords when a collision happens.
1.3.3 - January 15, 2023¶
✨ Improved¶
Add a delay after
STOP_TRAJECTORYorSEND_TRAJECTORY_ABORT. Those commands are issued withtimeout=0so they complete immediately. It seems that if one sends another command immediately after them the new command times out. It’s unclear if that happens because the replies from both commands clog the CAN buffer or because of some issue at the firmware level. Adding a 0.5 second delay to allow positioners to reply seems to fix the issue.
1.3.2 - January 10, 2023¶
🔧 Fixed¶
Only retry
FPS.update_firmware_version()ifn_positionersis notNone. Otherwise a time out is expected.
1.3.1 - January 10, 2023¶
✨ Improved¶
#195 Prevent late replies to timed out commands to flood the log/actor window. The errors are now redirected only to the CAN log. Timed out commands are reported unless the command is a broadcast with the number of replies not defined.
Increase timeout for
FPS.update_status()andFPS.update_position()to 2 seconds.Allow
FPS.update_position(),FPS.update_status()andFPS.update_firmware_version()to retry once if they time out.
1.3.0 - January 2, 2023¶
✨ Improved¶
Trajectories now save the snapshot asynchronously, which should save a few seconds at the end of each trajectory.
Avoids saving trajectory dump file multiple times.
FVC
proc-image is saved asynchronously and the command doesn’t wait for it to finish writing. TheconfSummaryFfile is computed and saved asynchronously.plotFVCResultsincoordio.transformsis monkeypatched to run as a task.
⚙️ Engineering¶
Upgraded to
Drift1.0.0 which usespymodbus3.
1.2.1 - December 21, 2022¶
🔧 Fixed¶
Require
sdss-kaiju>=1.3.1which solves a problem with ashapelydependency upgrade breaking some plotting.
1.2.0 - December 21, 2022¶
✨ Improved¶
Output
preloaded_is_clonedkeyword indicating whether a preloaded design is cloned.Move the check for whether the FPS is moving before sending a new trajectory to
Tracjectory.send()and after anFPS.update_status()has been issued, which may help with cases in which the FPS is stuck as moving because the status has not been updated.
🏷️ Changed¶
Call
cherno get-scale --max-age 3600.Changed
max_cloned_timeto 4500 andmax_designs_epochto 4 at both APO and LCO.Updated fudge factor at APO to 0.99988.
Use
zbplus2as default for FVC centroiding at APO.
1.2.0b1 - November 7, 2022¶
🚀 New¶
#193 Calculate
delta_raanddelta_decoffsets usingcoordio’sobject_offset.
✨ Improved¶
jaeger fvc snapshotnow creates a snapshot based on the FVC-measured positions and alerts if a robots is more than 5 degrees off.
🔧 Fixed¶
Keep disabled positioners after a power cycle.
🏷️ Changed¶
Use MDP2 for LCO.
1.1.1 - October 20, 2022¶
🔧 Fixed¶
Require
kaiju>=1.3.0, which is needed for MDP2 path planning.
1.1.0 - October 19, 2022 (yanked due to missing dependency; all changes available in 1.1.1)¶
🚀 New¶
#191 Support for MDP path generation mode. The default mode can be set in the configuration file under
kaiju.default_path_generatorand overridden injaeger configuration loadandjaeger configuration randomwith the--path-generation-modeflag.
✨ Improved¶
Add
FVCITERkeyword to the FVC process image header with the number of the FVC iteration.
🏷️ Changed¶
IEBnever disables itself automatically. Now it will try five times to connect to the WAGO module and if that fails it will issue an error but not self disable itself.Use 5 degrees as start angle during homing.
Update disabled/enabled positioners at APO and LCO.
🔧 Fixed¶
#189 Prevent FPS initialisation from failing if a positioner is reporting a collided status.
Fix SJD calculation for LCO.
1.0.1 - September 11, 2022¶
🔧 Fixed¶
Bumped minimum version of
sdssdbto 0.5.5 since jaeger requires theDesign.fieldproperty.
1.0.0 - September 10, 2022¶
✨ Improved¶
#188 Chiller temperature and flow can now be set to a fixed value which is monitored and reset if necessary. Temperature can still be set to an “auto” mode that will maintain the set point slightly below the ambient temperature. The
chiller setcommand now acceptsauto,disable, or a value for eitherflowortemperature. The default values can be set in the configuration file underchiller.temperature(truefor automatic mode,nullto disable monitoring, or a fixed value) orchiller.flow(acceptsnullor a fixed value).Added
--quietflag tostatusthat does not print the status of each robot.Added back
jaeger configuration fake-fieldcommand.Fixed
jaeger configuration slewcommand to work withlcotcc.Enabled additional alarms for LCO.
🏷️ Changed¶
Reworked scale logic when loading a new design:
If a
--scaleflag is passed, that scale is passed directly to coordio without any additional fudge factor.If the guider scale is available and
use_guider_scale=True, the guider scale multiplied by the fudge factor is passed.If
use_guider_scale=Trueand thescale_temperature_coeffsare defined, and the guider scale is not available, the guider scale is defined by the scale-temperature correlation and the fudge factor is applied.If
use_guider_scale=Falseand--scaleis not passed, or otherwise the guider scale cannot be defined, thedefault_scalevalue is used.
Use
targetdb.design_to_fieldtable.Use difference centroiding methods for APO and LCO.
Change various configuration parameters for LCO.
Renamed
kludge_factorand--kludge-factortofudge_factorand--fudge-factor.
🔧 Fixed¶
Alerts and chiller bots were not being started on init.
Solve a case in which a manually disabled positioner could not be re-enabled after the FPS had been power cycled or reinitialised.
0.16.1 - June 10, 2022¶
🚀 New¶
#183 The
FVC.write_summaryF()method now also produces some histograms and quiver plots that show the FVC convergence in wok and ra/dec coordinates.#184 Added a
jaeger.fvc.reprocess_configuration()coroutine that allows to reprocess the final FVC image for a configuration with a different centroid method.#185 Support for LCO and additional improvements:
General support for running jaeger at APO and LCO.
The
jaegerandiebconfiguration files have been split into_APOand_LCO.Makes
fvc loopmore reliable. Theproc-image is now saved in most conditions.Use
FVCTransformAPOorFVCTransformLCOdepending on the observatory.Fix
fvc loopwith--fbi-level 0.Chiller and alerts bots are now run as part of the actor instead of in the
FPSobject. Alerts are now observatory-specific.Do not calculate paths when using
jaeger configuration load --from-positions.Fix for #182: GFA alerts are disabled if the camera is powered off.
New
homecommand to sendGO_TO_DATUMSto multiple or all positioners at once.
#186 New command
fvc snapshotthat creates a temporary configuration from the current positions and takes an FVC measurement.Add
jaeger configuration reloadcommand. It’s equivalent to usingjaeger configuration load --no-clone DESIGNIDwhereDESIGNIDis the currently loaded design.If called without arguments,
disablenow outputs the list of currently disabled robots.
✨ Improved¶
The list of manually disabled positioners is kept during reinitialisation.
🏷️ Changed¶
Default FVC centroid algorithm is now
zbplus.
🔧 Fixed¶
#182 GFA alert for a camera is disabled if the camera is off.
Bump sdssdb to ^0.5.2 to ensure that
assignment_hashis available
0.16.0 - June 10, 2022¶
Yanked due to error releasing.
0.15.1 - April 24, 2022¶
🔧 Fixed¶
Pin
pydl1.0.0rc1 since rc2 has been yanked.
0.15.0 - April 21, 2022¶
🔥 Breaking changes¶
Minimum Python version is now 3.8. Astropy 5 required.
🚀 New¶
#180 A design can now be preloaded using
jaeger configuration preload [DESIGNID]. If a design ID is not provied, the first element from the queue will be used. Preloading calculates the trajectories for the new configuration but does not write to the database, generate the configuration summary file, or output keywords. To make the preloaded design active, usejaeger configuration load --from-preloaded.#181 Automatically determine the epoch delay for a new configuration created from a design in the queue. If there are multiple consecutive designs in the queue with the same hash (i.e., that will be cloned), determines the epoch delay so that the array is reconfigured for the middle epoch of the observations.
Added
fvc_percent_reachedandperc_95keywords to the FVC loop to show the percentage of robots that have reached their positions (within the FVC tolerance) and the 95% percentile respectively.delta_raanddelta_decfrom the database are now applied.Require coordio 1.3.0.
✨ Improved¶
If a new configuration is loaded while the array is unfolded and
jaeger configuration reverseis called, the reverse trajectory from the previous configuration will be used.Update coordinates using
delta_raanddelta_decfromtargetdb.carton_to_target.Introduced an empirical kludge factor for the guider scale that can be adjusted in the configuration file as
configuration.scale_kludge_factor.Use reverse trajectory from previous configurations if the current one has not been executed.
jaeger configuration reversenow accepts an--explodeflag.FVC loops succeeds if
fvc_perc_90 < 30.Add
fvc_image_pathto confSummaryF.Allow to home alpha and beta independently.
🔧 Fixed¶
Fixed an issue in which the epoch RA/Dec in a configuration had the correctly propagated proper motions but those were not used for observed, field, etc. coordinates. Those coordinated derived in practice from the catalogue coordinates at the catalogue epoch.
0.14.0 - February 11, 2022¶
🚀 New¶
#177 When
jaeger configuration loadis called with a design that has the same targets as the currently loaded (as it happens for multi-exposure fields), the existing configuration and metadata are copied but decollision is not run and new paths are not generated.#175 Added alert system.
#176 Refine configuration focal plane scale using the guider measured scale.
Addded a scale factor when loading a configuration.
Allow to load a design from the queue.
✨ Improved¶
🔧 Fixed¶
jaeger statusnow won’t output additional information if the status of a single positioner is requested.
0.13.1 - January 7, 2022¶
🚀 New¶
Added
jaeger configuration slewcommand.Added chiller control.
A keyword
foldedis updated after a trajectory indicating if the array is folded. Injaeger unwind, if the array is already folded (with a tolerance of 1 degree), it does nothing.jaeger unwind --statusonly reports the folded status.Report
alive_atevery 60 second.Add commands to enable and disable a positioner during runtime.
✨ Improved¶
Check that the rotator is halted before exposing the FVC.
Added wok coordinates to summary files.
jaeger configuration loadis now cancellable.Restore parent configuration when reversing a dithered configuration.
🔧 Fixed¶
Increase
optical_provfield in confSummary file to 30 characters.
0.13.0 - December 14, 2021¶
🚀 New¶
#163 The to and from destination trajectories are saved when
BaseConfiguration.decollide_and_get_paths()is called. The reverse path can be sent from the actor usingconfiguration reverse. The paths can be generated in advance when loading the design. An--epoch-delayparameter can be passed when loading the design to create a configuration for some time in the future.#167 Add the ability of loading a configuration from the current positions of the robots.
#169 Move
ieb powerandieb switchto simplypower.#173 Added
DitheredConfigurationclass.
✨ Improved¶
#166 During
BaseConfiguration.decollide_and_get_paths()the paths are decollided and deadlocks resolved while trying to maintain as many robots on target as possible. The fibre table is updated.#168 Functional version of design loading. Collisions are solved by first attempting to remove unassigned targets. Deadlock resolution uses the same logic as the random configuration creation.
fiberIdis not added to the summary file. Snapshots for each configuration are created.#172 The FVC centroids are now derotated according to the rotator angle, allowing to run the FVC loop at any rotator position.
#174 Improved metadata handling in FVC loop.
Snapshots are run in a process pool executor and are saved automatically at the end of a trajectory or when
TrajectoryErroris raised.jaeger.commands.goto.goto()generateskaiju-valid trajectories by default.FVC RMS fit only takes assigned robots into account.
Added a check when loading a design to confirm that the design exists and is for the current observatory.
Unassigned robots in a configuration as scrambled and are the first to be decollided.
🔧 Fixed¶
#168 Fixed use of proper motions that were being applied as if the JD epoch was the Julian year.
🔥 Removed¶
Positioner.goto()has been removed. Usejaeger.commands.goto.goto()instead.
0.12.0 - November 28, 2021¶
🚀 New¶
Code to load robostrategy designs to
targetdband create configurations. Added actor commands to usekaijuto calculate and send a valid trajectory and to unwind, explode, and send a random configuration to the array.#153 Handling of low temperature now happens in
FPSinstead of in the actor. Added anFPS.statusattribute with the global status of the system (idle, moving, collided, and temperature status). The actor subscribes to status changes usingFPS.async_status()and broadcasts them.Add
FPS.save_snapshot()along with actor commandsnapshotto use kaiju to save a plot with the current arrangement of the FPS array.Add a lockfile to prevent multiple instance of
jaegerrunning at the same time. At the observatories,jaegercan only run onsdss5-fps.All functions that call CPU-intensive methods in
kaijuare now run in aProcessPoolexecutor.FVC loop is now functional.
✨ Improved¶
#157 Prevents clearing the collided flags when the array is stopped during a collision or when initialised. Issues
SEND_TRAJECTORY_ABORTinstead ofSTOP_TRAJECTORY. They both stop all the positioners but the former does not clear the collided status flags.Added additional checks to confirm that a trajectory starts correctly and succeeds. After one second, the code checks that the FPS is moving and that
DISPLACEMENT_COMPLETEDis not present on any positioner status. At the end of the trajectory a check confirms that all the positioners are within 0.1 degrees of their destinations.Add
--no-gfasto theieb power oncommand to avoid powering the GFAs during the power on sequence.Allows to call
FVC.expose()without an active command by creating an ad-hoc Tron connection.FVC.expose()now can stack multiple exposures.Allows to use fibre_type other than ‘Metrology’ when processing an FVC image.
Defaults to
proc-<image>when callingFVC.write_proc_image().
0.11.0 - October 12, 2021¶
🚀 New¶
#152 FVC IEB support and actor commands.
Add commands
GET_HALL_CALIB_ERROR,GET_ALPHA_HALL_CALIB, andGET_BETA_HALL_CALIBfor hall sensor calibration querying.The actor status command now returns the number of trajectories executed.
✨ Improved¶
Add
Trajectory.start_timeandTrajectory.end_timethat can be used to determine when the trajectory failed.send_trajectorynow allows to return the unsent or non-started trajectory.When running the actor as a daemon in detached mode, log stdout and stderr to file.
By default, do not fail when a command receives an
UNKNOWN_COMMANDreply; this usually means that the positioner firmware does not support that command yet. This can be disabled by initialising theCommandwithignore_unknown=False.It’s now possible to switch the SYNC line relay (
ieb switch sync). The SYNC line may be left closed if there’s an uncaught exception while it’s being actuated, or if the script is killed during that time. This allows to restore it to open.TrajectoryErrornow includes the originalTrajectoryobject asTrajectoryError.trajectory.FPS.send_trajectory()now raises aTrajectoryErrorif it fails.Better logging of the reason for failure in
Trajectory. In particular,Trajectory.failed_positionerscontains a dictionary with the reason why a give positioner failed to receive or execute the trajectory, if that information is known.
🔧 Fixed¶
Avoid clipping the current position to
(0, 360)when calculating the trajectory ingoto(). This prevents usinggoto()when the positioner is at a negative position.
0.10.0 - August 3, 2021¶
🚀 New¶
#149 Added an
FPS.goto()method that sends a list of positioners to a given position using trajectories. By defaultPositioner.goto()now also uses trajectories, butGOTO_ABSOLUTE_POSITIONcan still be used.#150 Allow to skip positioners that are connected to the bus but that we want to ignore. Also allow to disable collision detection for a list of positioners. See configuration options
fps.skip_positionersandfps.disable_collision_detection_positioners.
✨ Improved¶
Trajectory()now sends data points using a single command per trajectory chunk.Warn about individual replies that return without
COMMAND_ACCEPTED.Remove check for whether a positioner has started to move after sending the goto command. It sometimes produced false positives on very short moves.
Disable precise moves by default.
Improve reloading the FPS.
Remove
bootloadercommands from actor.FPS.locked_bynow reports what positioner id(s) locked the FPS on a collision.Actor
ieb fbinow accepts multiple devices.Use coil space for IEB relays.
Use 8 message per positioner by default when upgrading the firmware.
🔧 Fixed¶
When sending multiple message per positioner per command, assign different UIDs.
Fix address of IEB RTD12.
Fix upgrade firmware script in the case of a single test sextant.
Turn off all sextants before upgrading the firmware.
Fixed and tested the power on and power off IEB sequences.
0.9.0 - July 18, 2021¶
🚀 New¶
#131 Breaking change. This version includes a major rewrite of the internals of
Commandand how it is used throughoutjaeger. In addition to acception a singlepositioner_id,Commandcan now receive a list of positioners to command. When the command is awaited it will wait until all the positioners have replied or the command has timed out. For the most part this is equivalent to using the oldFPS.send_to_all()which has now been deprecated, but with the advantage that a singleFutureis created. This seems to significantly decrease the overhead thatasynciointroduces when creating and await many tasks.FPS.send_command()now also accepts a list of positioners, thus replacingsend_to_all(). For the most part low level initialisation of commands, as long as they are used to address a single positioner, should not have changed. To address multiple positioners at once usesend_command().#127 Implemented positioner LED on/off commands.
#128 Deprecated the use of
python-canbuses since they block in a non-asynchronous way. This caused significant inefficiencies when controller >200 robots, especially on computers with old CPUs. This PR implements the major changes, including refactingJaegerCANandFPSto initialise the buses asynchronously, and a reimplementation ofCANNetBus,VirtualBus, andNotifier. This PR also includes some general performance gains such as a better implementation ofparse_identifier.#134 Added a new actor command
reloadthat will reinitialise theFPSinstance and reload any new robots after a sextant power cycle.#142 Added an
ieb infoactor command to show information about the IEB layout to users.#119 Allow to manually add and initialise a single positioner.
✨ Improved¶
#135 Cleaned up initialisation methods for
JaegerCANandFPS. Objects can now be instantiated and initialised at the same time using the async classmethod.create().#141 The
jaeger upgrade-firmwarecommand will now upgrade the firmware of one sextant at a time to avoid powering on too many power supplies at the same time.#124 Collisions are handled better. If a move command is running when the FPS is locked, the command is cancelled.
Postioner.goto()andsend_trajectory()now continuously check if the FPS has been locked during the move. If it is, they fail in a non-verbose way.FPS.send_trajectory()now logs an error but doesn’t raise an exception if the trajectory fails.
🧹 Cleaned¶
#129 Removed the use of the database and predefined layouts for the FPS. Default mode is that positioners are always auto-discovered.
#133 Completely removed the use of
python-can. A conditional import is done for theslcanandsocketcaninterfaces for whichpython-candoes need to be installed.#130 Removed engineering mode.
#132 Merged
JagerCAN._send_commands()and.send_to_interfaces()intoJaegerCAN.send_commands(). RenamedFPS.send_command()synchronousparameter tonow.
0.8.0 - June 21, 2021¶
🚀 New¶
#122 Precise moves can now be disabled for all positioners by setting the configuration parameter
positioner.disable_precise_moves. Also implements the CAN commandsSWITCH_[ON|OFF]_PRECISE_MOVE_[ALPHA|BETA].New
debugparameter in the configuration file. If it isfalse, some warnings will be silenced andJaegerCANwill not log tocan.log.#126 Use furo Sphinx theme. Add
noxfileforsphinx-autobuild.
🔧 Fixed¶
Bug preventing the FPS from being initialised when upgrading the firmware if one was not power cycling the electronics from software.
✨ Improved¶
Improved the performance when upgrading the firmware. When calling
load_firmwareone can specify how manymessages_per_positionerto send at once. Too many messages at once will overflow the buffer, but the right number can optimise performance. By default, logging to the CAN log will be suspended during the firmware upgrade to boost performance.
0.7.0 - May 24, 2021¶
🚀 New¶
#96 Raise error if sending a bootloader command while not in bootloader mode.
#109 Added JSON schema for the actor.
#97 Implement low temperature handling. When the air temperature is less than 0 degrees, the motor RPM is set to 3000. When the temperature is less than -10, the beta motor holding current is increased to 30%.
#15 Allow to disable a positioner. If the positioner is disabled, a non-safe command sent to the FPS will raise an error. In
send_to_all, a broadcast will be only sent to the non-disabled positioners. Trajectories that include disabled positioners will fail.#116 Safe mode to prevent the beta arm to go below 160 degrees.
✨ Improved¶
#121 Improve the use of the database to define the FPS layout.
🧹 Cleanup¶
#96 Discontinue the use of
sdsscore. Improved the handling of user configuration files.#95 Support Python 3.9.
Require
drift>=0.2.2to fix a bug in setting the relay values.Stop using
releasesfor the changelog and migrate to using CHANGELOG.md. Release information for previous version is available here.
The Pre-history¶
The changelog for previous version of jaeger is available here.