Skip to content

Foretellix Driver module

The Foretellix Driver module handles the movements of a single actor, such as a vehicle or Vulnerable Road User (VRU), which can be either the System Under Test (SUT) or a Non-Player Character (NPC).

The Driver's goals are generated by the Planner and monitored by the Activator. The Planner and the Activator orchestrate the run as a whole according to the instructions in the scenario, as provided by the compiler.

The result of the generation process is a sequence of OPs (operations) for each actor in the scenario.

The Foretellix Driver module is implemented as the driver type. It consists of four major processing layers, each with its dedicated manager component:

  • The Perception layer provides information about the actor's surroundings, including the states of other road users, road topology, and road signs. It interacts with top.map and top.traffic to get the necessary data and converts this information into the actor's reference and context frame.
  • The Behavior layer defines the actor's current destination (the objective). It receives externally defined goals and adjusts them to actual situations. After creation, the objective is used by the Trajectory layer.
  • The Trajectory layer creates the actor's trajectory, which represents its position over time, to guide the actor toward the objective. After creation, the trajectory is used by the Execution layer.
  • The Execution layer controls the actor's movement along the trajectory. It generates pedal and steering commands for the vehicle or, in the case of kinematic driving, adjusts and passes the trajectory as needed.
Figure 1: Driver architecture

The driver type has two subtypes:

  • The ftx_driver is an object associated with each instance of the vehicle actor. It controls the movement of that instance, for example, cut_in_vehicle.ftx_driver and sut.car.ftx_driver. This model contains the logic for generating steering and pedal commands or the trajectory to guide the vehicle toward its current objective.
  • The hlm_driver is an object that controls the movement of a Foretellix SUT model. If integrated, commands from sut.car.ftx_driver are passed to the hlm_driver. The hlm_driver might decide to override the ftx_driver commands either fully or partially, and it eventually updates the vehicle commands that are passed to the simulator.

Note

If a custom SUT is integrated, commands are passed directly from sut.car.ftx_driver to the SUT. There is no hlm_driver object in this case.

The ftx_driver, hlm_driver, and vru_driver all inherit from the basic driver type, following the same four-layer processing flow: Perception -> Behavior -> Trajectory -> Execution. However, each driver separately sets and uses its sensors and behaviors. The ftx_driver and hlm_driver share their trajectory and execution layers.

Each of these layers has a manager with parameters that allow you to control various aspects of that layer's function. The ftx_driver API is consistent across all vehicles. The hlm_driver API referred to as the Foretellix SUT Model API, varies depending on the specific Foretellix SUT Model being used.

Driver interface folder structure

The Driver interface is located under the user_interface/domain_model/driver folder.

It contains four subfolders, one per Driver processing layer; the behavioral layer is split further into ftx_driver and hlm_driver behaviors. The files below contain the parameters governing the functionality for each component.

  • /driver

    • /behavior_layer

      ftlx_behavior_manager_params.osc

      • /ftx_driver_behaviors

        • ftlx_ending_lane_behavior.osc
        • ftlx_junction_entry_lane.osc
        • ftlx_junction_behavior.osc
        • ftlx_stay_on_road.osc
        • ftlx_speed_adaptation_behavior.osc
        • ftlx_collision_avoidance_behavior.osc
        • ftlx_end_of_road_behavior.osc
        • ftlx_adas_override_behavior.osc
        • ftlx_bypass_behavior.osc
        • ftlx_post_collision_behavior.osc
      • /hlm_driver_behaviors

        • ftlx_acc_behavior.osc
        • ftlx_aeb_behavior.osc
        • ftlx_esa_behavior.osc
        • ftlx_lca_behavior.osc
        • ftlx_sas_behavior.osc
        • ftlx_lss_behavior.osc
    • /executor_layer

      • ftlx_executor_manager_params.osc
      • ftlx_ODD_checker_params.osc
    • /perception_layer

      ftlx_perception_manager_params.osc

    • /trajectory_layer

      ftlx_trajectory_manager_params.osc