Module hat-trick + 1: RelativeKinematics, BackToStart, JournalControl and DirectControl
Pre-release
Pre-release
Four modules have been added along with major functionality.
- RelativeKinematics is a C++ version of ObjectControl able to handle scenarios specified as relative to the VUT as well as normal test execution.
- DirectControl is a module able to receive live control input from e.g. a PS4 controller (via a program) and pass it on to objects via ObjectControl.
- BackToStart is a WIP module used for generating and controlling trajectories returning objects to their starting positions.
- JournalControl merges test logs from the different modules into one single log presentable to the user. These logs differ from the developer debug logs in that they only contain data relevant to the test execution.
ObjectControl has been augmented with the ABORTING state, as well as the ability to transmit PODI injection messages to objects configured for it. RelativeKinematics does the same but via the OSI protocol, and uses the extended state diagram found in the documentation on Teams.
This release is compatible with Maestro Tools 0.7.0 and Util 0.6.0
New Features 🚀
- #261 Core modules support running as systemd service. In other words it is possible to run the software headless with automated restart and startup. Restart is not enabled by default and neither is the service enabled on install.
- #263 Other modules support running as systemd services.
- #273 Class for keeping track of a test log, or "journal".
- #274, #277 replaced logger with JournalControl, thus making all modules keep their own journals rather than communicating everything over the message bus.
- #275 JournalControl responsible for creating a merged output log.
- #288 Separate configuration files for each object
- #295 Ability to configure PODI senders in object files
- #296 "Re-transmit" MONR in PODI shape as they arrive
- #314 Geofence test script. Script for automatically testing geofence abort functionality.
- #326 Each object can have its own origin. Still defaults to test.conf origin.
- #345 New DirectControl module. For accepting live remote control of objects.
- #346 New RelativeKinematics module. For controlling tests which are executed relative to the VUT.
- #358 Integrated ABORTING state.
- #361 OSI transmit support in place of PODI for RelativeKinematics.
- #360 WIP back-to-start module. Generates trajectories returning objects to home.
- #365 ObjectConfig class. For representing the contents of an object file as well as any coupled trajectory.
Bug Fixes 🐛
- #291 Thread based connection procedure, prevents object control from getting stuck connecting to nonexistent IP
- #309 Object control now sends COMM_DISCONNECT when MONR times out. Enabling other modules to react to disconnections by objects.
- #310 Get long value from procfiles. Uptime RVSS value used to be strangely formatted, this is now fixed.
- #315 Supervision handle files in a cleaner way. Class for handling object files, trajectories, geofences.
- #316 JournalControl includes files from days between start and stop day. It used to only include the first and last day of the test, now also the days in between.
- #317 TimeControl now handles COMM_EXIT. By actually exiting.
- #330 Pre-March demo bug fixes.
Improvements 👍
- #265 Clarified pull request workflow. Updates to the review process.
- #263 Moved some cmake install functionality to a post-install cmake file. This removes e.g. repetitive updating of linkage or enabling of services.
- #268 Handle time library independent ISO library
- #294 Print warning if network delay exceeds 100 ms
- #308 Handle new ISO message decoder return signatures. decoder returning number of bytes in decoded ISO message now handled.
- #311 Module start time in GET_STATUS reply Each module now enters the proc file of its PID and returns its start time when receiving GET_STATUS.
- #313 Added exact MONR sending capability to test scripts Test scripts can now send specific MONR messages.
- #318 SystemControl no longer exits on GUC disconnect. Instead, it sends ABORT or DISCONNECT depending on the situation.
- #319 Added a grace period after connect where test script waits for HEAB to arrive. In case the connection takes longer than 10 ms.
- #322 Long term geofence tests.
- #325 Jenkins runs long term tests.
- #331 Update TimeControl to new PiTiPo message structure.
- Created new common section of repo for things that are shared between modules and core but is not linked to any of them.
Other Changes
- Dependency on Protobuf for OSI
- Dependency on Eigen3 for RelativeKinematics
- First use of CTest
- C++17 used in many places. Make sure to update your compiler!
Issues 💥
- New Jenkins cannot run binaries as the old one could.
- BackToStart does not work yet.
- RelativeKinematics does not support the non-relative mode.