Skip to content

工具坐标系配置toolCoordinateConfig

工具坐标系标定、切换、删除、修改、查询及工具包络参数等配置。

六点法自动设置工具坐标系-标记点位rm_set_auto_tool_frame()

  • 方法原型:
C
int rm_set_auto_tool_frame(rm_robot_handle * handle,int point_num)

可以跳转rm_robot_handle查阅结构体详细描述

  • 参数说明:
参数类型说明
handle输入参数机械臂句柄。
point_num输入参数1~6代表6个标定点。
  • 返回值:
参数类型说明
0int成功。
1int控制器返回false,传递参数错误或机械臂状态发生错误。
-1int数据发送失败,通信过程中出现问题。
-2int数据接收失败,通信过程中出现问题或者控制器超时没有返回。
-3int返回值解析失败,接收到的数据格式不正确或不完整。
  • 使用示例
C
int point_num = 1; // 设置当前位置为第一个标定点  
  
 // 设置当前位置为第一个标定点   
ret = rm_set_auto_tool_frame(robot_handle, point_num);  
if (ret == 0) {  
    // 设置成功  
    printf("Auto tool frame set successfully with point number: %d\n", point_num);  
} else {  
    // 设置失败
    printf("Failed to set auto tool frame. Error code: %d\n", result);  
}

六点法自动设置工具坐标系-提交rm_generate_auto_tool_frame()

  • 方法原型:
C
int rm_generate_auto_tool_frame(rm_robot_handle * handle,const char * name,float payload,float x,float y,float z)

可以跳转rm_robot_handle查阅结构体详细描述

  • 参数说明:
参数类型说明
handle输入参数机械臂句柄。
name输入参数工具坐标系名称,不能超过十个字节。
payload输入参数工具执行末端负载重量,单位kg
x输入参数工具执行末端负载x轴方向位置,单位m。
y输入参数工具执行末端负载y轴方向位置,单位m。
z输入参数工具执行末端负载z轴方向位置,单位m。
  • 返回值:
参数类型说明
0int成功。
1int控制器返回false,传递参数错误或机械臂状态发生错误。
-1int数据发送失败,通信过程中出现问题。
-2int数据接收失败,通信过程中出现问题或者控制器超时没有返回。
-3int返回值解析失败,接收到的数据格式不正确或不完整。
  • 使用示例
C
// 定义工具坐标系的名称、末端负载重量和质心  
const char *tool_name = "Tool1";  
float tool_payload = 5.0; // 末端负载重量是5kg  
float tool_x = 0.1; // 末端负载质心CX  
float tool_y = 0.2; // 末端负载质心CY  
float tool_z = 0.3; // 末端负载质心CZ  
  
// 调用函数自动生成工具坐标系  
ret = rm_generate_auto_tool_frame(robot_handle, tool_name, tool_payload, tool_x, tool_y, tool_z);  
if (ret == 0) {  
    // 成功生成并设置工具坐标系  
    printf("Auto tool frame '%s' generated and set successfully. \n", tool_name);  
} else {  
    // 生成或设置失败处理  
    printf("Failed to generate and set auto tool frame '%s'. Error code: %d\n", tool_name, ret);  
}

设置工具坐标系rm_set_manual_tool_frame()

  • 方法原型:
C
int rm_set_manual_tool_frame(rm_robot_handle * handle,rm_frame_t frame)

可以跳转rm_robot_handlerm_frame_t查阅结构体详细描述

  • 参数说明:
参数类型说明
handle输入参数机械臂句柄。
frame输入参数工具坐标系参数,包含末端负载重量、质心位置坐标等参数。
  • 返回值:
参数类型说明
0int成功。
1int控制器返回false,传递参数错误或机械臂状态发生错误。
-1int数据发送失败,通信过程中出现问题。
-2int数据接收失败,通信过程中出现问题或者控制器超时没有返回。
-3int返回值解析失败,接收到的数据格式不正确或不完整。
  • 使用示例
C
// 创建一个rm_frame_t结构体实例并初始化
rm_frame_t toolframe;
strncpy(toolframe.frame_name, "Tool2", sizeof(toolframe.frame_name) - 1);
toolframe.payload = 3.0;
toolframe.pose.position.x = 0.0f;
toolframe.pose.position.y = 0.0f;
toolframe.pose.position.z = 0.0f;
toolframe.pose.euler.rx = 0.0f;
toolframe.pose.euler.ry = 0.0f;
toolframe.pose.euler.rz = 0.0f;
toolframe.x = 0.0f;
toolframe.y = 0.0f;
toolframe.z = 0.0f;

// 调用函数手动设置工具坐标系
int result = rm_set_manual_tool_frame(robot_handle, toolframe);
if (result == 0) {  
    printf("Manual tool frame '%s' set successfully\n", toolframe.frame_name);  
} else {  
    printf("Failed to set manual tool frame '%s'. Error code: %d\n", toolframe.frame_name, result);  
}

切换当前工具坐标系rm_change_tool_frame()

  • 方法原型:
C
int rm_change_tool_frame(rm_robot_handle * handle,const char * tool_name )

可以跳转rm_robot_handle查阅结构体详细描述

  • 参数说明:
参数类型说明
handle输入参数机械臂句柄。
tool_name输入参数目标工具坐标系名称。
  • 返回值:
参数类型说明
0int成功。
1int控制器返回false,传递参数错误或机械臂状态发生错误。
-1int数据发送失败,通信过程中出现问题。
-2int数据接收失败,通信过程中出现问题或者控制器超时没有返回。
-3int返回值解析失败,接收到的数据格式不正确或不完整。
  • 使用示例
C
// 工具名称,应该与已经设置的工具坐标系名称之一相匹配  
const char *tool_name = "Tool1";  

// 调用函数更改当前工具坐标系  
int result = rm_change_tool_frame(robot_handle, tool_name);  
if (result == 0) {  
    printf("Successfully changed to tool frame '%s'\n", tool_name);  
} else {  
    printf("Failed to change to tool frame '%s'. Error code: %d\n", tool_name, result);  
}

删除指定工具坐标系rm_delete_tool_frame()

  • 方法原型:
C
int rm_delete_tool_frame(rm_robot_handle * handle,const char * tool_name )

可以跳转rm_robot_handle查阅结构体详细描述

  • 参数说明:
参数类型说明
handle输入参数机械臂句柄。
tool_name输入参数要删除的工具坐标系名称。
  • 返回值:
参数类型说明
0int成功。
1int控制器返回false,传递参数错误或机械臂状态发生错误。
-1int数据发送失败,通信过程中出现问题。
-2int数据接收失败,通信过程中出现问题或者控制器超时没有返回。
-3int返回值解析失败,接收到的数据格式不正确或不完整。
  • 使用示例
C
// 工具名称,应该与已经设置的工具坐标系名称之一相匹配  
const char *tool_name = "Tool1";  

// 调用函数删除指定工具坐标系  
int result = rm_delete_tool_frame(robot_handle, tool_name);  
if (result == 0) {  
    printf("Successfully delete tool frame '%s'\n", tool_name);  
} else {  
    printf("Failed to delete tool frame '%s'. Error code: %d\n", tool_name, result);  
}

修改指定工具坐标系rm_update_tool_frame()

  • 方法原型:
C
int rm_update_tool_frame(rm_robot_handle * handle,rm_frame_t frame)

可以跳转rm_robot_handlerm_frame_t查阅结构体详细描述

  • 参数说明:
参数类型说明
handle输入参数机械臂句柄。
frame输入参数要修改的工具坐标系名称。
  • 返回值:
参数类型说明
0int成功。
1int控制器返回false,传递参数错误或机械臂状态发生错误。
-1int数据发送失败,通信过程中出现问题。
-2int数据接收失败,通信过程中出现问题或者控制器超时没有返回。
-3int返回值解析失败,接收到的数据格式不正确或不完整。
  • 使用示例
C
// 创建一个rm_frame_t结构体实例并初始化
rm_frame_t toolframe;
// 工具坐标系名称,应该与已经设置的工具坐标系名称之一相匹配  
strncpy(toolframe.frame_name, "Tool2", sizeof(toolframe.frame_name) - 1);
// 修改坐标系参数
toolframe.payload = 5.0;
toolframe.pose.position.x = 0.0f;
toolframe.pose.position.y = 0.0f;
toolframe.pose.position.z = 0.1f;
toolframe.pose.euler.rx = 0.0f;
toolframe.pose.euler.ry = 0.0f;
toolframe.pose.euler.rz = 0.0f;
toolframe.x = 0.0f;
toolframe.y = 0.0f;
toolframe.z = 0.0f;

