denm_render_object.cpp
Go to the documentation of this file.
2 
3 namespace etsi_its_msgs
4 {
5 namespace displays
6 {
7 
8  DENMRenderObject::DENMRenderObject(etsi_its_denm_msgs::msg::DENM denm) {
9 
10  int zone;
11  bool northp;
12  geometry_msgs::msg::PointStamped p = etsi_its_denm_msgs::access::getUTMPosition(denm, zone, northp);
13  header.frame_id = p.header.frame_id;
14 
15  uint64_t nanosecs = etsi_its_denm_msgs::access::getUnixNanosecondsFromReferenceTime(etsi_its_denm_msgs::access::getReferenceTime(denm));
16  header.stamp = rclcpp::Time(nanosecs);
17 
18  station_id = etsi_its_denm_msgs::access::getStationID(denm);
19  if(denm.denm.situation_is_present) {
20  cause_code_type = etsi_its_denm_msgs::access::getCauseCodeType(denm);
21  sub_cause_code_type = etsi_its_denm_msgs::access::getSubCauseCodeType(denm);
22  } else {
23  cause_code_type = "Not present";
24  sub_cause_code_type = "Not present";
25  }
26  double heading; // 0.0° equals WGS84 North, 90.0° equals WGS84 East, 180.0° equals WGS84 South and 270.0° equals WGS84 West
27  if(denm.denm.location_is_present && etsi_its_denm_msgs::access::getIsHeadingPresent(denm)) {
28  heading = (90-etsi_its_denm_msgs::access::getHeading(denm))*M_PI/180.0;
29  }
30  else {
31  heading = 0*M_PI/180.0;
32  }
33  while(heading<0) heading+=2*M_PI;
34  pose.position = p.point;
35  tf2::Quaternion orientation;
36  orientation.setRPY(0.0, 0.0, heading);
37  pose.orientation = tf2::toMsg(orientation);
38 
39  if(denm.denm.location_is_present && etsi_its_denm_msgs::access::getIsSpeedPresent(denm)) {
40  speed = etsi_its_denm_msgs::access::getSpeed(denm);
41  }
42  else {
43  speed = 0;
44  }
45  }
46 
48  bool valid = true;
49  valid = valid && rviz_common::validateFloats(pose);
50  valid = valid && rviz_common::validateFloats(speed);
51  return valid;
52  }
53 
54  double DENMRenderObject::getAge(rclcpp::Time now) {
55  return (now-header.stamp).seconds();
56  }
57 
58  std_msgs::msg::Header DENMRenderObject::getHeader() {
59  return header;
60  }
61 
63  return station_id;
64  }
65 
66  geometry_msgs::msg::Pose DENMRenderObject::getPose() {
67  return pose;
68  }
69 
71  return speed;
72  }
73 
75  return cause_code_type;
76  }
77 
79  return sub_cause_code_type;
80  }
81 
82 } // namespace displays
83 } // namespace etsi_its_msgs
etsi_its_msgs::displays::DENMRenderObject::station_id
int station_id
Definition: denm_render_object.hpp:99
denm_render_object.hpp
etsi_its_msgs::displays::DENMRenderObject::getPose
geometry_msgs::msg::Pose getPose()
Get pose of DENM-object.
Definition: denm_render_object.cpp:66
etsi_its_msgs::displays::DENMRenderObject::getStationID
int getStationID()
Get the StationID of DENM-object.
Definition: denm_render_object.cpp:62
etsi_its_msgs::displays::DENMRenderObject::validateFloats
bool validateFloats()
This function validates all float variables that are part of a DENMRenderObject.
Definition: denm_render_object.cpp:47
etsi_its_msgs::displays::DENMRenderObject::getCauseCode
std::string getCauseCode()
Get the Cause Code object.
Definition: denm_render_object.cpp:74
etsi_its_msgs::displays::DENMRenderObject::pose
geometry_msgs::msg::Pose pose
Definition: denm_render_object.hpp:103
etsi_its_msgs::displays::DENMRenderObject::getSpeed
double getSpeed()
Get speed of DENM-object.
Definition: denm_render_object.cpp:70
etsi_its_msgs::displays::DENMRenderObject::getHeader
std_msgs::msg::Header getHeader()
Get header of DENM-object.
Definition: denm_render_object.cpp:58
etsi_its_msgs::displays::DENMRenderObject::header
std_msgs::msg::Header header
Definition: denm_render_object.hpp:98
etsi_its_msgs::displays::DENMRenderObject::sub_cause_code_type
std::string sub_cause_code_type
Definition: denm_render_object.hpp:102
etsi_its_msgs::displays::DENMRenderObject::speed
double speed
Definition: denm_render_object.hpp:105
etsi_its_msgs::displays::DENMRenderObject::getAge
double getAge(rclcpp::Time now)
Get age of DENM-object.
Definition: denm_render_object.cpp:54
etsi_its_msgs::displays::DENMRenderObject::DENMRenderObject
DENMRenderObject(etsi_its_denm_msgs::msg::DENM denm)
Definition: denm_render_object.cpp:8
etsi_its_msgs
Definition: cam_display.hpp:51
etsi_its_msgs::displays::DENMRenderObject::cause_code_type
std::string cause_code_type
Definition: denm_render_object.hpp:101
etsi_its_msgs::displays::DENMRenderObject::getSubCauseCode
std::string getSubCauseCode()
Get the Sub Cause Code object.
Definition: denm_render_object.cpp:78


etsi_its_rviz_plugins
Author(s): Jean-Pierre Busch , Guido Küppers , Lennart Reiher
autogenerated on Sun May 18 2025 02:29:25