Skip to content

how-to: calibrate the Prime eRob arms#4

Merged
T-K-233 merged 4 commits into
mainfrom
docs/prime-erob-calibration
Jun 29, 2026
Merged

how-to: calibrate the Prime eRob arms#4
T-K-233 merged 4 commits into
mainfrom
docs/prime-erob-calibration

Conversation

@T-K-233

@T-K-233 T-K-233 commented Jun 28, 2026

Copy link
Copy Markdown
Member

Adds a how-to for calibrating the Prime eRob (ZeroErr) EtherCAT arms — the analog of the Lite "Calibrate the zero pose" page.

Covers the eRob-specific mechanics:

  • CSP has no MIT zero-torque → limp by writing the drive's internal loop gains.
  • 0x2383 "Bus Regulation of PID" must be enabled first, or gain writes are silently ignored.
  • Damped-limp (kp=0, ki=0, keep velocity gain) per joint, others held.
  • The offset is applied by folding it into the per-joint PDO factor/offset (no driver fork, no drive-NVM writes).
  • Confirmed 0–9 two-arm bus-split table + common gotchas.

Pairs with bar_ros2 PR #5 (the calibration toolchain). MDX-checked (no raw tags/braces/bare URLs); no Node locally so the Docusaurus build runs in CI.

🤖 Generated with Claude Code

https://claude.ai/code/session_019z5ubj27Me94u163g7E3ec

T-K-233 and others added 2 commits June 27, 2026 19:46
New how-to mirroring the Lite "Calibrate the zero pose" page, for the eRob (ZeroErr)
EtherCAT arms. Covers what differs from Lite: CSP has no MIT zero-torque, so limp is
done by writing the drive's internal loop gains; the 0x2383 "Bus Regulation of PID"
gate must be on first or gain writes are ignored; damped-limp (kp=0, ki=0, keep kd)
per joint; and the offset is applied by folding it into the per-joint PDO factor/offset
(fold_calibration.py) rather than a software offset, since ethercat_driver is upstream.
Includes the confirmed 0-9 bus-split table and the common gotchas. Added to the
How-to sidebar after calibrate_zero_pose.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019z5ubj27Me94u163g7E3ec
- Cover the 4 Sito wrists: same calibrate_erob tool + prime_calibration.yaml,
  backends:=can isolated sweep, and the flip-a-direction-without-resweeping
  formula (offset_new = offset + (lower+upper)).
- Correct the Fault 4616 guidance: control_frequency MUST equal the
  controller_manager update_rate (ethercat_driver syncs DC from the CM loop, no
  separate thread). Separated from the fixed ~70s staged activation.
- Drop the waist note (the 3 waist joints are fixed this version).
- Fold the bring-up + tracker into one calibrate.launch.py invocation;
  /joint_states -> /prime/joint_states.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019z5ubj27Me94u163g7E3ec
@T-K-233

T-K-233 commented Jun 28, 2026

Copy link
Copy Markdown
Member Author

Pushed 376843d — extended the page to the full bimanual robot (matches bar_ros2 PR #5):

  • Added a Calibrate the Sito wrists section: same calibrate_erob tool + prime_calibration.yaml, backends:=can isolated sweep, and a flip-a-direction-without-re-sweeping recipe (offset_new = offset + (lower+upper)).
  • Corrected the Fault 4616 guidance — the real cause is control_frequency ≠ controller_manager update_rate (DC sync runs from the CM loop, no separate thread), now derived automatically by real.launch.py.
  • Dropped the waist note (fixed this version); folded bring-up + tracker into one calibrate.launch.py call; /joint_states/prime/joint_states.

T-K-233 and others added 2 commits June 28, 2026 19:36
New concepts/prime_hybrid_actuation.md documenting the BAR Prime bringup:
the 14-DoF two-bus topology (10 eRob CiA402 over EtherCAT + 4 Sito MIT over
SocketCAN), the one-controller_manager / two-ros2_control-block architecture,
the control_frequency==update_rate DC rule and sequenced spawners, both
impedance realizations with exact SI->actuator equations (eRob MIT-in-CSP
loop gains kp/kd -> 0x2382/0x2381 gated by 0x2383; Sito MIT kp/688.58,
kd/1.125), the transmission-efficiency caveat + torque_efficiency knob, the
per-mode PD table, the impedance manager and its "no SDO until /prime/joint_states"
0xA000 rule, and both performance fixes (parallel-SDO mode switch 3.6s->0.46s;
1 kHz startup bring-up loop 70s->13.6s). Adds three troubleshooting entries
and a Concepts sidebar entry.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019z5ubj27Me94u163g7E3ec
Reflect the bar_description_prime -> prime_description migration (external T-K-233/Prime-Description, prime_dummy variant, like lite_description): packages reference + heading anchor, the prime_hybrid_actuation ros2_control path, the launch_args cross-link, the installation package list, and the stale hardware_specs placeholder note (Prime is now external + 14-DoF hardware-validated).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019z5ubj27Me94u163g7E3ec
@T-K-233 T-K-233 merged commit 1e33664 into main Jun 29, 2026
2 checks passed
@T-K-233 T-K-233 deleted the docs/prime-erob-calibration branch June 29, 2026 22:28
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