Skip to content

一、基础连接与系统接口(nrc_interface.h)

1.1 连接管理

get_library_version

获取库版本信息。

函数签名:

cpp
std::string get_library_version();

返回值: 库版本相关信息字符串。


connect_robot

连接机器人控制器。同步方式,函数会阻塞直到返回连接结果。

函数签名:

cpp
SOCKETFD connect_robot(const std::string& ip, const std::string& port);

参数说明:

参数类型输入/输出说明
ipconst std::string&输入控制器 IP 地址,如 "192.168.1.13"
portconst std::string&输入端口号,如 "6001"

返回值: SOCKETFD(int)—— 连接成功返回 socket 文件描述符;-1 表示连接失败。


disconnect_robot

断开与控制器连接。

函数签名:

cpp
Result disconnect_robot(SOCKETFD socketFd);

get_connection_status

获取控制器连接状态。

函数签名:

cpp
Result get_connection_status(SOCKETFD socketFd);

set_reconnect

设置是否开启断开后自动重连功能,默认关闭。

函数签名:

cpp
Result set_reconnect(SOCKETFD socketFd, bool reconnect);

set_reconnect_callback

设置重连成功后的回调函数。

函数签名:

cpp
Result set_reconnect_callback(SOCKETFD socketFd, void(*function)());

1.2 消息通讯

send_message

向控制器发送一条自定义消息。

函数原型:

cpp
Result send_message(SOCKETFD socketFd, int messageID, const std::string& message);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
messageIDint消息 ID
messageconst std::string&消息内容

返回值: SUCCESS(0) 表示成功,负数表示失败。

使用示例:

cpp
// 向控制器发送 ID=100 的消息
Result result = send_message(fd, 100, "hello controller");

recv_message

注册消息接收回调,当收到控制器消息时触发。

函数原型:

cpp
Result recv_message(SOCKETFD socketFd, void(*callback)(int messageID, const char* message));

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
callbackvoid()(int, const char)回调函数,参数为消息 ID 和消息内容

回调函数内不能做耗时操作或阻塞。

使用示例:

cpp
void on_message(int messageID, const char* message) {
    printf("收到消息 ID=%d: %s\n", messageID, message);
}

Result result = recv_message(fd, on_message);

1.3 伺服控制

set_axis_sdo

设置伺服命令字(SDO,Service Data Object)。用于直接向伺服驱动器写入 CANopen SDO 对象字典数据。

函数原型:

cpp
Result set_axis_sdo(SOCKETFD socketFd, int axisNum, unsigned int index, unsigned int subindex, int cmdvalue, unsigned int size);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
axisNumint机器人的轴编号
indexunsigned int命令字编码(对象字典索引)
subindexunsigned int命令字子编码(对象字典子索引)
cmdvalueint要设置进去的值
sizeunsigned int命令字对应的值的字节数

返回值: SUCCESS(0) 表示成功,负数表示失败。

使用示例:

cpp
// 向 1 号轴写入对象字典 0x6060 子索引 0,值 8(CSP 模式),1 字节
Result result = set_axis_sdo(fd, 1, 0x6060, 0x00, 8, 1);

set_robots_parallel

设置多机器人并行模式。

函数原型:

cpp
Result set_robots_parallel(SOCKETFD socketFd, bool open);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
openbooltrue=开启并行,false=关闭

返回值: SUCCESS(0) 表示成功,负数表示失败。


clear_error / clear_error_robot

伺服清错。

函数原型:

cpp
Result clear_error(SOCKETFD socketFd);
Result clear_error_robot(SOCKETFD socketFd, int robotNum);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本

返回值: SUCCESS(0) 表示成功,负数表示失败。

注意

出错前如果处于伺服运行状态,清错后需要手动进行下电操作,释放控制器的占用状态才可以继续上电(清错后不能直接上电,先下电再上电)。


set_servo_state / set_servo_state_robot

设置伺服状态(停止/就绪)。

函数原型:

cpp
Result set_servo_state(SOCKETFD socketFd, int state);
Result set_servo_state_robot(SOCKETFD socketFd, int robotNum, int state);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
stateint0=停止,1=就绪

返回值: SUCCESS(0) 表示成功,负数表示失败。

