Skip to content

Gravity feed-forward delivery and CAN driver generalization - #8

Merged
Adnanpi merged 4 commits into
mainfrom
gravity-delivery-and-driver-generalization
Jul 27, 2026
Merged

Gravity feed-forward delivery and CAN driver generalization#8
Adnanpi merged 4 commits into
mainfrom
gravity-delivery-and-driver-generalization

Conversation

@Adnanpi

@Adnanpi Adnanpi commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Generalizes the ARX-specific native stack into protocol-named MIT-CAN and serial device families (config format 1.3.1 with arm_type/effector_type values).
  • Fixes follower gravity feed-forward delivery: the follower path now routes the model gravity torque through each joint's torq_rescale, matching the leader paths; gravity feed-forward becomes an independent per-arm setting instead of a planning type.
  • Adds per-joint servo parameter reporting (MIT codec ranges, motor-reported ENCOS firmware ranges, applied torq_rescale and gains) plus instance-config overrides for torq_rescale and position gains.
  • Defaults ARX X5 and L5 followers to conservative low gains with rescaled gravity feed-forward; manufacturer default gains remain available as *_high_gain_01 instance configs.

Test plan

  • Python suite: 153 passed, 46 skipped locally (SIL tests need Linux vcan and run in CI).
  • CI native build and test matrix gates the merge.
  • Hardware verification of the gravity feed-forward and gain defaults is in progress on a physical station.

🤖 Generated with Claude Code

The ARX-specific device, driver, and effector classes become
protocol-named families shared by any MIT-mode CAN arm or serial arm:
DeviceArmArx -> DeviceArmCan, DeviceArmNello -> DeviceArmSerial,
DeviceEffectorArx/Nello -> DeviceEffectorCan/Serial, and
DriverArx -> DriverCanMit. Config format 1.3.1 selects the family
through the renamed arm_type/effector_type values, declares
follower_gravity_compensation in the arm instance configs, and adds
the abs_position servo field; model configs are migrated to the new
schema. Native test suites, fuzz targets, and the CI test filters
follow the renames.
@Adnanpi
Adnanpi force-pushed the gravity-delivery-and-driver-generalization branch from caf1811 to 9dac744 Compare July 27, 2026 07:00
Adnanpi added 2 commits July 27, 2026 00:06
The follower position path sent model gravity torques to the wire
unscaled, while the leader float path applied each joint's
torq_rescale -- so followers over-delivered gravity torque on the base
joints and under-delivered on the wrists, biasing the arm upward under
policy control. Gravity feed-forward also stops being a planning type
(slew_pos_gravity is removed): it is an independent per-arm setting,
read from the instance config's follower_gravity_compensation field
with a command-line override, and the feed-forward now routes through
torq_rescale exactly like the leader paths.

Instance configs may override torq_rescale and pos_kp/ki/kd per joint
for site-specific profiles. The node reports each joint's effective
servo parameters (MIT codec ranges, motor-reported ENCOS firmware
ranges, applied torq_rescale and gains) so delivered torque can be
reconstructed from the logs; ENCOS SPD ranges are adopted into the
codec, while TOR ranges are verify-and-log only because delivered
torque was found not to follow the firmware register.
ARX X5 and L5 followers default to conservative low position gains
with per-joint torque rescales on the gravity feed-forward (X5 base
0.803 / wrist 1.51, L5 1.4); the manufacturer default gains remain
available as *_high_gain_01 instance configs. Base torque limits rise
(X5 36 Nm, L5 27 Nm) so the feed-forward no longer clips with the arm
extended. The E_ARX gripper torque constant and spring offset are
retuned, with an L5-specific instance config, and the right-side
ARX_ENC encoder leader gets its own instance config using
sign-agnostic gripper reads.
@Adnanpi
Adnanpi force-pushed the gravity-delivery-and-driver-generalization branch from 9dac744 to 799c6d9 Compare July 27, 2026 07:06
@Adnanpi
Adnanpi merged commit 126cdec into main Jul 27, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant