|
| 1 | +# Version 0.20.0 Release |
| 2 | + |
| 3 | +This version includes several improvements to the simulator plugin for VTD |
| 4 | +and an update to the stack file format, among many other smaller improvements. |
| 5 | + |
| 6 | +For the entire changelog, see the [Git commit history](https://github.com/eclipse/cloe/compare/v0.19.0...v0.20.0). |
| 7 | + |
| 8 | +## VTD Simulator Plugin |
| 9 | + |
| 10 | +TLDR: The `vtd` simulator binding now has support for VTD 2022.3, |
| 11 | +OpenScenario files, and the `scp` action to send SCP messages from |
| 12 | +triggers. |
| 13 | + |
| 14 | +The `vtd` simulator binding now has support for |
| 15 | +[VTD 2022.3](https://mscsoftware.my.site.com/customers/s/article/Whats-New-VTD-2022-3) |
| 16 | +and using OpenScenario. |
| 17 | + |
| 18 | +The simulator binding can now be built with *one* of the two VTD versions |
| 19 | +supported: |
| 20 | + |
| 21 | +- VTD 2.2.0 |
| 22 | +- VTD 2022.3 |
| 23 | + |
| 24 | +For this, the respective `vtd` and `vtd-api` Conan package needs to |
| 25 | +be available. These can be built from the `optional/vtd/vendor` |
| 26 | +folder, provided you have the corresponding sources. |
| 27 | + |
| 28 | +Then, simply build the `cloe-plugin-vtd` package with the |
| 29 | +`vtd-api` dependency set to the version you want to use it with. |
| 30 | + |
| 31 | +The `scp` action has been added, which lets you send SCP messages to VTD from |
| 32 | +a trigger: |
| 33 | +```json |
| 34 | +{ |
| 35 | + "event": "time=5", |
| 36 | + "action": { |
| 37 | + "name": "vtd/scp", |
| 38 | + "xml": "<SimCtrl><Stop/></SimCtrl>" |
| 39 | + } |
| 40 | +} |
| 41 | +``` |
| 42 | + |
| 43 | +You can also define SCP templates in the `vtd` binding configuration: |
| 44 | +```yaml |
| 45 | +version: "4" |
| 46 | +defaults: |
| 47 | + simulators: |
| 48 | + binding: vtd |
| 49 | + args: |
| 50 | + scp_actions: |
| 51 | + simctrl: "<SimCtrl><[[cmd]]/></SimCtrl>" |
| 52 | + stop: > |
| 53 | + <SimCtrl> |
| 54 | + <Stop/> |
| 55 | + </SimCtrl> |
| 56 | +``` |
| 57 | +This can then be used without arguments like so: |
| 58 | +```json |
| 59 | +{ |
| 60 | + "event": "time=5", |
| 61 | + "action": "vtd/scp=stop" |
| 62 | +} |
| 63 | +``` |
| 64 | + |
| 65 | +Or with template arguments in the long form: |
| 66 | +```json |
| 67 | +{ |
| 68 | + "event": "time=5", |
| 69 | + "action": { |
| 70 | + "name": "vtd/scp", |
| 71 | + "template": "simctrl", |
| 72 | + "data": { |
| 73 | + "cmd": "Stop" |
| 74 | + } |
| 75 | + } |
| 76 | +} |
| 77 | +``` |
| 78 | +See the plugin {doc}`documentation <../reference/plugins/vtd>` for more details. |
| 79 | + |
| 80 | +## Support for Vehicle Dynamics Model Integration |
| 81 | + |
| 82 | +TLDR: You can now integrate custom vehicle dynamics models as Cloe |
| 83 | +plugins. The updated ego vehicle state will be sent to the `vtd` simulator, if |
| 84 | +configured accordingly. |
| 85 | + |
| 86 | +A new interface `VehicleStateModel` has been added to `models`. This can be |
| 87 | +used as base class for custom vehicle dynamics model plugins. User models shall |
| 88 | +provide the updated ego vehicle state as `Object` type in every simulation |
| 89 | +cycle. |
| 90 | + |
| 91 | +An additional interface `DriverRequest` has been added to pass requests from |
| 92 | +a driver model (built into the simulator or external) to a controller plugin. |
| 93 | +The `basic` controller has been extended to forward requests from the |
| 94 | +configured `DriverRequest` to the `actutator` component, in case no ADAS |
| 95 | +function is active. Albeit being a simplistic arbitration logic, this ensures |
| 96 | +that a custom vehicle dynamics model that reads from the `actuator` component |
| 97 | +will always receive a valid actuation request. |
| 98 | + |
| 99 | +The `vtd` binding now supports sending the updated ego vehicle state from |
| 100 | +a custom vehicle dynamics model to the simulator. Driver steering and |
| 101 | +acceleration requests from the `vtd` driver model are received by the plugin. |
| 102 | + |
| 103 | +## Stackfile 4.1 |
| 104 | + |
| 105 | +TLDR: The stackfile schema format has been updated to support minor versions. |
| 106 | + |
| 107 | +That means for this version of the Cloe Engine, the following versions all mean |
| 108 | +the same thing: `4`, `4.0`, `4.1`. The default version is the *string* `4.1`: |
| 109 | +```json |
| 110 | +{ |
| 111 | + "version": "4.1" |
| 112 | +} |
| 113 | +``` |
| 114 | +If they are all compatible, you may wonder what the point is. The key phrase is |
| 115 | +"for this version of the engine". An older version of the engine will reject |
| 116 | +the stackfile, and the current version will reject a version that is newer |
| 117 | +than `4.1`. That means we can effectively specify the minimum stack file |
| 118 | +version required, if we need to be explicit. This follows the way that tools |
| 119 | +like `docker-compose` have managed versioning the input files. |
| 120 | + |
| 121 | +If you don't care, just keep using the version `4`. Nothing will change for you. |
| 122 | +If on the other hand, you need to ensure that a recent version of Cloe is |
| 123 | +used, because you are using an added feature, then you should specify the |
| 124 | +minor version that introduced the feature you want to use, or simply the latest |
| 125 | +one. |
| 126 | + |
| 127 | +Apart from validation, this has no other effect on parsing or the simulation. |
| 128 | + |
| 129 | +## Optional Triggers |
| 130 | + |
| 131 | +TLDR: Triggers can have an `optional: true` field set to make them not fail |
| 132 | +when the action or event does not exist. |
| 133 | + |
| 134 | +This is the change that caused the stackfile to be updated and version bumped. |
| 135 | + |
| 136 | +Nominally, triggers consist of an *event* and an *action*. There are several |
| 137 | +other fields that can be specified to modify specifics of how Cloe treats |
| 138 | +the trigger. The new `optional` field is false by default and specifies |
| 139 | +whether the trigger can be ignored if it cannot be constructed. |
| 140 | + |
| 141 | +That is, if construction of a trigger fails because the specified event and/or |
| 142 | +action are not available, then a warning is printed instead of a simulation |
| 143 | +abort. |
| 144 | + |
| 145 | +When is this useful, you may ask. When a controller plugin has actions that are |
| 146 | +generated by some code-generation routine that can be configured, then different |
| 147 | +configurations can result in a different set of actions. To support using the |
| 148 | +same trigger list with these different configurations, the "problematic" |
| 149 | +triggers can be made optional. |
| 150 | + |
| 151 | +Since this is still not an optimal solution, warnings are still printed when |
| 152 | +a trigger is discarded like this. |
| 153 | + |
| 154 | +## Fable Improvements |
| 155 | + |
| 156 | +TLDR: The fable library has been refactored and may require you to include |
| 157 | +`fable/schema/number_impl.hpp` or `fable/schema.hpp` for your code to keep |
| 158 | +compiling. Compile performance should be better though. |
| 159 | + |
| 160 | +There are these changes to the Fable library: |
| 161 | + |
| 162 | +New: |
| 163 | + |
| 164 | +- Add String schema `enum_of` method to specify valid values of string. |
| 165 | +- Add String schema unit tests to test all features. |
| 166 | +- Extend utility header `gtest.hpp` to support Schema type where previously |
| 167 | + only Confable type was supported. |
| 168 | + |
| 169 | +Changed: |
| 170 | + |
| 171 | +- Remove include of `fable/schema.hpp` in `fable/confable.hpp`. |
| 172 | + This allows better compile-time optimization but may require users to include |
| 173 | + `fable/schema.hpp` themselves. |
| 174 | +- Update example projects to use modern CMake commands in Makefile. |
| 175 | +- Update Conan test package test_v2_package to support |
| 176 | + `conan create .` outside of test package mode. |
| 177 | + |
| 178 | +Performance: |
| 179 | + |
| 180 | +- Extract String implementation from header. |
| 181 | +- Extract Boolean implementation from header. |
| 182 | +- Extract Number implementation from header. |
| 183 | +- If a user uses a Number with a non-standard numeric type, then they need to |
| 184 | + include `fable/schema/number_impl.hpp` |
| 185 | + |
| 186 | +## Conan 2.0 Support |
| 187 | + |
| 188 | +TLDR: The tooling in the project has been updated for better compatibility with |
| 189 | +Conan 2.0 and packages that use more recent Conan features. |
| 190 | + |
| 191 | +These changes allow for the following, among other things: |
| 192 | + |
| 193 | +Using standard CMake commands such as find_package() for dependency management. |
| 194 | +Use of multiple build types at the same time, such as Release and Debug. |
| 195 | +Relying on a single lockfile for CI, once Conan 2.0 is used. |
| 196 | + |
| 197 | +## Smoketest Conanfiles |
| 198 | + |
| 199 | +TLDR: Smoketest configurations are named `conanfile_default.py` instead of |
| 200 | +`profile_default.py` since the latter terminology conflicts with Conan. |
| 201 | +This change only really affects those developing on or with Cloe. |
| 202 | + |
| 203 | +This version contains changes in how the test profiles are named since the |
| 204 | +original name was misleading. |
| 205 | +The files in question were all located in `tests/` directories alongside |
| 206 | +stackfiles and BATS tests and were previously named `profile_XYZ.py`. |
| 207 | + |
| 208 | +Specifically, it was unclear when talking about the profile test files if the |
| 209 | +user wanted to refer about the conan profile instead. To avoid this confusion |
| 210 | +we decided to rename the files to a more understandable name: `conanfile_XYZ.py`. |
| 211 | +This makes clear that these are normal conanfiles. |
0 commit comments