32 station_id_ = etsi_its_cpm_ts_msgs::access::getStationID(cpm);
35 uint64_t nanosecs = etsi_its_cpm_ts_msgs::access::getUnixNanosecondsFromReferenceTime(etsi_its_cpm_ts_msgs::access::getReferenceTime(cpm));
36 header_.stamp = rclcpp::Time(nanosecs);
39 int n_perceived_objects = etsi_its_cpm_ts_msgs::access::getNumberOfPerceivedObjects(cpm);
40 for (
int i = 0; i < n_perceived_objects; i++) {
41 etsi_its_cpm_ts_msgs::msg::PerceivedObject perceived_obj = etsi_its_cpm_ts_msgs::access::getPerceivedObject(
42 etsi_its_cpm_ts_msgs::access::getPerceivedObjectContainer(cpm), i);
43 geometry_msgs::msg::PointStamped utm_position = etsi_its_cpm_ts_msgs::access::getUTMPositionOfPerceivedObject(cpm, perceived_obj);
46 obj.
pose.position = utm_position.point;
47 if(perceived_obj.angles_is_present) obj.
pose.orientation = etsi_its_cpm_ts_msgs::access::getOrientationOfPerceivedObject(perceived_obj);
48 if(perceived_obj.object_dimension_x_is_present && perceived_obj.object_dimension_y_is_present && perceived_obj.object_dimension_z_is_present) {
49 obj.
dimensions = etsi_its_cpm_ts_msgs::access::getDimensionsOfPerceivedObject(perceived_obj);
51 if(perceived_obj.velocity_is_present) obj.
velocity = etsi_its_cpm_ts_msgs::access::getCartesianVelocityOfPerceivedObject(perceived_obj);
58 for (
size_t i = 0; i <
objects_.size(); i++) {
59 valid = valid && rviz_common::validateFloats(
objects_[i].pose);
60 valid = valid && rviz_common::validateFloats(
objects_[i].dimensions);
61 valid = valid && rviz_common::validateFloats(
objects_[i].velocity);