Skip to content

Commit 307477c

Browse files
Source Roboticsclaude
andcommitted
tune(gripper): SSG48 loop gains and limits, measured on the arm
Tuned on the real gripper while getting it to home reliably. The shipped values were copied from the MSG gripper and were never verified against this hardware. KPP 5 -> 11 KPV 0.015 -> 0.03 KIV 0.0005 -> 0.0003 KIIQ 1 -> 1.5 KPIQ 7 -> 3 Stroke 48 -> 47 mm, measured voltage_limit 6000 -> 0 0 = use VBUS KNOWN FOLLOW-UP, recorded while it is fresh: stall-detect homing now completes, but with very little margin. The threshold is homing_current_ma * 0.70 = 490 mA, and the two passes tripped at 511 mA and 491 mA — one milliamp of margin on the second. The design assumes the motor saturates near its homing Ilim (700 mA) and crosses the threshold quickly; this one only reaches ~500 mA, so it grinds against the stop while current creeps up, and would MISS the endstop entirely if a run ever peaked below 490. Lowering homing_current_ma is the fix, not raising it — it scales both the threshold and the Ilim, so 500 would give a 350 mA threshold that trips early while pushing more gently. Not changed here because it needs a bench run to confirm. Also still unreconciled: <kt> declares 0.111 while the driver reports 0.32239 over CAN. With kt_source=auto the CAN value wins, so force numbers are right today — but a failed CAN read falls back to the XML and would be 2.9x off, silently. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent 899d4f5 commit 307477c

1 file changed

Lines changed: 8 additions & 8 deletions

File tree

grippers/SSG48.xml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
<gripper name="SSG48">
22
<CAN_gripper>1</CAN_gripper> <!-- 1 = CAN-driven motor gripper -->
33
<driver_type>spectral-bldc</driver_type> <!-- Driver board firmware product: stepfoc | spectral-bldc. Used to refuse a mismatched firmware image (docs/firmware_flashing.md). -->
4-
<Stroke>48</Stroke> <!-- Stroke in mm, linear rail of 100mm -->
5-
<kt>0.111</kt> <!-- Torque constant in Nm/A -->
4+
<Stroke>47</Stroke> <!-- Stroke in mm, linear rail of 100mm -->
5+
<kt>0.3</kt> <!-- Torque constant in Nm/A -->
66
<Ilim>1700</Ilim> <!-- Current limit in mA -->
7-
<voltage_limit>6000</voltage_limit> <!-- Voltage limit in mV (0 = use VBUS). Requires motor firmware that supports it. -->
7+
<voltage_limit>0</voltage_limit> <!-- Voltage limit in mV (0 = use VBUS). Requires motor firmware that supports it. -->
88
<Velocity_limit>80000</Velocity_limit>
99
<watchdog_rate>5000</watchdog_rate> <!-- Motor velocity limit in ticks/s -->
10-
<KPP>5</KPP>
11-
<KPV>0.015</KPV>
12-
<KIV>0.0005</KIV>
13-
<KIIQ>1</KIIQ>
14-
<KPIQ>7</KPIQ>
10+
<KPP>11</KPP>
11+
<KPV>0.03</KPV>
12+
<KIV>0.0003</KIV>
13+
<KIIQ>1.5</KIIQ>
14+
<KPIQ>3</KPIQ>
1515
<KP>0.12</KP>
1616
<KD>0.002</KD>
1717
<Gear_r>0.006</Gear_r> <!-- Gear pitch diameter / 2 , in m. Used to convert between linear force at the gripper fingers and torque at the motor. -->

0 commit comments

Comments
 (0)