Changelog¶
0.9.0 - July 18, 2021¶
🚀 New¶
#131 Breaking change. This version includes a major rewrite of the internals of
Command
and how it is used throughoutjaeger
. In addition to acception a singlepositioner_id
,Command
can 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 singleFuture
is created. This seems to significantly decrease the overhead thatasyncio
introduces 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-can
buses 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 refactingJaegerCAN
andFPS
to 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
reload
that will reinitialise theFPS
instance and reload any new robots after a sextant power cycle.#142 Added an
ieb info
actor 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
JaegerCAN
andFPS
. Objects can now be instantiated and initialised at the same time using the async classmethod.create()
.#141 The
jaeger upgrade-firmware
command 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 theslcan
andsocketcan
interfaces for whichpython-can
does need to be installed.#130 Removed engineering mode.
#132 Merged
JagerCAN._send_commands()
and.send_to_interfaces()
intoJaegerCAN.send_commands()
. RenamedFPS.send_command()
synchronous
parameter 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
debug
parameter in the configuration file. If it isfalse
, some warnings will be silenced andJaegerCAN
will not log tocan.log
.#126 Use furo Sphinx theme. Add
noxfile
forsphinx-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_firmware
one can specify how manymessages_per_positioner
to 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.
🧹 Cleanup¶
#96 Discontinue the use of
sdsscore
. Improved the handling of user configuration files.#95 Support Python 3.9.
Require
drift>=0.2.2
to fix a bug in setting the relay values.Stop using
releases
for the changelog and migrate to using CHANGELOG.md. Release information for previous version is available here.