Quad-SDK
Loading...
Searching...
No Matches
spirit_interface.h
1#ifndef SPIRIT_INTERFACE_H
2#define SPIRIT_INTERFACE_H
3
4#include <quad_msgs/LegCommandArray.h>
5#include <robot_driver/hardware_interfaces/hardware_interface.h>
6#include <sensor_msgs/Imu.h>
7#include <sensor_msgs/JointState.h>
8#include <tf2/LinearMath/Quaternion.h>
9#include <tf2_geometry_msgs/tf2_geometry_msgs.h>
10
11#include <eigen3/Eigen/Eigen>
12#include <mblink/mblink.hpp>
13
14using gr::MBLink;
15
16struct LimbCmd_t {
17 Eigen::Vector3f pos, vel, tau;
18 short kp[3];
19 short kd[3];
20 bool restart_flag;
21};
22
23typedef std::unordered_map<std::string, Eigen::VectorXf> MBData_t;
24
26
31 public:
37
43 virtual void loadInterface(int argc, char** argv);
44
48 virtual void unloadInterface();
49
56 virtual bool send(const quad_msgs::LegCommandArray& leg_command_array_msg,
57 const Eigen::VectorXd& user_tx_data);
58
66 virtual bool recv(sensor_msgs::JointState& joint_state_msg,
67 sensor_msgs::Imu& imu_msg, Eigen::VectorXd& user_rx_data);
68
70 MBLink mblink_;
71
73 MBData_t mbdata_;
74
76 std::vector<std::string> joint_names_ = {"8", "0", "1", "9", "2", "3",
77 "10", "4", "5", "11", "6", "7"};
78
80 std::vector<int> joint_indices_ = {8, 0, 1, 9, 2, 3, 10, 4, 5, 11, 6, 7};
81
83 std::vector<double> kt_vec_ = {0.546, 0.546, 1.092, 0.546, 0.546, 1.092,
84 0.546, 0.546, 1.092, 0.546, 0.546, 1.092};
85};
86
87#endif // SPIRIT_INTERFACE_H
Implements an abstract class for robot hardware interfaces.
Definition hardware_interface.h:28
Hardware interface for the Spirit40 quadruped from Ghost Robotics.
Definition spirit_interface.h:30
SpiritInterface()
Constructor for SpiritInterface.
Definition spirit_interface.cpp:3
virtual bool send(const quad_msgs::LegCommandArray &leg_command_array_msg, const Eigen::VectorXd &user_tx_data)
Send commands to the robot via the mblink protocol.
Definition spirit_interface.cpp:15
std::vector< std::string > joint_names_
Vector of joint names.
Definition spirit_interface.h:76
std::vector< double > kt_vec_
Vector of kt values for each joint.
Definition spirit_interface.h:83
virtual bool recv(sensor_msgs::JointState &joint_state_msg, sensor_msgs::Imu &imu_msg, Eigen::VectorXd &user_rx_data)
Recieve data from the robot via the mblink protocol.
Definition spirit_interface.cpp:51
virtual void loadInterface(int argc, char **argv)
Load the hardware interface.
Definition spirit_interface.cpp:5
MBData_t mbdata_
Mainboard data.
Definition spirit_interface.h:73
virtual void unloadInterface()
Unload the hardware interface.
Definition spirit_interface.cpp:13
MBLink mblink_
Pointer to MBLink object.
Definition spirit_interface.h:70
std::vector< int > joint_indices_
Vector denoting joint indices.
Definition spirit_interface.h:80
Definition spirit_interface.h:16