28 #include <Eigen/Geometry>
32 #include <cloe/utility/osi_message_handler.hpp>
33 #include <cloe/utility/osi_transceiver.hpp>
35 #include "vtd_conf.hpp"
51 VtdOsiSensor(std::unique_ptr<cloe::utility::OsiTransceiver>&& osi_transceiver, uint64_t owner_id)
52 : OsiMsgHandler(std::move(osi_transceiver), owner_id),
VtdSensorData(
"osi_sensor") {
56 void configure(
const VtdSensorConfig& cfg);
59 VtdSensorData::clear_cache();
65 "VtdOsiSensor: Sensor data at wrong timestamp. Expected: {}. Actual: {}.",
71 void store_object(std::shared_ptr<cloe::Object> obj)
override {
world_objects_.push_back(obj); }
75 void store_ego_object(std::shared_ptr<cloe::Object> ego_obj)
override {
ego_object_ = ego_obj; }
77 void store_sensor_meta_data(
const Eigen::Vector3d& bbcenter_to_veh_origin,
78 const Eigen::Vector3d& ego_dimensions)
override {
80 Eigen::Vector3d translation = osi_sensor_pose_.translation();
82 translation(2) = translation(2) + (0.5 * ego_dimensions(2) + bbcenter_to_veh_origin(2));
83 mount_.translation() = translation;
91 const Eigen::Vector3d& ego_dimensions)
override {
97 Eigen::Quaterniond quaternion = cloe::utility::quaternion_from_rpy(
98 vtd_mnt_ori_drpy_(0), vtd_mnt_ori_drpy_(1), vtd_mnt_ori_drpy_(2));
102 translation(2) = translation(2) - (0.5 * ego_dimensions(2) + bbcenter_to_veh_origin(2));
103 return cloe::utility::pose_from_rotation_translation(quaternion, translation);
109 void set_mock_conf(std::shared_ptr<const cloe::utility::SensorMockConf> mock)
override {
115 VtdSensorData::clear_cache();
119 friend void to_json(cloe::Json& j,
const VtdOsiSensor& s) {
122 {
"osi_connection", s.osi_comm_},
129 Eigen::Vector3d vtd_mnt_ori_drpy_;
Definition: lane_boundary.hpp:36
virtual Duration time() const =0
virtual Duration step_width() const =0
Definition: osi_sensor_component.hpp:47
Eigen::Isometry3d get_static_mounting_position(const Eigen::Vector3d &bbcenter_to_veh_origin, const Eigen::Vector3d &ego_dimensions) override
Definition: osi_sensor_component.hpp:90
void set_mock_conf(std::shared_ptr< const cloe::utility::SensorMockConf > mock) override
Definition: osi_sensor_component.hpp:109
Eigen::Vector3d vtd_mnt_pos_dxyz_
Sensor mounting position obtained from config (in VTD vehicle coordinate frame).
Definition: osi_sensor_component.hpp:128
void reset() override
Definition: osi_sensor_component.hpp:114
void step(const cloe::Sync &s) override
Definition: osi_sensor_component.hpp:58
Definition: vtd_sensor_data.hpp:39
Eigen::Isometry3d mount_
Sensor mounting position and orientation.
Definition: vtd_sensor_data.hpp:124
std::shared_ptr< cloe::Object > ego_object_
ego object information from last processed frame.
Definition: vtd_sensor_data.hpp:133
cloe::Duration sensor_data_time_
Simulation time from last processed sensor message.
Definition: vtd_sensor_data.hpp:118
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
cloe::Duration sensor_data_time_next_
Expected simulation time for next sensor message.
Definition: vtd_sensor_data.hpp:121
cloe::Objects world_objects_
World objects from last processed frame.
Definition: vtd_sensor_data.hpp:130
cloe::LaneBoundaries lanes_
Lane id-to-boundary-map.
Definition: vtd_sensor_data.hpp:139