Releases: RI-SE/ATOS
ATOS version 1.0.15
What's Changed
This is a patch release where most changes are related to ease of use and getting started with ATOS. A lot of clean up of old configuration files and functionality has been done.
- Add support running ATOS in Docker: This release introduces Docker- and compose files and instructions on the docs page how to use them.
- More github actions: Build action to been run on every commit as a minimal CI job.
- Doxygen: Doxygen documentation is now generated and linked to from the ATOS read the docs page.
- Documentation updates: Includes guide to running a default demo scenario. Instructions added on how to Contribute to the project, Create PRs, Create Issues and file Vulnerability reports. Changes also include a Quickstart guide.
- Data Dictionary has been removed: DD was used in previous versions of ATOS and was now longer used.
- Old configurations files has been removed: Old configuration files related to non-working features or legacy version of ATOS has been removed.
Full Changelog: v1.0.0...v1.0.15
ATOS version 1.0.0
What's Changed
- Public release under MPL 2.0: ATOS, which is the product of several years' research projects at AstaZero, has now been released under the MPL 2.0 license. This will greatly simplify collaboration between academia, industry and governmental actors on experimental applied AV evaluation methods. The license was chosen such that it would not impede inclusion in other code bases via copyleft while still encouraging contributions from those improving the code.
- Remade system architecture to be based on ROS2: As part of the public release, this code base has been renamed from Maestro to ATOS. Furthermore, ATOS has been adapted to be based on ROS2 instead of the previous message queue based structure. All modules have been remade to use ROS2's callback-based structure. The goal of this change is to enable integration with other open source packages in the ROS2 ecosystem as well as to reduce communication boilerplate.
- New module: EsminiAdapter: This module interfaces with esmini's ScenarioEngine API.
It has the following responsibilities:
1)Load an OpenSCENARIO-file and extract static trajectories from it.
2)Dynamically, while the test is running, execute actions based on triggers specified in the OpenSCENARIO-file. - Replaced GUC method of sending control commands, in favor of a web-gui: Introduced ControlPanel, a simple web interface for sending control commands to ATOS.
Moreover, integrated with Foxglove Studio, enabling visualization of live-test data, and static visual elements such as point clouds. - New module ObjectControl: the module RelativeKinematics was renamed and adapted to replace the old ObjectControl module. The new module is OO and based on C++ in contrast with the old C based module. ObjectControl uses state classes and events, object connection handlers, object listeners and a class for interfacing with any outside objects. It is built according to an event-driven structure instead of a sequential exection structure.
- Module modification: DirectControl: This module now opens a socket that listens for incoming control messages (containing throttle, brake and steering wheel angle) specified here. The control messages are forwarded to ObjectControl, which then sends control signals to affected objects.
- New module: OSIAdapter. Replaces Visualization module. This module collects MONR-data from connected objects in ATOS, and then converts it to ASAM OSI. The module then sends the data over TCP/UDP to one or multiple clients. The send rate for the messages can be set by the user.
- New Module MQTTBridge: Added a new module that allows for publishing of V2X formatted data from the ATOS system to a MQTT broker. The module subscribes to the atos/v2x_message, parses the content of this msg to JSON and is then published over MQTT to a specified topic.
- New module TrajectoryletStreamer: Added a new module which reads trajectories and splits them into smaller chunks based on the current time in relation to the planned trajectory time. The module is intended for testing of dynamic trajectory related functions without having to solve the chunk generation problem. Once that functionality is ready, this module can easily be swapped out i.e., this is a test mock of sorts.
- ISO 22133 released version support: ObjectControl has been updated to match the released version of the communication standard ISO 22133 "Test object monitoring and control for active safety and automated/autonomous vehicle testing".
- New module: PointcloudPublisher. PointcloudPublisher reads site scans in the form of
.pcd
-files, and publishes them on relevant topics. - Clearing state: A new state that the ObjectControl enters as an intermediate state, expressing the will of the control center to exit the aborting state, and thus allow all objects to disarm.
- Back-to-start for single objects: a method was implemented to use regular test states but with autogenerated trajectories to return objects to their starting positions. The module is not adapted to the ROS2 structure and can therefore not currently be run.
- Updated the OSEM message to contain a proj string: Added a proj string to increase interoperability
- Adapted settings handling to ROS parameters structure: ROS nodes now have parameters that can be set. These parameters are set in params.yaml and are read on program start. The parameters are currently never re-read since no "parameters changed" handlers yet exist. The parameters replace the old test.conf file which is in the process of being phased out.
- Replaced shared memory with ROS services or topics: To fully embrace the ROS structure and reduce implementation coupling, the data dictionary and shared memory implementations were removed. Instead, nodes must call services of other nodes to get their data or listen to relevant topics. While this likely means a slight loss in performance it is not likely to be large since ROS2 uses shared memory under the hood. The gains on the other hand are that there is less code to maintain and it functions in a more standardised, easily-extended and cross-dependency reducing way.
- Removed util submodule: Since ATOS only used parts of the util repository, the relevant parts of that repository were lifted out or made into separate repositories. All definitions for messages that used to be sent over message queue were remade to the ROS IDL format and moved into the atos_interfaces repository. Submodule linking has been updated so that iso22133 and atos_interfaces are subrepositories.
- Scenario generation scripts created for public release demo: Automated creation of OpenSCENARIO files that ATOS can be configured to run. Different files with varying scenario complexity.
- Updated documentation - READMEs, diagrams and getting started guides
Various clarifications and fixes that facilitate usage and understanding
New Contributors
- @victorjarlow made their first contribution in #417
- @samuelthoren made their first contribution in #451
- @Robert108 made their first contribution in #475
- @seifbourogaa made their first contribution in #500
Full Changelog: v0.7.0...v1.0.0
Module hat-trick + 1: RelativeKinematics, BackToStart, JournalControl and DirectControl
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.
Actual working October demo code
Had the sleep implemented at the wrong location...
October demo implementation
The exact code used on the 22nd of October 2020 when demonstrating virtual injection.
Back To Start Demo
This release enables a test scenario using triggers to be run from the GUC. The back to start functionality enables a resetting of objects on predefined trajectories.
This release is compatible with Maestro Tools 0.5.0 and Util 0.5.0
New Features 🚀
-
#250 MSCT back to start A back to start message has been added to enable objects to automatically return to their start postions.
-
#249 Remote control command A remote control message has been added
-
#247 Start when rec EXAC Send start when receiving EXAC message
-
#246 STRT delay START sent by trigger now also uses START_DELAY
-
#245 OC start ACCM START message can now be sent as an action on trigger.
-
#244 Distance based trigger A distance based trigger has been added to trigger and action
-
#238 CCITT checksum generator Added a checksum generator for CCITT
-
#237 Monr DataDictionary n object Data dictionary monr can now handle n objects.
-
#234 Object monitor module An object monitoring module has been added. Currently in a WIP state.
-
#230 Traj specific folder Support for upload file command added in maestro.
-
#228 ClearTrajectories command A command to clear trajetory folder has been added.
-
#220 Time control sets system time Enables timeControl to adjust the system clock.
-
#212 MONR data in dataDictionary MONR data is now avaliable in dataDictionary
-
#207 ISO message type getter A function that gets the type of ISO message
-
#204 Visualization data A formatted version of MONR now accessible on a dedicated port to be used for visualization in third party software.
-
#203 Disconnect if wrong Monr version If wrong/incompatible MONR messages are beeing sent to server, it will disconnect.
-
#201 Detect ISO protocol version Server now detects which ISO protocol is beeing used.
-
#199 Handle partial or stacked recv() messages Basically what the branch name says.
Bug Fixes 🐛
-
#224 ISO dissector The iso dissector now again able to dissect ISO messages
-
#219 All modules now use same heading The issue with multiple heading definitions have now been addressed.
-
#213 HEAB gets sent even in OBC_STATE_ERROR Ensures that HEAB is always beeing sent.
-
#202 Time control empties MQ Timecontrol now empties its MQ stopping it from filling up.
-
#186 Supervision Crash fix Supervision no longer crashes on unexpected object init.
-
#200 iExit check while connnecting Object contol no longer gets stuck trying to connect to objects when iExit is sent to modules.
-
#180 ObjectControl not crashing on sudden object disconnect. Object control no longer crashes on sudden disconnects.
-
#236 File download and directory content File upload/download issues fixed
Improvements 👍
-
#239 Default values Different conf parameters now use default values
-
#229 SC reads MQ if no Connection To prevent MQ filling up SC reads mq in unconnected state
-
#225 Update MSCP commands MSCP commands have been updated
-
#218 Traj handler functions move to util Traj handler functions have been moved to Util.
-
#217 New SI format for MONR MONR now uses updated SI formatting
-
#215 ASP functions moved to ISO ASP moved to ISO
-
#214 T&A moved to ISO Trigger and action stuff moved to ISO.
-
#206 MONR handler functions to util MONR functions have been moved to util
-
#211 Heab functions moved to Util Heab handler functions have been moved to util
-
#210 OSTM handler functions moved to Util OSTM functions have been moved to Util
-
#209 OSEM handler functions to util OSEM handler funtions have been moved to util
-
#208 START handler functions to Util START functions has been moved to util
-
#191 Deleted Rel folder The rel folder is no more. It has ceased to be.
-
#190 Default conf file The default conf file has been updated
-
#182 Removed volatile variables Some variables that were volatile are no longer volatile
-
#188 Printout if Data dictionar init is successful The meastro terminal window now reports status of data dictionary
-
#187 Changed version numbers Version numbers changed to accurately represent current state of Maestro.
-
#181 Check rows in Traj Traj parsing is now more robust
-
#148 Migrated predefined Trajs to ISO format Predefined Trajs now follow ISO
-
#149 Straight accelerate-constant brake A new traj has been added to the defaults.
Other Changes
- #257 remove iso Removed old iso.h files
- #227 CMAKE You can now use make install to install maestro on your system.
- #221 Manual testing script A python script that when run enables the user to manualy send specific MSCP messages has been added to the testing folder.
Issues 💥
- #1 Link to issue Server spontaneously combusts.
January release
This release is compatible with Maestro Tools 0.4.1. and Util 0.4.0
New Features 🚀
- #140 Supervisor modulisation Supervisor now is its own c++ module. NOTE: Not activated by defualt. See first Issue.
- #141 Differentiate new MSCP messages subDownloadFile has been added as a message in systemcontrol to enable specific control during download.
Bug Fixes 🐛
- #147 Reevaluated MQ priorities MQ priorities was wrong, Highest priority was lowest. This has been remedied.
Improvements 👍
- 145 Integration test for normal test Integration tests have been added and a "normal test" is now avaliable.
- 146 Deleted commented out things in SC Deleted commented things in Systemcontrol.
Other Changes
- Project now using Jenkins for testing and code formatting is now enforced.
- Test procedures have been defined for some of the code.
Issues 💥
- Supervision and ObjectControl have different definitions of heading
- Rapid communication by the test scripts works when running manually but not when run by Jenkins
December snapshot release
This release is a snapshot of the server 5th of December 2019
This release is compatible with Maestro Tools 0.4.0. and Util 0.4.0
New Features 🚀
- #140 Supervisor modulisation Supervisor now is its own c++ module.
- #141 Differentiate new MSCP messages subDownloadFile has been added as a message in systemcontrol to enable specific control during download.
Bug Fixes 🐛
- #147 Reevaluated MQ priorities MQ priorities was wrong, Highest priority was lowest. This has been remedied.
Improvements 👍
- 145 Integration test for normal test Integration tests have been added and a "normal test" is now avaliable.
- 146 Deleted commented out things in SC Deleted commented things in Systemcontrol.
Other Changes
- Project now using Jenkins for testing and code formatting is now enforced.
- Test procedures have been defined for some of the code.
Issues 💥
- Supervision and ObjectControl have different definitions of heading
- Rapid communication by the test scripts works when running manually but not when run by Jenkins
Trigger and Action
Maestro is now able to send basic trigger and action messages enabling a test object to execute predefined actions when specific conditions have been met.
This release is compatible with Maestro Tools 0.3.0 and Util 0.3.0
New Features 🚀
Trigger and Action
-
#111 Trigger and action file parser. ScenarioControl module can read a trigger and action config file.
-
#109 Break detection algorithm. ScenarioControl can detect if a test object is braking based on MONR.
-
#101 C-ITS reads EXAC and ACCM. C-ITS control can now read two trigger and action messages from the message queue.
-
#90 Trigger Class. A trigger class containing all functionality expected from a trigger.
RVSS and Data Dictionary
- #72 RVSS and data dictionary. Everything related to RVSS and dataDictionary
Bug Fixes 🐛
- #119 Uploads now working. Trajectory files uploaded to the server got appended with TCP messages at the end of file. No longer an issue.
Improvements 👍
- #110 Generalised file locations.. The location for all files necessary to run the server can now be defined. Defaults to ~/.maestro
Other Changes
- Version number structure has been updated. Instead of MASTER:DEV:ITERATION format from before we are now using MAJOR:MINOR:PATCH
Issues 💥
- #1 Link to issue Server spontaneously combusts.
July release 2019
This release focuses on being a current working snapshot of the server. Contains not full tested features.
This release is compatible with Maestro Tools 0.1.1. and Util 0.1.1
New Features 🚀
Geofence
-
#69 Check geofence from MONR. Checks if inside or outside a geofence using MONR, does not handle this other than a print out in terminal.
-
#57 Feature point in polygon. Ray cast algorithm to check if a point is inside of a polygon.
Other
-
#87 C-ITS module with mqtt Module able to publish messages on MQTT
-
#69 Empty Scenario Control module. Exacly what the link says.
-
#61 Mq bus from util. Now using MQbus defined in util repo instead of old message queue
Bug Fixes 🐛
- # 78 Junk files Server no longer creates junk files in root directory