cnoid_ros_utils
PosePublisherItem.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 <geometry_msgs/msg/twist_stamped.hpp>
11 #include <tf2_eigen/tf2_eigen.hpp>
12 #include <tf2_ros/transform_broadcaster.h>
13 #include <rclcpp/rclcpp.hpp>
14 
15 namespace CnoidRosUtils
16 {
31 class PosePublisherItem : public cnoid::Item
32 {
33 public:
34  static void initialize(cnoid::ExtensionManager * ext);
35 
36  inline static bool initialized_ = false;
37 
38 public:
40 
42 
44 
45 protected:
46  virtual cnoid::Item * doDuplicate() const override;
47 
48  virtual void doPutProperties(cnoid::PutPropertyFunction & putProperty) override;
49 
50  virtual bool store(cnoid::Archive & archive) override;
51 
52  virtual bool restore(const cnoid::Archive & archive) override;
53 
54  void setup();
55 
56  bool start();
57 
58  void stop();
59 
60  void onPostDynamics();
61 
62  int getPubSkip() const;
63 
64 protected:
65  cnoid::WorldItemPtr world_;
66  cnoid::SimulatorItemPtr sim_;
67 
68  std::set<std::string> hooked_sims_;
69 
71 
72  cnoid::BodyItem * body_item_;
73 
74  std::string link_name_ = "";
75 
76  bool output_tf_ = false;
77 
78  rclcpp::Node::SharedPtr nh_;
79  std::string frame_id_ = "";
80  std::string pose_topic_name_ = "";
81  std::string vel_topic_name_ = "";
82  std::string tf_child_frame_id_ = "";
83  double pub_rate_ = 30.0;
84  rclcpp::Publisher<geometry_msgs::msg::PoseStamped>::SharedPtr pose_pub_;
85  rclcpp::Publisher<geometry_msgs::msg::TwistStamped>::SharedPtr vel_pub_;
86  std::shared_ptr<tf2_ros::TransformBroadcaster> tf_br_;
87 
88  int sim_cnt_ = 0;
89  int pub_skip_ = 0;
90 };
91 } // namespace CnoidRosUtils
Plugin item to publish topics and broadcast TF of pose and velocity of the model.
rclcpp::Publisher< geometry_msgs::msg::PoseStamped >::SharedPtr pose_pub_
std::set< std::string > hooked_sims_
virtual bool store(cnoid::Archive &archive) override
virtual void doPutProperties(cnoid::PutPropertyFunction &putProperty) override
virtual bool restore(const cnoid::Archive &archive) override
virtual cnoid::Item * doDuplicate() const override
rclcpp::Publisher< geometry_msgs::msg::TwistStamped >::SharedPtr vel_pub_
static void initialize(cnoid::ExtensionManager *ext)
cnoid::SimulatorItemPtr sim_
std::shared_ptr< tf2_ros::TransformBroadcaster > tf_br_