Skip to content

feat(cad)!: parametric 3d model with support for FS0307 and SG90 - #27

Merged
jamro merged 9 commits into
mainfrom
feat/parametric-model
Sep 10, 2026
Merged

feat(cad)!: parametric 3d model with support for FS0307 and SG90#27
jamro merged 9 commits into
mainfrom
feat/parametric-model

Conversation

@jamro

@jamro jamro commented Sep 10, 2026

Copy link
Copy Markdown
Owner

Summary

Parametric Fusion model driven by servo dimensions. Compact default is Pololu / Feetech FS0307. Tower Pro SG90 (and MG90S-class clones) is a second official print set for builders who cannot source HD-1370A.

Fusion add-in TinyEngineer Tools writes servos.json into user parameters and exports each PRINT_LAYOUT child as 3MF + binary STL in the captured print pose.

Printables moved off 3d_models/parts/*.3mf into:

  • 3d_models/parts/fs0307/{3mf,stl}/ — default compact build
  • 3d_models/parts/sg90/{3mf,stl}/ — widely available 9g servo

Part names changed (e.g. Arm / Hand*UpperArm / Forearm*; LampGlassLampDiffuser; PillowSeatLeft/SeatRight). New seat mount mechanism. ServoSizingTester is included for fit checks before a full print.

Head CAD follows the Waveshare 0.91" OLED path from #6 (larger head, easier to source). Hardware docs still list the old OLED / HD-1370A; that is a follow-up, not this PR.

Issues

Closes #5
Closes #6
Closes #7
Closes #8 (print-oriented 3MF + STL for services; min wall thickness introduced as model parameter)
Closes #11

Follow-up in this workstream

  • Add PowerHD HD-1370A to servos.json and export 3d_models/parts/hd1370a/{3mf,stl}/
  • Update hardware docs (BOM, print folder, OLED, assembly) off HD-1370A-only wording
  • Update firmware comments / defaults if servo geometry or recommended ranges change
  • Document servo parameters

Breaking change

The CAD was rebuilt. HD-1370A meshes at 3d_models/parts/*.3mf are gone. Old prints will not mate with the new parts. Pick fs0307 or sg90 and print that folder only.

BREAKING CHANGE: printable parts moved to servo-specific 3mf/ and stl/ folders; HD-1370A exports and several part names are removed. Parts are redesigned and not compatible with previous model.

Test plan

  • Fusion: install add-in from 3d_models/fusion/TinyEngineerTools/, open TinyEngineer.f3d
  • Servo Configurator applies Feetech FS0307 and Tower Pro SG90 (check servo_id)
  • Parts Exporter writes {servo_id}/3mf/*.3mf, {servo_id}/stl/*.stl, {servo_id}/README.md
  • Print pose matches PRINT_LAYOUT (no extra rotate in the slicer)
  • Fit ServoSizingTester on a real FS0307 and SG90 before a full kit
  • Note in merge: robot / bench / CAD-only
  • Assembly and configure robot with latest models

- Added a new `parts_exporter` module to export PRINT_LAYOUT children as separate 3MF and binary STL files.
- Introduced `servo_id` parameter handling in the servo configuration for better integration with the parts exporter.
- Restructure parts folder to support multiple formats and servo types
- Updated TinyEngineer.f3d file to reflect recent changes.

BREAKING CHANGE: The 3D model was redesigned from scratch and is not compatible with the previous version.
- Enhanced the first boot setup wizard to include a step for OLED screen orientation adjustment.
- Updated API documentation to reflect the addition of the `oled_rotate_180` parameter for settings and setup routes.
- Adjusted relevant code to implement OLED rotation based on user input during setup and settings updates.
- Updated servo control functions to use normalized pose values (-1 to 1) instead of degrees, enhancing consistency across animations.
- Refactored related functions and constants to support the new normalized range, ensuring compatibility with existing animations.
- Adjusted documentation to reflect changes in servo control methodology and updated relevant tests for validation.
- Changed references from "SSD1306 OLED" to "Waveshare 0.91inch OLED Module" throughout documentation for consistency.
- Updated wiring documentation to clarify the correct labeling of the OLED clock pin as **SCL** instead of **SCK**.
- Adjusted assembly checks and interface documentation to reflect the updated OLED module specifications.
- Revised paths for exported parts to reflect the new structure under `parts/{servo_id}/3mf/`.
- Clarified instructions for printing and assembly, emphasizing the use of specific directories for different servo models.
- Enhanced API documentation to include updated error handling and status indicators for hardware components.
- Improved clarity on servo speed parameters and their implications in the setup process.
@jamro
jamro merged commit 726ddca into main Sep 10, 2026
2 checks passed
@jamro
jamro deleted the feat/parametric-model branch September 10, 2026 19:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant