Version 0.22.0 Release

This version comes relatively soon after the previous version, but includes some additions that have been several months in the making.

For the entire changelog, see the Git commit history.

ESMini Simulator Plugin

This release marks the initial release of the ESMini simulator plugin binding.

You can use it by adding it to your test configuration conanfile.py at the appropriate location:

require("cloe-plugin-esmini/0.22.0@cloe/develop")

The ESMini simulator uses OpenScenario XML files as inputs, and this needs to be configured in the stackfile in order for you to use it:

version: "4"
simulators:
  binding: esmini
  args:
    headless: true
    scenario: "${ESMINI_XOSC_PATH}/test-driver.xosc"
    vehicles:
      Ego:
        closed_loop: true
        filter_distance: 200.0
vehicles:
  name: default
  from:
    simulator: esmini
    index: 0

The ${ESMINI_XOSC_PATH} is defined by the esmini-data Conan package and made available in the environment through cloe-launch. (You can of course use your own environment variables if you want, or none at all.)

The above example code assumes it will integrate in an existing vehicle and controller configuration and be passed to cloe-engine as JSON.

See the reference documentation for more.

Clothoid-Fit Component Plugin

The clothoid-fit component plugin for lane boundaries makes its entrance.

You can use it by adding it to your test configuration conanfile.py at the appropriate location:

require("cloe-plugin-clothoid-fit/0.22.0@cloe/develop")

And then you need to configure your vehicle in the stackfile:

version: "4"
vehicles:
  name: default
  from:
    simulator: minimator
    name: ego1
  components:
    "cloe::clothoid_fit":
      binding: clothoid_fit
      from: "cloe::default_lane_sensor"
      args:
        enable: true
        estimation_distance: 40

The above example code assumes it will integrate in an existing vehicle and simulator configuration and be passed to cloe-engine as JSON.

See the reference documentation for more.

Fable Library

Compile-time improvements for the Fable library radically speed up the compilation of code that use the make_schema functions.

However, the following definitions were removed from the Fable library in order to make the make_schema() functions consistent:

  • Struct make_schema(TPropertyList&&)

  • Struct make_schema(std::string&&, TPropertyList&&)

  • Struct make_schema(std::string&&, const Box&, TPropertyList&&)

  • Struct make_schema(std::string&&, const Struct&, TPropertyList&&)

  • Variant make_schema(std::string&&, std::initializer_list<Box>)

  • Variant make_schema(std::string&&, std::vector<Box>&&)

  • Variant make_schema(std::initializer_list<Box>)

  • Variant make_schema(std::vector<Box>&&)

  • Ignore make_schema(std::string&&, JsonType t = Jsontype::object)

The purpose of make_schema() is to make it easy to derive the correct schema for any C++ standard type you may have, even more complex ones such as std::vector<std::map<std::string, MyConfableClass>>. The removed make_schema() definitions do not fall into this use-case, and were rarely if ever used.

If you want to create a struct, please use fable::Schema or fable::schema::Struct directly:

return fable::Schema{
    { "foo", fable::Schema {
        { "nested", make_schema(&variable, "description") },
    }}
};

If you want to create a variant, please use fable::schema::Variant directly:

return fable::schema::Variant{
    fable::Schema{ /* variant 1 * / },
    /* ... */
    fable::Schema{ /* variant N * / },
};

If you want to name a key but ignore it, please use fable::schema::Ignore directly:

return fable::Schema{
    { "field", make_schema(&value, "description") },
    { "ignore", fable::schema::Ignore("description") },
};

Please see the respective header files for more initialization forms.