Quad-SDK
Loading...
Searching...
No Matches
controller_plugin.h
1#pragma once
2
3#include <control_msgs/JointControllerState.h>
4#include <control_toolbox/pid.h>
5#include <controller_interface/controller.h>
6#include <hardware_interface/joint_command_interface.h>
7#include <quad_msgs/LegCommand.h>
8#include <quad_msgs/LegCommandArray.h>
9#include <quad_msgs/MotorCommand.h>
10#include <quad_utils/ros_utils.h>
11#include <realtime_tools/realtime_buffer.h>
12#include <realtime_tools/realtime_publisher.h>
13#include <ros/node_handle.h>
14#include <urdf/model.h>
15
16namespace effort_controllers {
23class QuadController : public controller_interface::Controller<
24 hardware_interface::EffortJointInterface> {
25 typedef std::vector<quad_msgs::LegCommand> BufferType;
26
27 public:
30
31 bool init(hardware_interface::EffortJointInterface* hw, ros::NodeHandle& n);
32 void update(const ros::Time& /*time*/, const ros::Duration& /*period*/);
33
34 std::vector<std::string> joint_names_;
35 std::vector<hardware_interface::JointHandle> joints_;
36 realtime_tools::RealtimeBuffer<BufferType> commands_buffer_;
37 unsigned int n_joints_;
38
39 private:
41 ros::Subscriber sub_command_;
42
44 std::vector<urdf::JointConstSharedPtr> joint_urdfs_;
45
47 std::map<int, std::pair<int, int>> leg_map_;
48
50 std::vector<double> torque_lims_;
51 std::vector<double> speed_lims_;
52
53 void commandCB(const quad_msgs::LegCommandArrayConstPtr& msg);
54 void enforceJointLimits(double& command, unsigned int index);
55}; // class
56
57} // namespace effort_controllers
Forward command controller for quad.
Definition controller_plugin.h:24
std::vector< urdf::JointConstSharedPtr > joint_urdfs_
Store reference to gazebo joints.
Definition controller_plugin.h:44
ros::Subscriber sub_command_
Subscriber for new LegCommandArray messages.
Definition controller_plugin.h:41
std::map< int, std::pair< int, int > > leg_map_
Map gazebo/urdf joint indices to leg/joint pair.
Definition controller_plugin.h:47
QuadController()
Forward command controller for a set of effort controlled joints (torque or force).
Definition controller_plugin.cpp:23
std::vector< double > torque_lims_
Torque limits for each motor.
Definition controller_plugin.h:50