Program Listing for File plugin_motors.hpp

Return to documentation for file (include/robotont_driver/plugin_motors.hpp)

#include "rclcpp/rclcpp.hpp"
#include "robotont_driver/driver_exception.hpp"
#include <nav_msgs/msg/odometry.hpp>
#include "tf2_geometry_msgs/tf2_geometry_msgs.hpp"
#include <tf2/LinearMath/Quaternion.h>
#include "geometry_msgs/msg/quaternion.hpp"
#include "geometry_msgs/msg/transform_stamped.hpp"
#include "tf2_ros/static_transform_broadcaster.h"
#include "robotont_driver/plugin_base.hpp"

#ifndef MOTORS_HPP
#define MOTORS_HPP

using namespace std::chrono_literals;

namespace robotont
{
// PluginMotors class
class PluginMotors
{
public:
  // Constructor that takes a HardwarePtr and a shared pointer to a node
  PluginMotors(HardwarePtr hw_ptr, rclcpp::Node::SharedPtr node_);
  // Destructor
  ~PluginMotors();

private:
  // Shared pointer to the node
  rclcpp::Node::SharedPtr node_;
  // HardwarePtr object
  HardwarePtr hw_ptr_;

  // Function to write the robot speed
  void writeRobotSpeed(float lin_vel_x, float lin_vel_y, float ang_vel_z);
  // Callback function for the cmd_vel topic
  void cmd_vel_callback(const geometry_msgs::msg::Twist::SharedPtr cmd_vel_msg);

  // Shared pointer to the cmd_vel subscriber
  rclcpp::Subscription<geometry_msgs::msg::Twist>::SharedPtr cmd_vel_sub_;
};

// Typedef for a shared pointer to a PluginMotors object
typedef std::shared_ptr<PluginMotors> MotorsPtr;
}  // namespace robotont
#endif