14 #ifndef MOTION_TESTING_NODES__PERIODIC_PUBLISHER_HPP_ 15 #define MOTION_TESTING_NODES__PERIODIC_PUBLISHER_HPP_ 20 #include <rclcpp/rclcpp.hpp> 28 namespace motion_testing_nodes
46 while (m_msgs.size() > cfg.
count) {
50 for (
auto idx = m_msgs.size(); idx < cfg.
count; ++idx) {
51 m_msgs.emplace_back(
T{});
55 node.create_publisher<
T>(cfg.
topic, rclcpp::QoS{cfg.
count}.transient_local().reliable());
57 m_timer = node.create_wall_timer(
58 cfg.
period, [
this]() ->
void {
59 if (!m_msgs.empty()) {
60 const auto msg = m_msgs.front();
67 bool done() const noexcept {
return m_msgs.empty();}
69 void match(
const std::size_t min_subscribers)
const 76 typename rclcpp::Publisher<T>::SharedPtr m_pub{};
77 rclcpp::TimerBase::SharedPtr m_timer{};
83 #endif // MOTION_TESTING_NODES__PERIODIC_PUBLISHER_HPP_ T
Definition: catr_diff.py:22
std::string topic
Definition: periodic_publisher.hpp:35
Definition: periodic_publisher.hpp:31
Definition: periodic_publisher.hpp:39
void match(const std::size_t min_subscribers) const
Definition: periodic_publisher.hpp:69
PeriodicPublisher(rclcpp::Node &node, const PeriodCountTopic &cfg, std::list< T > msgs={})
Definition: periodic_publisher.hpp:42
MOTION_TESTING_NODES_PUBLIC std::chrono::nanoseconds wait_for_matched(const rclcpp::PublisherBase &pub, const std::size_t minimum_match_count, const std::chrono::nanoseconds timeout=std::chrono::seconds{5LL}, const std::chrono::nanoseconds poll_period=std::chrono::milliseconds{1LL})
Definition: wait_for_matched.cpp:24
Definition: controller_base.hpp:30
std::size_t count
Definition: periodic_publisher.hpp:34
bool done() const noexcept
Definition: periodic_publisher.hpp:67
std::chrono::nanoseconds period
Definition: periodic_publisher.hpp:33