31 #if (VTD_API_VERSION_EPOCH == 0)
34 #include <VtdToolkit/viRDBIcd.h>
59 const uint64_t UNDEFINED_OWNER_ID = std::numeric_limits<uint64_t>::max();
77 VtdOmniSensor(std::unique_ptr<RdbTransceiver>&& rdb_transceiver, uint64_t owner_id)
86 void process(RDB_START_OF_FRAME_t* )
override {
87 vtd_logger()->trace(
"VtdOmniSensor: start-of-frame");
91 void process(RDB_END_OF_FRAME_t* )
override {
92 vtd_logger()->trace(
"VtdOmniSensor: end-of-frame");
96 void process(RDB_WHEEL_t* rdb_w,
bool )
override {
97 auto wheel_player_id =
static_cast<int>(rdb_w->base.playerId);
103 void process(RDB_SENSOR_STATE_t* s)
override {
113 void process(RDB_OBJECT_STATE_t* rdb_os,
bool extended)
override {
115 switch (rdb_os->base.category) {
116 case RDB_OBJECT_CATEGORY_PLAYER: {
117 auto obj = std::make_shared<cloe::Object>();
121 obj->velocity = obj->pose.rotation().inverse() * obj->velocity;
122 obj->acceleration = obj->pose.rotation().inverse() * obj->acceleration;
131 case RDB_OBJECT_CATEGORY_COMMON: {
132 auto obj = std::make_shared<cloe::Object>();
138 case RDB_OBJECT_CATEGORY_SENSOR:
139 case RDB_OBJECT_CATEGORY_CAMERA:
140 case RDB_OBJECT_CATEGORY_LIGHT_POINT:
141 case RDB_OBJECT_CATEGORY_NONE:
142 case RDB_OBJECT_CATEGORY_OPENDRIVE: {
143 vtd_logger()->trace(
"Discarding object with category {}.", rdb_os->base.category);
148 auto category_str = std::to_string(rdb_os->base.category);
149 throw std::logic_error(
"unknown RDB base category " + category_str);
154 void process(RDB_ROADMARK_t* rdb_rm)
override {
156 auto& lb =
lanes_[rdb_rm->id];
157 from_vtd_roadmark(rdb_rm, lb);
173 {
"rdb_connection", s.
rdb_},
Definition: lane_boundary.hpp:36
virtual uint64_t step() const =0
Definition: rdb_codec.hpp:46
virtual void step(uint64_t frame_number, bool &restart, cloe::Duration &sim_time)
Definition: rdb_codec.cpp:290
std::unique_ptr< RdbTransceiver > rdb_
Definition: rdb_codec.hpp:157
virtual void process(RDB_MSG_t *msg, bool &restart, cloe::Duration &sim_time)
Definition: rdb_codec.cpp:249
virtual uint64_t frame_number() const
Definition: rdb_codec.hpp:74
Definition: omni_sensor_component.hpp:73
uint64_t owner_id_
Id of the sensor's owner (ego).
Definition: omni_sensor_component.hpp:179
void reset() override
Definition: omni_sensor_component.hpp:164
virtual void process(RDB_MSG_t *msg, bool &restart, cloe::Duration &sim_time)
Definition: rdb_codec.cpp:249
const std::string & get_name() const override
Definition: omni_sensor_component.hpp:161
void process(RDB_START_OF_FRAME_t *) override
Definition: omni_sensor_component.hpp:86
void step(const cloe::Sync &s) override
Definition: omni_sensor_component.hpp:82
Definition: vtd_sensor_data.hpp:39
Eigen::Isometry3d mount_
Sensor mounting position and orientation.
Definition: vtd_sensor_data.hpp:121
std::shared_ptr< cloe::Object > ego_object_
ego object information from last processed frame.
Definition: vtd_sensor_data.hpp:130
bool restart_
Indicates whether reset has been requested.
Definition: vtd_sensor_data.hpp:115
virtual void set_reset_state()
Definition: vtd_sensor_data.hpp:79
double ego_steering_angle_
Ego front left wheel steering angle from last processed frame.
Definition: vtd_sensor_data.hpp:133
cloe::Duration simulation_time_
Simulation time from last processed sensor message.
Definition: vtd_sensor_data.hpp:118
cloe::Objects world_objects_
World objects from last processed frame.
Definition: vtd_sensor_data.hpp:127
cloe::Frustum frustum_
Sensor frustum information.
Definition: vtd_sensor_data.hpp:124
cloe::LaneBoundaries lanes_
Lane id-to-boundary-map.
Definition: vtd_sensor_data.hpp:136
std::string name_
Human readable name.
Definition: vtd_sensor_data.hpp:112
Eigen::Isometry3d from_vtd_pose(const RDB_COORD_t &x)
Definition: omni_sensor_component.cpp:109
void from_vtd_object_state(const RDB_OBJECT_STATE_t *rdb_os, bool ext, cloe::Object &object)
Definition: omni_sensor_component.cpp:115
Definition: object.hpp:51