xarm_driver.h
Go to the documentation of this file.
1 #ifndef __XARM_DRIVER_H
2 #define __XARM_DRIVER_H
3 
4 #include <thread>
5 #include "ros/ros.h"
6 #include "std_msgs/Float32.h"
7 #include <thread>
8 #include <xarm_msgs/SetInt16.h>
9 #include <xarm_msgs/SetFloat32.h>
10 #include <xarm_msgs/TCPOffset.h>
11 #include <xarm_msgs/SetLoad.h>
12 #include <xarm_msgs/SetAxis.h>
13 #include <xarm_msgs/Move.h>
14 #include <xarm_msgs/RobotMsg.h>
15 #include <xarm_msgs/IOState.h>
16 #include <xarm_msgs/CIOState.h>
17 #include <xarm_msgs/SetDigitalIO.h>
18 #include <xarm_msgs/GetDigitalIO.h>
19 #include <xarm_msgs/GetControllerDigitalIO.h>
20 #include <xarm_msgs/SetControllerAnalogIO.h>
21 #include <xarm_msgs/GetAnalogIO.h>
22 #include <xarm_msgs/ClearErr.h>
23 #include <xarm_msgs/GetErr.h>
24 #include <xarm_msgs/GripperConfig.h>
25 #include <xarm_msgs/GripperMove.h>
26 #include <xarm_msgs/GripperState.h>
27 #include <xarm_msgs/SetToolModbus.h>
28 #include <xarm_msgs/ConfigToolModbus.h>
29 #include <xarm_msgs/MoveAxisAngle.h>
30 #include <xarm_msgs/MoveVelo.h>
31 #include <xarm_msgs/SetMultipleInts.h>
32 #include <xarm_msgs/PlayTraj.h>
33 #include <xarm_msgs/SetString.h>
34 #include <sensor_msgs/JointState.h>
36 #include "xarm/core/connect.h"
37 #include "xarm/core/report_data.h"
38 
39 namespace xarm_api
40 {
41  class XARMDriver
42  {
43  public:
45  {
46  mutex_ = std::make_shared<std::mutex>();
47  spinner.start();
48  };
49  ~XARMDriver();
50  void XARMDriverInit(ros::NodeHandle& root_nh, char *server_ip);
51  void Heartbeat(void);
52  bool isConnectionOK(void);
53  void closeReportSocket(void);
54  bool reConnectReportSocket(char *server_ip);
55 
56  // provide a list of services:
57  bool MotionCtrlCB(xarm_msgs::SetAxis::Request &req, xarm_msgs::SetAxis::Response &res);
58  bool SetModeCB(xarm_msgs::SetInt16::Request& req, xarm_msgs::SetInt16::Response& res);
59  bool SetStateCB(xarm_msgs::SetInt16::Request &req, xarm_msgs::SetInt16::Response &res);
60  bool SetTCPOffsetCB(xarm_msgs::TCPOffset::Request &req, xarm_msgs::TCPOffset::Response &res);
61  bool SetLoadCB(xarm_msgs::SetLoad::Request &req, xarm_msgs::SetLoad::Response &res);
62  bool SetDigitalIOCB(xarm_msgs::SetDigitalIO::Request &req, xarm_msgs::SetDigitalIO::Response &res);
63  bool GetDigitalIOCB(xarm_msgs::GetDigitalIO::Request &req, xarm_msgs::GetDigitalIO::Response &res);
64  bool GetAnalogIOCB(xarm_msgs::GetAnalogIO::Request &req, xarm_msgs::GetAnalogIO::Response &res);
65  bool ClearErrCB(xarm_msgs::ClearErr::Request& req, xarm_msgs::ClearErr::Response& res);
66  bool MoveitClearErrCB(xarm_msgs::ClearErr::Request& req, xarm_msgs::ClearErr::Response& res);
67  bool GetErrCB(xarm_msgs::GetErr::Request & req, xarm_msgs::GetErr::Response & res);
68  bool GoHomeCB(xarm_msgs::Move::Request &req, xarm_msgs::Move::Response &res);
69  bool MoveJointCB(xarm_msgs::Move::Request &req, xarm_msgs::Move::Response &res);
70  bool MoveJointbCB(xarm_msgs::Move::Request &req, xarm_msgs::Move::Response &res);
71  bool MoveLinebCB(xarm_msgs::Move::Request &req, xarm_msgs::Move::Response &res);
72  bool MoveLineCB(xarm_msgs::Move::Request &req, xarm_msgs::Move::Response &res);
73  bool MoveLineToolCB(xarm_msgs::Move::Request &req, xarm_msgs::Move::Response &res);
74  bool MoveServoJCB(xarm_msgs::Move::Request &req, xarm_msgs::Move::Response &res);
75  bool MoveServoCartCB(xarm_msgs::Move::Request &req, xarm_msgs::Move::Response &res);
76  bool MoveLineAACB(xarm_msgs::MoveAxisAngle::Request &req, xarm_msgs::MoveAxisAngle::Response &res);
77  bool MoveServoCartAACB(xarm_msgs::MoveAxisAngle::Request &req, xarm_msgs::MoveAxisAngle::Response &res);
78  bool GripperConfigCB(xarm_msgs::GripperConfig::Request &req, xarm_msgs::GripperConfig::Response &res);
79  bool GripperMoveCB(xarm_msgs::GripperMove::Request &req, xarm_msgs::GripperMove::Response &res);
80  bool GripperStateCB(xarm_msgs::GripperState::Request &req, xarm_msgs::GripperState::Response &res);
81  bool VacuumGripperCB(xarm_msgs::SetInt16::Request &req, xarm_msgs::SetInt16::Response &res);
82  bool SetModbusCB(xarm_msgs::SetToolModbus::Request &req, xarm_msgs::SetToolModbus::Response &res);
83  bool ConfigModbusCB(xarm_msgs::ConfigToolModbus::Request &req, xarm_msgs::ConfigToolModbus::Response &res);
84  bool SetControllerDOutCB(xarm_msgs::SetDigitalIO::Request &req, xarm_msgs::SetDigitalIO::Response &res);
85  bool GetControllerDInCB(xarm_msgs::GetControllerDigitalIO::Request &req, xarm_msgs::GetControllerDigitalIO::Response &res);
86  bool SetControllerAOutCB(xarm_msgs::SetControllerAnalogIO::Request &req, xarm_msgs::SetControllerAnalogIO::Response &res);
87  bool GetControllerAInCB(xarm_msgs::GetAnalogIO::Request &req, xarm_msgs::GetAnalogIO::Response &res);
88  void SleepTopicCB(const std_msgs::Float32ConstPtr& msg);
89  bool VeloMoveJointCB(xarm_msgs::MoveVelo::Request &req, xarm_msgs::MoveVelo::Response &res);
90  bool VeloMoveLineVCB(xarm_msgs::MoveVelo::Request &req, xarm_msgs::MoveVelo::Response &res);
91  bool SetMaxJAccCB(xarm_msgs::SetFloat32::Request &req, xarm_msgs::SetFloat32::Response &res);
92  bool SetMaxLAccCB(xarm_msgs::SetFloat32::Request &req, xarm_msgs::SetFloat32::Response &res);
93 
94  bool SetRecordingCB(xarm_msgs::SetInt16::Request &req, xarm_msgs::SetInt16::Response &res);
95  bool SaveTrajCB(xarm_msgs::SetString::Request &req, xarm_msgs::SetString::Response &res);
96  bool LoadNPlayTrajCB(xarm_msgs::PlayTraj::Request &req, xarm_msgs::PlayTraj::Response &res);
97 
98  void pub_robot_msg(xarm_msgs::RobotMsg &rm_msg);
99  void pub_joint_state(sensor_msgs::JointState &js_msg);
100  void pub_io_state();
101  void pub_cgpio_state(xarm_msgs::CIOState &cio_msg);
102 
103  int get_frame(unsigned char *data);
104  int get_error();
105  int get_state();
106  int get_cmdnum();
107  int get_mode();
108  // void update_rich_data(unsigned char *data, int size);
109  // int flush_report_data(XArmReportData &report_data);
110  // int get_rich_data(ReportDataNorm &norm_data);
111  UxbusCmd *get_uxbus_cmd(void) { return arm_cmd_; };
112 
113  private:
115  // XArmReportData report_data_;
116  // ReportDataNorm norm_data_;
118  // unsigned char rx_data_[1280];
119  std::string ip;
120  std::string report_type_;
122  int dof_;
127  std::shared_ptr<std::mutex> mutex_;
128  xarm_msgs::IOState io_msg;
129 
162 
163  // ros::ServiceServer tgpio_delay_set_digital_server_;
164  // ros::ServiceServer cgpio_delay_set_digital_server_;
165  // ros::ServiceServer tgpio_position_set_digital_server_;
166  // ros::ServiceServer cgpio_position_set_digital_server_;
167  // ros::ServiceServer cgpio_position_set_analog_server_;
172 
176 
181 
183 
184  int wait_for_finish();
185  };
186 }
187 
188 #endif
ros::ServiceServer get_digital_in_server_
Definition: xarm_driver.h:147
bool MotionCtrlCB(xarm_msgs::SetAxis::Request &req, xarm_msgs::SetAxis::Response &res)
ros::ServiceServer move_servo_cart_server_
Definition: xarm_driver.h:141
bool GetControllerDInCB(xarm_msgs::GetControllerDigitalIO::Request &req, xarm_msgs::GetControllerDigitalIO::Response &res)
bool MoveLineAACB(xarm_msgs::MoveAxisAngle::Request &req, xarm_msgs::MoveAxisAngle::Response &res)
bool GoHomeCB(xarm_msgs::Move::Request &req, xarm_msgs::Move::Response &res)
bool GetDigitalIOCB(xarm_msgs::GetDigitalIO::Request &req, xarm_msgs::GetDigitalIO::Response &res)
bool SetMaxJAccCB(xarm_msgs::SetFloat32::Request &req, xarm_msgs::SetFloat32::Response &res)
void closeReportSocket(void)
Definition: xarm_driver.cpp:33
ros::ServiceServer set_controller_aout_server_
Definition: xarm_driver.h:160
bool SetModbusCB(xarm_msgs::SetToolModbus::Request &req, xarm_msgs::SetToolModbus::Response &res)
ros::ServiceServer gripper_config_server_
Definition: xarm_driver.h:152
ros::ServiceServer set_controller_dout_server_
Definition: xarm_driver.h:158
ros::ServiceServer move_joint_server_
Definition: xarm_driver.h:132
ros::ServiceServer set_max_lacc_server_
Definition: xarm_driver.h:171
ros::AsyncSpinner spinner
Definition: xarm_driver.h:121
bool MoveJointCB(xarm_msgs::Move::Request &req, xarm_msgs::Move::Response &res)
bool SetTCPOffsetCB(xarm_msgs::TCPOffset::Request &req, xarm_msgs::TCPOffset::Response &res)
SocketPort * arm_report_
Definition: xarm_driver.h:111
bool GripperStateCB(xarm_msgs::GripperState::Request &req, xarm_msgs::GripperState::Response &res)
bool MoveLineCB(xarm_msgs::Move::Request &req, xarm_msgs::Move::Response &res)
bool VacuumGripperCB(xarm_msgs::SetInt16::Request &req, xarm_msgs::SetInt16::Response &res)
xarm_msgs::IOState io_msg
Definition: xarm_driver.h:128
ros::ServiceServer gripper_state_server_
Definition: xarm_driver.h:154
void XARMDriverInit(ros::NodeHandle &root_nh, char *server_ip)
Definition: xarm_driver.cpp:44
bool ClearErrCB(xarm_msgs::ClearErr::Request &req, xarm_msgs::ClearErr::Response &res)
int get_frame(unsigned char *data)
bool GetErrCB(xarm_msgs::GetErr::Request &req, xarm_msgs::GetErr::Response &res)
bool SaveTrajCB(xarm_msgs::SetString::Request &req, xarm_msgs::SetString::Response &res)
ros::ServiceServer traj_save_server_
Definition: xarm_driver.h:174
ros::ServiceServer vc_set_linev_server_
Definition: xarm_driver.h:169
void pub_joint_state(sensor_msgs::JointState &js_msg)
bool SetStateCB(xarm_msgs::SetInt16::Request &req, xarm_msgs::SetInt16::Response &res)
ros::NodeHandle nh_
Definition: xarm_driver.h:130
ros::ServiceServer config_modbus_server_
Definition: xarm_driver.h:157
std::shared_ptr< std::mutex > mutex_
Definition: xarm_driver.h:127
ros::ServiceServer set_max_jacc_server_
Definition: xarm_driver.h:170
ros::ServiceServer motion_ctrl_server_
Definition: xarm_driver.h:134
bool VeloMoveJointCB(xarm_msgs::MoveVelo::Request &req, xarm_msgs::MoveVelo::Response &res)
bool GripperConfigCB(xarm_msgs::GripperConfig::Request &req, xarm_msgs::GripperConfig::Response &res)
ros::ServiceServer set_vacuum_gripper_server_
Definition: xarm_driver.h:155
bool MoveitClearErrCB(xarm_msgs::ClearErr::Request &req, xarm_msgs::ClearErr::Response &res)
ros::Publisher joint_state_
Definition: xarm_driver.h:177
ros::ServiceServer vc_set_jointv_server_
Definition: xarm_driver.h:168
bool GetAnalogIOCB(xarm_msgs::GetAnalogIO::Request &req, xarm_msgs::GetAnalogIO::Response &res)
bool GripperMoveCB(xarm_msgs::GripperMove::Request &req, xarm_msgs::GripperMove::Response &res)
ros::ServiceServer get_analog_in_server_
Definition: xarm_driver.h:148
ros::ServiceServer traj_play_server_
Definition: xarm_driver.h:175
void pub_cgpio_state(xarm_msgs::CIOState &cio_msg)
ros::ServiceServer set_mode_server_
Definition: xarm_driver.h:136
ros::ServiceServer move_line_tool_server_
Definition: xarm_driver.h:139
ros::Publisher end_input_state_
Definition: xarm_driver.h:179
bool SetControllerDOutCB(xarm_msgs::SetDigitalIO::Request &req, xarm_msgs::SetDigitalIO::Response &res)
ros::ServiceServer move_line_aa_server_
Definition: xarm_driver.h:142
bool SetMaxLAccCB(xarm_msgs::SetFloat32::Request &req, xarm_msgs::SetFloat32::Response &res)
std::string report_type_
Definition: xarm_driver.h:120
ros::ServiceServer go_home_server_
Definition: xarm_driver.h:131
ros::ServiceServer move_line_server_
Definition: xarm_driver.h:138
ros::ServiceServer set_state_server_
Definition: xarm_driver.h:135
UxbusCmd * get_uxbus_cmd(void)
Definition: xarm_driver.h:111
bool SetModeCB(xarm_msgs::SetInt16::Request &req, xarm_msgs::SetInt16::Response &res)
ros::ServiceServer get_controller_din_server_
Definition: xarm_driver.h:159
ros::ServiceServer move_lineb_server_
Definition: xarm_driver.h:137
ros::ServiceServer set_tcp_offset_server_
Definition: xarm_driver.h:144
ros::ServiceServer move_servoj_server_
Definition: xarm_driver.h:140
ros::ServiceServer move_jointb_server_
Definition: xarm_driver.h:133
bool isConnectionOK(void)
ros::ServiceServer moveit_clear_err_server_
Definition: xarm_driver.h:150
bool VeloMoveLineVCB(xarm_msgs::MoveVelo::Request &req, xarm_msgs::MoveVelo::Response &res)
bool SetRecordingCB(xarm_msgs::SetInt16::Request &req, xarm_msgs::SetInt16::Response &res)
ros::ServiceServer gripper_move_server_
Definition: xarm_driver.h:153
ros::ServiceServer move_servo_cart_aa_server_
Definition: xarm_driver.h:143
bool SetLoadCB(xarm_msgs::SetLoad::Request &req, xarm_msgs::SetLoad::Response &res)
bool MoveLinebCB(xarm_msgs::Move::Request &req, xarm_msgs::Move::Response &res)
ros::ServiceServer get_controller_ain_server_
Definition: xarm_driver.h:161
ros::Publisher robot_rt_state_
Definition: xarm_driver.h:178
ros::ServiceServer clear_err_server_
Definition: xarm_driver.h:149
void pub_robot_msg(xarm_msgs::RobotMsg &rm_msg)
ros::Publisher cgpio_state_
Definition: xarm_driver.h:180
bool MoveServoCartAACB(xarm_msgs::MoveAxisAngle::Request &req, xarm_msgs::MoveAxisAngle::Response &res)
bool SetControllerAOutCB(xarm_msgs::SetControllerAnalogIO::Request &req, xarm_msgs::SetControllerAnalogIO::Response &res)
void SleepTopicCB(const std_msgs::Float32ConstPtr &msg)
bool GetControllerAInCB(xarm_msgs::GetAnalogIO::Request &req, xarm_msgs::GetAnalogIO::Response &res)
bool LoadNPlayTrajCB(xarm_msgs::PlayTraj::Request &req, xarm_msgs::PlayTraj::Response &res)
ros::Subscriber sleep_sub_
Definition: xarm_driver.h:182
bool MoveJointbCB(xarm_msgs::Move::Request &req, xarm_msgs::Move::Response &res)
bool MoveServoCartCB(xarm_msgs::Move::Request &req, xarm_msgs::Move::Response &res)
ros::ServiceServer set_modbus_server_
Definition: xarm_driver.h:156
ros::ServiceServer set_load_server_
Definition: xarm_driver.h:145
ros::ServiceServer set_end_io_server_
Definition: xarm_driver.h:146
bool MoveLineToolCB(xarm_msgs::Move::Request &req, xarm_msgs::Move::Response &res)
bool MoveServoJCB(xarm_msgs::Move::Request &req, xarm_msgs::Move::Response &res)
ros::ServiceServer get_err_server_
Definition: xarm_driver.h:151
ros::ServiceServer traj_record_server_
Definition: xarm_driver.h:173
bool SetDigitalIOCB(xarm_msgs::SetDigitalIO::Request &req, xarm_msgs::SetDigitalIO::Response &res)
bool ConfigModbusCB(xarm_msgs::ConfigToolModbus::Request &req, xarm_msgs::ConfigToolModbus::Response &res)
bool reConnectReportSocket(char *server_ip)
Definition: xarm_driver.cpp:38


xarm_api
Author(s):
autogenerated on Sat May 8 2021 02:51:23