34
34
35
35
#include < geometry_msgs/msg/point.hpp>
36
36
#include < sensor_msgs/msg/point_cloud2.hpp>
37
+ #include < rclcpp/macros.hpp>
37
38
38
39
namespace nav2_costmap_2d
39
40
{
40
41
41
42
/* *
42
43
* @brief Stores an observation in terms of a point cloud and the origin of the source
43
- * @note Tried to make members and constructor arguments const but the compiler would not accept the default
44
- * assignment operator for vector insertion!
45
44
*/
46
45
class Observation
47
46
{
48
47
public:
49
- /* *
50
- * @brief Creates an empty observation
51
- */
52
- Observation ()
53
- : cloud_(new sensor_msgs::msg::PointCloud2()), obstacle_max_range_(0.0 ), obstacle_min_range_(0.0 ),
54
- raytrace_max_range_ (0.0 ),
55
- raytrace_min_range_(0.0 )
56
- {
57
- }
58
- /* *
59
- * @brief A destructor
60
- */
61
- virtual ~Observation ()
62
- {
63
- delete cloud_;
64
- }
48
+ RCLCPP_SMART_PTR_DEFINITIONS (Observation)
65
49
66
50
/* *
67
- * @brief Copy assignment operator
68
- * @param obs The observation to copy
51
+ * @brief Creates an empty observation
69
52
*/
70
- Observation & operator =(const Observation & obs)
71
- {
72
- origin_ = obs.origin_ ;
73
- cloud_ = new sensor_msgs::msg::PointCloud2 (*(obs.cloud_ ));
74
- obstacle_max_range_ = obs.obstacle_max_range_ ;
75
- obstacle_min_range_ = obs.obstacle_min_range_ ;
76
- raytrace_max_range_ = obs.raytrace_max_range_ ;
77
- raytrace_min_range_ = obs.raytrace_min_range_ ;
53
+ Observation () = default ;
78
54
79
- return *this ;
80
- }
81
55
82
56
/* *
83
57
* @brief Creates an observation from an origin point and a point cloud
@@ -89,28 +63,16 @@ class Observation
89
63
* @param raytrace_min_range The range from which an observation should be able to clear via raytracing
90
64
*/
91
65
Observation (
92
- geometry_msgs::msg::Point & origin, const sensor_msgs::msg::PointCloud2 & cloud,
66
+ geometry_msgs::msg::Point origin, sensor_msgs::msg::PointCloud2 cloud,
93
67
double obstacle_max_range, double obstacle_min_range, double raytrace_max_range,
94
68
double raytrace_min_range)
95
- : origin_(origin), cloud_(new sensor_msgs::msg::PointCloud2 (cloud)),
69
+ : origin_(std::move( origin)) , cloud_(std::move (cloud)),
96
70
obstacle_max_range_ (obstacle_max_range), obstacle_min_range_(obstacle_min_range),
97
71
raytrace_max_range_(raytrace_max_range), raytrace_min_range_(
98
72
raytrace_min_range)
99
73
{
100
74
}
101
75
102
- /* *
103
- * @brief Copy constructor
104
- * @param obs The observation to copy
105
- */
106
- Observation (const Observation & obs)
107
- : origin_(obs.origin_), cloud_(new sensor_msgs::msg::PointCloud2(*(obs.cloud_))),
108
- obstacle_max_range_(obs.obstacle_max_range_), obstacle_min_range_(obs.obstacle_min_range_),
109
- raytrace_max_range_(obs.raytrace_max_range_),
110
- raytrace_min_range_(obs.raytrace_min_range_)
111
- {
112
- }
113
-
114
76
/* *
115
77
* @brief Creates an observation from a point cloud
116
78
* @param cloud The point cloud of the observation
@@ -120,15 +82,17 @@ class Observation
120
82
Observation (
121
83
const sensor_msgs::msg::PointCloud2 & cloud, double obstacle_max_range,
122
84
double obstacle_min_range)
123
- : cloud_(new sensor_msgs::msg::PointCloud2(cloud)), obstacle_max_range_(obstacle_max_range),
124
- obstacle_min_range_(obstacle_min_range),
125
- raytrace_max_range_(0.0 ), raytrace_min_range_(0.0 )
85
+ : cloud_(std::move(cloud)), obstacle_max_range_(obstacle_max_range),
86
+ obstacle_min_range_(obstacle_min_range)
126
87
{
127
88
}
128
89
129
- geometry_msgs::msg::Point origin_;
130
- sensor_msgs::msg::PointCloud2 * cloud_;
131
- double obstacle_max_range_, obstacle_min_range_, raytrace_max_range_, raytrace_min_range_;
90
+ geometry_msgs::msg::Point origin_{};
91
+ sensor_msgs::msg::PointCloud2 cloud_{};
92
+ double obstacle_max_range_{0 .};
93
+ double obstacle_min_range_{0 .};
94
+ double raytrace_max_range_{0 .};
95
+ double raytrace_min_range_{0 .};
132
96
};
133
97
134
98
} // namespace nav2_costmap_2d
0 commit comments