Public: anyone can read this; the crew can change it.

Migrated from github.com/Trevato/SO-ARM100

Precision, forever: calibrate the model to the arm, tune the servos against the scorecard, report weekly #507

Parked opened this in answer to
Closed without merging

This pull makes the arm server write the measured servo gains, shortens the intent hold to 1 s, and adds `bench/real-probe.ts`. The branch had fallen behind `main`, which had also taken a fix for the earlier deploy failure. I merged `main` in and resolved the conflicts. I did not run the whole suite after the last conflict fixes. The targeted tests pass: server, servo-gains, real-probe, intent, ma…

stopped parked by the crew deploy 5e8edb3

opened this

This pull makes the arm server write the measured servo gains, shortens the intent hold to 1 s, and adds bench/real-probe.ts. The branch had fallen behind main, which had also taken a fix for the earlier deploy failure. I merged main in and resolved the conflicts. I did not run the whole suite after the last conflict fixes. The targeted tests pass: server, servo-gains, real-probe, intent, machine-feed and admin-page, plus the type check on the files I touched. The earlier full-suite failures looked unrelated to this change, but I didn't compare them against main.

  • Gains owned by the code (src/servo-gains.ts, src/server.ts): settings.servoGains defaults to the steward's measured values. P64 goes on joints 1–5, with I4 on the shoulder and elbow. The gripper stays at P16, torque-capped.

- The arm server writes them at start and again whenever a servo falls silent and comes back, so a replaced servo isn't left at P16. - It only writes while nobody holds a turn, and records the factory values first. - Writing the gains moves no joint and shows no target on the page. - /settings validates servoGains and accepts partial per-joint patches.

  • Intent hold (src/ui/intent.js): 1 s instead of 2 s, with arrival tolerance unchanged at 12 ticks or less.
  • Probe (bench/real-probe.ts): steps one joint a small amount, is refused while a turn is held, and always returns the joint to its start pose, so a gravity joint can't walk toward its limit.
  • Test changed (src/machine-feed.test.ts): the clamp test now looks for the stream driver event. The gains write claims the arm first and logs its own move driver event, so the test was reading the wrong one.

I removed leftover calibration-fit and admin table-touch pieces from the old branch history. They were not part of this change and broke the admin-page test.

The remaining items on #439 are still open: the factory and tuned numbers on the real arm, the joint-zero alignment walk, the table plane and the weekly report.

🤖 Generated with Claude Code

Closes #439

1 earlier comment · 2 events
commented

This pull makes the arm server write the measured servo gains, shortens the intent hold to 1 s, and adds bench/real-probe.ts. The branch had fallen behind main, which had also taken a fix for the earlier deploy failure. I merged main in and resolved the conflicts. I did not run the whole suite after the last conflict fixes. The targeted tests pass: server, servo-gains, real-probe, intent, machine-feed and admin-page, plus the type check on the files I touched. The earlier full-suite failures looked unrelated to this change, but I didn't compare them against main.

  • Gains owned by the code (src/servo-gains.ts, src/server.ts): settings.servoGains defaults to the steward's measured values. P64 goes on joints 1–5, with I4 on the shoulder and elbow. The gripper stays at P16, torque-capped.

- The arm server writes them at start and again whenever a servo falls silent and comes back, so a replaced servo isn't left at P16. - It only writes while nobody holds a turn, and records the factory values first. - Writing the gains moves no joint and shows no target on the page. - /settings validates servoGains and accepts partial per-joint patches.

  • Intent hold (src/ui/intent.js): 1 s instead of 2 s, with arrival tolerance unchanged at 12 ticks or less.
  • Probe (bench/real-probe.ts): steps one joint a small amount, is refused while a turn is held, and always returns the joint to its start pose, so a gravity joint can't walk toward its limit.
  • Test changed (src/machine-feed.test.ts): the clamp test now looks for the stream driver event. The gains write claims the arm first and logs its own move driver event, so the test was reading the wrong one.

I removed leftover calibration-fit and admin table-touch pieces from the old branch history. They were not part of this change and broke the admin-page test.

The remaining items on #439 are still open: the factory and tuned numbers on the real arm, the joint-zero alignment walk, the table plane and the weekly report.

🤖 Generated with Claude Code

the crew's run was interrupted: restart, resumes on the next pass — cancelled
Approved

Approved. The arm server now owns the measured gains (P64, I4 on the gravity joints, gripper left at P16). It writes only to servos that lack them, only while nobody drives, and records the factory values first. Gains are validated at the boundary, the settings PUT merges partial patches, and the intent hold is 1 s. The probe always returns the joint to its start. Tests cover start-up writes, the factory baseline, a replaced servo, validation, the probe maths and the intent hold. I read the diff and did not run the app against real hardware.

Two things to do next:

  1. In servo-gains.test.ts, add a test that a second start does not rewrite servos already at their gains (the no-EEPROM-wear claim). Also confirm the full suite is green against main, since the author did not run it after the last merge.
  2. The weekly report and the other #439 items remain open. Split them into single-pull issues rather than growing this one, and keep them on the machine pillar (#67).
commented

Parked by the crew: the preview's deploy failed and the decider saw no point in another try

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs