16 #ifndef NAV2_LOOPBACK_SIM__CLOCK_PUBLISHER_HPP_
17 #define NAV2_LOOPBACK_SIM__CLOCK_PUBLISHER_HPP_
22 #include "nav2_ros_common/lifecycle_node.hpp"
23 #include "rclcpp/logger.hpp"
24 #include "rclcpp/publisher.hpp"
25 #include "rclcpp/time.hpp"
26 #include "rclcpp/timer.hpp"
27 #include "rosgraph_msgs/msg/clock.hpp"
29 namespace nav2_loopback_sim
47 nav2::LifecycleNode::WeakPtr node,
48 double speed_factor = 1.0);
74 nav2::LifecycleNode::WeakPtr node_;
75 rclcpp::Logger logger_;
77 rclcpp::Publisher<rosgraph_msgs::msg::Clock>::SharedPtr clock_pub_;
78 rclcpp::TimerBase::SharedPtr timer_;
80 static constexpr
double kResolution = 0.01;
81 static constexpr
double kMinWallPeriod = 0.001;
83 rclcpp::Time sim_time_;
84 std::chrono::steady_clock::time_point last_wall_time_;
Publishes simulated clock to /clock using wall time. Uses wall timers so that it works correctly even...
void start()
Start publishing /clock.
void setSpeedFactor(double speed_factor)
Update the simulation speed factor.
void resetTimer()
(Re)create the wall timer based on current speed_factor
void stop()
Stop publishing /clock.
ClockPublisher(nav2::LifecycleNode::WeakPtr node, double speed_factor=1.0)
Construct a ClockPublisher.
void timerCallback()
Wall-timer callback that advances sim time and publishes /clock.