$darkmode
vtd::TaskControl Class Reference

#include <task_control.hpp>

Inheritance diagram for vtd::TaskControl:
Collaboration diagram for vtd::TaskControl:

Public Member Functions

 TaskControl (std::unique_ptr< RdbTransceiver > &&rdb_transceiver)
 
void process (RDB_DRIVER_CTRL_t *driver_ctrl) override
 
void reset () override
 
void add_driver_control (const DriverControl &dc)
 
void add_dyn_object_state (const DynObjectState &os)
 
void add_trigger (cloe::Duration delta_t)
 
void send_packages ()
 
void add_trigger_and_send (cloe::Duration delta_t)
 
double get_steering_wheel_speed (uint64_t id) const
 
double get_driver_request_acceleration (uint64_t id) const
 
bool has_driver_request_acceleration (uint64_t id)
 
double get_driver_request_steering_angle (uint64_t id) const
 
bool has_driver_request_steering_angle (uint64_t id)
 
void process (RDB_START_OF_FRAME_t *) override
 
void process (RDB_END_OF_FRAME_t *) override
 
void process (RDB_WHEEL_t *rdb_w, bool) override
 
void process (RDB_SENSOR_STATE_t *s) override
 
void process (RDB_OBJECT_STATE_t *rdb_os, bool extended) override
 
void process (RDB_ROADMARK_t *rdb_rm) override
 
virtual void process (RDB_MSG_t *msg, bool &restart, cloe::Duration &sim_time)
 
virtual void process (RDB_MSG_ENTRY_HDR_t *entry)
 
virtual void process (RDB_START_OF_FRAME_t *)
 
virtual void process (RDB_END_OF_FRAME_t *)
 
virtual void process (RDB_COORD_SYSTEM_t *)
 
virtual void process (RDB_COORD_t *)
 
virtual void process (RDB_ROAD_POS_t *)
 
virtual void process (RDB_LANE_INFO_t *)
 
virtual void process (RDB_ROADMARK_t *)
 
virtual void process (RDB_OBJECT_CFG_t *)
 
virtual void process (RDB_OBJECT_STATE_t *, bool)
 
virtual void process (RDB_VEHICLE_SYSTEMS_t *)
 
virtual void process (RDB_VEHICLE_SETUP_t *)
 
virtual void process (RDB_ENGINE_t *, bool)
 
virtual void process (RDB_DRIVETRAIN_t *, bool)
 
virtual void process (RDB_WHEEL_t *, bool)
 
virtual void process (RDB_PED_ANIMATION_t *)
 
virtual void process (RDB_SENSOR_STATE_t *)
 
virtual void process (RDB_SENSOR_OBJECT_t *)
 
virtual void process (RDB_CAMERA_t *)
 
virtual void process (RDB_CONTACT_POINT_t *)
 
virtual void process (RDB_TRAFFIC_SIGN_t *)
 
virtual void process (RDB_ROAD_STATE_t *)
 
virtual void process (RDB_IMAGE_t *)
 
virtual void process (RDB_LIGHT_SOURCE_t *, bool)
 
virtual void process (RDB_ENVIRONMENT_t *)
 
virtual void process (RDB_TRIGGER_t *)
 
virtual void process (RDB_DRIVER_CTRL_t *)
 
virtual void process (RDB_TRAFFIC_LIGHT_t *, bool)
 
virtual void process (RDB_SYNC_t *)
 
virtual void process (RDB_DRIVER_PERCEPTION_t *)
 
virtual void process (RDB_FUNCTION_t *)
 
virtual void process (RDB_ROAD_QUERY_t *)
 
virtual void process (RDB_TRAJECTORY_t *)
 
virtual void process (RDB_DYN_2_STEER_t *)
 
virtual void process (RDB_STEER_2_DYN_t *)
 
virtual void process (RDB_PROXY_t *)
 
virtual void process (RDB_MOTION_SYSTEM_t *)
 
virtual void process (RDB_FREESPACE_t *)
 
virtual void process (RDB_DYN_EL_SWITCH_t *)
 
virtual void process (RDB_DYN_EL_DOF_t *)
 
virtual void process (RDB_IG_FRAME_t *)
 
virtual void process (RDB_RT_PERFORMANCE_t *)
 
