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/obs/CObservationBearingRange.h>
18 #include <mrpt/ros1bridge/pose.h>
19 #include <mrpt/ros1bridge/time.h>
20 #include <mrpt_msgs/ObservationRangeBearing.h>
22 
24  const mrpt_msgs::ObservationRangeBearing& _msg,
25  const mrpt::poses::CPose3D& _pose,
26  mrpt::obs::CObservationBearingRange& _obj)
27 
28 {
29  _obj.timestamp = mrpt::ros1bridge::fromROS(_msg.header.stamp);
30 
31  mrpt::poses::CPose3D cpose_obj;
32 
33  //_obj.stdError = _msg.sensor_std_range;
34  //_obj.sensorLabel = _msg.header.frame_id;
35  _obj.maxSensorDistance = _msg.max_sensor_distance;
36  _obj.minSensorDistance = _msg.min_sensor_distance;
37  _obj.sensor_std_yaw = _msg.sensor_std_yaw;
38  _obj.sensor_std_pitch = _msg.sensor_std_pitch;
39  _obj.sensor_std_range = _msg.sensor_std_range;
40 
41  if (_pose.empty())
42  {
43  _obj.setSensorPose(
44  mrpt::ros1bridge::fromROS(_msg.sensor_pose_on_robot));
45  }
46  else
47  {
48  _obj.setSensorPose(_pose);
49  }
50 
51  ASSERT_(_msg.sensed_data.size() >= 1);
52  const size_t N = _msg.sensed_data.size();
53 
54  _obj.sensedData.resize(N);
55 
56  for (std::size_t i_mrpt = 0; i_mrpt < N; i_mrpt++)
57  {
58  _obj.sensedData[i_mrpt].range = _msg.sensed_data[i_mrpt].range;
59  _obj.sensedData[i_mrpt].landmarkID = _msg.sensed_data[i_mrpt].id;
60  _obj.sensedData[i_mrpt].yaw = _msg.sensed_data[i_mrpt].yaw;
61  _obj.sensedData[i_mrpt].pitch = _msg.sensed_data[i_mrpt].pitch;
62  }
63  return true;
64 }
65 
67  const mrpt::obs::CObservationBearingRange& _obj,
68  mrpt_msgs::ObservationRangeBearing& _msg)
69 {
70  _msg.header.stamp = mrpt::ros1bridge::toROS(_obj.timestamp);
71 
72  _msg.sensor_pose_on_robot = mrpt::ros1bridge::toROS_Pose(_obj.sensorPose());
73 
74  _msg.max_sensor_distance = _obj.maxSensorDistance;
75  _msg.min_sensor_distance = _obj.minSensorDistance;
76  _msg.sensor_std_yaw = _obj.sensor_std_yaw;
77  _msg.sensor_std_pitch = _obj.sensor_std_pitch;
78  _msg.sensor_std_range = _obj.sensor_std_range;
79 
80  ASSERT_(_obj.sensedData.size() >= 1);
81  const size_t N = _obj.sensedData.size();
82 
83  _msg.sensed_data.resize(N);
84 
85  for (std::size_t i_msg = 0; i_msg < N; i_msg++)
86  {
87  _msg.sensed_data[i_msg].range = _obj.sensedData[i_msg].range;
88  _msg.sensed_data[i_msg].id = _obj.sensedData[i_msg].landmarkID;
89  _msg.sensed_data[i_msg].yaw = _obj.sensedData[i_msg].yaw;
90  _msg.sensed_data[i_msg].pitch = _obj.sensedData[i_msg].pitch;
91  }
92  return true;
93 }
94 
96  const mrpt::obs::CObservationBearingRange& _obj,
97  mrpt_msgs::ObservationRangeBearing& _msg, geometry_msgs::Pose& sensorPose)
98 {
99  toROS(_obj, _msg);
100  sensorPose = mrpt::ros1bridge::toROS_Pose(_obj.sensorPose());
101  return true;
102 }
bool toROS(const mrpt::obs::CObservationBeaconRanges &_obj, mrpt_msgs::ObservationRangeBeacon &_msg)
bool fromROS(const mrpt_msgs::ObservationRangeBeacon &_msg, const mrpt::poses::CPose3D &_pose, mrpt::obs::CObservationBeaconRanges &_obj)


mrpt_msgs_bridge
Author(s): José Luis Blanco-Claraco
autogenerated on Thu Jun 1 2023 03:07:04