38 namespace cloe_esmini {
52 auto osi_gnd_truth = std::make_shared<ESMiniOsiSensor>(
id, config.
filter_dist);
53 env_data_ = osi_gnd_truth;
54 osi_gnd_truth->set_name(
name +
"_osi_sensor");
58 cloe::CloeComponent::GROUNDTRUTH_EGO_SENSOR,
59 cloe::CloeComponent::DEFAULT_EGO_SENSOR);
63 cloe::CloeComponent::GROUNDTRUTH_WORLD_SENSOR,
64 cloe::CloeComponent::DEFAULT_WORLD_SENSOR);
69 return obj.pose.translation().norm() < fdist;
71 this->emplace_component(
72 std::make_shared<cloe::ObjectSensorFilter>(
73 this->get<cloe::ObjectSensor>(cloe::CloeComponent::DEFAULT_WORLD_SENSOR),
75 cloe::CloeComponent::DEFAULT_WORLD_SENSOR);
79 cloe::CloeComponent::GROUNDTRUTH_LANE_SENSOR,
80 cloe::CloeComponent::DEFAULT_LANE_SENSOR);
84 double min_dist = DBL_MAX;
85 for (uint64_t i = 1; i < lb.points.size(); ++i) {
86 const auto& pt0 = lb.points[i - 1];
87 const auto& pt1 = lb.points[i];
88 Eigen::Vector3d dpt = pt1 - pt0;
91 double dpt_abs = dpt.norm();
96 Eigen::Vector3d ptm = pt0 - (pt0.dot(dpt)) * dpt;
99 if (dpt.x() > dpt.y()) {
100 s = (ptm.x() - pt0.x()) / dpt.x();
102 s = (ptm.y() - pt0.y()) / dpt.y();
105 min_dist = std::min(min_dist, pt0.norm());
106 }
else if (s >= dpt_abs) {
107 min_dist = std::min(min_dist, pt1.norm());
109 min_dist = std::min(min_dist, ptm.norm());
113 min_dist = std::min(min_dist, pt0.norm());
116 return min_dist < fdist;
119 this->emplace_component(
120 std::make_shared<cloe::LaneBoundarySensorFilter>(
121 this->get<cloe::LaneBoundarySensor>(cloe::CloeComponent::DEFAULT_LANE_SENSOR),
123 cloe::CloeComponent::DEFAULT_LANE_SENSOR);
129 ego_control_ = std::make_shared<ESMiniEgoControl>(
id);
130 this->add_component(ego_control_,
131 cloe::CloeComponent::GROUNDTRUTH_LATLONG_ACTUATOR,
132 cloe::CloeComponent::DEFAULT_LATLONG_ACTUATOR);
143 this->ego_control_->step(s);
152 return env_data_->time();
162 std::shared_ptr<ESMiniEnvData> env_data_;
164 std::shared_ptr<ESMiniEgoControl> ego_control_{
nullptr};
const std::string & name() const
Definition: entity.hpp:67
Definition: lane_boundary.hpp:36
Definition: vehicle.hpp:106
Definition: esmini_sensor_components.hpp:30
Definition: esmini_sensor_components.hpp:62
Definition: esmini_sensor_components.hpp:48
Definition: esmini_vehicle.hpp:40
void esmini_step_ego_position(const cloe::Sync &s)
Definition: esmini_vehicle.hpp:141
cloe::Duration process(const cloe::Sync &sync) final
Definition: esmini_vehicle.hpp:158
ESMiniVehicle(uint64_t id, const std::string &name, const ESMiniVehicleConfig &config)
Definition: esmini_vehicle.hpp:50
cloe::Duration esmini_get_environment_data(const cloe::Sync &s)
Definition: esmini_vehicle.hpp:150
std::chrono::nanoseconds Duration
Definition: cloe_fwd.hpp:36
Definition: object.hpp:51
Definition: esmini_conf.hpp:37
double filter_dist
Only keep ground truth data within given distance.
Definition: esmini_conf.hpp:42
bool is_closed_loop
Externally controlled esmini vehicle.
Definition: esmini_conf.hpp:39