30 #include <Eigen/Geometry>
38 #include "osi_common.pb.h"
39 #include "osi_detectedobject.pb.h"
40 #include "osi_hostvehicledata.pb.h"
41 #include "osi_object.pb.h"
42 #include "osi_sensordata.pb.h"
55 void from_osi_identifier(
const osi3::Identifier& osi_id,
int&
id);
75 const osi3::BaseMoving& osi_bm_gt,
79 void from_osi_mov_obj_type_classification(
const T& osi_mo, cloe::Object::Class& oc);
80 void from_osi_mov_obj_type_classification(
81 const osi3::MovingObject::Type& osi_ot,
82 const osi3::MovingObject::VehicleClassification::Type& osi_vt,
83 cloe::Object::Class& oc);
85 void from_osi_detected_moving_object_alt(
const osi3::DetectedMovingObject& osi_mo,
88 void from_osi_boundary_points(
const osi3::LaneBoundary& osi_lb,
cloe::LaneBoundary& lb);
90 void transform_ego_coord_from_osi_data(
const Eigen::Vector3d& dimensions_gt,
cloe::Object& obj);
99 const Eigen::Vector3d& dimensions_gt,
102 Eigen::Isometry3d osi_position_orientation_to_pose_alt(
const osi3::BaseMoving& base,
103 const osi3::BaseMoving& base_gt);
106 const osi3::MovingObject::VehicleAttributes& osi_va);
112 enum class SensorMockTarget { MountingPosition, DetectedMovingObject, DetectedLaneBoundary };
125 {SensorMockLevel::OverwriteNone,
"overwrite_none"},
126 {SensorMockLevel::InterpolateMissing,
"interpolate_missing"},
127 {SensorMockLevel::OverwriteAll,
"overwrite_all"},
134 struct SensorMockConf : public cloe::Confable {
138 SensorMockConf() =
default;
140 virtual ~SensorMockConf() noexcept = default;
142 std::map<Target, Level> level = {{Target::MountingPosition, Level::OverwriteNone},
143 {Target::DetectedMovingObject, Level::OverwriteNone},
144 {Target::DetectedLaneBoundary, Level::OverwriteNone}};
146 CONFABLE_SCHEMA(SensorMockConf) {
149 {
"mounting_position",
cloe::Schema(&level[Target::MountingPosition],
"mock level for sensor mounting position")},
150 {
"detected_moving_objects",
cloe::Schema(&level[Target::DetectedMovingObject],
"mock level for detected moving objects")},
151 {
"detected_lane_boundaries",
cloe::Schema(&level[Target::DetectedLaneBoundary],
"mock level for detected lane boundaries")},
156 void to_json(cloe::Json& j)
const override {
157 j[
"mounting_position"] = level.at(SensorMockTarget::MountingPosition);
158 j[
"detected_moving_objects"] = level.at(SensorMockTarget::DetectedMovingObject);
159 j[
"detected_lane_boundaries"] = level.at(SensorMockTarget::DetectedLaneBoundary);
174 OsiOmniSensor(std::unique_ptr<OsiTransceiver>&& osi_transceiver, uint64_t owner_id)
199 virtual void process(
const osi3::Timestamp& timestamp);
214 virtual void process(
const osi3::SensorView& osi_sv);
222 virtual void process(
const bool has_veh_data,
223 const osi3::HostVehicleData& osi_hv,
224 const osi3::MovingObject& osi_ego);
232 virtual void process(
const bool has_eh,
233 const osi3::DetectedEntityHeader& osi_eh,
234 const osi3::DetectedMovingObject& osi_mo);
236 void mock_detected_lane_boundaries();
238 void from_osi_boundary_points(
const osi3::LaneBoundary& osi_lb,
cloe::LaneBoundary& lb);
265 const Eigen::Vector3d& ego_dimensions) = 0;
276 const Eigen::Vector3d& bbcenter_to_veh_origin,
const Eigen::Vector3d& ego_dimensions) = 0;
278 virtual void set_mock_conf(std::shared_ptr<const SensorMockConf> mock) = 0;
281 return mock_->level.at(trg_type);
311 std::shared_ptr<const SensorMockConf>
mock_{
nullptr};
Definition: lane_boundary.hpp:36
Definition: schema.hpp:175
Definition: osi_omni_sensor.hpp:166
std::unique_ptr< OsiGroundTruth > ground_truth_
Access to osi ground truth, e.g. for mock-ups.
Definition: osi_omni_sensor.hpp:296
OsiOmniSensor(std::unique_ptr< OsiTransceiver > &&osi_transceiver, uint64_t owner_id)
Definition: osi_omni_sensor.hpp:174
Eigen::Isometry3d osi_ego_pose_
Store ego pose (reference point is rear axle center, not ground level).
Definition: osi_omni_sensor.hpp:302
virtual void store_sensor_meta_data(const Eigen::Vector3d &bbcenter_to_veh_origin, const Eigen::Vector3d &ego_dimensions)=0
cloe::Duration osi_timestamp_to_simtime(const osi3::Timestamp ×tamp) const
Definition: osi_omni_sensor.cpp:150
virtual void store_ego_object(std::shared_ptr< cloe::Object > ego_obj)=0
virtual Eigen::Isometry3d get_static_mounting_position(const Eigen::Vector3d &bbcenter_to_veh_origin, const Eigen::Vector3d &ego_dimensions)=0
OsiOmniSensor(OsiTransceiver *osi_transceiver, uint64_t owner_id)
Definition: osi_omni_sensor.hpp:185
std::unique_ptr< OsiTransceiver > osi_comm_
Definition: osi_omni_sensor.hpp:293
uint64_t owner_id_
Id of the sensor's owner (ego).
Definition: osi_omni_sensor.hpp:299
virtual void store_lane_boundary(const cloe::LaneBoundary &lb)=0
virtual void process(const osi3::Timestamp ×tamp)
Definition: osi_omni_sensor.cpp:382
virtual void store_object(std::shared_ptr< cloe::Object > obj)=0
cloe::Duration init_time_
Initial simulation time.
Definition: osi_omni_sensor.hpp:308
Eigen::Isometry3d osi_sensor_pose_
Store sensor pose relative to the ego frame (rear axle center, not ground level).
Definition: osi_omni_sensor.hpp:305
std::shared_ptr< const SensorMockConf > mock_
Use alternative source for required data or overwrite incoming data, if requested.
Definition: osi_omni_sensor.hpp:311
virtual void step(const cloe::Sync &s, const bool &restart, cloe::Duration &sim_time)
Definition: osi_omni_sensor.cpp:355
Definition: osi_transceiver.hpp:50
std::chrono::nanoseconds Duration
Definition: cloe_fwd.hpp:36
#define ENUM_SERIALIZATION(xType, xMap)
Definition: enum.hpp:51
void from_osi_base_moving(const osi3::BaseMoving &osi_bm, cloe::Object &obj)
Definition: osi_omni_sensor.cpp:226
void from_osi_base_moving_alt(const osi3::BaseMoving &osi_bm, const osi3::BaseMoving &osi_bm_gt, cloe::Object &obj)
Definition: osi_omni_sensor.cpp:244
void transform_obj_coord_from_osi_data(const Eigen::Isometry3d &sensor_pose, const Eigen::Vector3d &dimensions_gt, cloe::Object &obj)
Definition: osi_omni_sensor.cpp:325
void from_osi_host_vehicle_data(const osi3::HostVehicleData &osi_hv, cloe::Object &obj)
Definition: osi_omni_sensor.cpp:158
cloe::Duration osi_timestamp_to_time(const osi3::Timestamp ×tamp)
Definition: osi_omni_sensor.cpp:145
SensorMockTarget
Definition: osi_omni_sensor.hpp:112
Eigen::Vector3d osi_vehicle_attrib_rear_offset_to_vector3d(const osi3::MovingObject::VehicleAttributes &osi_va)
Definition: osi_utils.cpp:77
SensorMockLevel
Definition: osi_omni_sensor.hpp:121
Definition: object.hpp:51