virtual void process (RDB_CUSTOM_SCORING_t *)
 
virtual void process (RDB_CUSTOM_OBJECT_CTRL_TRACK_t *)
 
- Public Member Functions inherited from vtd::VtdOmniSensor
 VtdOmniSensor (std::unique_ptr< RdbTransceiver > &&rdb_transceiver, uint64_t owner_id)
 
void step (const cloe::Sync &s) override
 
void process (RDB_START_OF_FRAME_t *) override
 
void process (RDB_END_OF_FRAME_t *) override
 
void process (RDB_WHEEL_t *rdb_w, bool) override
 
void process (RDB_SENSOR_STATE_t *s) override
 
void process (RDB_OBJECT_STATE_t *rdb_os, bool extended) override
 
void process (RDB_ROADMARK_t *rdb_rm) override
 
const std::string & get_name () const override
 
virtual void process (RDB_MSG_t *msg, bool &restart, cloe::Duration &sim_time)
 
virtual void process (RDB_MSG_ENTRY_HDR_t *entry)
 
virtual void process (RDB_START_OF_FRAME_t *)
 
virtual void process (RDB_END_OF_FRAME_t *)
 
virtual void process (RDB_COORD_SYSTEM_t *)
 
virtual void process (RDB_COORD_t *)
 
virtual void process (RDB_ROAD_POS_t *)
 
virtual void process (RDB_LANE_INFO_t *)
 
virtual void process (RDB_ROADMARK_t *)
 
virtual void process (RDB_OBJECT_CFG_t *)
 
virtual void process (RDB_OBJECT_STATE_t *, bool)
 
virtual void process (RDB_VEHICLE_SYSTEMS_t *)
 
virtual void process (RDB_VEHICLE_SETUP_t *)
 
virtual void process (RDB_ENGINE_t *, bool)
 
virtual void process (RDB_DRIVETRAIN_t *, bool)
 
virtual void process (RDB_WHEEL_t *, bool)
 
virtual void process (RDB_PED_ANIMATION_t *)
 
virtual void process (RDB_SENSOR_STATE_t *)
 
virtual void process (RDB_SENSOR_OBJECT_t *)
 
virtual void process (RDB_CAMERA_t *)
 
virtual void process (RDB_CONTACT_POINT_t *)
 
virtual void process (RDB_TRAFFIC_SIGN_t *)
 
virtual void process (RDB_ROAD_STATE_t *)
 
virtual void process (RDB_IMAGE_t *)
 
virtual void process (RDB_LIGHT_SOURCE_t *, bool)
 
virtual void process (RDB_ENVIRONMENT_t *)
 
virtual void process (RDB_TRIGGER_t *)
 
virtual void process (RDB_DRIVER_CTRL_t *)
 
virtual void process (RDB_TRAFFIC_LIGHT_t *, bool)
 
virtual void process (RDB_SYNC_t *)
 
virtual void process (RDB_DRIVER_PERCEPTION_t *)
 
virtual void process (RDB_FUNCTION_t *)
 
virtual void process (RDB_ROAD_QUERY_t *)
 
virtual void process (RDB_TRAJECTORY_t *)
 
virtual void process (RDB_DYN_2_STEER_t *)
 
virtual void process (RDB_STEER_2_DYN_t *)
 
virtual void process (RDB_PROXY_t *)
 
virtual void process (RDB_MOTION_SYSTEM_t *)
 
virtual void process (RDB_FREESPACE_t *)
 
virtual void process (RDB_DYN_EL_SWITCH_t *)
 
virtual void process (RDB_DYN_EL_DOF_t *)
 
virtual void process (RDB_IG_FRAME_t *)
 
virtual void process (RDB_RT_PERFORMANCE_t *)
 
virtual void process (RDB_CUSTOM_SCORING_t *)
 
virtual void process (RDB_CUSTOM_OBJECT_CTRL_TRACK_t *)
 
- Public Member Functions inherited from vtd::RdbCodec
 RdbCodec (std::unique_ptr< RdbTransceiver > &&rdb_transceiver)
 
 RdbCodec (RdbTransceiver *rdb_transceiver)
 
virtual uint64_t frame_number () const
 
virtual void step (uint64_t frame_number, bool &restart, cloe::Duration &sim_time)
 
virtual void process (RDB_MSG_t *msg, bool &restart, cloe::Duration &sim_time)
 
virtual void process (RDB_MSG_ENTRY_HDR_t *entry)
 
virtual void process (RDB_COORD_SYSTEM_t *)
 
virtual void process (RDB_COORD_t *)
 
virtual void process (RDB_ROAD_POS_t *)
 
virtual void process (RDB_LANE_INFO_t *)
 
virtual void process (RDB_OBJECT_CFG_t *)
 
virtual void process (RDB_VEHICLE_SYSTEMS_t *)
 
virtual void process (RDB_VEHICLE_SETUP_t *)
 
virtual void process (RDB_ENGINE_t *, bool)
 
virtual void process (RDB_DRIVETRAIN_t *, bool)
 
virtual void process (RDB_PED_ANIMATION_t *)
 
virtual void process (RDB_SENSOR_OBJECT_t *)
 
virtual void process (RDB_CAMERA_t *)
 
virtual void process (RDB_CONTACT_POINT_t *)
 
virtual void process (RDB_TRAFFIC_SIGN_t *)
 
virtual void process (RDB_ROAD_STATE_t *)
 
virtual void process (RDB_IMAGE_t *)
 
virtual void process (RDB_LIGHT_SOURCE_t *, bool)
 
virtual void process (RDB_ENVIRONMENT_t *)
 
virtual void process (RDB_TRIGGER_t *)
 
virtual void process (RDB_TRAFFIC_LIGHT_t *, bool)
 
virtual void process (RDB_SYNC_t *)
 
virtual void process (RDB_DRIVER_PERCEPTION_t *)
 
virtual void process (RDB_FUNCTION_t *)
 
virtual void process (RDB_ROAD_QUERY_t *)
 
virtual void process (RDB_TRAJECTORY_t *)
 
virtual void process (RDB_DYN_2_STEER_t *)
 
virtual void process (RDB_STEER_2_DYN_t *)
 
virtual void process (RDB_PROXY_t *)
 
virtual void process (RDB_MOTION_SYSTEM_t *)
 
virtual void process (RDB_FREESPACE_t *)
 
virtual void process (RDB_DYN_EL_SWITCH_t *)
 
virtual void process (RDB_DYN_EL_DOF_t *)
 
virtual void process (RDB_IG_FRAME_t *)
 
virtual void process (RDB_RT_PERFORMANCE_t *)
 
virtual void process (RDB_CUSTOM_SCORING_t *)
 
virtual void process (RDB_CUSTOM_OBJECT_CTRL_TRACK_t *)
 
- Public Member Functions inherited from vtd::VtdSensorData
 VtdSensorData (const std::string &name)
 
virtual cloe::Duration time () const
 
virtual void set_name (const std::string &name)
 
virtual void set_reset_state ()
 
const cloe::Objectget_ego_object () const
 
const cloe::Objectsget_world_objects () const
 
double get_ego_steering_angle () const
 
const cloe::Frustumget_frustum () const
 
const Eigen::Isometry3d & get_mount_pose () const
 
const cloe::LaneBoundaries & get_lane_boundaries ()
 
void clear_cache ()
 

Protected Attributes

Framework::RDBHandler handler_
 RDBHandler helps us conveniently construct RDB messages.
 
std::map< int, double > steering_wheel_speed_
 
std::map< int, double > driver_request_accel_
 
std::map< int, double > driver_request_steering_angle_
 
- Protected Attributes inherited from vtd::VtdOmniSensor
uint64_t owner_id_
 Id of the sensor's owner (ego).
 
- Protected Attributes inherited from vtd::RdbCodec
std::unique_ptr< RdbTransceiverrdb_
 
uint64_t frame_number_ = 0
 Frame number from last processed RDB message.
 
bool processing_frame_ = false
 Indicates whether in between a start of frame and an end of frame message.
 
- Protected Attributes inherited from vtd::VtdSensorData
std::string name_ = "default_sensor"
 Human readable name.
 
bool restart_ = false
 Indicates whether reset has been requested.
 
cloe::Duration sensor_data_time_ = cloe::Duration(0)
 Simulation time from last processed sensor message.
 
cloe::Duration sensor_data_time_next_ = cloe::Duration(0)
 Expected simulation time for next sensor message.
 
