Files
hivecore_robot_arm/include/rm_service.h

4553 lines
244 KiB
C
Raw Normal View History

2025-10-24 11:12:14 +08:00
#ifndef RM_SERVICE_H
#define RM_SERVICE_H
#ifdef __cplusplus
extern "C" {
#endif
#include "rm_interface.h"
#include "rm_interface_global.h"
#ifdef __cplusplus
}
class RM_Service {
public:
/**
* @defgroup Init_Class
*
* API及机械臂初始化相关接口API版本号查询API初始化/
* 仿/
* @{
*/
/**
* @brief sdk版本号
*
* @code
* char *version = rm_api_version();
* printf("api version: %s\n", version);
* @endcode
* @return char*
*/
RM_INTERFACE_EXPORT char* rm_api_version(void);
/**
* @brief 线
*
* @param mode RM_SINGLE_MODE_E线线
* RM_DUAL_MODE_E线线
* RM_TRIPLE_MODE_E线线线UDP接口数据
* @return int
- 0:
- -1: 线
* @see rm_create_robot_arm
*/
RM_INTERFACE_EXPORT int rm_init(rm_thread_mode_e mode);
/**
* @brief 线
*
* @return int
- 0:
*/
RM_INTERFACE_EXPORT int rm_destroy(void);
/**
* @brief
*
* @param LogCallback
* @param level 0debug级别1info级别2warn3error级别
*/
RM_INTERFACE_EXPORT void rm_set_log_call_back(void (*LogCallback)(const char* message, va_list args),int level);
/**
* @brief
*
* @param path
*/
RM_INTERFACE_EXPORT void rm_set_log_save(const char* path);
/**
* @brief
*
* @param timeout 500msms
*/
RM_INTERFACE_EXPORT void rm_set_timeout(int timeout);
/**
* @brief
*
* @param ip ip地址
* @param port
* @return rm_robot_handle* 5
* @see rm_init
*/
RM_INTERFACE_EXPORT rm_robot_handle *rm_create_robot_arm(const char *ip,int port);
/**
* @brief
*
* @param handle
* @return int
- 0:
- -1: ,
*/
RM_INTERFACE_EXPORT int rm_delete_robot_arm(rm_robot_handle *handle);
/**
* @brief 仿/
*
* @param handle
* @param mode 0:仿 1:
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_arm_run_mode(rm_robot_handle *handle, int mode);
/**
* @brief 仿/
*
* @param handle
* @param mode 0:仿 1:
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_arm_run_mode(rm_robot_handle *handle,int *mode);
/**
* @brief
*
* @param handle
* @param robot_info
* @return int
- 0:
- -1: ,
- -2:
*/
RM_INTERFACE_EXPORT int rm_get_robot_info(rm_robot_handle *handle, rm_robot_info_t *robot_info);
/**
* @brief
*
* @param handle
* @param event_callback
*/
RM_INTERFACE_EXPORT void rm_get_arm_event_call_back(rm_event_callback_ptr event_callback);
/**
* @brief UDP机械臂状态主动上报信息回调注册
*
* @param handle
* @param realtime_callback
*/
RM_INTERFACE_EXPORT void rm_realtime_arm_state_call_back(rm_realtime_arm_state_callback_ptr realtime_callback);
/** @} */ // 结束初始化组的定义
/**
* @defgroup Joint_Config
*
*
* 使
* Flash使
* 使
* @attention
* 使使使
* 使使使
* @{
*/
/**
* @brief
*
* @param handle
* @param joint_num
* @param max_speed °/s
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_joint_max_speed(rm_robot_handle *handle,int joint_num,float max_speed);
/**
* @brief
*
* @param handle
* @param joint_num
* @param max_acc °/s²
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_joint_max_acc(rm_robot_handle *handle,int joint_num,float max_acc);
/**
* @brief
*
* @param handle
* @param joint_num
* @param min_pos °
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_joint_min_pos(rm_robot_handle *handle,int joint_num,float min_pos);
/**
* @brief
*
* @param handle
* @param joint_num
* @param max_pos °
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_joint_max_pos(rm_robot_handle *handle,int joint_num,float max_pos);
/**
* @brief ()
*
* @param handle
* @param joint_num
* @param max_speed °/s
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_joint_drive_max_speed(rm_robot_handle *handle,int joint_num,float max_speed);
/**
* @brief ()
*
* @param handle
* @param joint_num
* @param max_acc °/s²
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_joint_drive_max_acc(rm_robot_handle *handle,int joint_num,float max_acc);
/**
* @brief ()
*
* @param handle
* @param joint_num
* @param min_pos
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_joint_drive_min_pos(rm_robot_handle *handle,int joint_num,float min_pos);
/**
* @brief ()
*
* @param handle
* @param joint_num
* @param max_pos
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_joint_drive_max_pos(rm_robot_handle *handle,int joint_num,float max_pos);
/**
* @brief 使
*
* @param handle
* @param joint_num
* @param en_state 1使 0使
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_joint_en_state(rm_robot_handle *handle,int joint_num,int en_state);
/**
* @brief
*
* @param handle
* @param joint_num
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_joint_zero_pos(rm_robot_handle *handle,int joint_num);
/**
* @brief
*
* @param handle
* @param joint_num
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_joint_clear_err(rm_robot_handle *handle,int joint_num);
/**
* @brief
*
* @param handle
* @param limit_mode 1-
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_auto_set_joint_limit(rm_robot_handle *handle,int limit_mode);
/**
* @brief
*
* @param handle
* @param max_speed 1~7°/s
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_joint_max_speed(rm_robot_handle *handle,float *max_speed);
/**
* @brief
*
* @param handle
* @param max_acc 1~7°/s
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_joint_max_acc(rm_robot_handle *handle,float *max_acc);
/**
* @brief
*
* @param handle
* @param min_pos 1~7°
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_joint_min_pos(rm_robot_handle *handle,float *min_pos);
/**
* @brief
*
* @param handle
* @param max_pos 1~7°
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_joint_max_pos(rm_robot_handle *handle,float *max_pos);
/**
* @brief ()
*
* @param handle
* @param max_speed 1~7°/s
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_joint_drive_max_speed(rm_robot_handle *handle,float *max_speed);
/**
* @brief ()
*
* @param handle
* @param max_acc 1~7°/s
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_joint_drive_max_acc(rm_robot_handle *handle,float *max_acc);
/**
* @brief ()
*
* @param handle
* @param min_pos 1~7°
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_joint_drive_min_pos(rm_robot_handle *handle,float *min_pos);
/**
* @brief ()
*
* @param handle
* @param max_pos 1~7°
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_joint_drive_max_pos(rm_robot_handle *handle,float *max_pos);
/**
* @brief 使
*
* @param handle
* @param en_state 1~7使1-使0-使
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_joint_en_state(rm_robot_handle *handle,uint8_t *en_state);
/**
* @brief
*
* @param handle
* @param err_flag \ref robotic_error
* @param brake_state 1 0
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_joint_err_flag(rm_robot_handle *handle,uint16_t *err_flag,uint16_t *brake_state);
/** @} */ // 结束关节配置组的定义
/**
* @defgroup ArmTipVelocityParameters
*
*
* @{
*/
/**
* @brief 线
*
* @param handle
* @param speed 线m/s
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_arm_max_line_speed(rm_robot_handle *handle,float speed);
/**
* @brief 线
*
* @param handle
* @param acc 线m/s^2
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_arm_max_line_acc(rm_robot_handle *handle,float acc);
/**
* @brief
*
* @param handle
* @param speed rad/s
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_arm_max_angular_speed(rm_robot_handle *handle,float speed);
/**
* @brief
*
* @param handle
* @param acc rad/s^2
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_arm_max_angular_acc(rm_robot_handle *handle,float acc);
/**
* @brief
*
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_arm_tcp_init(rm_robot_handle *handle);
/**
* @brief
*
* @param handle
* @param collision_stage 0~80-8-
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_collision_state(rm_robot_handle *handle,int collision_stage);
/**
* @brief
*
* @param handle
* @param collision_stage 0~8
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_collision_stage(rm_robot_handle *handle,int *collision_stage);
/**
* @brief 线
*
* @param handle
* @param speed 线m/s
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_arm_max_line_speed(rm_robot_handle *handle, float *speed);
/**
* @brief 线
*
* @param handle
* @param acc 线m/s^2
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_arm_max_line_acc(rm_robot_handle *handle, float *acc);
/**
* @brief
*
* @param handle
* @param speed rad/s
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_arm_max_angular_speed(rm_robot_handle *handle, float *speed);
/**
* @brief
*
* @param handle
* @param acc rad/s^2
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_arm_max_angular_acc(rm_robot_handle *handle, float *acc);
/**
* @brief DH参数
*
* @param handle
* @param dh DH参数
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_DH_data(rm_robot_handle *handle, rm_dh_t dh);
/**
* @brief DH参数
*
* @param handle
* @param dh DH参数
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_DH_data(rm_robot_handle *handle, rm_dh_t *dh);
/**
* @brief DH
*
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_DH_data_default(rm_robot_handle *handle);
/** @} */ // 结束组的定义
/**
* @defgroup ToolCoordinateConfig
*
*
* @{
*/
/**
* @brief
*
* @param handle
* @param point_num 1~66
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_auto_tool_frame(rm_robot_handle *handle,int point_num);
/**
* @brief
*
* @param handle
* @param name
* @param payload kg
* @param x x m
* @param y y m
* @param z z m
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_generate_auto_tool_frame(rm_robot_handle *handle, const char *name,float payload,float x,float y,float z);
/**
* @brief
*
* @param handle
* @param frame
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_manual_tool_frame(rm_robot_handle *handle, rm_frame_t frame);
/**
* @brief
*
* @param handle
* @param tool_name
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_change_tool_frame(rm_robot_handle *handle, const char* tool_name);
/**
* @brief
*
* @param handle
* @param tool_name
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_delete_tool_frame(rm_robot_handle *handle, const char* tool_name);
/**
* @brief
*
* @param handle
* @param frame
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_update_tool_frame(rm_robot_handle *handle, rm_frame_t frame);
/**
* @brief
*
* @param handle
* @param frame_names
* @param len
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_total_tool_frame(rm_robot_handle *handle, rm_frame_name_t *frame_names, int *len);
/**
* @brief
*
* @param handle
* @param name
* @param frame
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_given_tool_frame(rm_robot_handle *handle, const char *name, rm_frame_t *frame);
/**
* @brief
*
* @param handle
* @param tool_frame
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_current_tool_frame(rm_robot_handle *handle, rm_frame_t *tool_frame);
/**
* @brief
*
* @param handle
* @param envelope 5
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_tool_envelope(rm_robot_handle *handle, rm_envelope_balls_list_t envelope);
/**
* @brief
*
* @param handle
* @param tool_name
* @param envelope 5
* @return int
- 0:
- 1:
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_tool_envelope(rm_robot_handle *handle, const char* tool_name, rm_envelope_balls_list_t *envelope);
/** @} */ // 结束组的定义
/**
* @defgroup WorkCoordinateConfig
*
*
* @{
*/
/**
* @brief
*
* @param handle
* @param workname
* @param point_num 1~33X轴一点Y轴一点4
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_auto_work_frame(rm_robot_handle *handle,const char *workname, int point_num);
/**
* @brief
*
* @param handle
* @param work_name
* @param pose 姿
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_manual_work_frame(rm_robot_handle *handle, const char* work_name, rm_pose_t pose);
/**
* @brief
*
* @param handle
* @param work_name
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_change_work_frame(rm_robot_handle *handle, const char* work_name);
/**
* @brief
*
* @param handle
* @param work_name
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_delete_work_frame(rm_robot_handle *handle, const char* work_name);
/**
* @brief
*
* @param handle
* @param work_name
* @param pose 姿
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_update_work_frame(rm_robot_handle *handle, const char* work_name, rm_pose_t pose);
/**
* @brief
*
* @param handle
* @param frame_names
* @param len
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_total_work_frame(rm_robot_handle *handle, rm_frame_name_t *frame_names, int *len);
/**
* @brief
*
* @param handle
* @param name
* @param pose 姿
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_given_work_frame(rm_robot_handle *handle, const char *name, rm_pose_t *pose);
/**
* @brief
*
* @param handle
* @param work_frame
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_current_work_frame(rm_robot_handle *handle, rm_frame_t *work_frame);
/** @} */ // 结束组的定义
/**
* @defgroup ArmState
*
*
* @{
*/
/**
* @brief
*
* @param handle
* @param state
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_current_arm_state(rm_robot_handle *handle,rm_current_arm_state_t *state);
/**
* @brief
*
* @param handle
* @param temperature 1~7
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_current_joint_temperature(rm_robot_handle *handle, float *temperature);
/**
* @brief
*
* @param handle
* @param current 1~7
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_current_joint_current(rm_robot_handle *handle, float *current);
/**
* @brief
*
* @param handle
* @param voltage 1~7
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_current_joint_voltage(rm_robot_handle *handle, float *voltage);
/**
* @brief
*
* @param handle
* @param joint 7
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_joint_degree(rm_robot_handle *handle, float *joint);
/**
* @brief
*
* @param handle
* @param state
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_arm_all_state(rm_robot_handle *handle, rm_arm_all_state_t *state);
/** @} */ // 结束组的定义
/**
* @defgroup InitPose
*
*
* @{
*/
/**
* @brief
*
* @param handle
* @param joint
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_init_pose(rm_robot_handle *handle, float *joint);
/**
* @brief
*
* @param handle
* @param joint
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_init_pose(rm_robot_handle *handle, float *joint);
/** @} */ // 结束组的定义
/**
* @defgroup MovePlan
*
* 姿
* @{
*/
/**
* @brief
*
* @param handle
* @param joint 1~7
* @param v 1~100线
* @param r 0
* @param trajectory_connect
* - 0
* - 1使
* @param block
* - 线
* - 0
* - 1
* - 线
* - 0
* -
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
- -5: 线
- -6:
*/
RM_INTERFACE_EXPORT int rm_movej(rm_robot_handle *handle, const float *joint, int v, int r,int trajectory_connect,int block);
/**
* @brief 线
*
* @param handle
* @param pose 姿,姿
* @param v 1~100线线
* @param r 0
* @param trajectory_connect
* - 0
* - 1使
* @param block
* - 线
* - 0
* - 1
* - 线
* - 0
* -
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
- -5: 线
- -6:
*/
RM_INTERFACE_EXPORT int rm_movel(rm_robot_handle *handle,rm_pose_t pose, int v, int r, int trajectory_connect, int block);
/**
* @brief 线()
* @details 姿沿
* @param handle
* @param offset 姿姿
* @param v 1~100
* @param r 0~100
* @param trajectory_connect
* - 0
* - 1使
* @param frame_type :0-1-
* @param block
* - 线
* - 0
* - 1
* - 线
* - 0
* -
* @attention 使线
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
- -5: 线
- -6:
*/
RM_INTERFACE_EXPORT int rm_movel_offset(rm_robot_handle *handle,rm_pose_t offset, int v, int r, int trajectory_connect, int frame_type, int block);
/**
* @brief 线
*
* @param handle
* @param pose 姿,姿
* @param v 1~100线线
* @param r 0
* @param trajectory_connect
* - 0
* - 1使
* @note 线trajectory_connect设置为1线
* @param block
* - 线
* - 0
* - 1
* - 线
* - 0
* -
* @attention 使线
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
- -5: 线
- -6:
*/
RM_INTERFACE_EXPORT int rm_moves(rm_robot_handle *handle,rm_pose_t pose, int v, int r, int trajectory_connect, int block);
/**
* @brief
*
* @param handle
* @param pose_via 姿姿
* @param pose_to 姿
* @param v 1~100
* @param r 0
* @param loop 0.
* @param trajectory_connect
* - 0
* - 1使
* @param block
* - 线
* - 0
* - 1
* - 线
* - 0
* -
* @attention 使线
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
- -5: 线
- -6:
*/
RM_INTERFACE_EXPORT int rm_movec(rm_robot_handle *handle,rm_pose_t pose_via, rm_pose_t pose_to, int v, int r, int loop, int trajectory_connect, int block);
/**
* @brief 姿
*
* @param handle
* @param pose 姿姿
* @param v 1~100线线
* @param r 0
* @param trajectory_connect
* - 0
* - 1使
* @param block
* - 线
* - 0
* - 1
* - 线
* - 0
* -
* @attention 使线
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
- -5: 线
- -6:
*/
RM_INTERFACE_EXPORT int rm_movej_p(rm_robot_handle *handle,rm_pose_t pose, int v, int r, int trajectory_connect, int block);
/**
* @brief CANFD透传给机械臂
* @details CANFD
* <b></b>
*
* 使
* I系列有线网口周期最快可达2ms
* @param handle
* @param joint 1~7,°
* @param follow true-false-使 10ms
* @param expand 使
* @param trajectory_mode 0-1-线2-
* @param radio 线0~100线0~1000
* @return int
- 0:
- -1:
*/
RM_INTERFACE_EXPORT int rm_movej_canfd(rm_robot_handle *handle, float *joint, bool follow, int expand, int trajectory_mode=0, int radio=0);
/**
* @brief 姿CANFD透传给机械臂
* @details 姿
*
* 姿
* <b></b>
*
* 使
* I系列有线网口周期最快可达2ms
* @param handle
* @param pose 姿 ()
* @param follow true-false-使 10ms
* @param trajectory_mode 0-1-线2-
* @param radio 线0~100线0~1000
* @return int
- 0:
- -1:
*/
RM_INTERFACE_EXPORT int rm_movep_canfd(rm_robot_handle *handle, rm_pose_t pose, bool follow, int trajectory_mode=0, int radio=0);
/**
* @brief
* @param handle
* @param joint 1~7,°
* @return int
- 0:
- -1:
*/
RM_INTERFACE_EXPORT int rm_movej_follow(rm_robot_handle *handle,float *joint);
/**
* @brief
* @param handle
* @param pose 姿 ()
* @return int
- 0:
- -1:
*/
RM_INTERFACE_EXPORT int rm_movep_follow(rm_robot_handle *handle, rm_pose_t pose);
/** @} */ // 结束组的定义
/**
* @defgroup ArmMotionControl
*
*
* @{
*/
/**
* @brief
*
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_arm_slow_stop(rm_robot_handle *handle);
/**
* @brief
*
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_arm_stop(rm_robot_handle *handle);
/**
* @brief
*
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_arm_pause(rm_robot_handle *handle);
/**
* @brief
*
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_arm_continue(rm_robot_handle *handle);
/**
* @brief
*
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
* @attention 使
*/
RM_INTERFACE_EXPORT int rm_set_delete_current_trajectory(rm_robot_handle *handle);
/**
* @brief
*
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
* @attention 使
*/
RM_INTERFACE_EXPORT int rm_set_arm_delete_trajectory(rm_robot_handle *handle);
/**
* @brief
*
* @param handle
* @param type
* @param data 1~7姿
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_arm_current_trajectory(rm_robot_handle *handle,rm_arm_current_trajectory_e *type,float *data);
/** @} */ // 结束组的定义
/**
* @defgroup ArmTeachMove
*
* 姿
* @{
*/
/**
* @brief
*
* @param handle
* @param joint_num 1~7
* @param step
* @param v 1~100线线
* @param block
* - 线
* - 0
* - 1
* - 线
* - 0
* -
* @attention 使线
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
- -5: 线
*/
RM_INTERFACE_EXPORT int rm_set_joint_step(rm_robot_handle *handle,int joint_num, float step, int v, int block);
/**
* @brief
*
* @param handle
* @param type
* @param step m0.001mm
* @param v 1~100线线
* @param block
* - 线
* - 0
* - 1
* - 线
* - 0
* -
* @attention 使线
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
- -5: 线
* @attention rm_set_teach_frame修改为工具坐标系
*/
RM_INTERFACE_EXPORT int rm_set_pos_step(rm_robot_handle *handle, rm_pos_teach_type_e type, float step, int v, int block);
/**
* @brief 姿
*
* @param handle
* @param type
* @param step rad0.001rad
* @param v 1~100线线
* @param block
* - 线
* - 0
* - 1
* - 线
* - 0
* -
* @attention 使线
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
- -5: 线
* @attention rm_set_teach_frame修改为工具坐标系
*/
RM_INTERFACE_EXPORT int rm_set_ort_step(rm_robot_handle *handle, rm_ort_teach_type_e type, float step, int v, int block);
/**
* @brief
*
* @param handle
* @param frame_type 0: , 1:
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_teach_frame(rm_robot_handle *handle, int frame_type);
/**
* @brief
*
* @param handle
* @param frame_type 0: , 1:
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_teach_frame(rm_robot_handle *handle,int *frame_type);
/**
* @brief
*
* @param handle
* @param joint_num 1~7
* @param direction 0-1-
* @param v 1~100线
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_joint_teach(rm_robot_handle *handle,int joint_num, int direction, int v);
/**
* @brief
*
* @param handle
* @param type
* @param direction 0-1-
* @param v 线线
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
* @attention rm_set_teach_frame修改为工具坐标系
*/
RM_INTERFACE_EXPORT int rm_set_pos_teach(rm_robot_handle *handle,rm_pos_teach_type_e type, int direction, int v);
/**
* @brief 姿
*
* @param handle
* @param type
* @param direction 0-1-
* @param v 1~100
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
* @attention rm_set_teach_frame修改为工具坐标系
*/
RM_INTERFACE_EXPORT int rm_set_ort_teach(rm_robot_handle *handle,rm_ort_teach_type_e type, int direction, int v);
/**
* @brief
*
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_stop_teach(rm_robot_handle *handle);
/** @} */ // 结束组的定义
/**
* @defgroup ControllerConfig
*
* 线IP地址配置
* @{
*/
/**
* @brief
*
* @param handle
* @param voltage
* @param current
* @param temperature
* @param err_flag
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_controller_state(rm_robot_handle *handle, float *voltage, float *current, float *temperature, int *err_flag);
/**
* @brief
*
* @param handle
* @param arm_power 1-0
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_arm_power(rm_robot_handle *handle, int arm_power);
/**
* @brief
*
* @param handle
* @param power_state 1-0
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_arm_power_state(rm_robot_handle *handle, int *power_state);
/**
* @brief
*
* @param handle
* @param day
* @param hour
* @param min
* @param sec
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_system_runtime(rm_robot_handle *handle, int *day, int *hour, int *min, int *sec);
/**
* @brief
*
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_clear_system_runtime(rm_robot_handle *handle);
/**
* @brief
*
* @param handle
* @param joint_odom °
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_joint_odom(rm_robot_handle *handle, float *joint_odom);
/**
* @brief
*
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_clear_joint_odom(rm_robot_handle *handle);
/**
* @brief 线 IP
*
* @param handle
* @param ip 线 IP
* @param netmask 线
* @param gw 线
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_NetIP(rm_robot_handle *handle, const char* ip, const char* netmask, const char* gw);
/**
* @brief
*
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_clear_system_err(rm_robot_handle *handle);
/**
* @brief
*
* @param handle
* @param software_info
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_arm_software_info(rm_robot_handle *handle,rm_arm_software_version_t *software_info);
/**
* @brief RS485模式
*
* @param handle
* @param mode 0- RS485 1- modbus-RTU 2- modbus-RTU
* @param baudrate
* @param timeout modbus 100ms modbus-RTU
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_get_controller_RS485_mode(rm_robot_handle *handle, int* mode, int* baudrate, int* timeout);
/**
* @brief RS485
*
* @param handle
* @param mode 0- RS485 1- modbus-RTU
* @param baudrate
* @param timeout modbus 100ms modbus-RTU
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_get_tool_RS485_mode(rm_robot_handle *handle, int* mode, int* baudrate, int* timeout);
/**
* @brief
*
* @param handle
* @param version 54536D508 Vd5.0.8
* @param joint_v
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_joint_software_version(rm_robot_handle *handle,int *version, rm_version_t *joint_v);
RM_INTERFACE_EXPORT int rm_get_joint_software_version(rm_robot_handle *handle,int *version);
/**
* @brief
*
* @param handle
* @param version ,393189 V1.8.9
* @param end_v
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_tool_software_version(rm_robot_handle *handle, int *version, rm_version_t *end_v);
RM_INTERFACE_EXPORT int rm_get_tool_software_version(rm_robot_handle *handle, int *version);
/** @} */ // 结束组的定义
/**
* @defgroup CommunicationConfig
*
* WIFIRS232-USB RS485 使使
*
* @{
*/
/**
* @brief wifiAP
*
* @param handle
* @param wifi_name wifi名称
* @param password wifi密码
* @return int
- 0:
- -1:
* @attention WIFIAP
*/
RM_INTERFACE_EXPORT int rm_set_wifi_ap(rm_robot_handle *handle, const char* wifi_name, const char* password);
/**
* @brief WiFi STA模式
*
* @param handle
* @param router_name
* @param password Wifi密码
* @return int
- 0:
- -1:
* @attention WIFISTA
*/
RM_INTERFACE_EXPORT int rm_set_wifi_sta(rm_robot_handle *handle, const char* router_name, const char* password);
/**
* @brief RS485接口波特率设置
*
* @param handle
* @param baudrate 9600,19200,38400,115200460800460800
* @return int
- 0:
- -1:
- -2:
* @attention 使
*/
RM_INTERFACE_EXPORT int rm_set_RS485(rm_robot_handle *handle, int baudrate);
/**
* @brief 线线
*
* @param handle
* @param ip
* @param mask
* @param mac MAC地址
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_wired_net(rm_robot_handle *handle, char * ip, char * mask, char * mac);
/**
* @brief 线
*
* @param handle
* @param wifi_net 线
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
* @attention channel值只有在AP模式时才可获取到 wifi
*/
RM_INTERFACE_EXPORT int rm_get_wifi_net(rm_robot_handle *handle, rm_wifi_net_t *wifi_net);
/**
* @brief
*
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_net_default(rm_robot_handle *handle);
/**
* @brief wifi
*
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_wifi_close(rm_robot_handle *handle);
/** @} */ // 结束组的定义
/**
* @defgroup ControllerIOConfig IO配置及获取
*
* IO端口IO端口配置和特性
*
* - IO:
* - : 4
* - : DO/DI复用/
* - : 0~24V
* @{
*/
/**
* @brief IO模式
*
* @param handle
* @param io_num IO 1~4
* @param io_mode
* 0-1-2-3-
* 4-5-6-7-
* 8-姿9-姿
* 10-11-
* 12-姿13-14-
* @param io_speed_mode 12(io_mode为14时生效)
* 1IO拉低速度设置为speed参数值IO恢复高电平速度设置为初始值
* 2IO拉低速度设置为speed参数值IO恢复高电平速度维持当前值
* @param io_speed 0-100(io_mode为14时生效)
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_IO_mode(rm_robot_handle *handle, int io_num, int io_mode, int io_speed_mode=0, int io_speed=0);
/**
* @brief IO输出
*
* @param handle
* @param io_num IO 1~4
* @param state IO 1-0-
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_DO_state(rm_robot_handle *handle, int io_num, int state);
/**
* @brief
*
* @param handle
* @param io_num IO 1~4
* @param state IO
* @param io_mode
* 0-1-2-3-
* 4-5-6-7-
* 8-姿9-姿
* 10-11-
* 12-姿13-14-
* @param io_speed_mode 12(io_mode为14时生效)
* 1IO拉低速度设置为speed参数值IO恢复高电平速度设置为初始值
* 2IO拉低速度设置为speed参数值IO恢复高电平速度维持当前值
* @param io_speed 0-100(io_mode为14时生效)
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_IO_state(rm_robot_handle *handle, int io_num, int* state, int* mode, int* io_speed_mode=nullptr, int* io_speed=nullptr);
/**
* @brief IO
*
* @param handle
* @param DI_state 10-1
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_IO_input(rm_robot_handle *handle, int *DI_state);
/**
* @brief IO
*
* @param handle
* @param DO_state 10-1
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_IO_output(rm_robot_handle *handle, int *DO_state);
/**
* @brief
*
* @param handle
* @param voltage_type 00V212V324V
* @param start_enable truefalse
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_voltage(rm_robot_handle *handle, int voltage_type, bool start_enable);
/**
* @brief
*
* @param handle
* @param voltage_type 00V212V324V
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_voltage(rm_robot_handle *handle, int *voltage_type);
/** @} */ // 结束组的定义
/**
* @defgroup ToolIOConfig IO
*
* IO端口
* - :
* - : 1
* - : 0V, 5V, 12V, 24V
*
* - IO:
* - : 2
* - : /
* - :
* - : 12V24V
* - :
* - : 524V
*
* - :
* - : 1
* - : RS485
* @{
*/
/**
* @brief IO
*
* @param handle
* @param io_num IO 1~2
* @param state IO 1-0-
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_tool_DO_state(rm_robot_handle *handle, int io_num, int state);
/**
* @brief IO
*
* @param handle
* @param io_num IO 1~2
* @param io_mode 0-1-
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_tool_IO_mode(rm_robot_handle *handle, int io_num, int io_mode);
/**
* @brief IO
*
* @param handle
* @param state 0-1-
* @param mode 0-1-
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_tool_IO_state(rm_robot_handle *handle, int* state, int* mode);
/**
* @brief
*
* @param handle
* @param voltage_type 00V15V212V324V
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
* @attention 5V IO
*/
RM_INTERFACE_EXPORT int rm_set_tool_voltage(rm_robot_handle *handle, int voltage_type);
/**
* @brief
*
* @param handle
* @param voltage_type 00V15V212V324V
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_tool_voltage(rm_robot_handle *handle, int *voltage_type);
/** @} */ // 结束组的定义
/**
* @defgroup GripperControl
*
* EG2-4C2 便
* modbus
* @{
*/
/**
* @brief
*
* @param handle
* @param min_limit 0~1000
* @param max_limit 0~1000
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_gripper_route(rm_robot_handle *handle, int min_limit, int max_limit);
/**
* @brief
*
* @param handle
* @param speed 1~1000
* @param block true false
* @param timeout
* 0--
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_set_gripper_release(rm_robot_handle *handle, int speed, bool block, int timeout);
/**
* @brief
*
* @param handle
* @param speed 1~1000
* @param force 50~1000
* @param block true false
* @param timeout
* 0--
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_set_gripper_pick(rm_robot_handle *handle, int speed, int force, bool block, int timeout);
/**
* @brief
*
* @param handle
* @param speed 1~1000
* @param force 50~1000
* @param block true false
* @param timeout
* 0--
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_set_gripper_pick_on(rm_robot_handle *handle, int speed, int force, bool block, int timeout);
/**
* @brief
* @details
*
* @param handle
* @param position 1~1000
* @param block true false
* @param timeout
* 0--
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_set_gripper_position(rm_robot_handle *handle, int position, bool block, int timeout);
/**
* @brief
*
* @param handle
* @param state
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
* @attention 使modbus功能
*/
RM_INTERFACE_EXPORT int rm_get_gripper_state(rm_robot_handle *handle, rm_gripper_state_t *state);
/** @} */ // 结束组的定义
/**
* @defgroup ForceSensor
*
* 线
* Z Y
* 姿
* 200N 8Nm 300%FS 5~80 0.5%FS使
* 使
* @{
*/
/**
* @brief Fx,Fy,Fz,Mx,My,Mz
*
* @param handle
* @param data
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_force_data(rm_robot_handle *handle, rm_force_data_t *data);
/**
* @brief
*
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_clear_force_data(rm_robot_handle *handle);
/**
* @brief
* @details 姿
*
* RM65机械臂为例
* 1{0,0,-60,0,60,0}
* 2{0,0,-60,0,-30,0}
* 3{0,0,-60,0,-30,180}
* 4{0,0,-60,0,-120,0}
* @attention ;
*
* @param handle
* @param block true false
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_force_sensor(rm_robot_handle *handle, bool block);
/**
* @brief
* @details
* 沿
* @attention 44
* @param handle
* @param count 1~4
* @param joint °
* @param block true false
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_manual_set_force(rm_robot_handle *handle, int count, float *joint, bool block);
/**
* @brief
* @details 退
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_stop_set_force_sensor(rm_robot_handle *handle);
/** @} */ // 结束组的定义
/**
* @defgroup ForceSensor
*
* Z 200N 0.5%FS
* @{
*/
/**
* @brief
*
* @param handle
* @param data
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_get_Fz(rm_robot_handle *handle, rm_fz_data_t *data);
/**
* @brief
*
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_clear_Fz(rm_robot_handle *handle);
/**
* @brief
* @details
* 姿
* @param handle
* @param block true false
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_auto_set_Fz(rm_robot_handle *handle, bool block);
/**
* @brief
* @details
* 2
* 沿
* @param handle
* @param joint1 1
* @param joint2 2
* @param block true false
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_manual_set_Fz(rm_robot_handle *handle, float *joint1, float *joint2, bool block);
/** @} */ // 结束组的定义
/**
* @defgroup DragTeach
*
*
* @{
*/
/**
* @brief
*
* @param handle
* @param trajectory_record 0-1-
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_start_drag_teach(rm_robot_handle *handle, int trajectory_record);
/**
* @brief
*
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_stop_drag_teach(rm_robot_handle *handle);
/**
* @brief
* @attention 使rm_start_multi_drag_teach_new
* @param handle
* @param mode 0-1-使2-使姿3-使姿
* @param singular_wall 01
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
* @note :
-
- IO
- 仿
-
- 使
*/
RM_INTERFACE_EXPORT int rm_start_multi_drag_teach(rm_robot_handle *handle, int mode, int singular_wall);
/**
* @brief -
*
* @param handle
* @param teach_state
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
* @note :
-
- IO
- 仿
-
- 使
*/
RM_INTERFACE_EXPORT int rm_start_multi_drag_teach(rm_robot_handle *handle, rm_multi_drag_teach_t teach_state);
/**
* @brief
*
* @param handle
* @param grade 01000~100%100
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_drag_teach_sensitivity(rm_robot_handle *handle, int grade);
/**
* @brief
*
* @param handle
* @param grade 01000~100%100
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_drag_teach_sensitivity(rm_robot_handle *handle, int *grade);
/**
* @brief
* @details 20%
* @param handle
* @param block
* - 线
* - 0
* - 1
* - 线
* - 0
* -
* @attention 使线
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
- -5: 线
* @see rm_run_drag_trajectory
*/
RM_INTERFACE_EXPORT int rm_drag_trajectory_origin(rm_robot_handle *handle, int block);
/**
* @brief
*
* @param handle
* @param block
* - 线
* - 0
* - 1
* - 线
* - 0
* -
* @attention 使线
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
- -5: 线
* @attention 使rm_drag_trajectory_origin接口运动至起点位置
* @see rm_drag_trajectory_origin
*/
RM_INTERFACE_EXPORT int rm_run_drag_trajectory(rm_robot_handle *handle, int block);
/**
* @brief
*
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_pause_drag_trajectory(rm_robot_handle *handle);
/**
* @brief
*
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_continue_drag_trajectory(rm_robot_handle *handle);
/**
* @brief
*
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_stop_drag_trajectory(rm_robot_handle *handle);
/**
* @brief
*
* @param handle
* @param name 300: c:/rm_test.txt
* @param num
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_save_trajectory(rm_robot_handle *handle, const char* name, int *num);
/**
* @brief
* @details 使使
* 2S后继续下发下一条运动指令
* @param handle
* @param sensor 0-1-
* @param mode 0-1-
* @param direction 0-沿X轴1-沿Y轴2-沿Z轴3-沿RX姿态方向4-沿RY姿态方向5-沿RZ姿态方向
* @param N N
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_force_position(rm_robot_handle *handle, int sensor, int mode, int direction, float N);
/**
* @brief -
* @details 使使
* 2S后继续下发下一条运动指令
* @param handle
* @param param
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_force_position(rm_robot_handle *handle, rm_force_position_t param);
/**
* @brief
*
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_stop_force_position(rm_robot_handle *handle);
/**
* @brief
*
* @param handle
* @param mode 0 1
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_set_force_drag_mode(rm_robot_handle *handle, int mode);
/**
* @brief
*
* @param handle
* @param mode 0 1
* @return int
- 0:
- 1: false
- -1:
- -2: 1
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_get_force_drag_mode(rm_robot_handle *handle, int *mode);
/** @} */ // 结束组的定义
/**
* @defgroup HandControl
*
*
* @{
*/
/**
* @brief
*
* @param handle
* @param posture_num 1~40
* @param block true false
* @param timeout
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_set_hand_posture(rm_robot_handle *handle, int posture_num, bool block, int timeout);
/**
* @brief
*
* @param handle
* @param seq_num 1~40
* @param block true false
* @param timeout
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_set_hand_seq(rm_robot_handle *handle, int seq_num, bool block, int timeout);
/**
* @brief
* @details 61~6
* @param handle
* @param hand_angle 0~1000. -1
* @param block true false
* @param timeout
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
- -5: */
RM_INTERFACE_EXPORT int rm_set_hand_angle(rm_robot_handle *handle, const int *hand_angle, bool block, int timeout);
/**
* @brief
* @details 61~6
* @param handle
* @param hand_angle -32768+327670-2000
* @param block 01
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_hand_follow_angle(rm_robot_handle *handle, const int *hand_angle, bool block);
/**
* @brief
* @details 61~650Hz的控制频率
* @param handle
* @param hand_pos 0-655350-1000
* @param block 01
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_hand_follow_pos(rm_robot_handle *handle, const int *hand_pos, bool block);
/**
* @brief
*
* @param handle
* @param speed 1~1000
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_hand_speed(rm_robot_handle *handle, int speed);
/**
* @brief
*
* @param handle
* @param hand_force 1~1000
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_hand_force(rm_robot_handle *handle, int hand_force);
/** @} */ // 结束组的定义
/**
* @defgroup ModbusConfig Modbus
*
* RS485通讯接口JSON协议配置为标准的Modbus RTU模式
* Modbus RTU模式下JSON协议对连接在端口上的外设进行读写操作
*
* @attention
* - RS485接口在未配置为Modbus RTU模式时
* - Modbus RTU模式与机械臂控制模式不兼容Modbus RTU模式
* - Modbus RTU模式后使460800BPS18
*
* I系列控制器还支持modbus-TCP主站配置使modbus-TCP主站modbus-TCP从站
*
* @{
*/
/**
* @brief ModbusRTU模式
* @details ModbusRTU模式
*
* @param handle
* @param port 0-RS485端口为RTU主站1-RS485接口为RTU主站2-RS485端口为RTU从站
* @param baudrate 9600,115200,460800
* @param timeout Modbus设备所有的读写指令001
* @note -8-1-
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_set_modbus_mode(rm_robot_handle *handle, int port, int baudrate, int timeout);
/**
* @brief Modbus RTU
*
* @param handle
* @param port 0-RS485端口为RTU主站1-RS485接口为RTU主站2-RS485端口为RTU从站
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_close_modbus_mode(rm_robot_handle *handle, int port);
/**
* @brief ModbusTCP
*
* @param handle
* @param ip IP地址
* @param port
* @param timeout
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_set_modbustcp_mode(rm_robot_handle *handle, const char *ip, int port, int timeout);
/**
* @brief ModbusRTU模式
*
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_close_modbustcp_mode(rm_robot_handle *handle);
/**
* @brief 线
*
* @param handle
* @param params 线 8 线
* @param data 线int8
* @return int
- 0:
- 1:
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_read_coils(rm_robot_handle *handle, rm_peripheral_read_write_params_t params, int *data);
/**
* @brief
*
* @param handle
* @param params 8
* @param data int8
* @return int
- 0:
- 1:
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_read_input_status(rm_robot_handle *handle, rm_peripheral_read_write_params_t params, int *data);
/**
* @brief
*
* @param handle
* @param params 1 2
* num无需设置
* @param data int16
* @return int
- 0:
- 1:
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_read_holding_registers(rm_robot_handle *handle, rm_peripheral_read_write_params_t params, int *data);
/**
* @brief
*
* @param handle
* @param params 1 2
* num无需设置
* @param data int16
* @return int
- 0:
- 1:
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_read_input_registers(rm_robot_handle *handle, rm_peripheral_read_write_params_t params, int *data);
/**
* @brief
*
* @param handle
* @param params num无需设置
* @param data 线int16
* @return int
- 0:
- 1:
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_write_single_coil(rm_robot_handle *handle, rm_peripheral_read_write_params_t params, int data);
/**
* @brief
*
* @param handle
* @param params num无需设置
* @param data int16
* @return int
- 0:
- 1:
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_write_single_register(rm_robot_handle *handle, rm_peripheral_read_write_params_t params, int data);
/**
* @brief
*
* @param handle
* @param params 10num<=10
* @param data byte
* @return int
- 0:
- 1:
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_write_registers(rm_robot_handle *handle, rm_peripheral_read_write_params_t params, int *data);
/**
* @brief
*
* @param handle
* @param params 160 num<=160
* @param data 线byte
* @return int
- 0:
- 1:
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_write_coils(rm_robot_handle *handle, rm_peripheral_read_write_params_t params, int *data);
/**
* @brief
*
* @param handle
* @param params 线 8< num <= 120 120 线 15 byte
* @param data 线int8
* @return int
- 0:
- 1:
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_read_multiple_coils(rm_robot_handle *handle, rm_peripheral_read_write_params_t params, int *data);
/**
* @brief
*
* @param handle
* @param params 2 < num < 13 12 24 byte
* @param data int8
* @return int
- 0:
- 1:
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_read_multiple_holding_registers(rm_robot_handle *handle, rm_peripheral_read_write_params_t params, int *data);
/**
* @brief
*
* @param handle
* @param params 2 < num < 13 12 24 byte
* @param data int8
* @return int
- 0:
- 1:
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_read_multiple_input_registers(rm_robot_handle *handle, rm_peripheral_read_write_params_t params, int *data);
/** @} */ // 结束组的定义
/**
* @defgroup InstallPos
*
*
* @{
*/
/**
* @brief
*
* @param handle
* @param x °
* @param y °
* @param z °
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_install_pose(rm_robot_handle *handle, float x, float y, float z);
/**
* @brief
*
* @param handle
* @param x (out) °
* @param y (out) °
* @param z (out) °
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_install_pose(rm_robot_handle *handle, float *x, float *y, float *z);
/** @} */ // 结束组的定义
/**
* @defgroup ForcePositionControl
*
* 使
*
*
* @attention
*
* 使
* WIFI 20msUSB RS485 10ms
* 10ms使使 I 线 2ms
* @{
*/
/**
* @brief
*
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_start_force_position_move(rm_robot_handle *handle);
/**
* @brief
*
* @param handle
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_stop_force_position_move(rm_robot_handle *handle);
/**
* @brief -
*
* @param handle
* @param joint
* @param sensor 使0-1-
* @param mode 0-沿1-沿
* @param dir 0~5X/Y/Z/Rx/Ry/RzZ方向
* @param force N
* @param follow
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_force_position_move_joint(rm_robot_handle *handle,const float *joint,int sensor,int mode,int dir,float force, bool follow);
/**
* @brief -姿
*
* @param handle
* @param pose 姿
* @param sensor 使0-1-
* @param mode 0-沿1-沿
* @param dir 0~5X/Y/Z/Rx/Ry/RzZ方向
* @param force N
* @param follow
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_force_position_move_pose(rm_robot_handle *handle, rm_pose_t pose,int sensor,int mode,int dir,float force, bool follow);
/**
* @brief -
*
* @param handle
* @param param
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_force_position_move(rm_robot_handle *handle, rm_force_position_move_t param);
/** @} */ // 结束组的定义
/**
* @defgroup LiftControl
*
*
* @{
*/
/**
* @brief
*
* @param handle
* @param speed -100~100
- speed<0
- speed>0
- speed=0
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_lift_speed(rm_robot_handle *handle, int speed);
/**
* @brief
*
* @param handle
* @param speed 1~100
* @param height mm0~2600
* @param block
* - 线
* - 0
* - 1
* - 线
* - 0
* -
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
- -5: 线
*/
RM_INTERFACE_EXPORT int rm_set_lift_height(rm_robot_handle *handle, int speed, int height, int block);
/**
* @brief
*
* @param handle
* @param state
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_lift_state(rm_robot_handle *handle, rm_expand_state_t *state);
/** @} */ // 结束组的定义
/**
* @defgroup ExpandControl
*
*
* @{
*/
/**
* @brief
*
* @param handle
* @param state
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_expand_state(rm_robot_handle *handle, rm_expand_state_t *state);
/**
* @brief
*
* @param handle
* @param speed -100~100
- speed<0
- speed>0
- speed=0
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_expand_speed(rm_robot_handle *handle, int speed);
/**
* @brief
*
* @param handle
* @param speed 1~100
* @param pos
* @param block
* - 线
* - 0
* - 1
* - 线
* - 0
* -
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
- -5: 线
*/
RM_INTERFACE_EXPORT int rm_set_expand_pos(rm_robot_handle *handle, int speed, int pos, int block);
/** @} */ // 结束组的定义
/**
* @defgroup OnlineProgramming 线
*
* 线线
* @{
*/
/**
* @brief
*
* @param handle
* @param project
* @param errline err_line 0
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
- -5:
- -6:
*/
RM_INTERFACE_EXPORT int rm_send_project(rm_robot_handle *handle, rm_send_project_t project, int *errline);
/**
* @brief
*
* @param handle
* @param speed
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_plan_speed(rm_robot_handle *handle, int speed);
/**
* @brief 线
*
* @param handle
* @param page_num
* @param page_size
* @param vague_search
* @param trajectorys 线
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_program_trajectory_list(rm_robot_handle *handle, int page_num, int page_size, const char *vague_search,rm_program_trajectorys_t *trajectorys);
/**
* @brief
*
* @param handle
* @param id ID1-100
* @param speed 1-1000
* @param block
* - 线
* - 0
* - 1
* - 线
* - 0
* -
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_set_program_id_run(rm_robot_handle *handle, int id, int speed, int block);
/**
* @brief 线
*
* @param handle
* @param run_state 线
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_get_program_run_state(rm_robot_handle *handle, rm_program_run_state_t *run_state);
/**
* @brief
*
* @param handle
* @param run_state
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
- -4:
*/
RM_INTERFACE_EXPORT int rm_get_flowchart_program_run_state(rm_robot_handle *handle, rm_flowchart_run_state_t *run_state);
/**
* @brief
*
* @param handle
* @param id
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_delete_program_trajectory(rm_robot_handle *handle, int id);
/**
* @brief
*
* @param handle
* @param id 线
* @param speed 1-100
* @param name
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_update_program_trajectory(rm_robot_handle *handle, int id, int speed, const char* name);
/**
* @brief IO
*
* @param handle
* @param id IO 线 0-1000
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_default_run_program(rm_robot_handle *handle, int id);
/**
* @brief IO
*
* @param handle
* @param id IO 线 0-1000
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_default_run_program(rm_robot_handle *handle, int *id);
/**
* @brief
*
* @param handle
* @param waypoint
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_add_global_waypoint(rm_robot_handle *handle, rm_waypoint_t waypoint);
/**
* @brief
*
* @param handle
* @param waypoint
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_update_global_waypoint(rm_robot_handle *handle, rm_waypoint_t waypoint);
/**
* @brief
*
* @param handle
* @param point_name
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_delete_global_waypoint(rm_robot_handle *handle, const char* point_name);
/**
* @brief
*
* @param handle
* @param name
* @param point
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_given_global_waypoint(rm_robot_handle *handle, const char* name, rm_waypoint_t *point);
/**
* @brief
*
* @param handle
* @param page_num
* @param page_size
* @param vague_search
* @param point_list
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_global_waypoints_list(rm_robot_handle *handle, int page_num, int page_size, const char *vague_search,rm_waypoint_list_t *point_list);
/** @} */ // 结束在线编程组的定义
/**
* @defgroup UdpConfig UDP主动上报
*
* UDP 使 IP或和机械臂建立 TCP
* 5ms线
* @{
*/
/**
* @brief UDP
*
* @param handle
* @param config UDP配置结构体
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_realtime_push(rm_robot_handle *handle, rm_realtime_push_config_t config);
/**
* @brief UDP
*
* @param handle
* @param config UDP机械臂状态主动上报配置
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_realtime_push(rm_robot_handle *handle, rm_realtime_push_config_t *config);
/** @} */ // 结束组的定义
/**
* @defgroup Electronic_Fence
*
* I
* 使使
* 10
*
* <b> </b>
*
*
* @attention 仿
*
* <b> </b>
*
*
* @attention
* 使
*
* @{
*/
/**
* @brief
*
* @param handle
* @param config
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3: -4:form设置有误
*/
RM_INTERFACE_EXPORT int rm_add_electronic_fence_config(rm_robot_handle *handle, rm_fence_config_t config);
/**
* @brief
*
* @param handle
* @param config
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_update_electronic_fence_config(rm_robot_handle *handle, rm_fence_config_t config);
/**
* @brief
*
* @param handle
* @param form_name 10 线
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_delete_electronic_fence_config(rm_robot_handle *handle, const char* form_name);
/**
* @brief
*
* @param handle
* @param names
* @param len
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_electronic_fence_list_names(rm_robot_handle *handle, rm_fence_names_t *names, int *len);
/**
* @brief
*
* @param handle
* @param name
* @param config
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_given_electronic_fence_config(rm_robot_handle *handle, const char* name, rm_fence_config_t *config);
/**
* @brief
*
* @param handle
* @param config_list
* @param len
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_electronic_fence_list_infos(rm_robot_handle *handle, rm_fence_config_list_t *config_list, int *len);
/**
* @brief 使
*
* @param handle
* @param state 使
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
* @note
*
* 仿
*/
RM_INTERFACE_EXPORT int rm_set_electronic_fence_enable(rm_robot_handle *handle, rm_electronic_fence_enable_t state);
/**
* @brief 使
*
* @param handle
* @param state 使
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_electronic_fence_enable(rm_robot_handle *handle,rm_electronic_fence_enable_t *state);
/**
* @brief
*
* @param handle
* @param config
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_electronic_fence_config(rm_robot_handle *handle, rm_fence_config_t config);
/**
* @brief
*
* @param handle
* @param config
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_electronic_fence_config(rm_robot_handle *handle, rm_fence_config_t *config);
/**
* @brief 使
*
* @param handle
* @param state
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_virtual_wall_enable(rm_robot_handle *handle, rm_electronic_fence_enable_t state);
/**
* @brief 使
*
* @param handle
* @param state
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_virtual_wall_enable(rm_robot_handle *handle,rm_electronic_fence_enable_t *state);
/**
* @brief
*
* @param handle
* @param config
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_virtual_wall_config(rm_robot_handle *handle, rm_fence_config_t config);
/**
* @brief
*
* @param handle
* @param config
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_virtual_wall_config(rm_robot_handle *handle, rm_fence_config_t *config);
/** @} */ // 结束电子围栏组的定义
/**
* @defgroup SelfCollision
*
* 使
* @attention 仿
* @{
*/
/**
* @brief 使
*
* @param handle
* @param state true代表使能false代表禁使能
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_self_collision_enable(rm_robot_handle *handle, bool state);
/**
* @brief 使
*
* @param handle
* @param state true代表使能false代表禁使能
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_self_collision_enable(rm_robot_handle *handle,bool *state);
/** @} */ // 结束组的定义
/**
* @brief
* @param handle
* @param mode
* 0
* 96009600
* 115200115200
* 256000256000
* 460800460800
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_rm_plus_mode(rm_robot_handle *handle, int mode);
/**
* @brief
* @param handle
* @param mode
* 0
* 96009600
* 115200115200
* 256000256000
* 460800460800
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*
*/
RM_INTERFACE_EXPORT int rm_get_rm_plus_mode(rm_robot_handle *handle, int *mode);
/**
* @brief ()
* @param handle
* @param mode 0 1 2
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_set_rm_plus_touch(rm_robot_handle *handle, int mode);
/**
* @brief ()
* @param handle
* @param mode 0 1 2
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_rm_plus_touch(rm_robot_handle *handle, int *mode);
/**
* @brief ()
* @param handle
* @param info
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_rm_plus_base_info(rm_robot_handle *handle, rm_plus_base_info_t *info);
/**
* @brief ()
* @param handle
* @param info
* @return int
- 0:
- 1: false
- -1:
- -2:
- -3:
*/
RM_INTERFACE_EXPORT int rm_get_rm_plus_state_info(rm_robot_handle *handle, rm_plus_state_info_t *info);
/******************************************算法接口*******************************************************/
/**
* @defgroup Algo
*
* 姿
* @{
*/
/**
* @brief
* @return char*
*/
RM_INTERFACE_EXPORT char* rm_algo_version(void);
/**
* @brief ()
*
* @param Mode
* @param Type
*/
RM_INTERFACE_EXPORT void rm_algo_init_sys_data(rm_robot_arm_model_e Mode, rm_force_type_e Type);
/**
* @brief ()
* @details DH参数判断机械臂类型RM_MODEL_UNIVERSAL_E
*
* @param sensor_type
* @param dh DH参数
* @param dof
*/
RM_INTERFACE_EXPORT void rm_algo_init_sys_data_by_dh(rm_force_type_e sensor_type, rm_dh_t dh, int dof);
/**
* @brief
* @details (RM_MODEL_UNIVERSAL_E)
*
* @param dof
*/
RM_INTERFACE_EXPORT void rm_algo_set_robot_dof(int dof);
/**
* @brief
*
* @param x X轴安装角度 °
* @param y Y轴安装角度 °
* @param z z轴安装角度 °
*/
RM_INTERFACE_EXPORT void rm_algo_set_angle(float x, float y, float z);
/**
* @brief
*
* @param x X轴安装角度 °
* @param y Y轴安装角度 °
* @param z z轴安装角度 °
*/
RM_INTERFACE_EXPORT void rm_algo_get_angle(float* x, float* y, float* z);
/**
* @brief
*
* @param coord_work
*/
RM_INTERFACE_EXPORT void rm_algo_set_workframe(const rm_frame_t* const coord_work);
/**
* @brief
*
* @param coord_work
*/
RM_INTERFACE_EXPORT void rm_algo_get_curr_workframe(rm_frame_t* coord_work);
/**
* @brief
*
* @param coord_tool
*/
RM_INTERFACE_EXPORT void rm_algo_set_toolframe(const rm_frame_t* const coord_tool);
/**
* @brief
*
* @param coord_tool
*/
RM_INTERFACE_EXPORT void rm_algo_get_curr_toolframe(rm_frame_t* coord_tool);
/**
* @brief
*
* @param joint_limit °
*/
RM_INTERFACE_EXPORT void rm_algo_set_joint_max_limit(const float* const joint_limit);
/**
* @brief
*
* @param joint_limit
*/
RM_INTERFACE_EXPORT void rm_algo_get_joint_max_limit(float* joint_limit);
/**
* @brief
*
* @param joint_limit °
*/
RM_INTERFACE_EXPORT void rm_algo_set_joint_min_limit(const float* const joint_limit);
/**
* @brief
*
* @param joint_limit
*/
RM_INTERFACE_EXPORT void rm_algo_get_joint_min_limit(float* joint_limit);
/**
* @brief
*
* @param joint_slim_max RPM
*/
RM_INTERFACE_EXPORT void rm_algo_set_joint_max_speed(const float* const joint_slim_max);
/**
* @brief
*
* @param joint_slim_max
*/
RM_INTERFACE_EXPORT void rm_algo_get_joint_max_speed(float* joint_slim_max);
/**
* @brief
*
* @param joint_alim_max RPM/s
*/
RM_INTERFACE_EXPORT void rm_algo_set_joint_max_acc(const float* const joint_alim_max);
/**
* @brief
*
* @param joint_alim_max
*/
RM_INTERFACE_EXPORT void rm_algo_get_joint_max_acc(float* joint_alim_max);
/**
* @brief
*
* @param mode true姿姿MOVJ_P姿
false姿姿姿
*/
RM_INTERFACE_EXPORT void rm_algo_set_redundant_parameter_traversal_mode(bool mode);
/**
* @brief 使Algo_Set_Redundant_Parameter_Traversal_Mode接口设置逆解求解模式
*
* @param handle
* @param params
* @param q_out °
* @return int
* - 0:
* - 1:
* - -1:
* - -2: 姿
* @attention 使
* 使
*NULL即可
*/
RM_INTERFACE_EXPORT int rm_algo_inverse_kinematics(rm_robot_handle *handle, rm_inverse_kinematics_params_t params, float *q_out);
/**
* @brief ()
* @param handle NULL
* @param params
* @return rm_inverse_kinematics_all_solve_t
*/
RM_INTERFACE_EXPORT rm_inverse_kinematics_all_solve_t rm_algo_inverse_kinematics_all(rm_robot_handle *handle, rm_inverse_kinematics_params_t params);
/**
* @brief ()
* @param weight ,{1,1,1,1,1,1}
* @param params
* @return int ik_solve.q_solve[i],-188-1
*/
RM_INTERFACE_EXPORT int rm_algo_ikine_select_ik_solve(float *weight, rm_inverse_kinematics_all_solve_t params);
/**
* @brief ()
* @param q_solve °
* @return int 0:,1~dof: i个关节超限位,-1
*/
RM_INTERFACE_EXPORT int rm_algo_ikine_check_joint_position_limit(const float* const q_solve);
/**
* @brief ()
* @param dt sec
* @param q_ref °
* @param q_solve
* @return int 0: i:i超限 -1
*/
RM_INTERFACE_EXPORT int rm_algo_ikine_check_joint_velocity_limit(float dt, const float* const q_ref, const float* const q_solve);
/**
* @brief RM75
* @param q_ref °
* @param arm_angle °
* @return int
* 0:
* -1: RM75
* -2: q_ref
*/
RM_INTERFACE_EXPORT int rm_algo_calculate_arm_angle_from_config_rm75(float *q_ref, float *arm_angle);
/**
* @brief RM75逆运动学
* @param params rm_inverse_kinematics_params_t
* @param arm_angle :°
* @param q_solve :°
* @return int
* 0:
* -1:
* -2:
* -3: RM75
*/
RM_INTERFACE_EXPORT int rm_algo_inverse_kinematics_rm75_for_arm_angle(rm_inverse_kinematics_params_t params, float arm_angle, float *q_solve);
/**
* @brief ,
* @param q °
* @param NULL使0.010-1
* @return 0:
* -1:
* -2:
*/
RM_INTERFACE_EXPORT int rm_algo_universal_singularity_analyse(const float* const q, float singluar_value_limit);
/**
* @brief ()limit_qe=10deg,limit_qw=10deg,limit_d = 0.05m
*/
RM_INTERFACE_EXPORT void rm_algo_kin_singularity_thresholds_init();
/**
* @brief ()
* @param limit_qe (J3接近0的范围),unit°,default: about 10deg
* @param limit_qw (J5接近0的范围),unit°,default: about 10deg
* @param limit_d (), unit: m, default: 0.05
*/
RM_INTERFACE_EXPORT void rm_algo_kin_set_singularity_thresholds(float limit_qe_algo, float limit_qw_algo, float limit_d_algo);
/**
* @brief ()
*
* @param limit_qe (J3接近0的范围), unit: °, default: about 10deg
* @param limit_qw (J5接近0的范围), unit: °, default: about 10deg
* @param limit_d (), unit: m, default: 0.05
*/
RM_INTERFACE_EXPORT void rm_algo_kin_get_singularity_thresholds(float* limit_qe_algo, float* limit_qw_algo, float* limit_d_algo);
/**
* @brief
* @param q ,°
* @param distance 0,m,NULL
* @return 0-1-2-3-46
*/
RM_INTERFACE_EXPORT int rm_algo_kin_robot_singularity_analyse(const float* const q, float *distance);
/**
* @brief
* @param toolSphere_i (0~4)
* @param data ,
*/
RM_INTERFACE_EXPORT void rm_algo_set_tool_envelope(const int toolSphere_i, rm_tool_sphere_t data);
/**
* @brief
* @param toolSphere_i rm_get_tool_voltage包络球编号 (0~4)
* @param data ,
*/
RM_INTERFACE_EXPORT void rm_algo_get_tool_envelope(const int toolSphere_i, rm_tool_sphere_t *data);
/**
* @brief
* @param joint °
* @return int
* 0:
* 1: ,
*/
RM_INTERFACE_EXPORT int rm_algo_safety_robot_self_collision_detection(float *joint);
/**
* @brief
*
* @param handle
* @param joint
*
* @return rm_pose_t 姿
* @attention 使
* 使
*NULL即可
*/
RM_INTERFACE_EXPORT rm_pose_t rm_algo_forward_kinematics(rm_robot_handle *handle,const float* const joint);
/**
* @brief
*
* @param eu
* @return rm_quat_t
*/
RM_INTERFACE_EXPORT rm_quat_t rm_algo_euler2quaternion(rm_euler_t eu);
/**
* @brief
*
* @param qua
* @return rm_euler_t
*/
RM_INTERFACE_EXPORT rm_euler_t rm_algo_quaternion2euler(rm_quat_t qua);
/**
* @brief
*
* @param state
* @return rm_matrix_t
*/
RM_INTERFACE_EXPORT rm_matrix_t rm_algo_euler2matrix(rm_euler_t state);
/**
* @brief 姿
*
* @param state 姿
* @return rm_matrix_t
*/
RM_INTERFACE_EXPORT rm_matrix_t rm_algo_pos2matrix(rm_pose_t state);
/**
* @brief 姿
*
* @param matrix
* @return rm_pose_t 姿
*/
RM_INTERFACE_EXPORT rm_pose_t rm_algo_matrix2pos(rm_matrix_t matrix);
/**
* @brief
*
* @param matrix
* @param state 姿
* @return rm_pose_t 姿
*/
RM_INTERFACE_EXPORT rm_pose_t rm_algo_base2workframe(rm_matrix_t matrix, rm_pose_t state);
/**
* @brief
*
* @param matrix
* @param state 姿
* @return rm_pose_t 姿
*/
RM_INTERFACE_EXPORT rm_pose_t rm_algo_workframe2base(rm_matrix_t matrix, rm_pose_t state);
/**
* @brief 姿
*
* @param handle
* @param curr_joint °
* @param rotate_axis : 1:x轴, 2:y轴, 3:z轴
* @param rotate_angle : , ()
* @param choose_axis 使
* @return rm_pose_t 姿
*/
RM_INTERFACE_EXPORT rm_pose_t rm_algo_rotate_move(rm_robot_handle *handle,const float* const curr_joint, int rotate_axis, float rotate_angle, rm_pose_t choose_axis);
/**
* @brief 沿姿
*
* @param handle
* @param curr_joint
* @param move_lengthx 沿X轴移动长度
* @param move_lengthy 沿Y轴移动长度
* @param move_lengthz 沿Z轴移动长度
* @return rm_pose_t 姿
*/
RM_INTERFACE_EXPORT rm_pose_t rm_algo_cartesian_tool(rm_robot_handle *handle,const float* const curr_joint, float move_lengthx,
float move_lengthy, float move_lengthz);
/**
* @brief Pos和Rot沿某坐标系有一定的位移和旋转角度后姿
*
* @param handle NULL
* @param poseCurrent 姿
* @param deltaPosAndRot m
* @param frameMode 0:Workwork即可任意设置坐标系1:Tool
* @return rm_pose_t 姿
*/
RM_INTERFACE_EXPORT rm_pose_t rm_algo_pose_move(rm_robot_handle *handle,rm_pose_t poseCurrent, const float *deltaPosAndRot, int frameMode);
/**
* @brief 姿姿
*
* @param handle
* @param eu_end 姿
* @return rm_pose_t 姿
*/
RM_INTERFACE_EXPORT rm_pose_t rm_algo_end2tool(rm_robot_handle *handle,rm_pose_t eu_end);
/**
* @brief 姿姿
*
* @param handle
* @param eu_tool 姿
* @return rm_pose_t 姿
*/
RM_INTERFACE_EXPORT rm_pose_t rm_algo_tool2end(rm_robot_handle *handle,rm_pose_t eu_tool);
/**
* @brief DH参数
*
* @return rm_DH_t DH参数
*/
RM_INTERFACE_EXPORT rm_dh_t rm_algo_get_dh();
/**
* @brief DH参数
*
* @param dh DH参数
*/
RM_INTERFACE_EXPORT void rm_algo_set_dh(rm_dh_t dh);
/** @} */ // 结束算法组的定义
/*********************************************四代控制器新增接口*******************************************************/
/**
* @brief
* @param handle
* @param page_num
* @param page_size
* @param vague_search
* @param list
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_get_trajectory_file_list(rm_robot_handle *handle, int page_num, int page_size, const char *vague_search,rm_trajectory_list_t *trajectory_list);
/**
* @brief
* @param handle
* @param trajectory_name
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_set_run_trajectory(rm_robot_handle *handle, const char *trajectory_name);
/**
* @brief
* @param handle
* @param trajectory_name
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_delete_trajectory_file(rm_robot_handle *handle, const char *trajectory_name);
/**
* @brief
* @param handle
* @param trajectory_name
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_save_trajectory_file(rm_robot_handle *handle, const char *trajectory_name);
/**
* @brief
* @param handle
* @param state truefalse
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_set_arm_emergency_stop(rm_robot_handle *handle, bool state);
/**
* @brief Modbus TCP主站
* @param handle
* @param master Modbus TCP主站信息
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_add_modbus_tcp_master(rm_robot_handle *handle, rm_modbus_tcp_master_info_t master);
/**
* @brief Modbus TCP主站
* @param handle
* @param master_name Modbus TCP主站名称
* @param master Modbus TCP主站信息
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_update_modbus_tcp_master(rm_robot_handle *handle, const char *master_name, rm_modbus_tcp_master_info_t master);
/**
* @brief Modbus TCP主站
* @param handle
* @param master_name Modbus TCP主站名称
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_delete_modbus_tcp_master(rm_robot_handle *handle, const char *master_name);
/**
* @brief Modbus TCP主站
* @param handle
* @param master_name Modbus TCP主站名称
* @param master Modbus TCP主站信息
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_get_modbus_tcp_master(rm_robot_handle *handle, const char *master_name, rm_modbus_tcp_master_info_t *master);
/**
* @brief TCP主站列表
* @param handle
* @param page_num
* @param page_size
* @param vague_search
* @param list TCP主站列表
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_get_modbus_tcp_master_list(rm_robot_handle *handle, int page_num, int page_size, const char *vague_search,rm_modbus_tcp_master_list_t *list);
/**
* @brief RS485模式()
* @param handle
* @param controller_rs485_mode 0RS485串行通讯1modbus-RTU主站模式2-modbus-RTU从站模式
* @param baudrate (9600 19200 38400 57600 115200 230400 460800)
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_set_controller_rs485_mode(rm_robot_handle *handle, int controller_rs485_mode, int baudrate);
/**
* @brief RS485模式()
* @param handle
* @param controller_rs485_mode 0RS485串行通讯1modbus-RTU主站模式2-modbus-RTU从站模式
* @param baudrate (9600 19200 38400 57600 115200 230400 460800)
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_get_controller_rs485_mode_v4(rm_robot_handle *handle, int *controller_rs485_mode, int *baudrate);
/**
* @brief RS485模式()
* @param handle
* @param mode 0-RS485端口为RTU主站1-RS485端口为灵巧手模式2-RS485端口为夹爪模式
* @param baudrate (9600,115200,460800)
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_set_tool_rs485_mode(rm_robot_handle *handle, int mode, int baudrate);
/**
* @brief RS485模式()
* @param handle
* @param tool_rs485_mode 0-modbus-RTU主站模式1-2-
* @param baudrate (9600,115200,460800)
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_get_tool_rs485_mode_v4(rm_robot_handle *handle, int *tool_rs485_mode, int *baudrate);
/**
* @brief Modbus RTU协议读线圈
* @param handle
* @param param 线
* @param data 线param.num
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_read_modbus_rtu_coils(rm_robot_handle *handle, rm_modbus_rtu_read_params_t param, int *data);
/**
* @brief Modbus RTU协议写线圈
* @param handle
* @param param 线
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_write_modbus_rtu_coils(rm_robot_handle *handle, rm_modbus_rtu_write_params_t param);
/**
* @brief Modbus RTU协议读离散量输入
* @param handle
* @param param
* @param data param.num
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_read_modbus_rtu_input_status(rm_robot_handle *handle, rm_modbus_rtu_read_params_t param, int *data);
/**
* @brief Modbus RTU协议读保持寄存器
* @param handle
* @param param
* @param data param.num
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_read_modbus_rtu_holding_registers(rm_robot_handle *handle, rm_modbus_rtu_read_params_t param, int *data);
/**
* @brief Modbus RTU协议写保持寄存器
* @param handle
* @param param
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_write_modbus_rtu_registers(rm_robot_handle *handle, rm_modbus_rtu_write_params_t param);
/**
* @brief Modbus RTU协议读输入寄存器
* @param handle
* @param param
* @param data param.num
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_read_modbus_rtu_input_registers(rm_robot_handle *handle, rm_modbus_rtu_read_params_t param, int *data);
/**
* @brief Modbus TCP协议读线圈
* @param handle
* @param param 线
* @param data 线param.num
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_read_modbus_tcp_coils(rm_robot_handle *handle, rm_modbus_tcp_read_params_t param, int *data);
/**
* @brief Modbus TCP协议写线圈
* @param handle
* @param param 线
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_write_modbus_tcp_coils(rm_robot_handle *handle, rm_modbus_tcp_write_params_t param);
/**
* @brief Modbus TCP协议读离散量输入
* @param handle
* @param param
* @param data param.num
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_read_modbus_tcp_input_status(rm_robot_handle *handle, rm_modbus_tcp_read_params_t param, int *data);
/**
* @brief Modbus TCP协议读保持寄存器
* @param handle
* @param param
* @param data param.num
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_read_modbus_tcp_holding_registers(rm_robot_handle *handle, rm_modbus_tcp_read_params_t param, int *data);
/**
* @brief Modbus TCP协议写保持寄存器
* @param handle
* @param param
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_write_modbus_tcp_registers(rm_robot_handle *handle, rm_modbus_tcp_write_params_t param);
/**
* @brief Modbus TCP协议读输入寄存器
* @param handle
* @param param
* @param data param.num
* @return int
* - 0:
* - 1: false
* - -1:
* - -2:
* - -3:
* - -4:
*/
RM_INTERFACE_EXPORT int rm_read_modbus_tcp_input_registers(rm_robot_handle *handle, rm_modbus_tcp_read_params_t param, int *data);
};
#endif // __cplusplus
#endif // MY_CPP_WRAPPER_H