--- summary: The installed calibration palette v11, its frames, caps and palette tag, and how its pose is measured updated: 2026-09-30 --- # Ink palette The installed palette is calibration palette v11 (`cad/calibration-palette-v11`), one printed piece on a single longitudinal 2020 rail, secured by one accessible M4 screw. It carries six ink caps, a touch-trigger probe, a Raspberry Pi camera aimed at the probe ball, the drawing e-stop and an AprilTag on the base-mounted diamond seat. It is the only palette. It is independent of the robot URDF; its pose in the arm base is measured after every placement. | Source | Meaning | | --- | --- | | `urdf/palette.urdf` | The palette body and its fixed frames. Generated by the CAD build; do not edit | | `urdf/meshes/palette/calibration_palette_v11.stl`, `.glb` | Body mesh (visual and collision) and the viewer's copy | | `config/palette.yaml` | The six slots, named after the URDF `inkcap_*` links; cap sizes; the arm that dips there | | `config/palette_geometry.json` | Revision `calibration_palette_v11`, the URDF and body frame, the viewer mesh, the synthetic simulation pose, measured rim overrides (`rim_z_m`, none yet) | | `config/fiducials.json` | `targets.palette`: AprilTag 36h11 ID 0, 46 mm black square | | `config/palette_load.yaml` | Recorded cap contents | ## Frames `palette_root` is the CAD frame. Its origin is on the probe axis at the rail tops (z = 0 is the top of the 2020 rails). +X points from the probe toward the Pi camera and the e-stop enclosure, +Y crosses the rail, and +Z is up. | Frame | Position (mm) | Meaning | | --- | --- | --- | | `palette_tag` | 68, −26, 8.2 | The installed sticker's centre on its surface, yawed 135° (below) | | `palette_probe_ball` | 0, 0, 55.6 | Centre of the probe's 2 mm ball | | `palette_camera` | 122, 0, 55.6 | The Pi camera lens; its +X points at the ball | | `palette_estop` | 74, 40, 32 | The upward-facing E-stop; its +X points up | ## Caps The caps stand in an L-M-S-S-M-L crescent from +Y to −Y, on a 36.5 mm arc about the probe axis centred at 175°, on the side away from the enclosure. Adjacent holders keep a 3 mm edge gap. | Slot | Size | Centre X, Y (mm) | Floor Z (mm) | | --- | --- | --- | --- | | `inkcap_large_1` | large | −7.47, 35.73 | 18 | | `inkcap_medium_1` | medium | −25.85, 25.77 | 22 | | `inkcap_small_1` | small | −34.84, 10.88 | 22 | | `inkcap_small_2` | small | −36.20, −4.66 | 22 | | `inkcap_medium_2` | medium | −29.93, −20.89 | 22 | | `inkcap_large_2` | large | −13.56, −33.89 | 18 | The `inkcap_*` frames are cap **support floors**, not rims. A rim is its floor plus the cap's outside height from `config/palette.yaml`, which puts every rim 32 mm above the rail tops, flush with the holder tops. An entry in `rim_z_m` overrides the computed rim for that cap once it is measured. `config/palette.yaml` states each cap by its **outside**: `diameter_m` across the rim, `height_m` from rim top to cap bottom, and `wall_m` for the rim, wall and base. Outside, the caps are 15 × 14, 11 × 10 and 8 × 10 mm (diameter × height; large, medium, small), in pockets of 15.6, 12.2 and 8.6 mm. The outside is what rests in the pocket and sets the rim height; the bore a tool enters is derived (`ink_spec.CapSize.bore_diameter_m`, `.depth_m`) and is a millimetre narrower. All six slots are assigned to the right arm; each placement still needs reach and clearance checks. ## The palette tag The same AprilTag 36h11 ID 0 sticker is reused. Its inventory retains the 46 mm black edge; the 60 mm CAD seat is centred at (68, -26) mm, with its surface at Z8. The seat is rotated 45 degrees. Sticker rotation is separate from seat rotation: the installed `palette_tag` frame must describe the printed pattern's orientation, not assume it from the platform. The installed pattern's +X runs 135° from the palette's +X (`installed_tag` in `cad/calibration-palette-v11/design.json`, confirmed). The overhead D555 measured it on 2026-09-30: of the seat's four quarter turns, only 135° puts the probe's top, the e-stop and the camera plate where the D555's depth finds them. A re-applied sticker needs the same check. The previous v10 tag transform and palette placement are retired; no old camera measurement is transplanted to the new print. ## Measuring the palette pose The probe calibration measures the station afresh in every run, never from a stored pose: `tatbot ros station` places it in the arm's base from the overhead D555's view of the palette tag, through the arm's registration (`ros/README.md` §7). The arm registration and palette placement must describe the current rig. Measure each arm separately: ```sh tatbot ros station --arm right tatbot ros station --arm left ``` The ROS stack measures the station afresh from the D555, validates the views, and carries the full `palette_tag` transform from `urdf/palette.urdf` into the arm base. The subsequent calibration run enforces freshness and checks for station movement. The earlier camera-scan placement (`tatbot vision palette` and its viewer preview) is retired. A missing placement never falls back to the synthetic simulation pose. ## Simulation The simulator loads the palette from `urdf/palette.urdf` and `config/palette.yaml`, with the tag from the fiducial inventory. It places the palette at `simulation_root_xyz_m` and `simulation_root_quaternion_wxyz` in `config/palette_geometry.json`, a synthetic scene pose that is never a hardware fallback. ## Dipping The 3RL needle cartridge dips; the ballpoint is a `cartridge` tool that never does. A dip aims by the station touch, the probe's ball where the arm's own touches found it, and the caps' CAD offsets about it, not by the overhead fix alone (`ros/README.md` section 6). ## The probe and the camera The touch probe and the Pi camera are for tool-tip and station calibration at the ROS 2 stack's palette station (`ros/README.md` section 7). The probe is normally closed, wired to the palette Pi's GPIO27. The camera is an Arducam 64 MP autofocus module (OmniVision OV64A40) on the palette Pi's CSI connector, aimed along −X at the probe ball 122 mm away. This mount now reaches the documented near-focus distance; focus and image scale must be checked on the installed camera. Measurements from the former 55 mm mount do not describe the new optical setup. The probe relay and the driver's probe guard read the probe, and the probe calibration touches the tool's tube end on its ball (`ros/README.md` §7); no software reads the camera yet. ## Retired The eight-cap rack and the three-tip volcano fixture (`cad/palette-v2`) are retired, with their meshes and their 81 mm ID 22 tag, and so is everything built on the fixture's three pits: the planted-tip refinement of the palette pose, cup teaching, and the per-arm hand-guided recipe with its kinematic refinement. None of their commands or calibration phases exists now. `cad/palette-v2` remains only because the integrated-station concept (`cad/integrated-station-v1`) reads its geometry. The v11 touch probe replaces the pits for tool-tip and station calibration.