注意

  • 设置伺服就绪前应确保系统没有错误(先调用 clear_error
  • 该函数只有伺服状态为 0(停止)或 1(就绪)时调用生效,状态为 2(报警)或 3(运行)时不能直接设置

get_servo_state / get_servo_state_robot

获取伺服状态。

函数原型:

cpp
Result get_servo_state(SOCKETFD socketFd, int& status);
Result get_servo_state_robot(SOCKETFD socketFd, int robotNum, int& status);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
statusint&输出参数:0=停止,1=就绪,2=报警,3=运行

返回值: SUCCESS(0) 表示成功,负数表示失败。

使用示例:

cpp
int status = 0;
Result result = get_servo_state(fd, status);
if (result == SUCCESS) {
    printf("伺服状态: %d (0=停止 1=就绪 2=报警 3=运行)\n", status);
}

set_servo_poweron / set_servo_poweron_robot

机器人上电。

函数原型:

cpp
Result set_servo_poweron(SOCKETFD socketFd);
Result set_servo_poweron_robot(SOCKETFD socketFd, int robotNum);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本

返回值: SUCCESS(0) 表示成功,负数表示失败。

注意

调用该函数前需要先调用 set_servo_state(fd, 1) 将伺服设置为就绪状态;上电成功后调用 get_servo_state 返回 3(运行状态)。该函数只有伺服状态为 1(就绪)时调用生效。


set_servo_poweroff / set_servo_poweroff_robot

机器人下电。

函数原型:

cpp
Result set_servo_poweroff(SOCKETFD socketFd);
Result set_servo_poweroff_robot(SOCKETFD socketFd, int robotNum);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本

返回值: SUCCESS(0) 表示成功,负数表示失败。

注意

下电成功后调用 get_servo_state 返回 1(就绪状态)。该函数只有伺服状态为 3(运行)时调用生效。


1.4 位置与状态查询

get_current_position / get_current_position_robot

获取机器人当前位置。

函数原型:

cpp
Result get_current_position(SOCKETFD socketFd, int coord, std::vector<double>& pos);
Result get_current_position_robot(SOCKETFD socketFd, int robotNum, int coord, std::vector<double>& pos);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
coordint坐标系:0=关节,1=直角,2=工具,3=用户
posstd::vector<double>&输出参数,存储点位数据,长度 7

返回值: SUCCESS(0) 表示成功,负数表示失败。

使用示例:

cpp
std::vector<double> pos(7);
Result result = get_current_position(fd, 1, pos);  // 直角坐标
if (result == SUCCESS) {
    printf("当前位置: X=%.2f Y=%.2f Z=%.2f\n", pos[0], pos[1], pos[2]);
}

get_joint_position / get_joint_position_robot

获取机器人指定关节的直角坐标(24.03 版本专用)。

函数原型:

cpp
Result get_joint_position(SOCKETFD socketFd, int axisNum, std::vector<double>& pos);
Result get_joint_position_robot(SOCKETFD socketFd, int robotNum, int axisNum, std::vector<double>& pos);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
axisNumint指定需要查询的关节
posstd::vector<double>&输出参数,存储点位数据,长度 7

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_current_extra_position / get_current_extra_position_robot

获取机器人外部轴当前位置。

函数原型:

cpp
Result get_current_extra_position(SOCKETFD socketFd, std::vector<double>& pos);
Result get_current_extra_position_robot(SOCKETFD socketFd, int robotNum, std::vector<double>& pos);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
posstd::vector<double>&输出参数,点位数组,长度 5

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_current_positon_and_extra_position / get_current_positon_and_extra_position_robot

获取机器人和外部轴的当前位置。

函数原型:

cpp
Result get_current_positon_and_extra_position(SOCKETFD socketFd, int coord, std::vector<double>& pos);
Result get_current_positon_and_extra_position_robot(SOCKETFD socketFd, int robotNum, int coord, std::vector<double>& pos);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
coordint坐标系:0=关节,1=直角,2=工具,3=用户
posstd::vector<double>&输出参数,点位数组,长度 12(前 7 位机器人,后 5 位外部轴)

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_robot_running_state / get_robot_running_state_robot

获取机器人运行状态。

函数原型:

cpp
Result get_robot_running_state(SOCKETFD socketFd, int& status);
Result get_robot_running_state_robot(SOCKETFD socketFd, int robotNum, int& status);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
statusint&输出参数:0=停止,1=暂停,2=运行

返回值: SUCCESS(0) 表示成功,负数表示失败。


1.5 速度与模式控制

set_speed / set_speed_robot

设置当前模式的速度(示教/运行/远程三种模式)。

函数原型:

cpp
Result set_speed(SOCKETFD socketFd, int speed);
Result set_speed_robot(SOCKETFD socketFd, int robotNum, int speed);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
speedint速度,范围 0<speed≤100

返回值: SUCCESS(0) 表示成功,负数表示失败。

使用示例:

cpp
// 设置当前模式速度为 80%
Result result = set_speed(fd, 80);

get_speed / get_speed_robot

获取当前模式的速度。

函数原型:

cpp
Result get_speed(SOCKETFD socketFd, int& speed);
Result get_speed_robot(SOCKETFD socketFd, int robotNum, int& speed);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
speedint&输出参数,当前速度

返回值: SUCCESS(0) 表示成功,负数表示失败。


set_current_coord / set_current_coord_robot

设置机器人当前坐标系。

函数原型:

cpp
Result set_current_coord(SOCKETFD socketFd, int coord);
Result set_current_coord_robot(SOCKETFD socketFd, int robotNum, int coord);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
coordint坐标系:0=关节,1=直角,2=工具,3=用户

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_current_coord / get_current_coord_robot

获取机器人当前坐标系。

函数原型:

cpp
Result get_current_coord(SOCKETFD socketFd, int& coord);
Result get_current_coord_robot(SOCKETFD socketFd, int robotNum, int& coord);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
coordint&输出参数,坐标系:0=关节,1=直角,2=工具,3=用户

返回值: SUCCESS(0) 表示成功,负数表示失败。


set_current_mode / set_current_mode_robot

设置机器人当前模式。

函数原型:

cpp
Result set_current_mode(SOCKETFD socketFd, int mode);
Result set_current_mode_robot(SOCKETFD socketFd, int robotNum, int mode);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
modeint模式:0=示教,1=远程,2=运行

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_current_mode / get_current_mode_robot

获取机器人当前模式。

函数原型:

cpp
Result get_current_mode(SOCKETFD socketFd, int& mode);
Result get_current_mode_robot(SOCKETFD socketFd, int robotNum, int& mode);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
modeint&输出参数,模式:0=示教,1=远程,2=运行

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_robot_type / get_robot_type_robot

获取机器人类型。

函数原型:

cpp
Result get_robot_type(SOCKETFD socketFd, int& type);
Result get_robot_type_robot(SOCKETFD socketFd, int robotNum, int& type);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
typeint&输出参数,机器人类型:1=六轴串联多关节,2=四轴 SCARA,3=四轴码垛,4=四轴串联多关节,5=单轴,6=五轴串联多关节,7=六轴协作,8=二轴 SCARA,9=三轴 SCARA,10=三轴直角,11=三轴异形,12=七轴串联多关节,13=SCARA 异形一,14=四轴码垛丝杆

返回值: SUCCESS(0) 表示成功,负数表示失败。


1.7 用户坐标

set_user_coord_number / set_user_coord_number_robot

设置用户坐标编号。

函数原型:

cpp
Result set_user_coord_number(SOCKETFD socketFd, int userNum);
Result set_user_coord_number_robot(SOCKETFD socketFd, int robotNum, int userNum);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
userNumint用户坐标编号

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_user_coord_number / get_user_coord_number_robot

获取当前使用的用户坐标编号。

函数原型:

cpp
Result get_user_coord_number(SOCKETFD socketFd, int& userNum);
Result get_user_coord_number_robot(SOCKETFD socketFd, int robotNum, int& userNum);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
userNumint&输出参数,当前用户坐标编号

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_user_coord_para / get_user_coord_para_robot

获取用户坐标参数。

函数原型:

cpp
Result get_user_coord_para(SOCKETFD socketFd, int userNum, std::vector<double>& pos);
Result get_user_coord_para_robot(SOCKETFD socketFd, int robotNum, int userNum, std::vector<double>& pos);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
userNumint用户坐标编号
posstd::vector<double>&输出参数,用户坐标参数(X/Y/Z 偏移 + A/B/C 旋转角)

返回值: SUCCESS(0) 表示成功,负数表示失败。


set_user_coordinate_data / set_user_coordinate_data_robot

标定用户坐标(写入坐标数据)。

函数原型:

cpp
Result set_user_coordinate_data(SOCKETFD socketFd, int userNum, std::vector<double> pos);
Result set_user_coordinate_data_robot(SOCKETFD socketFd, int robotNum, int userNum, std::vector<double> pos);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
userNumint用户坐标编号
posstd::vector<double>坐标数据(X/Y/Z 偏移 + A/B/C 旋转角)

返回值: SUCCESS(0) 表示成功,负数表示失败。


calibration_oxy / calibration_oxy_robot

标定 OXY(三点法:原点、X 轴方向点、Y 轴方向点)。

函数原型:

cpp
Result calibration_oxy(SOCKETFD socketFd, int userNum, std::string xyo);
Result calibration_oxy_robot(SOCKETFD socketFd, int robotNum, int userNum, std::string xyo);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
userNumint用户坐标编号
xyostd::string标定类型:'X'(X 轴方向点)、'Y'(Y 轴方向点)、'O'(原点)

返回值: SUCCESS(0) 表示成功,负数表示失败。

使用示例:

cpp
// 三点法标定用户坐标
calibration_oxy(fd, 1, "O");  // 1. 末梢移到原点位置
calibration_oxy(fd, 1, "X");  // 2. 向 X 轴正方向移动任意距离
calibration_oxy(fd, 1, "Y");  // 3. 向 Y 轴正方向移动任意距离

calculate_user_coordinate / calculate_user_coordinate_robot

计算用户坐标(OXY 三点标定完成后计算最终结果)。

函数原型:

cpp
Result calculate_user_coordinate(SOCKETFD socketFd, int userNumber);
Result calculate_user_coordinate_robot(SOCKETFD socketFd, int robotNum, int userNum);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
userNum / userNumberint用户坐标编号

返回值: SUCCESS(0) 表示成功,负数表示失败。

使用示例:

cpp
// OXY 三点标定后计算用户坐标
Result result = calculate_user_coordinate(fd, 1);
if (result == SUCCESS) {
    printf("用户坐标计算成功\n");
}

1.8 全局点位与变量

set_global_position / set_global_position_robot

设置全局 GP 点位。

函数原型:

cpp
Result set_global_position(SOCKETFD socketFd, std::string posName, std::vector<double> posInfo);
Result set_global_position_robot(SOCKETFD socketFd, int robotNum, std::string posName, std::vector<double> posInfo);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
posNamestd::string全局位置名,如 "GP0001"
posInfostd::vector<double>点位数据,长度 14:[0]坐标系(0=关节,1=直角,2=工具,3=用户);[1]角度制(0)/弧度制(1);[2]形态;[3]工具手坐标序号;[4]用户坐标序号;[5][6]备用;[7-13]点位信息

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_global_position / get_global_position_robot

查询全局 GP 点位。

函数原型:

cpp
Result get_global_position(SOCKETFD socketFd, std::string posName, std::vector<double>& pos);
Result get_global_position_robot(SOCKETFD socketFd, int robotNum, std::string posName, std::vector<double>& pos);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
posNamestd::string全局位置名,如 "GP0001"
posstd::vector<double>&输出参数,全局点位数组,长度 14(前 7 位为点位坐标/姿态信息,后 7 位为机器人位置)

返回值: SUCCESS(0) 表示成功,负数表示失败。


set_global_sync_position / set_global_sync_position_robot

设置全局 GE 点位(含外部轴)。

函数原型:

cpp
Result set_global_sync_position(SOCKETFD socketFd, const std::string& posName, std::vector<double> posInfo);
Result set_global_sync_position_robot(SOCKETFD socketFd, int robotNum, const std::string& posName, std::vector<double> posInfo);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
posNameconst std::string&全局位置名,如 "GE0001"
posInfostd::vector<double>点位数据,长度 21:[0-6]坐标系/角度制/形态/工具/用户坐标序号/备用;[7-13]机器人本体点位;[14-20]外部轴点位

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_global_sync_position / get_global_sync_position_robot

查询全局 GE 点位。

函数原型:

cpp
Result get_global_sync_position(SOCKETFD socketFd, const std::string& posName, std::vector<double>& pos);
Result get_global_sync_position_robot(SOCKETFD socketFd, int robotNum, const std::string& posName, std::vector<double>& pos);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
posNameconst std::string&全局位置名,如 "GE0001"
posstd::vector<double>&输出参数,全局点位数组,长度 21(前 7 位坐标/姿态,中间 7 位机器人位置,后 7 位外部轴位置)

返回值: SUCCESS(0) 表示成功,负数表示失败。


set_global_variant / set_global_variant_robot

设置全局变量(GI/GD/GB 系列)。

函数原型:

cpp
Result set_global_variant(SOCKETFD socketFd, const std::string& varName, double varValue);
Result set_global_variant_robot(SOCKETFD socketFd, int robotNum, const std::string& varName, double varValue);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
varNameconst std::string&全局变量名,如 "GI001"、"GD001"、"GB001"
varValuedouble变量值

返回值: SUCCESS(0) 表示成功,负数表示失败。

使用示例:

cpp
// 设置全局整数变量 GI001 为 100
Result result = set_global_variant(fd, "GI001", 100);

get_global_variant / get_global_variant_robot

查询全局变量。

函数原型:

cpp
Result get_global_variant(SOCKETFD socketFd, const std::string& varName, double& vaule);
Result get_global_variant_robot(SOCKETFD socketFd, int robotNum, const std::string& varName, double& vaule);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
varNameconst std::string&全局变量名,如 "GI001"、"GD001"、"GB001"
vauledouble&输出参数,变量值

返回值: SUCCESS(0) 表示成功,负数表示失败。


1.9 零点与标定

set_axis_zero_position / set_axis_zero_position_robot

设置零点位置(将当前轴位置设为零点)。

函数原型:

cpp
Result set_axis_zero_position(SOCKETFD socketFd, int axis);
Result set_axis_zero_position_robot(SOCKETFD socketFd, int robotNum, int axis);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
axisint轴号

返回值: SUCCESS(0) 表示成功,负数表示失败。


set_zero_pos_deviation / set_zero_pos_deviation_robot

设置零点偏移。

函数原型:

cpp
Result set_zero_pos_deviation(SOCKETFD socketFd, int axis, double shift);
Result set_zero_pos_deviation_robot(SOCKETFD socketFd, int robotNum, int axis, double shift);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
axisint需要偏移的轴号
shiftdouble偏移量,范围 -360° < shift < 360°

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_single_cycle / get_single_cycle_robot

获取单圈值(编码器单圈位置)。

函数原型:

cpp
Result get_single_cycle(SOCKETFD socketFd, std::vector<double>& single_cycle);
Result get_single_cycle_robot(SOCKETFD socketFd, int robotNum, std::vector<double>& single_cycle);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
single_cyclestd::vector<double>&输出参数,单圈值数组,长度 7

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_four_point / get_four_point_robot

查询 4 点标定(SCARA 杆长标定)。

函数原型:

cpp
Result get_four_point(SOCKETFD socketFd, std::vector<double>& result);
Result get_four_point_robot(SOCKETFD socketFd, int robotNum, std::vector<double>& result);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
resultstd::vector<double>&输出参数,4 点标定结果

返回值: SUCCESS(0) 表示成功,负数表示失败。


set_four_point_mark / set_four_point_mark_robot

进行 4 点标记。

函数原型:

cpp
Result set_four_point_mark(SOCKETFD socketFd, int point, int status);
Result set_four_point_mark_robot(SOCKETFD socketFd, int robotNum, int point, int status);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
pointint标记点位编号,范围 0-3
statusint标记状态:0=取消标记,1=标记

返回值: SUCCESS(0) 表示成功,负数表示失败。


four_point_calculation / four_point_calculation_robot

4 点标定计算。

函数原型:

cpp
Result four_point_calculation(SOCKETFD socketFd, double L1, double L2, std::vector<double>& result);
Result four_point_calculation_robot(SOCKETFD socketFd, int robotNum, double L1, double L2, std::vector<double>& result);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
L1double大臂杆长
L2double小臂杆长
resultstd::vector<double>&输出参数,标定计算结果

返回值: SUCCESS(0) 表示成功,负数表示失败。


set_result_for_DH / set_result_for_DH_robot

将 4 点标定计算的结果写入机器人 DH 参数。

函数原型:

cpp
Result set_result_for_DH(SOCKETFD socketFd, int& apply);
Result set_result_for_DH_robot(SOCKETFD socketFd, int robotNum, int& apply);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
applyint&写入是否成功:成功/失败(1/0)

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_origin_coord_to_target_coord / get_origin_coord_to_target_coord_robot

坐标值坐标系转换(原坐标系转换为目标坐标系)。

函数原型:

cpp
Result get_origin_coord_to_target_coord(SOCKETFD socketFd, int originCoord, std::vector<double> originPos, int targetCoord, std::vector<double>& targetPos);
Result get_origin_coord_to_target_coord_robot(SOCKETFD socketFd, int robotNum, int originCoord, std::vector<double> originPos, int targetCoord, std::vector<double>& targetPos);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
originCoordint原坐标系:0=关节,1=直角,2=工具,3=用户
originPosstd::vector<double>要进行转换的坐标值,长度 7:关节取值范围 0-6[-10000,10000];直角/工具/用户取值范围 0-2[-10000,10000]、3-6[-3.1416,3.1416]rad
targetCoordint目标坐标系:0=关节,1=直角,2=工具,3=用户
targetPosstd::vector<double>&输出参数,转换后的坐标值

返回值: SUCCESS(0) 表示成功,负数表示失败。


1.10 机器人切换与参数

set_robot_switch

切换当前机器人。

函数原型:

cpp
Result set_robot_switch(SOCKETFD socketFd, int robot);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotint切换到的机器人编号

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_robot_switch

获取当前机器人。

函数原型:

cpp
Result get_robot_switch(SOCKETFD socketFd, int& robot);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotint&输出参数,当前机器人编号

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_robot_dh_param / get_robot_dh_param_robot

获取当前机器人 DH 参数。

函数原型:

cpp
Result get_robot_dh_param(SOCKETFD socketFd, RobotDHParam& param);
Result get_robot_dh_param_robot(SOCKETFD socketFd, int robotNum, RobotDHParam& param);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
paramRobotDHParam&输出参数,DH 参数结构体

返回值: SUCCESS(0) 表示成功,负数表示失败。

DH 参数是机器人运动学建模的标准方法(Denavit-Hartenberg),包含连杆长度 a、连杆扭角 α、连杆偏距 d、关节角 θ,直接影响机器人运动学正逆解计算精度。


get_robot_joint_param / get_robot_joint_param_robot

获取当前机器人关节参数。

函数原型:

cpp
Result get_robot_joint_param(SOCKETFD socketFd, int id, RobotJointParam& param);
Result get_robot_joint_param_robot(SOCKETFD socketFd, int robotNum, int id, RobotJointParam& param);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
idint关节编号,范围 [1,6]
paramRobotJointParam&输出参数,关节参数结构体

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_teachbox_connection_status / get_teachbox_connection_status_robot

查询示教盒连接状态。

函数原型:

cpp
Result get_teachbox_connection_status(SOCKETFD socketFd, bool& connected);
Result get_teachbox_connection_status_robot(SOCKETFD socketFd, int robotNum, bool& connected);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
connectedbool&输出参数,示教盒连接状态

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_controller_id / get_controller_id_robot

获取控制器序列号 ID(char* 版本)。

函数原型:

cpp
Result get_controller_id(SOCKETFD socketFd, char* id);
Result get_controller_id_robot(SOCKETFD socketFd, int robotNum, char* id);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
idchar*输出参数,控制器序列号 ID

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_controller_id_csharp / get_controller_id_csharp_robot

获取控制器序列号 ID(std::vector<char> 版本,供 C# 使用)。

函数原型:

cpp
Result get_controller_id_csharp(SOCKETFD socketFd, std::vector<char>& id);
Result get_controller_id_csharp_robot(SOCKETFD socketFd, int robotNum, std::vector<char>& id);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
idstd::vector<char>&输出参数,控制器序列号 ID

返回值: SUCCESS(0) 表示成功,负数表示失败。


1.11 传感器与电机数据

get_static_search_position / get_static_search_position_robot

获取静态寻位坐标。

函数原型:

cpp
Result get_static_search_position(SOCKETFD socketFd, int fileid, int tableid, int delaytime, std::vector<double>& pos);
Result get_static_search_position_robot(SOCKETFD socketFd, int robotNum, int fileid, int tableid, int delaytime, std::vector<double>& pos);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
fileidint寻位文件号
tableidint寻位参数表号
delaytimeint参数表延时
posstd::vector<double>&输出参数,寻位坐标

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_curretn_motor_torque / get_curretn_motor_torque_robot

获取当前电机扭矩。

函数原型:

cpp
Result get_curretn_motor_torque(SOCKETFD socketFd, std::vector<int>& motorTorque, std::vector<int>& motorTorqueSync);
Result get_curretn_motor_torque_robot(SOCKETFD socketFd, int robotNum, std::vector<int>& motorTorque, std::vector<int>& motorTorqueSync);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
motorTorquestd::vector<int>&输出参数,机器人扭矩,长度 7,单位 [%]
motorTorqueSyncstd::vector<int>&输出参数,外部轴扭矩,长度 5,单位 [%]

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_curretn_motor_speed / get_curretn_motor_speed_robot

获取当前电机转速。

函数原型:

cpp
Result get_curretn_motor_speed(SOCKETFD socketFd, std::vector<int>& motorSpeed, std::vector<int>& motorSpeedSync);
Result get_curretn_motor_speed_robot(SOCKETFD socketFd, int robotNum, std::vector<int>& motorSpeed, std::vector<int>& motorSpeedSync);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
motorSpeedstd::vector<int>&输出参数,机器人电机转速,长度 7,单位 [RPM]
motorSpeedSyncstd::vector<int>&输出参数,外部轴电机转速,长度 5,单位 [RPM]

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_curretn_motor_payload / get_curretn_motor_payload_robot

获取当前电机负载。

函数原型:

cpp
Result get_curretn_motor_payload(SOCKETFD socketFd, std::vector<double>& motorPayload, std::vector<double>& motorPayloadSync);
Result get_curretn_motor_payload_robot(SOCKETFD socketFd, int robotNum, std::vector<double>& motorPayload, std::vector<double>& motorPayloadSync);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
motorPayloadstd::vector<double>&输出参数,机器人电机负载,长度 7,单位 [%]
motorPayloadSyncstd::vector<double>&输出参数,外部轴电机负载,长度 5,单位 [%]

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_current_line_speed_and_joint_speed / get_current_line_speed_and_joint_speed_robot

获取当前末端线速度和轴速度。

函数原型:

cpp
Result get_current_line_speed_and_joint_speed(SOCKETFD socketFd, double& lineSpeed, std::vector<double>& jointSpeed, std::vector<double>& jointSpeedSync);
Result get_current_line_speed_and_joint_speed_robot(SOCKETFD socketFd, int robotNum, double& lineSpeed, std::vector<double>& jointSpeed, std::vector<double>& jointSpeedSync);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
lineSpeeddouble&输出参数,末端线速度,单位 [mm/s]
jointSpeedstd::vector<double>&输出参数,关节速度,长度 5,单位 [°/s]
jointSpeedSyncstd::vector<double>&输出参数,外部轴关节速度,长度 5,单位 [°/s]

返回值: SUCCESS(0) 表示成功,负数表示失败。


1.12 运动控制

robot_start_jogging / robot_start_jogging_robot

开始点动。

函数原型:

cpp
Result robot_start_jogging(SOCKETFD socketFd, int axis, bool dir);
Result robot_start_jogging_robot(SOCKETFD socketFd, int robotNum, int axis, bool dir);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
axisint轴号
dirbool方向(true=正方向,false=反方向)

返回值: SUCCESS(0) 表示成功,负数表示失败。


robot_stop_jogging / robot_stop_jogging_robot

停止点动。

函数原型:

cpp
Result robot_stop_jogging(SOCKETFD socketFd, int axis);
Result robot_stop_jogging_robot(SOCKETFD socketFd, int robotNum, int axis);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
axisint轴号

返回值: SUCCESS(0) 表示成功,负数表示失败。


robot_go_to_reset_position / robot_go_to_reset_position_robot

回到设定的复位点。

函数原型:

cpp
Result robot_go_to_reset_position(SOCKETFD socketFd);
Result robot_go_to_reset_position_robot(SOCKETFD socketFd, int robotNum);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本

返回值: SUCCESS(0) 表示成功,负数表示失败。

复位点需在示教器【设置-复位点设置】中配置,支持关节/直线插补到安全点,或使用复位程序指令自定义复位轨迹。


robot_go_home / robot_go_home_robot

回到设定的零点。

函数原型:

cpp
Result robot_go_home(SOCKETFD socketFd);
Result robot_go_home_robot(SOCKETFD socketFd, int robotNum);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本

返回值: SUCCESS(0) 表示成功,负数表示失败。


robot_movej / robot_movej_robot

关节运动(MoveJ)。关节空间点到点运动,速度快但路径不固定。

函数原型:

cpp
Result robot_movej(SOCKETFD socketFd, MoveCmd moveCmd);
Result robot_movej_robot(SOCKETFD socketFd, int robotNum, MoveCmd moveCmd);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
moveCmdMoveCmd运动指令参数

MoveCmd 关键字段:

字段说明
targetPosValue点位数组,n 个轴就赋值前 n 位数组,其余置 0
velocity速度,范围 0<vel≤100,单位 %
coord坐标系,范围 0≤coord≤3
acc / dec加速度/减速度,范围 0<acc/dec≤100
isSync是否同步模式:true=同步,false=不同步

返回值: SUCCESS(0) 表示成功,负数表示失败。

使用示例:

cpp
MoveCmd cmd;
cmd.coord = 1;           // 直角坐标
cmd.velocity = 80;       // 速度 80%
cmd.acc = 50;            // 加速度 50%
cmd.dec = 50;            // 减速度 50%
cmd.targetPosValue = {1, 0, 0, 100.0, 200.0, 300.0, 0};  // 目标点

Result result = robot_movej(fd, cmd);

robot_movel / robot_movel_robot

直线运动(MoveL)。笛卡尔空间直线运动。

函数原型:

cpp
Result robot_movel(SOCKETFD socketFd, MoveCmd moveCmd);
Result robot_movel_robot(SOCKETFD socketFd, int robotNum, MoveCmd moveCmd);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
moveCmdMoveCmd运动指令参数

MoveCmd 关键字段:

字段说明
targetPosValue点位数组,n 个轴就赋值前 n 位数组,其余置 0
velocity速度,范围 0<vel≤1000,单位 mm/s
coord坐标系,范围 0≤coord≤3
acc / dec加速度/减速度,范围 0<acc/dec≤100
isSync是否同步模式:true=同步,false=不同步

返回值: SUCCESS(0) 表示成功,负数表示失败。


robot_extra_movej / robot_extra_movej_robot

外部轴关节运动。

函数原型:

cpp
Result robot_extra_movej(SOCKETFD socketFd, MoveCmd moveCmd);
Result robot_extra_movej_robot(SOCKETFD socketFd, int robotNum, MoveCmd moveCmd);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
moveCmdMoveCmd运动指令参数

点位数组长度 14:前 7 位为机器人本体点位,后 7 位为外部轴点位,几轴就填几位,其余置 0,外部轴从 pos[7] 开始。速度范围 0<vel≤100。


robot_extra_movel / robot_extra_movel_robot

外部轴直线运动。

函数原型:

cpp
Result robot_extra_movel(SOCKETFD socketFd, MoveCmd moveCmd);
Result robot_extra_movel_robot(SOCKETFD socketFd, int robotNum, MoveCmd moveCmd);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
moveCmdMoveCmd运动指令参数

点位数组长度 14,结构同 robot_extra_movej。速度范围 1<vel≤9999。


1.13 7000 端口功能(伺服跟踪)

本节接口需要额外连接 7000 端口:SOCKETFD fd7000 = connect_robot("192.168.1.13", "7000");

get_robot_state / get_robot_state_robot

7000 端口查询状态。

函数原型:

cpp
Result get_robot_state(SOCKETFD socketFd, RobotState param);
Result get_robot_state_robot(SOCKETFD socketFd, int robotNum, RobotState param);

参数说明:

参数类型说明
socketFdSOCKETFD7000 端口连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
paramRobotState查询状态参数

返回值: SUCCESS(0) 表示成功,负数表示失败。


robot_state_callback

7000 端口状态返回的回调函数。

函数原型:

cpp
Result robot_state_callback(SOCKETFD socketFd, void(*function)(const char* message));

参数说明:

参数类型说明
socketFdSOCKETFD7000 端口连接句柄
functionvoid()(const char)状态回调函数

返回值: SUCCESS(0) 表示成功,负数表示失败。


servo_move / servo_move_robot

外部点移动(伺服跟踪)。

函数原型:

cpp
Result servo_move(SOCKETFD socketFd, ServoMovePara servoMove);
Result servo_move_robot(SOCKETFD socketFd, int robotNum, ServoMovePara servoMove);

参数说明:

参数类型说明
socketFdSOCKETFD7000 端口连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
servoMoveServoMovePara伺服运动参数

返回值: SUCCESS(0) 表示成功,负数表示失败。

使用示例:

cpp
SOCKETFD fd7000 = connect_robot("192.168.1.13", "7000");
ServoMovePara servoMove;
// 设置伺服运动参数...
Result result = servo_move(fd7000, servoMove);

enable_servo_position_motion_control / enable_servo_position_motion_control_robot

开启/关闭伺服点位运动控制。

函数原型:

cpp
Result enable_servo_position_motion_control(SOCKETFD socketFd, bool statue);
Result enable_servo_position_motion_control_robot(SOCKETFD socketFd, int robotNum, bool statue);

参数说明:

参数类型说明
socketFdSOCKETFD7000 端口连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
statuebool1=开启,0=关闭

返回值: SUCCESS(0) 表示成功,负数表示失败。


servo_point_position_motion_control / servo_point_position_motion_control_robot

伺服点位运动控制。

函数原型:

cpp
Result servo_point_position_motion_control(SOCKETFD socketFd, ServoPointMovePara servoMove);
Result servo_point_position_motion_control_robot(SOCKETFD socketFd, int robotNum, ServoPointMovePara servoMove);

参数说明:

参数类型说明
socketFdSOCKETFD7000 端口连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
servoMoveServoPointMovePara伺服点位运动参数

返回值: SUCCESS(0) 表示成功,负数表示失败。


1.14 碰撞检测与拖拽

set_collision_para / set_collision_para_robot

设置碰撞检测阈值。

函数原型:

cpp
Result set_collision_para(SOCKETFD socketFd, CollisionPara collisionpara);
Result set_collision_para_robot(SOCKETFD socketFd, int robotNum, CollisionPara collisionpara);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
collisionparaCollisionPara碰撞检测参数结构体(含指令位置响应时间、误差允许时间、碰撞检测阈值(点动)、碰撞检测阈值(指令)、机器人轴数)

返回值: SUCCESS(0) 表示成功,负数表示失败。


set_darg_mode / set_darg_mode_robot

设置拖拽示教的拖拽方式。

函数原型:

cpp
Result set_darg_mode(SOCKETFD socketFd, int mode);
Result set_darg_mode_robot(SOCKETFD socketFd, int robotNum, int mode);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
modeint拖拽模式:0=无,1=3D 鼠标,2=力矩模式,3=位置(22.07 版本无位置模式)

返回值: SUCCESS(0) 表示成功,负数表示失败。


set_position_dragParams / set_position_dragParams_robot

设置位置拖动参数(笛卡尔空间线速度限制和关节空间速度限制,22.07 版本无此功能)。

函数原型:

cpp
Result set_position_dragParams(SOCKETFD socketFd, DragParam& param);
Result set_position_dragParams_robot(SOCKETFD socketFd, int robotNum, DragParam& param);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
paramDragParam&位置拖动参数结构体

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_drag_thread_is_end / get_drag_thread_is_end_robot

获取拖拽是否已结束。

函数原型:

cpp
Result get_drag_thread_is_end(SOCKETFD socketFd, bool& endFlag);
Result get_drag_thread_is_end_robot(SOCKETFD socketFd, int robotNum, bool& endFlag);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
endFlagbool&输出参数,拖拽结束标志位

返回值: SUCCESS(0) 表示成功,负数表示失败。


1.15 独立轴控制

独立轴控制(22.07 版本无此功能)用于伺服轴独立于机器人本体运行,支持点到点、恒转速(PV)、恒转矩等模式。使用前需在示教器【设置-独立轴参数】中新建独立轴并配置关节参数(最多 10 个独立轴)。

new_independent_axis_param / new_independent_axis_param_robot

新建独立轴参数。

函数原型:

cpp
Result new_independent_axis_param(SOCKETFD socketFd, int axis_num);
Result new_independent_axis_param_robot(SOCKETFD socketFd, int robotNum, int axis_num);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
axis_numint新建的独立轴数量

返回值: SUCCESS(0) 表示成功,负数表示失败。


modify_independent_axis_param / modify_independent_axis_param_robot

修改独立轴参数(先新建再修改)。

函数原型:

cpp
Result modify_independent_axis_param(SOCKETFD socketFd, IndependentAxisParam& param);
Result modify_independent_axis_param_robot(SOCKETFD socketFd, int robotNum, IndependentAxisParam& param);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
paramIndependentAxisParam&独立轴参数结构体

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_independent_axis_param / get_independent_axis_param_robot

获取独立轴参数。

函数原型:

cpp
Result get_independent_axis_param(SOCKETFD socketFd, int num, IndependentAxisParam& param);
Result get_independent_axis_param_robot(SOCKETFD socketFd, int robotNum, int num, IndependentAxisParam& param);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
numint独立轴编号
paramIndependentAxisParam&输出参数,独立轴参数结构体

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_axis_sum / get_axis_sum_robot

获取独立轴总数。

函数原型:

cpp
Result get_axis_sum(SOCKETFD socketFd, int& sum);
Result get_axis_sum_robot(SOCKETFD socketFd, int robotNum, int& sum);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
sumint&输出参数,独立轴总数

返回值: SUCCESS(0) 表示成功,负数表示失败。


delete_axis_sum / delete_axis_sum_robot

删除某个独立轴。

函数原型:

cpp
Result delete_axis_sum(SOCKETFD socketFd, int& num);
Result delete_axis_sum_robot(SOCKETFD socketFd, int robotNum, int& num);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
numint&将要删除的独立轴编号

返回值: SUCCESS(0) 表示成功,负数表示失败。


get_axis_position / get_axis_position_robot

查询独立轴位置。

函数原型:

cpp
Result get_axis_position(SOCKETFD socketFd, int& num, double& currentPos);
Result get_axis_position_robot(SOCKETFD socketFd, int robotNum, int& num, double& currentPos);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
numint&要查询的独立轴
currentPosdouble&输出参数,独立轴当前位置

返回值: SUCCESS(0) 表示成功,负数表示失败。


independent_axis_zero_calibration

独立轴零点标定。

函数原型:

cpp
Result independent_axis_zero_calibration(SOCKETFD socketFd, int num);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
numint要标定的独立轴

返回值: SUCCESS(0) 表示成功,负数表示失败。


set_independent_axis_PV_run

独立控制轴 PV 运动(恒转速,仅支持外部轴)。

函数原型:

cpp
Result set_independent_axis_PV_run(SOCKETFD socketFd, IndependentAxisRun param);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
paramIndependentAxisRun运动参数结构体(含速度、加减速等)

返回值: SUCCESS(0) 表示成功,负数表示失败。


set_independent_axis_PV_stop

独立控制轴 PV 停止(仅支持外部轴)。

函数原型:

cpp
Result set_independent_axis_PV_stop(SOCKETFD socketFd, int num);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
numint轴编号

返回值: SUCCESS(0) 表示成功,负数表示失败。


cancel_independent_axis_move

取消轴独立控制运动(仅支持外部轴)。

函数原型:

cpp
Result cancel_independent_axis_move(SOCKETFD socketFd, int num);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
numint轴编号

返回值: SUCCESS(0) 表示成功,负数表示失败。


independent_axis_homing

独立轴回零。

函数原型:

cpp
Result independent_axis_homing(SOCKETFD socketFd, int num);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
numint轴编号

返回值: SUCCESS(0) 表示成功,负数表示失败。

回零使用 CSP 模式(对象字典 607A),需配置 PDO 后正常使用。


independent_axis_homing_stop

独立轴回零停止。

函数原型:

cpp
Result independent_axis_homing_stop(SOCKETFD socketFd, int num);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
numint轴编号

返回值: SUCCESS(0) 表示成功,负数表示失败。


independent_axis_jog

独立轴点动。

函数原型:

cpp
Result independent_axis_jog(SOCKETFD socketFd, IndependentAxisRun param);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
paramIndependentAxisRun点动参数结构体

返回值: SUCCESS(0) 表示成功,负数表示失败。

点动使用 CSV 模式(对象字典 60FF),点动速度范围 [0.001,10000],加减速倍数范围 [1,5]。


1.16 机器人形态与可达性

get_robot_configuration / get_robot_configuration_robot

获取 4 轴 SCARA 机器人的形态。SCARA 机器人在运动学正逆解时存在多解情况,需要通过形态参数指定机器人当前的臂型配置。

函数签名:

cpp
Result get_robot_configuration(SOCKETFD socketFd, int& configuration);
Result get_robot_configuration_robot(SOCKETFD socketFd, int robotNum, int& configuration);

参数说明:

参数类型输入/输出说明
socketFdSOCKETFD输入连接句柄
robotNumint输入机器人编号(仅 _robot 版本)
configurationint&输出机器人形态

形态值说明:

含义说明
1左手形态(Lefty)机器人第 2 关节相对于第 1 关节与末端连线处于左侧
2右手形态(Righty)机器人第 2 关节相对于第 1 关节与末端连线处于右侧

返回值:

  • 0:成功
  • 负数:失败

注意事项:

  • 该接口仅适用于 4 轴 SCARA 机器人,其他机器人类型调用可能返回无效值。
  • 形态值在点位数据结构 posInfo[2] 中同样使用(见 set_global_position 等接口的点位格式说明),运动规划时需确保形态一致。
  • 在切换工具手坐标系或用户坐标系后,建议重新获取当前形态以确认配置正确。

使用示例:

cpp
// 获取当前机器人形态
int config;
Result result = get_robot_configuration(fd, config);
if (result == 0) {
    if (config == 1) {
        printf("当前形态:左手(Lefty)\n");
    } else if (config == 2) {
        printf("当前形态:右手(Righty)\n");
    }
}

get_pos_reachable / get_pos_reachable_robot

判断指定点位在当前机器人工作空间内是否可达。该接口基于机器人运动学正逆解算法,验证目标点位是否存在有效的关节解。

函数签名:

cpp
Result get_pos_reachable(SOCKETFD socketFd, std::vector<double> pos, std::string movetype, bool &result);
Result get_pos_reachable_robot(SOCKETFD socketFd, int robotNum, std::vector<double> pos, std::string movetype, bool &result);

参数说明:

参数类型输入/输出说明
socketFdSOCKETFD输入连接句柄
robotNumint输入机器人编号(仅 _robot 版本)
posstd::vector<double>输入目标点位坐标数据,长度 14
movetypestd::string输入运动方式:"MOVJ"(关节运动)或 "MOVL"(直线运动)
resultbool&输出点位是否可达

pos 向量格式(长度 14):

索引含义说明
[0]坐标系0=关节,1=直角,2=工具,3=用户
[1]角度单位0=角度制,1=弧度制
[2]形态SCARA 机器人形态:1=左手,2=右手
[3]工具手坐标序号当前使用的工具手编号
[4]用户坐标序号当前使用的用户坐标系编号
[5]-[6]备用保留字段
[7]-[13]点位信息关节角(关节坐标系)或 XYZ+姿态(直角/工具/用户坐标系)

返回值:

  • 0:成功(查询操作本身成功)
  • 负数:失败

注意

result 参数才是点位可达性的判断结果,true 表示可达,false 表示不可达。函数返回值仅表示接口调用是否成功。

注意事项:

  • 同一目标点位在不同运动方式(MOVJ / MOVL)下的可达性判断结果可能不同:关节运动可能通过非直线路径到达,而直线运动受限于工作空间边界和奇异位形。
  • 点位中的形态参数(pos[2])会影响逆解结果,需与实际机器人形态保持一致。
  • 该接口内部调用运动学正逆解算法,对于存在关节限位、自碰撞或奇异位形的情况会返回不可达。

使用示例:

cpp
// 构造目标点位(直角坐标系,角度制,形态=左手)
std::vector<double> pos(14, 0);
pos[0] = 1;      // 坐标系:直角
pos[1] = 0;      // 角度制
pos[2] = 1;      // 形态:左手
pos[3] = 1;      // 工具手编号
pos[4] = 1;      // 用户坐标编号
pos[7] = 400.0;  // X (mm)
pos[8] = 0.0;    // Y (mm)
pos[9] = 300.0;  // Z (mm)
pos[10] = 180.0; // Rx (度)
pos[11] = 0.0;   // Ry (度)
pos[12] = 0.0;   // Rz (度)

// 判断 MOVL 直线运动是否可达
bool reachable = false;
Result ret = get_pos_reachable(fd, pos, "MOVL", reachable);
if (ret == 0) {
    if (reachable) {
        printf("目标点位通过 MOVL 可达\n");
    } else {
        printf("目标点位通过 MOVL 不可达,请尝试 MOVJ 或调整目标点位\n");
    }
}

// 判断 MOVJ 关节运动是否可达
ret = get_pos_reachable(fd, pos, "MOVJ", reachable);
if (ret == 0 && reachable) {
    printf("目标点位通过 MOVJ 可达\n");
}