Gravity feed-forward delivery and CAN driver generalization - #8
Merged
Conversation
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
force-pushed
the
gravity-delivery-and-driver-generalization
branch
from
July 27, 2026 07:00
caf1811 to
9dac744
Compare
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
force-pushed
the
gravity-delivery-and-driver-generalization
branch
from
July 27, 2026 07:06
9dac744 to
799c6d9
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
arm_type/effector_typevalues).torq_rescale, matching the leader paths; gravity feed-forward becomes an independent per-arm setting instead of a planning type.torq_rescaleand gains) plus instance-config overrides fortorq_rescaleand position gains.*_high_gain_01instance configs.Test plan
🤖 Generated with Claude Code