Gripper Communication Guide
The communication interface uses standard 11-bit CAN IDs and MIT control frames.
This communication guide applies to all gripper firmware versions in the 0.3.x and 1.4.x series.
1. Firmware and Parameter Overview
The gripper MIT frame uses physical units rather than the ordinary joint-motor units:
| Field | Ordinary joint motor | Gripper motor |
|---|---|---|
| Position | rad | mm |
| Velocity | rad/s | mm/s |
kp | Configuration dependent | 0–5 |
kd | Configuration dependent | 0–1 |
t_ff / reply torque | N·m | Gripper force in N |
The recommended initial gains are:
kp = 2.00
kd = 0.05
2. CAN Bus Parameters
The gripper uses the same CAN/CAN FD communication method as the joint module. See the Joint-Module CAN Communication Guide for the common communication overview.
The current gripper communication configuration is a 1 Mbps FDCAN nominal rate, a 5 Mbps data-phase rate, and CAN FD BRS. MIT command and reply frames are 8 bytes long.
| Item | Configuration |
|---|---|
| Bus interface | FDCAN / CAN FD |
| Standard ID | 11-bit standard frame ID |
| Nominal rate | 1 Mbps |
| Data-phase rate | 5 Mbps (CAN FD BRS) |
| MIT frame length | 8 bytes |
| Byte order | MIT bit fields use the layout below; register fields are little-endian |
The firmware uses the received frame format for its reply. Keep CAN/CAN FD and BRS settings consistent between the host and the gripper.
3. CAN IDs
The general rules for CAN IDs, MIT unicast, broadcast, and reply IDs are the same as for the joint module. See:
- MIT Mode Master Control Frame
- CANFD Broadcast Multi-Motor Control
- Relationship Between
master_idandcan_id
The following only lists the gripper defaults and usage.
3.1 MIT Unicast Control
MIT control frames are sent to the gripper can_id. The default configuration is:
can_id = 1
master_id = can_id | 0x010 = 0x011
The gripper sends replies to master_id, and data[0] in the reply contains the gripper's own can_id.
| Frame type | CAN ID | Description |
|---|---|---|
| MIT unicast control | can_id | Node 1 uses 0x001 by default |
| MIT broadcast control | 0x7FF | Carries one 8-byte control block per node |
| MIT reply | master_id | Node 1 replies to 0x011 by default |
In a broadcast frame, node n uses the 8-byte block at offset (n - 1) × 8. The DLC must cover the block for the target node.
3.2 Configuration Register CAN IDs
Configuration register commands use:
CAN ID = (cmd << 4) | can_id
For the default node can_id=1:
| Command | cmd | CAN ID | Request DLC |
|---|---|---|---|
REG_READ | 0x17 | 0x171 | 4 |
REG_WRITE | 0x18 | 0x181 | 8 |
REG_SAVE | 0x19 | 0x191 | 0 |
REG_INFO | 0x1A | 0x1A1 | 0 |
Configuration-register commands respond only to the target unicast ID. They do not support broadcast register reads or writes.
4. MIT Control Frame
The MIT byte layout, bit widths, and packing method are the same as for the joint module. See the MIT Mode Master Control Frame and Bit Width Description.
The gripper physical ranges and sign convention differ from ordinary joint motors; use the definitions in Gripper Communication Ranges below.
5. Gripper Communication Ranges
5.1 Position
The gripper MIT bus position meaning is:
p_des = 0 mm -> closed
p_des ≈ 70 mm -> open
The recommended physical positions for the current gripper are 0 mm when closed and approximately 70 mm when open. The protocol and firmware protection ranges are:
Protocol encoding range: 0–90 mm
Firmware protection range: 0–80.55 mm
The firmware clamps the target and feedback position to 0–80.55 mm, but the host should use the actual approximately 70 mm open position as the application target. Do not treat 90 mm as the actual opening position.
Position encoding:
p_raw = uint16((p_des / 90.0) × 65535)
p_des = p_raw / 65535 × 90.0 mm
5.2 Velocity
The gripper velocity mapping range is calculated from the max_vel configuration register:
v_limit = round(89.5 × max_vel / 2π) mm/s
v_des = -v_limit to +v_limit mm/s
The default max_vel=45 rad/s corresponds to approximately:
v_des = -642 to +642 mm/s
Velocity encoding:
v_raw = uint12((v_des + v_limit) / (2 × v_limit) × 4095)
v_des = v_raw / 4095 × (2 × v_limit) - v_limit
5.3 kp and kd
| Parameter | Communication range | Recommended | Description |
|---|---|---|---|
kp | 0–5 | 2 | Position stiffness |
kd | 0–1 | 0.05 | Velocity damping |
kp_raw = uint12(kp / 5.0 × 4095)
kd_raw = uint12(kd / 1.0 × 4095)
5.4 Feed-forward Force t_ff
The MIT t_ff field represents gripper force in N. Its range is calculated from the current limit:
F_limit = current_limit × 0.07 × 1 / (2 × 0.007125)
t_ff = -F_limit to +F_limit N
The theoretical default ranges are:
| Build | Default current limit | Theoretical force range |
|---|---|---|
| 50 gripper | 10/3 A | Approximately -16.37 to +16.37 N |
| 50L gripper | 14.6667/3 A | Approximately -24.03 to +24.03 N |
Sign convention:
- Positive force/positive torque closes the gripper.
- Negative force/negative torque opens the gripper.
- Maximum force magnitude: approximately
16.37 Nfor the 50 gripper and24.03 Nfor the 50L gripper.
The actual usable gripping force is affected by the mechanism, friction, supply voltage, temperature, and current derating.
t_raw = uint12((t_ff + F_limit) / (2 × F_limit) × 4095)
t_ff = t_raw / 4095 × (2 × F_limit) - F_limit
When t_raw is 0x7FF or 0x800, the firmware decodes it as exactly zero feed-forward force.
6. MIT Reply Frame
For the common reply layout and master_id rules, see the Joint-Module Motor Response Frame. The gripper position, velocity, and force fields use the physical ranges in Section 5.
For default NTC decoding, AUX polling format, and polling order of data[6] and data[7], see the MIT Polling Reply Guide. Writing 1 to register 0x6D switches the last two bytes to AUX polling data.
7. Configuration Register Communication
The gripper register configuration function is consistent with the joint-module implementation. For register commands, request and reply formats, save operations, information queries, data types, and write levels, see the Motor Register Communication Protocol. The sections below only list commonly used registers and gripper-specific parameter ranges.
7.1 Request and Reply Format
Register requests use little-endian byte order. float values use IEEE754 single-precision format.
REG_READ request:
data[0..3] = address
REG_WRITE request:
data[0..3] = address | (value_type << 8)
data[4..7] = value_raw
Reply:
data[0..3] = status | (value_type << 8)
data[4..7] = value_raw
value_type | Type |
|---|---|
0 | int32_t |
1 | bool |
2 | float |
3 | uint32_t |
4 | version |
7.2 Common Gripper Registers
| Address | Parameter | Type | Communication range | Description |
|---|---|---|---|---|
0x60 | can_id | int32_t | Writable in menu/error state | Gripper node ID |
0x61 | master_id | int32_t | Writable in menu/error state | Reply target ID, default can_id \| 0x010 |
0x63 | can_timeout_ms | int32_t | Runtime read/write | CAN timeout; 0 disables it |
0x66 | mit_mode | bool | Writable in menu/error state | MIT protocol switch |
0x67 | max_pos | float | Runtime read/write | Ordinary motor position parameter; gripper bus range is fixed at 0–90 mm |
0x68 | max_vel | float | Runtime read/write | Used to calculate gripper velocity range; default 45 rad/s |
0x69 | max_tor | float | Runtime read/write | Torque limit configuration |
0x6A | kp_max | float | Runtime read/write | kp mapping upper limit; gripper limit is 5 |
0x6B | kd_max | float | Runtime read/write | kd mapping upper limit; gripper limit is 1 |
0x6D | mit_aux_enable | bool | Runtime read/write | Switches data[6..7] to AUX polling |
0x7C | config_version | version | Read only | Configuration layout version |
7.3 Register Write Levels
| Level | Meaning |
|---|---|
0 | Runtime read/write |
1 | Writable only in menu or error state |
2 | System communication parameter; writable only in menu or error state |
3 | Read only |
Register writes modify RAM only. To persist a setting across power cycles, confirm status=0 and then send REG_SAVE. mit_aux_enable is runtime-only and returns to 0 after power-up, configuration read, or configuration save.
8. Communication Examples
For node 1, write kd_max=1.0. The little-endian IEEE754 representation of float 1.0 is 00 00 80 3F:
CAN ID: 0x181
DLC: 8
DATA: 6B 02 00 00 00 00 80 3F
Read kd_max:
CAN ID: 0x171
DLC: 4
DATA: 6B 00 00 00
Example MIT command: target position 40 mm, velocity 0 mm/s, kp=2, kd=0.05, and feed-forward force 0 N:
CAN ID: 0x001
DLC: 8
DATA: 71 C6 7F F6 66 0C C7 FF
The example uses p_raw=0x71C6, v_raw=0x7FF, kp_raw=0x666, and kd_raw=0x0CC. Zero feed-forward force uses t_raw=0x7FF.
9. Usage and Safety Notes
- Read
can_id,master_id,config_version, andkd_maxbefore first use. - Confirm the gripper zero position, direction, and mechanical limits;
0 mmis closed and approximately70 mmis open, while the protocol range0–90 mmis not the actual opening position. - Start with
kp=2andkd=0.05, using a low target velocity and smallt_ff. - MIT control frames should be sent continuously. If
can_timeout_msis non-zero, keep the command period below the timeout. - When using broadcast control, reserve the correct 8-byte block for each node and avoid CAN ID conflicts.
- Change
can_id,master_id, and MIT mode only in the allowed state, confirm the write response, and save the configuration when needed.