介绍Studio 的设置对应的API
- 文档说明
这篇文档主要介绍UFACTORY Studio设置页面的各项设置对应的通过Python-Python-SDK 和xArm-CPLUS-SDK 设置的方法。
- 适用范围
xArm 5/6/7/, Lite 6 和850 机械臂。基于以下版本软件测试
-
固件版本≥2.5.0
-
UFACTORY Studio ≥2.5.0
-
xArm-Python-SDK ≥1.14.8
-
xArm-CPlus-SDK ≥1.14.2
-
注意事项
所有的设置有需要使用save_conf()接口保存设置,否则控制器重启后设置会失效。
# Python 保存设置
arm.save_conf()
// C++ 保存设置
arm->save_conf();
设置-运动设置
碰撞灵敏度设置
- 功能简介
用户设置机械臂碰撞触发报错的力的大小,可设置0-5档,灵敏度值越高,则越容易触发碰撞检测。灵敏度设置为0时,碰撞检测功能将关闭。出厂默认值为3.
- xArm-Python-SDk 设置方法
# 设置碰撞灵敏度3
arm.set_collision_sensitivity(3)
- xArm-CPLUS-SDK 设置方法
// 设置碰撞灵敏度3
arm->set_collision_sensitivity(3);
TCP 负载与偏移设置
TCP 负载设置
- 功能简介
设置机械臂末端负载的重量和重心位置,以便控制系统能够更准确地计算动力学模型,用于碰撞检测和手动模式(拖动示教)
- xArm-Python-SDK 设置方法
# 设置末端负载重量为0.5kg,重心位置为[0, 0, 50]mm
arm.set_tcp_load(0.5, [0, 0, 50])
- xArm-CPLUS-SDK 设置方法
// 设置末端负载重量为0.5kg,重心位置为[0, 0, 50]mm
float weight = 0.5;
float center_of_gravity[3] = {0, 0, 50};
arm->set_tcp_load(weight, center_of_gravity);
TCP 偏移设置
- 功能简介
设置工具坐标系相对于机械臂末端法兰中心的偏移量,包括位置和姿态偏移。正确设置TCP偏移可以使机械臂末端工具点精确定位和运动。
- xArm-Python-SDk 设置方法
# 设置TCP偏移,参数为[x, y, z, roll, pitch, yaw],单位为mm和°
arm.set_tcp_offset([0, 0, 100, 0, 0, 0])
- xArm-CPlus-SDK 设置方法
// 设置TCP偏移,参数为[x, y, z, roll, pitch, yaw],单位为mm和°
float offset[6] = {0, 0, 100, 0, 0, 0};
ret = arm->set_tcp_offset(offset);
坐标系设置
- 功能简介
设置基坐标系的偏移量,用于定义用户坐标系。通过设置基坐标系偏移,可以在不同的工作空间内方便地进行定位和操作。
- xArm-Python-SDk 设置方法
# 设置基坐标系偏移,参数为[x, y, z, roll, pitch, yaw],单位为mm和°
arm.set_world_offset([100, 100, 0, 0, 0, 0])
- xArm-CPlus-SDK 设置方法
// 设置基坐标系偏移,参数为[x, y, z, roll, pitch, yaw],单位为mm和°
float offset[6] = {100, 100, 0, 0, 0, 0};
ret = arm->set_world_offset(offset);
安装方向设置
- 功能简介
设置机械臂的安装方向,用于补偿机械臂在不同安装方向下的重力。如果安装方向设置错误,可能导致机械臂的碰撞检测、手动模式(拖动示教)等功能出现异常。
- xArm-Python-SDK 设置方法
xArm-Python-SDK提供了2种设置安装方向的方法,分别是直接设置安装方向和设置重力方向向量,这两种方法是等效的。
#通过设置旋转角、倾斜角直接设置安装方向,单位为°。
arm.set_mount_direction(base_tilt_deg=0,rotation_deg=0) # 如果机械臂水平安装
arm.set_mount_direction(base_tilt_deg=180,rotation_deg=0)# 如果机械臂吊装
# 通过设置重力方向向量设置安装方向,参数为[x, y, z]方向向量,
arm.set_gravity_direction([0, 0, -1]) #如果机械臂水平安装
arm.set_gravity_direction([0, 0, 1]) # 如果机械臂吊装
- xArm-CPLUS-SDK 设置方法
xArm-CPlus-SDK目前仅支持通过设置重力方向向量来设置安装方向。
// 设置重力方向,参数为[x, y, z]方向向量
// 如果机械臂水平安装
float gravity_dir[3] = {0, 0, -1};
ret = arm->set_gravity_direction(gravity_dir);
// 如果机械臂吊装
float gravity_dir2[3] = {0, 0, 1};
ret = arm->set_gravity_direction(gravity_dir2);
设置-安全设置
安全边界设置
- 功能简介
设置安全边界,用于限制机械臂的运动范围。机械臂运动过程中会实时检测位置,防止机械臂超出安全区域。
安全边界包含2项设置,安全便捷的开关和安全边界的范围。
- xArm-Python-SDK 设置方法
#开启安全边界
arm.set_fence_mode(on=True)
# 设置安全边界,参数为[x_max, x_min, y_max, y_min, z_max, z_min],单位为mm
arm.set_reduced_tcp_boundary([200, -200, 200, -200, 200, -200])
- xArm-CPLUS-SDK 设置方法
// 开启安全边界
arm->set_fence_mode(1);
// 设置安全边界,参数为[x_max, x_min, y_max, y_min, z_max, z_min],单位为mm
int boundary[6] = {200, -200, 200, -200, 200, -200};
ret = arm->set_reduced_tcp_boundary(boundary);
缩减模式设置
- 功能简介
设置机械臂的缩减模式开关,用于限制机械臂的运动范围和速度。
缩减模式包含2项设置,缩减模式开关,和速度缩减,关节范围缩减。
缩减模式开关
xArm-Python-SDK 设置方法
# 设置缩减模式开关,参数为[enable],取值为0或1,1为开启,0为关闭。
arm.set_reduced_mode(1)
- xArm-CPLUS-SDK 设置方法
// 设置缩减模式开关,参数为[enable],取值为0或1,1为开启,0为关闭。
int enable = 1;
arm->set_reduced_mode(enable);
设置速度缩减
设置直线运动和关节运动速度的最大运动速度。
- xArm-Python-SDK 设置方法
# 设置直线运动速度缩减,单位为mm/s,设置后机械臂直线运动速度不会超过这个值。
arm.set_reduced_max_tcp_speed(230)
# 设置关节运动速度缩减,单位为°/s,设置后机械臂关节运动速度不会超过这个值。
arm.set_reduced_max_joint_speed(40)
- xArm-CPLUS-SDK 设置方法
//设置直线运动速度缩减,单位为mm/s,设置后机械臂直线运动速度不会超过这个值。
arm->set_reduced_max_tcp_speed(230);
//设置关节运动速度缩减,单位为°/s,设置后机械臂关节运动速度不会超过这个值。
arm->set_reduced_max_joint_speed(40);
设置关节运动范围缩减
设置关节运动范围缩减,用于限制机械臂各关节的运动范围。
- xArm-Python-SDk 设置方法
# 设置关节范围缩减,参数为[joint-1-min, joint-1-max, ..., joint-6-min, joint-6-max],单位为°;
#例如设置xArm 6的关节1范围缩减[-100,100],其他关节不限制。
arm.set_reduced_joint_range([-100, 100, -117, 116, -219, 10, -360, 360, -97, 180, -360, 360])
- xArm-CPLUS-SDK 设置方法
//设置关节范围缩减,参数为[joint-1-min, joint-1-max, ..., joint-6-min, joint-6-max],单位为°;
//例如设置xArm 6的关节1范围缩减[-100,100],其他关节不限制。
float joint_range[12] = {-100, 100, -117, 116, -219, 10, -360, 360, -97, 180, -360, 360};
ret = arm->set_reduced_joint_range(joint_range);
通用设置
辅助功能
手动模式灵敏度设置
- 功能说明
设置手动模式(拖动示教)的灵敏度,范围为1-5。灵敏度为5时,拖起来最轻松。出厂默认值为3。
- xArm-Python-SDK 设置方法
# 设置手动模式灵敏度为3
arm.set_teach_sensitivity(3)
- xArm-CPLUS-SDK 设置方法
// 设置手动模式灵敏度为3
arm->set_teach_sensitivity(3);
高级设置
关节加加速度设置
- 功能说明
设置关节运动的加加速度,范围[1, 28647],单位为°/s³
- xArm-Python-SDK 设置方法
# 设置关节加加速度为10,000 °/s³
arm.set_joint_jerk(10000)
- xArm-CPLUS-SDK 设置方法
// 设置关节加加速度为10,000 °/s³
arm->set_joint_jerk(10000);
TCP 加加速度设置
- 功能说明
设置直线运动的加加速度,范围[1, 100,000],单位为mm/s³
- xArm-Python-SDK 设置方法
# 设置TCP加加速度为10,000 mm/s³
arm.set_tcp_jerk(10000)
- xArm-CPLUS-SDK 设置方法
// 设置TCP加加速度为10,000 mm/s³
arm->set_tcp_jerk(10000);
碰撞回弹设置
- 功能说明
设置机械臂碰撞检测后是否要进行回弹,1为开启,0为关闭。出厂默认开启。
- xArm-Python-SDK 设置方法
# 设置碰撞回弹为开启
arm.set_collision_rebound(1)
- xArm-CPLUS-SDK 设置方法
// 设置碰撞回弹为开启
arm->set_collision_rebound(1);
自碰撞检测设置
自碰撞检测开关
- 功能说明
设置机械臂是否进行自碰撞检测,1为开启,0为关闭。出厂默认开启。
- xArm-Python-SDK 设置方法
# 设置自碰撞检测为开启
arm.set_self_collision_detection(1)
- xArm-CPLUS-SDK 设置方法
// 设置自碰撞检测为开启
arm->set_self_collision_detection(1);
自碰撞模型设置
- 功能说明
设置机械臂自碰撞检测的三维模型,机械臂会基于设置的三维模型实时检测碰撞。三维模型参数如下。
-
0: 无末端执行器
-
1: 机械爪
-
2: 真空吸头
-
3: xArm BIO 夹爪 (含xArm BIO G2)
-
4: Robotiq-2F-85 机械爪
-
5: Robotiq-2F-140 机械爪
-
21: 自定义圆柱的半径和高度,单位为 mm
-
22: 自定义长方体的长宽高,单位为 mm
例如,设置一个长、宽、高为100、150、200 mm的长方体,x/y/z方向与机械臂末端工具坐标系方向一致。
- xArm-Python-SDK 设置方法
arm.set_collision_tool_model(22, x=100, y=150, z=200)
- xArm-CPLUS-SDK 设置方法
arm->set_collision_tool_model(22, 100, 150, 200);
是否使用近似解
- 功能说明
设置机械臂直线运动是否使用近似解,1为开启,0为关闭,出厂默认开启。
如果开启近似解,机械臂在直线运动过程中,将轻微调整位置和姿态以保证能通过直线区域,能够有效降低直线运动过程中由奇异点导致的关节超速的概率。
- xArm-Python-SDK 设置方法
# 开启使用近似解
arm.set_allow_approx_motion(1)
- xArm-CPLUS-SDK 设置方法
// 开启使用近似解
arm->set_allow_approx_motion(1);
笛卡尔速度连续
- 功能说明
开启后,可实现圆弧向直线过渡的速度连续。1为开启,0为关闭,出厂默认关闭。
- xArm-Python-SDK 设置方法
# 开启笛卡尔速度连续
arm.set_cartesian_velo_continuous(1)
- xArm-CPLUS-SDK 设置方法
// 开启笛卡尔速度连续
arm->set_cartesian_velo_continuous(1);
下面是一个完成的Python脚本,演示笛卡尔速度连续开关的作用。
import time
from xarm.wrapper import XArmAPI
arm = XArmAPI('192.168.1.xxx') #修改为你的机械臂控制器的IP
time.sleep(0.5)
# 笛卡尔速度连续测开关,开启后圆弧与直线的过渡将变为连续。
arm.set_cartesian_velo_continuous(0)
arm.save_conf()
arm.set_mode(0)
arm.set_state(0)
# 三点画圆
arm.set_position(*[300,-100,200,180,0,0],speed=100,wait=False)
circle_pos_1=[200,0,200,180,0,0]
circle_pos_2=[300,100,200,180,0,0]
arm.move_circle(circle_pos_1,circle_pos_2,percent=100,speed=100,wait=False)
# 笛卡尔运动
arm.set_position(*[200,-100,200,180,0,0],speed=100,wait=False)