cnoid_ros_utils
ClockPublisherItem.h
Go to the documentation of this file.
1 /* Author: Masaki Murooka */
2 
3 #pragma once
4 
5 #include <cnoid/Archive>
6 #include <cnoid/Item>
7 #include <cnoid/SimulatorItem>
8 #include <cnoid/WorldItem>
9 
10 #include <rosgraph_msgs/msg/clock.hpp>
11 #include <rosgraph_msgs/msg/detail/clock__struct.hpp>
12 #include <rclcpp/rclcpp.hpp>
13 
14 namespace CnoidRosUtils
15 {
23 class ClockPublisherItem : public cnoid::Item
24 {
25 public:
26  static void initialize(cnoid::ExtensionManager * ext);
27 
28  inline static bool initialized_ = false;
29 
30 public:
32 
34 
36 
37 protected:
38  virtual cnoid::Item * doDuplicate() const override;
39 
40  virtual void doPutProperties(cnoid::PutPropertyFunction & putProperty) override;
41 
42  virtual bool store(cnoid::Archive & archive) override;
43 
44  virtual bool restore(const cnoid::Archive & archive) override;
45 
46  void setup();
47 
48  bool start();
49 
50  void stop();
51 
52  void onPostDynamics();
53 
54  int getPubSkip() const;
55 
56 protected:
57  cnoid::WorldItemPtr world_;
58  cnoid::SimulatorItemPtr sim_;
59 
60  std::set<std::string> hooked_sims_;
61 
63 
64  rclcpp::Node::SharedPtr nh_;
65  std::string clock_topic_name_ = "";
66  double pub_rate_ = 1000.0;
67  rclcpp::Publisher<rosgraph_msgs::msg::Clock>::SharedPtr clock_pub_;
68  bool use_sim_time_ = true;
69 
70  int sim_cnt_ = 0;
71  int pub_skip_ = 0;
72 };
73 } // namespace CnoidRosUtils
Plugin item to publish clock topic.
virtual bool store(cnoid::Archive &archive) override
virtual bool restore(const cnoid::Archive &archive) override
virtual void doPutProperties(cnoid::PutPropertyFunction &putProperty) override
virtual cnoid::Item * doDuplicate() const override
std::set< std::string > hooked_sims_
rclcpp::Publisher< rosgraph_msgs::msg::Clock >::SharedPtr clock_pub_
static void initialize(cnoid::ExtensionManager *ext)