Skip to content

fix(cad): add a flexible belly joint to unload the torso servo shaft (#86) - #87

Open
jamro wants to merge 4 commits into
mainfrom
fix/body-joint
Open

jamro wants to merge 4 commits into
mainfrom
fix/body-joint

Conversation

@jamro

@jamro jamro commented Oct 19, 2026 •

Copy link
Copy Markdown
Owner

What

Closes #86.

The body servo holds the upper body and turns it. Side play in the belly pocket sent bending and lateral load into the servo shaft. Long runs, fast reversals, and repeated firmware uploads can wear the servo and, in rare cases, make it oscillate on a steady PWM signal.

BellyJoint is a small hexagonal printed coupler between Belly and the body servo. The hex slides under side load, so the shaft mostly sees torque for torso rotation. Fully 3D-printed. Exported for all supported servos, with Belly, SeatLeft, SeatRight, and the parts sets updated to match.

Stack: Belly → BellyJoint → body servo.

model_preview

Upgrade an existing robot

Reprint these four parts from the same parts/{servo_id}/3mf/ folder as the rest of the robot (sg90, es9051, fs0307, or hd1370a):

  • Belly.3mf
  • BellyJoint.3mf
  • SeatLeft.3mf
  • SeatRight.3mf

Keep the body servo, Chair, Chest, and the existing M2 screws. Remove the old Belly, SeatLeft, and SeatRight, then fit the new parts (including BellyJoint between Belly and the body servo) by following the updated assembly guide: Center the body servo before seating the new stack.

Checks

  • Title is type(scope): summary
  • CAD: .f3d + exported .3mf; CERN-OHL-S; AiEmblem.3mf not used as a branding swap
  • Hardware tested: robot
  • Updates assembly guide
  • Firmware: pio run and/or pio test -e native when that code changed
  • Breaking HTTP / pins / NVS / servo defaults / hook CLI called out as type!: plus a BREAKING CHANGE: footer
  • Packages: npm test --prefix packages/tiny-engineer-cli / …/tiny-engineer-cursor / …/tiny-engineer-antigravity / …/tiny-engineer-claude-code when that package changed
  • HTTP: web UI API page (ui/src/views/ApiReference.tsx) + docs/api.md (and README / docs/hardware/testing.md if the route list changed)
  • Settings: layers in docs/settings.md; no raw access_token in logs
  • Pins: include/pins.h + docs/hardware/ together
  • Servo ranges not widened without a real robot
  • No .env, tokens, or Wi-Fi passwords in logs or screenshots

Summary by CodeRabbit

  • New Features
    • Added complete 3D BellyJoint models for four hardware configurations, including geometry, material information, and presentation details.
  • Improvements
    • Servo identification now uses smaller movements for the head, neck, and hands, and slightly larger movements for the body. Each servo returns to its center position after identification.

@coderabbitai

coderabbitai Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Important

Review skipped

We couldn't safely recover the incremental review. No full review was started, and the last reviewed checkpoint was preserved. Retry later, or explicitly request a full review by commenting @coderabbitai full review.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 8b5461e6-05dc-4755-be69-abea72b7442f
📥 Commits

Reviewing files that changed from the base of the PR and between 5147455 and b2532d0.

📒 Files selected for processing: 4
  • openspec/specs/setup-servo-calibration/spec.md
  • ui/src/setup/PlaceParts.tsx
  • ui/src/setup/useCalibration.tsx
  • ui/test/wizard.test.tsx

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 3 remain after this review.

📝 Walkthrough

The change adds STEP representations of BellyJoint for four model variants. It also sets a larger servo-identification motion delta for the body joint and updates the specification and wizard test.

Changes: BellyJoint STEP representations

Layer / File(s) Summary
Add STEP representations
3d_models/parts/es9051/step/BellyJoint.step, 3d_models/parts/fs0307/step/BellyJoint.step, 3d_models/parts/hd1370a/step/BellyJoint.step, 3d_models/parts/sg90/step/BellyJoint.step
Each file defines BellyJoint solid geometry, product and assembly relationships, Steel material and density metadata, units, and presentation styles.

Servo identification motion

Layer / File(s) Summary
Apply joint-specific identification motion
ui/src/setup/useCalibration.tsx, ui/src/setup/PlaceParts.tsx, openspec/specs/setup-servo-calibration/spec.md, ui/test/wizard.test.tsx
The calibration logic uses a five-degree delta for the body joint and a three-degree delta for other joints. The specification describes the joint-specific motion, and the wizard test checks the body servo’s movement and completed state.

Priority: ➖ Normal

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Bug fix

Merge Risk: ⚪ Minimal · up to b2532

Body-servo identification uses a ±5° motion while other joints retain ±3°, then returns to center. No concrete merge-blocking risk is established beyond normal validation.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 3 files. (1 skipped: 1 … Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly summarizes the primary change: adding a flexible BellyJoint to reduce load on the torso servo shaft. This matches the CAD additions and the pull request objective.
Linked Issues check Passed Issue [#86] requests a compact, fully 3D-printed torso joint that reduces lateral and axial servo-shaft load, limits misalignment stress, preserves rotation, and needs no added hardware. The PR adds `…
Out of Scope Changes check Passed The changed files support issue [#86]. The CAD files implement and package the torso-joint redesign. The body-servo calibration change supports the new joint range, and its wizard test verifies that b…
Full details: Linked Issues check

Explanation

Issue [#86] requests a compact, fully 3D-printed torso joint that reduces lateral and axial servo-shaft load, limits misalignment stress, preserves rotation, and needs no added hardware. The PR adds BellyJoint between Belly and the body servo, updates Belly, SeatLeft, SeatRight, and parts sets, and exports the joint for sg90, es9051, fs0307, and hd1370a. The hex interface is intended to slide under side load. The body-servo identification delta changes from 3 to 5 degrees, and ui/test/wizard.test.tsx verifies the [95, 85, 90] sequence and completion state.

Full details: Out of Scope Changes check

Explanation

The changed files support issue [#86]. The CAD files implement and package the torso-joint redesign. The body-servo calibration change supports the new joint range, and its wizard test verifies that behavior. No unrelated product area, credential, branding, or infrastructure change is shown in the whole-PR evidence.

Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 3 files. (1 skipped: 1 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

This branch has not been deployed

No deployments
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.

fix(3d): Improve torso joint design to reduce servo wear under heavy use

1 participant