# ChangeLog-V2

- **这里的V1和V2，都是属于0.1.x版本的内容，与0.0.x版本无关**

在0.1.x版本下，V2与V1的区别是协议不同

0.1.x版本代码与0.0.x代码区别较大

下文主要讲解V2与V1的区别

## 1 固件兼容

- **兼容新固件(V1.5-2版本后)协议，保留同时兼容上一版本固件**

### 1.1 0x2A1 机械臂状态反馈

补充：

Byte 2 模式反馈增加 0x04 MOVE M 反馈，为mit模式反馈

### 1.2 0x151 模式控制协议

补充：

Byte 1 MOVE模式增加 0x04 MOVE M 指令，为mit模式设定

增加

Byte 5 安装位置设定

- 0x00 无效值
- 0x01水平正装
- 0x02侧装左
- 0x03侧装右  

注意接线朝后

### 1.3 新增MIT控制指令

|机械臂关节1～6MIT控制指令|                                       |ID  0x15A ~ 0x15F|      len 8      |
|----------------------|---------------------------------------|-----------------|-----------------|
|        数据          |                  功能                  |        类型      |                 |
|       Byte 0        |  Pos_ref [bit15~bit8] 高8位            |       uint8     |                 |
|       Byte 1        |  Pos_ref [bit7~bit0]  低8位            |       uint8     |                 |
|       Byte 2        |  Vel_ref [bit11~bit4] 低12位           |       uint8     |                 |
|       Byte 3        |  Vel_ref [bit3~bit0] Kp [bit11~bit8]  |       uint8     |                 |
|       Byte 4        |  Kp [bit7~bit0]                       |       uint8     | Kp给定参考值：10  |
|       Byte 5        |  Kd [bit11~bit4]      低12位           |       uint8     | Kd给定参考值：0.8 |
|       Byte 6        |  Kd [bit3~bit0] T_ref [bit7~bit4]      |       uint8     |                 |
|       Byte 7        |  T_ref [bit3~bit0] CRC [bit3~bit0]     |       uint8     |                 |

### 1.4 ID 0x474 电机角度限制/最大速度设置指令

增补无效值指令

|电机角度限制/最大速度设置指令|                                       |ID  0x474        |                           |
|------------------------|---------------------------------------|-----------------|---------------------------|
|          数据           |                  功能                 |        类型      |                           |
|       Byte 0           |  关节电机序号                           |       uint8     |值域1-6:1-6代表关节驱动器序号；|
|       Byte 1           |  最大角度限制 H                         |       uint16    |单位 0.1° **无效值：0x7FFF** |
|       Byte 2           |  最大角度限制 L                         |                 |                           |
|       Byte 3           |  最小角度限制 H                         |       uint16    |单位 0.1°**无效值：0x7FFF**  |
|       Byte 4           |  最小角度限制 L                         |                 |                           |
|       Byte 5           |  最大关节速度 H                         |       uint16    |单位 0.001rad/s**无效值：0x7FFF**|
|       Byte 6           |  最大关节速度 L                         |                 |                           |
|       Byte 7           |  保留                                  |                 |                           |

### 1.5 ID 0x475 关节设置指令

增补无效值指令

|关节设置指令              |                                       |ID  0x475        |                                         |
|------------------------|---------------------------------------|-----------------|-----------------------------------------|
|          数据           |                  功能                 |        类型      |                                         |
|       Byte 0           |  关节电机序号                           |       uint8     |值域1-7:1-6代表关节驱动器序号；7代表全部关节电机|
|       Byte 1           |  设置N号电机当前位置为零点                |       uint8     |有效值 ：0xAE|
|       Byte 2           |  加速度参数设置是否生效                   |       uint8     |有效值 ：0xAE|
|       Byte 3           |  最大关节加速度 H                        |       uint16    |单位 0.001rad/s^2 **无效值：0x7FFF**|
|       Byte 4           |  最大关节加速度 L                        |                 |有效值 ：0xAE|
|       Byte 5           |  清除关节错误代码                        |       uint8     |                                         |
|       Byte 6           |  保留                                  |                 |                                         |
|       Byte 7           |  保留                                  |                 |                                         |

### 1.6 ID 0x477 机械臂参数查询与设置指令

增补:

查询夹爪/示教器参数索引:0x04

|关节设置指令              |                                       |ID  0x475        |                                         |
|------------------------|---------------------------------------|-----------------|-----------------------------------------|
|          数据           |                  功能                 |        类型      |                                         |
|       Byte 0           |  参数查询                              |       uint8     |查询末端V/acc参数：0x01 查询碰撞防护等级： 0x02 查询当前轨迹索引： 0x03 **查询夹爪/示教器参数索引:0x04**|
|       Byte 1           |  参数设置                              |       uint8     |设置末端V/acc参数为初始值：0x01 设置全部关节限位、关节最大速度、关节加速度为默认值： 0x02|
|       Byte 2           |  0x48X报文反馈设置                      |       uint8     |无效：0x00;开启周期反馈： 0x01;关闭周期反馈： 0x02;开启后周期上报1~6号关节当前末端速度/加速度|
|       Byte 3           |  末端负载参数设置是否生效                 |       uint8     |有效值 ：0xAE|
|       Byte 4           |  设置末端负载                           |       uint8     |0x00--空载; 0x01--半载; 0x02--满载|
|       Byte 5           |  保留                                  |       uint8     |                                         |
|       Byte 6           |  保留                                  |                 |                                         |
|       Byte 7           |  保留                                  |                 |                                         |

### 1.7 ID 0x479 末端速度/加速度参数设置指令

增补无效值指令

|末端速度/加速度参数设置指令 |                                       |ID  0x479        |                                         |
|------------------------|---------------------------------------|-----------------|-----------------------------------------|
|          数据           |                  功能                 |        类型      |                                         |
|       Byte 0           |  末端最大线速度 H                       |       uint16    |单位 0.001m/s **无效值：0x7FFF**           |
|       Byte 1           |  末端最大线速度 L                       |                 |                                         |
|       Byte 2           |  末端最大角速度 H                       |       uint16    |单位 0.001rad/s **无效值：0x7FFF**         |
|       Byte 3           |  末端最大角速度 L                       |                 |                                         |
|       Byte 4           |  末端最大线加速度 H                      |      uint16     |单位 0.001m/s^2 **无效值：0x7FFF**         |
|       Byte 5           |  末端最大线加速度 L                      |                 |                                         |
|       Byte 6           |  末端最大角加速度 H                      |      uint16     |单位 0.001rad/s^2 **无效值：0x7FFF**       |
|       Byte 7           |  末端最大角加速度 L                      |                 |                                         |

### 1.8 新增 ID 0x47D 夹爪/示教器参数设置指令

|夹爪/示教器参数设置指令     |                                       |ID  0x47D        |                                         |
|------------------------|---------------------------------------|-----------------|-----------------------------------------|
|          数据           |                  功能                 |        类型      |                                         |
|       Byte 0           |  示教器行程系数设置                      |       uint8     |示教器行程系数设置：100~200 单位 ：%（默认100%）仅适用于设置主从臂的主臂，用于放大控制行程给从臂|
|       Byte 1           |  夹爪/示教器最大控制行程限制值设置         |       uint8     |单位：mm; 无效值：0; 小夹爪为70mm; 大夹爪为100mm|
|       Byte 2           |  保留                                 |                 |                                           |
|       Byte 3           |  保留                                 |                 |                                           |
|       Byte 4           |  保留                                 |                 |                                           |
|       Byte 5           |  保留                                 |                 |                                           |
|       Byte 6           |  保留                                 |                 |                                           |
|       Byte 7           |  保留                                 |                 |                                           |

### 1.9 新增 ID 0x47E 夹爪/示教器参数反馈指令

|夹爪/示教器参数反馈指令     |                                       |ID  0x47E        |                                         |
|------------------------|---------------------------------------|-----------------|-----------------------------------------|
|          数据           |                  功能                 |        类型      |                                         |
|       Byte 0           |  示教器行程系数反馈                      |       uint8     |示教器行程系数设置：100~200 单位 ：%（默认100%）仅适用于设置主从臂的主臂，用于放大控制行程给从臂|
|       Byte 1           |  夹爪/示教器最大控制行程限制值反馈         |       uint8     |单位：mm; 无效值：0; 小夹爪为70mm; 大夹爪为100mm|
|       Byte 2           |  保留                                 |                 |                                           |
|       Byte 3           |  保留                                 |                 |                                           |
|       Byte 4           |  保留                                 |                 |                                           |
|       Byte 5           |  保留                                 |                 |                                           |
|       Byte 6           |  保留                                 |                 |                                           |
|       Byte 7           |  保留                                 |                 |                                           |

## 2 interface

- **保留V1版本`C_PiperInterface`，新增`C_PiperInterface_V2`**

将V2版本单独分出维护，虽然有一些重复代码，但是保证了版本之间的独立性，使用上并无太多差异

其中V2版本在V1基础上增加了函数，如下：

| 函数   | 类型 |说明                                                         |使用                | 参数                        |反馈       |
| ----- | ---- |------------------------------------------------------------ |-------------------|--------------------------- |--------|
|`GetGripperTeachingPendantParamFeedback`|Getter Method|获取夹爪/示教器参数反馈指令，包括示教器行程系数反馈、夹爪/示教器最大控制行程限制值反馈 为主动发送指令后反馈消息|obj.GetGripperTeachingPendantParamFeedback()|None|self.__feedback_gripper_teaching_pendant_param|
|`MotorMaxSpdSet`|Ctrl Method|设置电机最大速度。|类外调用|`motor_num (int)`, `max_joint_spd (int)`|None|
|`__JointMitCtrl`|Ctrl Method|0x15A,0x15B,0x15C,0x15D,0x15E,0x15F,机械臂关节1~6MIT控制指令|类内调用|`self,motor_num:int`,`pos_ref:float`,`vel_ref:float`,`kp:float`,`kd:float`,`t_ref:float`,`p_min:float=-12.5`,`p_max:float=12.5`,`v_min:float=-45.0`,`v_max:float=45.0`,`kp_min:float=0.0`,`kp_max:float=500.0`,`kd_min:float=-5.0`,`kd_max:float=5.0`,`t_min:float=-18.0`,`t_max:float=18.0`|None|
|`JointMitCtrl`|Ctrl Method|0x15A,0x15B,0x15C,0x15D,0x15E,0x15F,机械臂关节1~6MIT控制指令|类外调用|`self,motor_num:int`,`pos_ref:float`,`vel_ref:float`,`kp:float`,`kd:float`,`t_ref:float`|None|
|`GripperTeachingPendantParamConfig`|Ctrl Method|夹爪/示教器参数设置指令(基于V1.5-2版本后)|类外调用|`teaching_range_per:int=100`, `max_range_config:int=70`|None|
