landmark.cpp
Go to the documentation of this file.
1 /* +------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | http://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2018, Individual contributors, see AUTHORS file |
6  | See: http://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See details in http://www.mrpt.org/License |
8  +------------------------------------------------------------------------+ */
9 
10 /*
11  * File: landmark.cpp
12  * Author: Vladislav Tananaev
13  *
14  */
15 
16 #include <geometry_msgs/Pose.h>
17 #include <mrpt/ros1bridge/time.h>
18 #include <mrpt/ros1bridge/pose.h>
19 #include <mrpt_msgs/ObservationRangeBearing.h>
20 #include "tf/transform_datatypes.h"
22 #include "mrpt_bridge/landmark.h"
23 #include <mrpt/obs/CObservationBearingRange.h>
24 
25 using namespace mrpt::obs;
26 
27 namespace mrpt_bridge
28 {
29 bool convert(
31  const mrpt::poses::CPose3D& _pose, CObservationBearingRange& _obj)
32 
33 {
34  _obj.timestamp = mrpt::ros1bridge::fromROS(_msg.header.stamp);
35 
36  mrpt::poses::CPose3D cpose_obj;
37 
38  //_obj.stdError = _msg.sensor_std_range;
39  //_obj.sensorLabel = _msg.header.frame_id;
40  _obj.maxSensorDistance = _msg.max_sensor_distance;
41  _obj.minSensorDistance = _msg.min_sensor_distance;
42  _obj.sensor_std_yaw = _msg.sensor_std_yaw;
43  _obj.sensor_std_pitch = _msg.sensor_std_pitch;
44  _obj.sensor_std_range = _msg.sensor_std_range;
45 
46  if (_pose.empty())
47  {
48  _obj.setSensorPose(
49  mrpt::ros1bridge::fromROS(_msg.sensor_pose_on_robot));
50  }
51  else
52  {
53  _obj.setSensorPose(_pose);
54  }
55 
56  ASSERT_(_msg.sensed_data.size() >= 1);
57  const size_t N = _msg.sensed_data.size();
58 
59  _obj.sensedData.resize(N);
60 
61  for (std::size_t i_mrpt = 0; i_mrpt < N; i_mrpt++)
62  {
63  _obj.sensedData[i_mrpt].range = _msg.sensed_data[i_mrpt].range;
64  _obj.sensedData[i_mrpt].landmarkID = _msg.sensed_data[i_mrpt].id;
65  _obj.sensedData[i_mrpt].yaw = _msg.sensed_data[i_mrpt].yaw;
66  _obj.sensedData[i_mrpt].pitch = _msg.sensed_data[i_mrpt].pitch;
67  }
68  return true;
69 }
70 
71 bool convert(
72  const CObservationBearingRange& _obj,
74 {
75  _msg.header.stamp = mrpt::ros1bridge::toROS(_obj.timestamp);
76 
77  _msg.sensor_pose_on_robot = mrpt::ros1bridge::toROS_Pose(_obj.sensorPose());
78 
79  _msg.max_sensor_distance = _obj.maxSensorDistance;
80  _msg.min_sensor_distance = _obj.minSensorDistance;
81  _msg.sensor_std_yaw = _obj.sensor_std_yaw;
82  _msg.sensor_std_pitch = _obj.sensor_std_pitch;
83  _msg.sensor_std_range = _obj.sensor_std_range;
84 
85  ASSERT_(_obj.sensedData.size() >= 1);
86  const size_t N = _obj.sensedData.size();
87 
88  _msg.sensed_data.resize(N);
89 
90  for (std::size_t i_msg = 0; i_msg < N; i_msg++)
91  {
92  _msg.sensed_data[i_msg].range = _obj.sensedData[i_msg].range;
93  _msg.sensed_data[i_msg].id = _obj.sensedData[i_msg].landmarkID;
94  _msg.sensed_data[i_msg].yaw = _obj.sensedData[i_msg].yaw;
95  _msg.sensed_data[i_msg].pitch = _obj.sensedData[i_msg].pitch;
96  }
97  return true;
98 }
99 
100 bool convert(
101  const CObservationBearingRange& _obj,
103 {
104  convert(_obj, _msg);
105  _pose = mrpt::ros1bridge::toROS_Pose(_obj.sensorPose());
106  return true;
107 }
108 } // namespace mrpt_bridge
bool convert(const CObservationBearingRange &_obj, mrpt_msgs::ObservationRangeBearing &_msg, geometry_msgs::Pose &_pose)
Definition: landmark.cpp:100
File includes methods for converting CNetworkOfPoses*DInf <=> NetworkOfPoses message types...


mrpt_bridge
Author(s): Markus Bader , Raphael Zack
autogenerated on Thu May 12 2022 02:26:47