Eigen::Isometry3d mount_
 Sensor mounting position and orientation.
 
cloe::Frustum frustum_
 Sensor frustum information.
 
cloe::Objects world_objects_
 World objects from last processed frame.
 
std::shared_ptr< cloe::Objectego_object_
 ego object information from last processed frame.
 
double ego_steering_angle_ {0.0}
 Ego front left wheel steering angle from last processed frame.
 
cloe::LaneBoundaries lanes_
 Lane id-to-boundary-map.
 

Friends

void to_json (cloe::Json &j, const TaskControl &tc)
 

Detailed Description

TaskControl contains the connection to the VTD task control server.

In the usual basic single machine configurations of VTD, there is only one instance of task control server running.

This class implements

  • Receiving groundtruth data (e.g. object data in inertial coordinates)
  • Sending all vehicle actuations
  • Triggering VTD simulation time steps

The idea is that the VtdOmniSensor baseclass receives all groundtruth data and exposes it at the default cloe groundtruth sensor's component-interfaces. Then you add any packages to the task control that you want to send, and once you've done that, you send the packages, which packs the buffer and sends it off.

Contrived example:

TaskControl tc{new RdbTransceiver("localhost", 23456)};

this->new_component(new VtdWorldSensor{tc}, CloeComponent::GROUNDTRUTH_WORLD_SENSOR); ... DriverControl dc; dc.player_id = 1; dc.target_acceleration = 2.0; ... tc.add_driver_control(dc); ... tc.add_trigger(cloe::Milliseconds(20)); tc.send_packages()

Of course, all these statements will be sprinkled around your code.

Member Function Documentation

◆ add_driver_control()

void vtd::TaskControl::add_driver_control ( const DriverControl dc)
inline

Add driver control to the RDB message for the current frame.

◆ add_trigger()

void vtd::TaskControl::add_trigger ( cloe::Duration  delta_t)
inline

Add the trigger package, which specifies how much VTD should step.

Here is the caller graph for this function:

◆ add_trigger_and_send()

void vtd::TaskControl::add_trigger_and_send ( cloe::Duration  delta_t)
inline

Add the given trigger and then send it.

A common idiom is to set the trigger and then right away send the package to VTD. This will also send any other packages.

Here is the call graph for this function:

◆ get_driver_request_acceleration()

double vtd::TaskControl::get_driver_request_acceleration ( uint64_t  id) const
inline

Get driver-requested longitudinal acceleration of vehicle with given id [m/s2].

◆ get_driver_request_steering_angle()

double vtd::TaskControl::get_driver_request_steering_angle ( uint64_t  id) const
inline

Get driver-requested steering angle (at wheels) of vehicle with given id [rad].

◆ get_steering_wheel_speed()

double vtd::TaskControl::get_steering_wheel_speed ( uint64_t  id) const
inline

Get steering speed at front wheels of vehicle with given id [rad/s].

◆ has_driver_request_acceleration()

bool vtd::TaskControl::has_driver_request_acceleration ( uint64_t  id)
inline

Check if driver-requested longitudinal acceleration has been set.

◆ has_driver_request_steering_angle()

bool vtd::TaskControl::has_driver_request_steering_angle ( uint64_t  id)
inline

Check if driver-requested steering_angle has been set.

◆ process() [1/3]

void vtd::RdbCodec::process

Process each RDB message entry. This method is called in process(RDB_MSG_t) for each entry in a message.

Parameters
entryRDB message entry to be processed

◆ process() [2/3]

void vtd::RdbCodec::process

Process a RDB message. This method is called in process() for each RDB message.

Parameters
msgmessage to be processed

◆ process() [3/3]

virtual void vtd::RdbCodec::process
inline

Process a start of frame.

Parameters
start_of_frameonly used for dynamic binding; do not access.

◆ reset()

void vtd::TaskControl::reset ( )
inlineoverridevirtual

Reset the codec.

Discard received messages, clear data members, and implement sensor-specific reset steps.

Reimplemented from vtd::VtdOmniSensor.

Here is the call graph for this function:

◆ send_packages()

void vtd::TaskControl::send_packages ( )
inline

Send the packed RDB message to the task control server.

Here is the caller graph for this function:

The documentation for this class was generated from the following file: