33 #include <VtdToolkit/viRDBIcd.h> 58 const uint64_t UNDEFINED_OWNER_ID = std::numeric_limits<uint64_t>::max();
76 VtdOmniSensor(std::unique_ptr<RdbTransceiver>&& rdb_transceiver, uint64_t owner_id)
85 void process(RDB_START_OF_FRAME_t* )
override {
86 vtd_logger()->trace(
"VtdOmniSensor: start-of-frame");
90 void process(RDB_END_OF_FRAME_t* )
override {
91 vtd_logger()->trace(
"VtdOmniSensor: end-of-frame");
95 void process(RDB_WHEEL_t* rdb_w,
bool )
override {
96 auto wheel_player_id =
static_cast<int>(rdb_w->base.playerId);
102 void process(RDB_SENSOR_STATE_t* s)
override {
112 void process(RDB_OBJECT_STATE_t* rdb_os,
bool extended)
override {
114 switch (rdb_os->base.category) {
115 case RDB_OBJECT_CATEGORY_PLAYER: {
116 auto obj = std::make_shared<cloe::Object>();
120 obj->velocity = obj->pose.rotation().inverse() * obj->velocity;
121 obj->acceleration = obj->pose.rotation().inverse() * obj->acceleration;
130 case RDB_OBJECT_CATEGORY_COMMON: {
131 auto obj = std::make_shared<cloe::Object>();
137 case RDB_OBJECT_CATEGORY_SENSOR:
138 case RDB_OBJECT_CATEGORY_CAMERA:
139 case RDB_OBJECT_CATEGORY_LIGHT_POINT:
140 case RDB_OBJECT_CATEGORY_NONE:
141 case RDB_OBJECT_CATEGORY_OPENDRIVE: {
142 vtd_logger()->trace(
"Discarding object with category {}.", rdb_os->base.category);
147 auto category_str = std::to_string(rdb_os->base.category);
148 throw std::logic_error(
"unknown RDB base category " + category_str);
153 void process(RDB_ROADMARK_t* rdb_rm)
override {
155 auto& lb =
lanes_[rdb_rm->id];
156 from_vtd_roadmark(rdb_rm, lb);
169 to_json(j, static_cast<const VtdSensorData&>(s));
172 {
"rdb_connection", s.
rdb_},
void reset() override
Definition: omni_sensor_component.hpp:163
virtual void step(uint64_t frame_number, bool &restart, cloe::Duration &sim_time)
Definition: rdb_codec.cpp:290
std::string name_
Human readable name.
Definition: vtd_sensor_data.hpp:112
cloe::Objects world_objects_
World objects from last processed frame.
Definition: vtd_sensor_data.hpp:127
void process(RDB_START_OF_FRAME_t *) override
Definition: omni_sensor_component.hpp:85
void from_vtd_object_state(const RDB_OBJECT_STATE_t *rdb_os, bool ext, cloe::Object &object)
Definition: omni_sensor_component.cpp:114
Eigen::Isometry3d from_vtd_pose(const RDB_COORD_t &x)
Definition: omni_sensor_component.cpp:108
Definition: vtd_sensor_data.hpp:39
Definition: actuator_component.hpp:35
virtual void process(RDB_MSG_t *msg, bool &restart, cloe::Duration &sim_time)
Definition: rdb_codec.cpp:249
Definition: omni_sensor_component.hpp:72
Definition: object.hpp:51
virtual uint64_t step() const =0
bool restart_
Indicates whether reset has been requested.
Definition: vtd_sensor_data.hpp:115
Definition: lane_boundary.hpp:36
virtual uint64_t frame_number() const
Definition: rdb_codec.hpp:73
uint64_t owner_id_
Id of the sensor's owner (ego).
Definition: omni_sensor_component.hpp:178
const std::string & get_name() const override
Definition: omni_sensor_component.hpp:160
Definition: rdb_codec.hpp:45
std::unique_ptr< RdbTransceiver > rdb_
Definition: rdb_codec.hpp:156
double ego_steering_angle_
Ego front left wheel steering angle from last processed frame.
Definition: vtd_sensor_data.hpp:133
Eigen::Isometry3d mount_
Sensor mounting position and orientation.
Definition: vtd_sensor_data.hpp:121
cloe::LaneBoundaries lanes_
Lane id-to-boundary-map.
Definition: vtd_sensor_data.hpp:136
void step(const cloe::Sync &s) override
Definition: omni_sensor_component.hpp:81
virtual void set_reset_state()
Definition: vtd_sensor_data.hpp:79
std::shared_ptr< cloe::Object > ego_object_
ego object information from last processed frame.
Definition: vtd_sensor_data.hpp:130
cloe::Duration simulation_time_
Simulation time from last processed sensor message.
Definition: vtd_sensor_data.hpp:118
cloe::Frustum frustum_
Sensor frustum information.
Definition: vtd_sensor_data.hpp:124