73 bool init(rclcpp::Node::SharedPtr node,
const mjModel* model, mjData* data)
override;
74 void pre_step(mjData* data)
override;
78 void twistCallback(
const geometry_msgs::msg::Twist& msg);
79 void twistStampedCallback(
const geometry_msgs::msg::TwistStamped& msg);
80 void storeCommand(
double vx,
double vy,
double wz);
83 rclcpp::Node::SharedPtr node_;
84 rclcpp::Logger logger_{ rclcpp::get_logger(
"BaseVelocityPlugin") };
85 rclcpp::Subscription<geometry_msgs::msg::Twist>::SharedPtr twist_sub_;
86 rclcpp::Subscription<geometry_msgs::msg::TwistStamped>::SharedPtr twist_stamped_sub_;
89 const mjModel* model_{
nullptr };
94 double max_linear_velocity_{ std::numeric_limits<double>::infinity() };
95 double max_yaw_rate_{ std::numeric_limits<double>::infinity() };
96 rclcpp::Duration cmd_timeout_{ 0, 0 };
103 rclcpp::Time time{ 0, 0, RCL_ROS_TIME };
109 std::mutex cmd_mutex_;
110 CommandState latest_cmd_;
113 CommandState cached_cmd_;