30 if (object_ptr ==
nullptr || pb_msg ==
nullptr) {
34 pb_msg->set_id(object_ptr->track_id);
35 pb_msg->set_theta(object_ptr->theta);
38 obj_center->set_x(object_ptr->center(0));
39 obj_center->set_y(object_ptr->center(1));
40 obj_center->set_z(object_ptr->center(2));
43 obj_velocity->set_x(object_ptr->velocity(0));
44 obj_velocity->set_y(object_ptr->velocity(1));
45 obj_velocity->set_z(object_ptr->velocity(2));
48 obj_acceleration->set_x(object_ptr->acceleration(0));
49 obj_acceleration->set_y(object_ptr->acceleration(1));
50 obj_acceleration->set_z(object_ptr->acceleration(2));
52 pb_msg->set_length(object_ptr->size(0));
53 pb_msg->set_width(object_ptr->size(1));
54 pb_msg->set_height(object_ptr->size(2));
56 for (
size_t i = 0; i < object_ptr->polygon.size(); ++i) {
57 auto &pt = object_ptr->polygon.at(i);
64 for (
auto &point : object_ptr->lidar_supplement.cloud.points()) {
65 pb_msg->add_point_cloud(point.x);
66 pb_msg->add_point_cloud(point.y);
67 pb_msg->add_point_cloud(point.z);
71 obj_anchor_point->set_x(object_ptr->anchor_point(0));
72 obj_anchor_point->set_y(object_ptr->anchor_point(1));
73 obj_anchor_point->set_z(object_ptr->anchor_point(2));
75 BBox2D *obj_bbox2d = pb_msg->mutable_bbox2d();
77 obj_bbox2d->set_xmin(box.
xmin);
78 obj_bbox2d->set_ymin(box.
ymin);
79 obj_bbox2d->set_xmax(box.
xmax);
80 obj_bbox2d->set_ymax(box.
ymax);
82 for (
size_t i = 0; i < 3; i++) {
83 for (
size_t j = 0; j < 3; j++) {
84 pb_msg->add_position_covariance(object_ptr->center_uncertainty(i, j));
85 pb_msg->add_velocity_covariance(object_ptr->velocity_uncertainty(i, j));
86 pb_msg->add_acceleration_covariance(
87 object_ptr->acceleration_uncertainty(i, j));
91 pb_msg->set_tracking_time(object_ptr->tracking_time);
95 pb_msg->set_timestamp(object_ptr->latest_tracked_time);
97 object_ptr->lidar_supplement.semantic_type));
99 constexpr float kFloatMax = std::numeric_limits<float>::max();
100 if (object_ptr->lidar_supplement.height_above_ground != kFloatMax) {
101 pb_msg->set_height_above_ground(
102 object_ptr->lidar_supplement.height_above_ground);
104 pb_msg->set_height_above_ground(std::numeric_limits<double>::quiet_NaN());
108 LightStatus *light_status = pb_msg->mutable_light_status();
120 if (object_ptr->fusion_supplement.on_use) {
121 for (
const auto &measurement : object_ptr->fusion_supplement.measurements) {
123 pb_measurement->set_sensor_id(measurement.sensor_id);
124 pb_measurement->set_id(measurement.track_id);
127 pb_position->set_x(measurement.center(0));
128 pb_position->set_y(measurement.center(1));
129 pb_position->set_z(measurement.center(2));
131 pb_measurement->set_theta(measurement.theta);
132 pb_measurement->set_length(measurement.size(0));
133 pb_measurement->set_width(measurement.size(1));
134 pb_measurement->set_height(measurement.size(2));
137 pb_velocity->set_x(measurement.velocity(0));
138 pb_velocity->set_y(measurement.velocity(1));
139 pb_velocity->set_z(measurement.velocity(2));
141 pb_measurement->set_type(
144 pb_measurement->set_timestamp(measurement.timestamp);
146 BBox2D *pb_box = pb_measurement->mutable_box();
147 pb_box->set_xmin(measurement.box.xmin);
148 pb_box->set_ymin(measurement.box.ymin);
149 pb_box->set_xmax(measurement.box.xmax);
150 pb_box->set_ymax(measurement.box.ymax);