// 调用函数修改Tool2工具坐标系
int result = rm_update_tool_frame(robot_handle, toolframe);
if (result == 0) {  
    printf("Tool frame '%s' update successfully\n", toolframe.frame_name);  
} else {  
    printf("Failed to update tool frame '%s'. Error code: %d\n", toolframe.frame_name, result);  
}

获取所有工具坐标系名称rm_get_total_tool_frame()

  • 方法原型:
C
int rm_get_total_tool_frame(rm_robot_handle * handle,rm_frame_name_t * frame_names,int * len)

可以跳转rm_robot_handlerm_frame_name_t查阅结构体详细描述

  • 参数说明:
参数类型说明
handle输入参数机械臂句柄。
frame_names输入参数存放返回的工具坐标系名称字符数组。
len输出参数存放返回的工具坐标系名称长度。
  • 返回值:
参数类型说明
0int成功。
1int控制器返回false,传递参数错误或机械臂状态发生错误。
-1int数据发送失败,通信过程中出现问题。
-2int数据接收失败,通信过程中出现问题或者控制器超时没有返回。
-3int返回值解析失败,接收到的数据格式不正确或不完整。
  • 使用示例
C
rm_frame_name_t frame_names[10]; // 最多十个工具坐标系  
int len = -1;  

int result = rm_get_total_tool_frame(robot_handle, frame_names, &len);  

if (result == 0) {  
    printf("Total tool frames: %d\n", len);  
    for (int i = 0; i < len; i++) {  
        printf("Frame %d: %s\n", i, frame_names[i]);  
    }  
}
else{
    printf("Failed to get total tool frames. Error code: %d\n", result)
}

获取指定工具坐标系rm_get_given_tool_frame()

  • 方法原型:
C
int rm_get_given_tool_frame(rm_robot_handle * handle,const char * name,rm_frame_t * frame)

可以跳转rm_robot_handlerm_frame_t查阅结构体详细描述

  • 参数说明:
参数类型说明
handle输入参数机械臂句柄。
name输入参数指定的工具坐标系名称。
frame输出参数存放返回的工具参数。
  • 返回值:
参数类型说明
0int成功。
1int控制器返回false,传递参数错误或机械臂状态发生错误。
-1int数据发送失败,通信过程中出现问题。
-2int1.数据接收失败,通信过程中出现问题或者控制器超时没有返回。2.查询的工具坐标系不存在。
-3int返回值解析失败,接收到的数据格式不正确或不完整。
  • 使用示例
C
rm_frame_t tool_frame;
const char *given_name = "Tool2";
result = rm_get_given_tool_frame(robot_handle, given_name, &tool_frame);
if (result == 0) {  
    printf("given tool frame name : %s\n", tool_frame.frame_name);
    printf("given tool frame payload : %f\n", tool_frame.payload);
    printf("given tool frame x : %f\n", tool_frame.x); 
    printf("given tool frame y : %f\n", tool_frame.y);
    printf("given tool frame z : %f\n", tool_frame.z);
}  else {  
    printf("Failed to get tool frame '%s'. Error code: %d\n", tool_frame.frame_name, result);  
}

获取当前工具坐标系rm_get_current_tool_frame()

  • 方法原型:
C
int rm_get_current_tool_frame(rm_robot_handle * handle,rm_frame_t * tool_frame)

可以跳转rm_robot_handlerm_frame_t查阅结构体详细描述

  • 参数说明:
参数类型说明
handle输入参数机械臂句柄。
tool_fram输出参数存放返回的坐标系。
  • 返回值:
参数类型说明
0int成功。
1int控制器返回false,传递参数错误或机械臂状态发生错误。
-1int数据发送失败,通信过程中出现问题。
-2int数据接收失败,通信过程中出现问题或者控制器超时没有返回。
-3int返回值解析失败,接收到的数据格式不正确或不完整。
  • 使用示例
