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/rclcpp.hpp"
24 #include "rosgraph_msgs/msg/clock.hpp"
26 namespace nav2_loopback_sim
44 nav2::LifecycleNode::WeakPtr node,
45 double speed_factor = 1.0);
71 nav2::LifecycleNode::WeakPtr node_;
72 rclcpp::Logger logger_;
74 rclcpp::Publisher<rosgraph_msgs::msg::Clock>::SharedPtr clock_pub_;
75 rclcpp::TimerBase::SharedPtr timer_;
77 static constexpr
double kResolution = 0.01;
78 static constexpr
double kMinWallPeriod = 0.001;
80 rclcpp::Time sim_time_;
81 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.