Skip to content

Commit 252df96

Browse files
committed
Refine msg usage
Signed-off-by: methylDragon <methylDragon@gmail.com>
1 parent 3cbb59c commit 252df96

File tree

13 files changed

+61
-51
lines changed

13 files changed

+61
-51
lines changed

fuse_constraints/test/test_absolute_orientation_3d_stamped_euler_constraint.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
#include <fuse_core/eigen_gtest.hpp>
3737
#include <fuse_core/uuid.hpp>
3838
#include <fuse_variables/orientation_3d_stamped.h>
39-
#include <geometry_msgs/msg/Quaternion.hpp>
4039

4140
#include <ceres/covariance.h>
4241
#include <ceres/problem.h>

fuse_core/include/fuse_core/graph_deserializer.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ class GraphDeserializer
7474
* @return A unique_ptr to a derived Graph object
7575
*/
7676
inline fuse_core::Graph::UniquePtr deserialize(
77-
const fuse_msgs::msg::SerializedGraph::ConstSharedPtr msg) const
77+
const fuse_msgs::msg::SerializedGraph::SharedPtr msg) const
7878
{
7979
return deserialize(*msg);
8080
}

fuse_core/include/fuse_core/throttled_callback.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,11 +198,11 @@ class ThrottledCallback
198198
/**
199199
* @brief Throttled callback for ROS messages
200200
*
201-
* @tparam M The ROS message type, which should have the M::ConstPtr nested type
201+
* @tparam M The ROS message type
202202
*/
203203
template<class M>
204204
using ThrottledMessageCallback =
205-
ThrottledCallback<std::function<void (const typename M::ConstPtr &)>>;
205+
ThrottledCallback<std::function<void (const M &)>>;
206206

207207
} // namespace fuse_core
208208

fuse_core/include/fuse_core/transaction_deserializer.hpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,11 @@ class TransactionDeserializer
7575
* @param[IN] msg The SerializedTransaction message to be deserialized
7676
* @return A fuse Transaction object
7777
*/
78-
fuse_core::Transaction deserialize(const fuse_msgs::msg::SerializedTransaction::SharedPtr msg)
79-
const;
78+
inline fuse_core::Transaction::UniquePtr deserialize(
79+
const fuse_msgs::msg::SerializedTransaction::SharedPtr msg) const
80+
{
81+
return deserialize(*msg);
82+
}
8083

8184
/**
8285
* @brief Deserialize a SerializedTransaction message into a fuse Transaction object.
@@ -87,7 +90,8 @@ class TransactionDeserializer
8790
* @param[IN] msg The SerializedTransaction message to be deserialized
8891
* @return A fuse Transaction object
8992
*/
90-
fuse_core::Transaction deserialize(const fuse_msgs::msg::SerializedTransaction & msg) const;
93+
fuse_core::Transaction::UniquePtr deserialize(
94+
const fuse_msgs::msg::SerializedTransaction & msg) const;
9195

9296
private:
9397
//! Pluginlib class loader for Variable types

fuse_core/package.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
<buildtool_depend>ament_cmake</buildtool_depend>
1616

17+
<depend>boost</depend>
1718
<depend>eigen</depend>
1819
<depend>libceres-dev</depend>
1920
<depend>libgoogle-glog-dev</depend>

fuse_core/src/fuse_echo.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ class FuseEcho : public rclcpp::Node
8787
std::cout << "TRANSACTION:" << std::endl;
8888
std::cout << "received at: " << this->now().seconds() << std::endl;
8989
auto transaction = transaction_deserializer_.deserialize(msg);
90-
transaction.print();
90+
transaction->print();
9191
}
9292
};
9393

fuse_core/src/transaction_deserializer.cpp

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -71,24 +71,18 @@ TransactionDeserializer::TransactionDeserializer()
7171
}
7272
}
7373

74-
fuse_core::Transaction TransactionDeserializer::deserialize(
75-
const fuse_msgs::msg::SerializedTransaction::ConstSharedPtr msg) const
76-
{
77-
return deserialize(*msg);
78-
}
79-
80-
fuse_core::Transaction TransactionDeserializer::deserialize(
74+
fuse_core::Transaction::UniquePtr TransactionDeserializer::deserialize(
8175
const fuse_msgs::msg::SerializedTransaction & msg) const
8276
{
8377
// The Transaction object is not a plugin and has no derived types. That makes it much easier to
8478
// use.
85-
auto transaction = fuse_core::Transaction();
79+
auto transaction = fuse_core::Transaction::UniquePtr();
8680
// Deserialize the msg.data field into the transaction.
8781
// This will throw if something goes wrong in the deserialization.
8882
boost::iostreams::stream<fuse_core::MessageBufferStreamSource> stream(msg.data);
8983
{
9084
BinaryInputArchive archive(stream);
91-
transaction.deserialize(archive);
85+
transaction->deserialize(archive);
9286
}
9387
return transaction;
9488
}

fuse_core/test/test_throttled_callback.cpp

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ class PointPublisher : public rclcpp::Node
9696
}
9797

9898
private:
99-
rclcpp::Publisher<geometry_msgs::msg::Point>::SharedPtr publisher_; //!< The publisher
100-
double frequency_{10.0}; //!< The publish rate frequency
99+
rclcpp::Publisher<geometry_msgs::msg::Point>::SharedPtr publisher_; //!< The publisher
100+
double frequency_{10.0}; //!< The publish rate frequency
101101
};
102102

103103
/**
@@ -127,7 +127,7 @@ class PointSensorModel : public rclcpp::Node
127127
subscription_ = this->create_subscription<geometry_msgs::msg::Point>(
128128
"point", 10,
129129
std::bind(
130-
&PointThrottledCallback::callback<const geometry_msgs::msg::Point::ConstSharedPtr &>,
130+
&PointThrottledCallback::callback<const geometry_msgs::msg::Point &>,
131131
&throttled_callback_, std::placeholders::_1)
132132
);
133133
}
@@ -167,7 +167,7 @@ class PointSensorModel : public rclcpp::Node
167167
*
168168
* @return The last message kept. It would be nullptr if no message has been kept so far
169169
*/
170-
const geometry_msgs::msg::Point::ConstSharedPtr getLastKeptMessage() const
170+
const geometry_msgs::msg::Point::SharedPtr getLastKeptMessage() const
171171
{
172172
return last_kept_message_;
173173
}
@@ -179,19 +179,26 @@ class PointSensorModel : public rclcpp::Node
179179
*
180180
* @param[in] msg A geometry_msgs::msg::Point message
181181
*/
182-
void keepCallback(const geometry_msgs::msg::Point::ConstSharedPtr & msg)
182+
void keepCallback(const geometry_msgs::msg::Point & msg)
183183
{
184184
++kept_messages_;
185-
last_kept_message_ = std::move(msg);
185+
186+
if (!last_kept_message_) {
187+
last_kept_message_ = std::make_shared<geometry_msgs::msg::Point>();
188+
}
189+
190+
last_kept_message_->x = msg.x;
191+
last_kept_message_->y = msg.y;
192+
last_kept_message_->z = msg.z;
186193
}
187194

188195
/**
189196
* @brief Drop callback, that counts the number of times it has been called
190197
*
191198
* @param[in] msg A geometry_msgs::msg::Point message (not used)
192199
*/
193-
// NOTE(CH3): The ConstSharedPtr here is necessary to allow binding the throttled callback
194-
void dropCallback(const geometry_msgs::msg::Point::ConstSharedPtr & /*msg*/)
200+
// NOTE(CH3): The msg arg here is necessary to allow binding the throttled callback
201+
void dropCallback(const geometry_msgs::msg::Point & /*msg*/)
195202
{
196203
++dropped_messages_;
197204
}
@@ -203,7 +210,9 @@ class PointSensorModel : public rclcpp::Node
203210

204211
size_t kept_messages_{0}; //!< Messages kept
205212
size_t dropped_messages_{0}; //!< Messages dropped
206-
geometry_msgs::msg::Point::ConstSharedPtr last_kept_message_; //!< The last message kept
213+
214+
// We use a SharedPtr to check for nullptr just for this test
215+
geometry_msgs::msg::Point::SharedPtr last_kept_message_; //!< The last message kept
207216
};
208217

209218
class TestThrottledCallback : public ::testing::Test

fuse_models/include/fuse_models/imu_2d.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ class Imu2D : public fuse_core::AsyncSensorModel
141141

142142
ParameterType params_;
143143

144-
std::unique_ptr<geometry_msgs::msg::PoseWithCovarianceStamped> previous_pose_;
144+
geometry_msgs::msg::PoseWithCovarianceStamped::UniquePtr previous_pose_;
145145

146146
tf2_ros::Buffer tf_buffer_;
147147

fuse_models/include/fuse_models/odometry_2d.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ class Odometry2D : public fuse_core::AsyncSensorModel
137137

138138
ParameterType params_;
139139

140-
std::unique_ptr<geometry_msgs::msg::PoseWithCovarianceStamped> previous_pose_;
140+
geometry_msgs::msg::PoseWithCovarianceStamped::UniquePtr previous_pose_;
141141

142142
tf2_ros::Buffer tf_buffer_;
143143

0 commit comments

Comments
 (0)