C
rm_frame_t tool_frame;
result = rm_get_current_tool_frame(robot_handle, &tool_frame);
if (result == 0) {  
    printf("current tool frame name : %s\n", tool_frame.frame_name);
    printf("current tool frame payload : %f\n", tool_frame.payload);
    printf("current tool frame x : %f\n", tool_frame.x);
    printf("current tool frame y : %f\n", tool_frame.y);
    printf("current tool frame z : %f\n", tool_frame.z);
}  else {  
    printf("Failed to get current tool frame. Error code: %d\n", result);  
}

设置工具坐标系的包络参数rm_set_tool_envelope()

  • 方法原型:
C
int rm_set_tool_envelope(rm_robot_handle * handle,rm_envelope_balls_list_t envelope)

可以跳转rm_robot_handlerm_envelope_balls_list_t查阅结构体详细描述

  • 参数说明:
参数类型说明
handle输入参数机械臂句柄。
envelope输入参数包络参数列表,每个工具最多支持 5 个包络球,可以没有包络。
  • 返回值:
参数类型说明
0int成功。
1int控制器返回false,传递参数错误或机械臂状态发生错误。
-1int数据发送失败,通信过程中出现问题。
-2int数据接收失败,通信过程中出现问题或者控制器超时没有返回。
-3int返回值解析失败,接收到的数据格式不正确或不完整。
  • 使用示例
C
rm_envelope_balls_list_t envelope_balls_list;
// 工具坐标系名称,应该与已经设置的工具坐标系名称之一相匹配 
strcpy(envelope_balls_list.tool_name, "Tool2");
// 要设置的包络球数量
envelope_balls_list.size = 1;
strcpy(envelope_balls_list.balls[0].name, "L");
envelope_balls_list.balls[0].radius = 0.1;
envelope_balls_list.balls[0].x = 0.01;
envelope_balls_list.balls[0].y = 0.01;
envelope_balls_list.balls[0].z = 0.01;
result = rm_set_tool_envelope(robot_handle, envelope_balls_list);
if (result == 0) {  
    printf("Successfully set tool frame '%s' envelope '%s'\n", envelope_balls_list.tool_name, envelope_balls_list.balls[0].name);  
}  else {  
    printf("Failed to set tool frame envelope. Error code: %d\n", result);  
}

获取工具坐标系的包络参数rm_get_tool_envelope()

  • 方法原型:
C
int rm_get_tool_envelope(rm_robot_handle * 	handle,const char * tool_name,rm_envelope_balls_list_t * envelope)

可以跳转rm_robot_handlerm_envelope_balls_list_t查阅结构体详细描述

  • 参数说明:
参数类型说明
handle输入参数机械臂句柄。
tool_name输出参数控制器中已存在的工具坐标系名称。
envelope输出参数存放返回的包络参数列表,每个工具最多支持 5 个包络球,可以没有包络。
  • 返回值:
参数类型说明
0int成功。
1int控制器返回false,传递参数错误或机械臂状态发生错误。
-1int数据发送失败,通信过程中出现问题。
-2int数据接收失败,通信过程中出现问题或者控制器超时没有返回。
-3int返回值解析失败,接收到的数据格式不正确或不完整。
  • 使用示例
C
// 工具坐标系名称,应该与已经设置的工具坐标系名称之一相匹配   
const char *tool_name = "Tool2";  

// 分配并初始化包络球列表  
rm_envelope_balls_list_t envelope;  
memset(&envelope, 0, sizeof(envelope)); // 初始化结构体,将所有成员设置为0  
strcpy(envelope.tool_name, tool_name); // 复制工具名称  

result = rm_get_tool_envelope(robot_handle, tool_name, &envelope);  

// 检查函数返回值,并打印结果  
if (result == 0) { 
    printf("Successfully retrieved tool envelope for tool '%s'.\n", tool_name);  
    printf("Number of envelopes: %d\n", envelope.size);  
    for (int i = 0; i < envelope.size; i++) {  
        printf("Envelope %d: Name='%s', Radius=%.3f, Center=(%.3f, %.3f, %.3f)\n",  
                i, envelope.balls[i].name, envelope.balls[i].radius,  
                envelope.balls[i].x, envelope.balls[i].y, envelope.balls[i].z);  
    }  
} else {  
    printf("Failed to retrieve tool envelope for tool '%s'.\n", tool_name);  
}