Skip to content

其他机械臂功能(51-70)

设置重力方向

寄存器:51 (0x33)

警告
设置重力方向,用于正确的力矩补偿和碰撞检测,改动后需要调用 save_conf() 函数或参考 操作保 存设置,否则下次重启会失效。

// 请求:
00 01 00 02 00 0D 33 00 00 00 00 00 00 00 00 00 00 80 BF

请求指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 0D U16, 长度
//33 U8, 寄存器
//00 00 00 00 FP32, 参数 1(机械臂基坐标系下的重力方向向量 X=0)
例:水平安装(默认) :[0, 0, -1]
//00 00 00 00 FP32, 参数 2 (机械臂基坐标系下的重力方向向量 Y=0)
//00 00 80 BF FP32,参数 3(机械臂基坐标系下的重力 方向向量 Z=-1)

// 响应:
00 01 00 02 00 02 33 10

响应指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 02 U16, 长度
//33 U8, 寄存器
//10 U8, 状态

设置安全边界范围

寄存器:52 (0x34)

警告
设置三维空间的安全围栏边界范围 , 如果机械臂 TCP 超出此边界会触发控制器错误 C35

// 请求:
00 01 00 02 00 19 34 58 02 00 00 C8 00 00 00 F4 01 00 00 64 00 00 00 58 02 00 00 C8 00 00 00

请求指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 19 U16, 长度
//34 U8, 寄存器
//58,02,00,00 FP32, 笛卡尔边界值 x+ =600mm
//C8,00,00,00 FP32, 参数 2 (笛卡尔边界值 x- =200mm)
//F4,01,00,00 FP32, Cartesian boundary value y+ =500 mm
//64,00,00,00 FP32, Cartesian boundary value y- =100 mm
//58,02,00,00 FP32, Cartesian boundary value z+ =600 mm
//C8,00,00,00 FP32, Cartesian boundary value z- =200 mm

// 响应:
00 01 00 02 00 02 34 10

响应指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 02 U16, 长度
//34 U8, 寄存器
//10 U8, 状态

获取当前缩减模式的全部设置

寄存器:53 (0x35)

// 请求:
00 01 00 02 00 01 35

请求指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 01 U16, 长度
//35 U8, 寄存器

// 响应:
00 01 00 02 00 51 35 00 01 01 2C 00 64 01 2C FF F6 01 2C 00 32 00 00 C8 42 DB 0F 49 40 DB 0F C9 C0 DB 0F C9 40 15 C6 03 C0 91 0A 06 40 CE 53 7B C0 68 96 44 3E DB 0F C9 C0 DB 0F C9 40 35 B3 D8 BF DB 0F 49 40 DB 0F C9 C0 DB 0F C9 40 00 00 00 00 00 00 00 00 01 01

响应指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 51 U16, 长度
//35 U8, 寄存器
//10 U8, 状态
//00 U16, 缩减模式是否生效:0-未生效; 1-生效
//01 2C 00 64 01 2C FF F6 01 2C 00 32 int166, 安全边界 [x_max=300, x_min=100, y_max=300, y_min=-10, z_max=300, z_min=50]
//00 00 C8 42 FP32, 最大线速度=100mm/s
//DB 0F 49 40 FP32, 最大关节速度=180 °/s
//DB 0F C9 C0 DB 0F C9 40 15 C6 03 C0 91 0A 06 40 CE 53 7B C0 68 96 44 3E DB 0F C9 C0 DB 0F C9 40 35 B3 D8 BF DB 0F 49 40 DB 0F C9 C0 DB 0F C9 40 00 00 00 00 00 00 00 00 FP32
7, (关节范围: [J1_min, J1_max, …, J7_min, J7_max]
//01 U8, 安全边界是否生效:0-未生效; 1-生效
//01 U8, 碰撞回弹是否生效:0-未生效; 1-生效 \

获取伺服当前关节力矩

寄存器:55 (0x37)

警告
基于电流和理论模型估算的关节力矩,仅供参考

// 请求:
00 01 00 02 00 01 37

请求指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 01 U16, 长度
//37 U8, 寄存器

// 响应:
00 01 00 02 00 1E 37 00 17 37 00 00 00 00 00 2A C5 5B C1 79 A4 C5 C0 00 00 00 00 87 A3 E9 BF 00 00 00 00 00 00 00 00

响应指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 1E U16, 长度
//37 U8, 寄存器
//00 U8, 状态
//00 00 00 00 FP32, J1理论力矩= 0
//2A C5 5B C1 FP32, J2理论力矩 = -13.7 N.m
//79 A4 C5 C0 FP32, J3理论力矩 = -6.17 N.m
//00 00 00 00 FP32, J4理论力矩 = 0
//87 A3 E9 BF FP32, J5理论力矩 = -1.83N.m
//00 00 00 00 FP32, J6理论力矩 = 0
//00 00 00 00 FP32, J7理论力矩 = 0

设置缩减模式关节运动范围

寄存器:58 (0x3A)

// 请求:
00 01 00 02 00 39 3A C2 F5 48 C0 C2 F5 48 40 33 33 03 C0 8F C2 05 40	C2 F5 48 C0 C2 F5 48 40 5C 8F 42 BE 47 E1 7A 40 C2 F5 48 C0 C2 F5 48 40 EB 51 D8 BF C8 00 00 00 C2 F5 48 C0 C2 F5 48 40

请求指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 39 U16, 长度
//3A U8, 寄存器
//C2 F5 48 C0 C2 F5 48 40 FP32, J1最小值 = -3.14rad,J1最大值 = 3.14rad
//33 33 03 C0 8F C2 05 40 FP32, J2最小值 = -2.05rad,J2最大值 = 20.9rad
//C2 F5 48 C0 C2 F5 48 40 FP32, J3最小值 = -3.14rad,J3最大值 = 3.14rad
//5C 8F 42 BE 47 E1 7A 40 FP32, J4最小值 = -0.19rad,J4最大值 = 3.92rad
//C2 F5 48 C0 C2 F5 48 40 FP32, J5最小值 = -3.14rad,J5最大值 = 3.14rad
//EB 51 D8 BF C8 00 00 00 FP32, J6最小值 = -1.69rad,J6最大值 = 3.14rad
//C2 F5 48 C0 C2 F5 48 40 FP32, J7最小值 = -3.14rad,J7最大值 = 3.14rad

// 响应:
00 01 00 02 00 02 3A 00

响应指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 02 U16, 长度
//3A U8, 寄存器
//00 U8, 状态

安全边界启动开关

寄存器: 59 (0x3B)

警告
设置三维空间的安全围栏边界生效开关 , 生效后如果机械臂 TCP 超出此边界会触发控制器错误 C35

// 请求:
00 01 00 02 00 02 3B 00

请求指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 02 U16, 长度
//3B U8, 寄存器
//00 U8,0:关闭安全边界检测; 1:启动安全边界检测

// 响应:
00 01 00 02 00 02 3B 00

响应指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 02 U16, 长度
//3B U8, 寄存器
//00 U8, 状态

设置碰撞回弹生效状态

寄存器:60 (0x3C)

// 请求:
00 01 00 02 00 02 3C 00

请求指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 02 U16, 长度
//3C U8, 寄存器
//00 U8,碰撞回弹生效状态 0-不生效; 1-设置生效

// 响应:
00 01 00 02 00 02 3C 10

响应指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 02 U16, 长度
//3C U8, 寄存器
//00 U8, 状态

设置轨迹录制

寄存器:61 (0x3D)

// 请求:
00 01 00 02 00 02 3D 00

请求指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 02 U16, 长度
//3D U8, 寄存器
//00 U8, 操作:0-停止录制;1-开始录制

// 响应:
00 01 00 02 00 02 3D 00

响应指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 02 U16, 长度
//3D U8, 寄存器
//00 U8, 状态

保存轨迹

寄存器:62 (0x3E)

// 请求:
00 01 00 02 00 0A 3E 74 65 73 74 2E 74 72 61 6A

请求指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 0A U16, 长度
//3E U8, 寄存器
//74 65 73 74 2E 74 72 61 6A U8,轨迹名称(最长 80 个字节),例:test.traj

// 响应:
00 01 00 02 00 02 3E 00

响应指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 02 U16, 长度
//3E U8, 寄存器
//00 U8, 状态

加载轨迹

寄存器:63 (0x3F)

// 请求:
00 01 00 02 00 0A 3F 74 65 73 74 2E 74 72 61 6A

请求指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 0A U16, 长度
//3F U8, 寄存器
//74 65 73 74 2E 74 72 61 6A U8,轨迹名称(最长 80 个字节),例:test.traj

// 响应:
00 01 00 02 00 02 3F 00

响应指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 02 U16, 长度
//3F U8, 寄存器
//00 U8, 状态

播放轨迹

寄存器:64 (0x40)

// 请求:
00 01 00 02 00 09 40 00 00 00 01 00 00 00 01

请求指令说明\

//00 01 U16, 事务标识
//00 02 U16, 协议
//00 09 U16, 长度
//40 U8, 寄存器
//00 00 00 01 FP32, 循环次数
//00 00 00 01 FP32, 倍数
1: 1倍数 2: 2倍数 4: 4倍数

// 响应:
00 01 00 02 00 02 40 00

响应指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 02 U16, 长度
//40 U8, 寄存器
//00 U8, 状态

获取轨迹状态

寄存器:65 (0x41)

// 请求:
00 01 00 02 00 01 41

请求指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 01 U16, 长度
//41 U8, 寄存器

// 响应:
00 01 00 02 00 03 41 00 00

响应指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 03 U16, 长度
//41 U8, 寄存器
//00 U8, 状态
//00 U8, 0: 空闲 1: 正在加载 2: 加载成功 3: 加载失败 4: 正在保存 5: 保存成功 6: 保存失败

设置允许使用近似解回避某些奇异点附近的超速问题

寄存器: 66 (0x42)

//请求
00 01 00 02 00 02 42 00

请求指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 02 U16, 长度
//42 U8, 寄存器
//00 U8, 0 :不允许 ,1 :允许

// 响应:
00 01 00 02 00 02 42 00

响应指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 02 U16, 长度
//42 U8, 寄存器
//00 U8, 状态

获取 DH 参数

寄存器: 67 (0x43)

//请求
00 01 00 02 00 01 43

请求指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 01 U16, 长度
//43 U8, 寄存器

// 响应:
00 01 00 02 00 72 43 00 00 00 00 00 00 80 85 43 00 00 00 00 00 00 00 00 FD 44 B1 BF 00 00 00 00 DB 0F C9 BF 00 00 00 00 FD 44 B1 3F 00 00 00 00 00 00 00 00 49 BE 90 43 00 00 00 00 00 40 AB 43 DB 0F C9 BF 00 00 9B 42 00 00 00 00 00 00 00 00 DB 0F C9 3F 00 00 00 00 00 00 00 00 00 00 C2 42 DB 0F C9 BF 00 00 98 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

响应指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 72 U16, 长度
//43 U8, 寄存器
//00 U8, 状态
注意:
每个关节 4 个浮点参数
共 112 字节,28 个浮点数据,6轴只有前 24 个浮点数据为有效数据)

T2_offset = -atan(284.5/53.5) = -1.3849179 (-79.34995°)
T3_offset = atan(284.5/53.5)+atan(0.3425/0.0775) = 2.7331843 (156.599924°)
a2 = sqrt(284.5^2+53.5^2) = 289.48866
T4_offset = -atan(342.5/77.5) = -1.3482664 (-77.249974°)
a3 = sqrt(77.5^2+342.5^2) = 351.158796
例如: xArm6 SN:XI120204201B02

//J1 d(mm):267 alpha(rad):0 a(mm):0 offset(rad):0
00 00 00 00
00 80 85 43
00 00 00 00
00 00 00 00
//J2 d(mm):0 alpha(rad):-pi/2 a(mm):0 offset(rad):T2_offset
FD 44 B1 BF
00 00 00 00
DB 0F C9 BF
00 00 00 00
//J3 d(mm):0 alpha(rad):0 a(mm):a2 offset(rad):T3_offset
FD 44 B1 3F
00 00 00 00
00 00 00 00
49 BE 90 43
//J4 d(mm):342.5 alpha(rad):-pi/2 a(mm):77.5 offset(rad):0
00 00 00 00
00 40 AB 43
DB 0F C9 BF
00 00 9B 42
//J5 d(mm):0 alpha(rad):pi/2 a(mm):0 offset(rad):0
00 00 00 00
00 00 00 00
DB 0F C9 BF
00 00 00 00
//J6 d(mm):97 alpha(rad):-pi/2 a(mm):76 offset(rad):0
00 00 00 00
00 00 C2 42
DB 0F C9 BF
00 00 98 42
//J7 Null
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00

设置 DH 参数

寄存器: 68 (0x44)

// 请求:
00 01 00 02 00 73 44 00 00 00 00 00 00 80 85 43 00 00 00 00 00 00 00 00 FD 44 B1 BF 00 00 00 00 DB 0F C9 BF 00 00 00 00 FD 44 B1 3F 00 00 00 00 00 00 00 00 49 BE 90 43 00 00 00 00 00 40 AB 43 DB 0F C9 BF 00 00 9B 42 00 00 00 00 00 00 00 00 DB 0F C9 3F 00 00 00 00 00 00 00 00 00 00 C2 42 DB 0F C9 BF 00 00 98 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

请求指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 73 U16, 长度
//44 U8, 寄存器

注意:
每个关节 4 个浮点参数
共 112 字节,28 个浮点数据,6轴只有前 24 个浮点数据为有效数据,后面 4个浮点数据用 0 代替
T2_offset = -atan(284.5/53.5) = -1.3849179 (-79.34995°)
T3_offset = atan(284.5/53.5)+atan(0.3425/0.0775) = 2.7331843 (156.599924°)
a2 = sqrt(284.5^2+53.5^2) = 289.48866
T4_offset = -atan(342.5/77.5) = -1.3482664 (-77.249974°)
a3 = sqrt(77.5^2+342.5^2) = 351.158796
例如: xArm6 SN:XI120204201B02
//J1 d(mm):267 alpha(rad):0 a(mm):0 offset(rad):0
00 00 00 00
00 80 85 43
00 00 00 00
00 00 00 00
//J2 d(mm):0 alpha(rad):-pi/2 a(mm):0 offset(rad):T2_offset
FD 44 B1 BF
00 00 00 00
DB 0F C9 BF
00 00 00 00
//J3 d(mm):0 alpha(rad):0 a(mm):a2 offset(rad):T3_offset
FD 44 B1 3F
00 00 00 00
00 00 00 00
49 BE 90 43\ //J4 d(mm):342.5 alpha(rad):-pi/2 a(mm):77.5 offset(rad):0
00 00 00 00
00 40 AB 43
DB 0F C9 BF
00 00 9B 42
//J5 d(mm):0 alpha(rad):pi/2 a(mm):0 offset(rad):0
00 00 00 00
00 00 00 00
DB 0F C9 BF
00 00 00 00
//J6 d(mm):97 alpha(rad):-pi/2 a(mm):76 offset(rad):0
00 00 00 00
00 00 C2 42
DB 0F C9 BF
00 00 98 42
//J7 Null
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00\

//00 U8,设置标志
0: 使用设置的 DH 参数,但不保存到配置文件
1:使用设置的 DH 参数,并保存到配置文件
2: : 使用设置的 DH 参数,并删除配置文件
3: 使用默认的 DH 参数,但不删除配置文件
4: 使用默认的 DH 参数,并删除配置文件

// 响应:
00 01 00 02 00 02 44 00

响应指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 02 U16, 长度
//44 U8, 寄存器
//00 U8, 状态

获取当前执行的指令

需要根据不同的寄存器进行解析
寄存器: 69 (0x45)

// 请求:
00 01 00 02 00 01 45

请求指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 01 U16, 长度
//45 U8, 寄存器

// 响应:
00 01 00 02 00 2B 45 00 17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 C2 B8 B2 3E 58 A0 0B 41 00 00 00 00

响应指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 2B U16, 长度
//45 U8, 寄存器
//00 U8, 状态
//17 U8,
当前执行运动指令寄存器:
0x15: 笛卡尔直线运动
0x16: 带圆弧交融的直线运动
0x17: P2P 关节运动
0x18: 关节交融运动
0x19: 回零点运动
0x1B: 圆弧运动
0x1C: 工具坐标系直线运动
0x5C: 轴角姿态目标的直线运动

//00 00 00 00 FP32, J1=0\ //00 00 00 00 FP32, J2=0
//00 00 00 00 FP32, J3=0
//00 00 00 00 FP32, J4=0
//00 00 00 00 FP32, J5=0
//00 00 00 00 FP32, J6=0
//00 00 00 00 FP32, J7=0
//C2 B8 B2 3E FP32, 速度=20π/180 rad/s
//58 A0 0B 41 FP32, 500π/180 rad/s²
//00 00 00 00 FP32, 运动时间=0

设置关节力矩(估算)或电机电流上报

对应各上报端口的 60~87Bytes 内容

寄存器: 70 (0x46)

// 请求:
00 01 00 02 00 02 46 00

请求指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 02 U16, 长度
//46 U8, 寄存器
//00 U8, 上报关节力矩估计值
0 为上报关节力矩估计值,单位:Nm 1 为上报电机读取的电流值,单位:A

// 响应:
00 01 00 02 00 02 46 00

响应指令说明
//00 01 U16, 事务标识
//00 02 U16, 协议
//00 02 U16, 长度
//46 U8, 寄存器
//00 U8, 状态