Releases: bluerobotics/fillhead
Releases · bluerobotics/fillhead
v0.5.0
Message Cleanup
- Fixed telemetry precision for
force_motor_torque(%.1f -> %.2f) andpress_threshold(%.1f -> %.2f) to match Pressboi wire format - Removed redundant "Error:" prefix from 23 injector error messages (was producing triple-prefixed
FILLHEAD_ERROR: Injector: Error: ...on wire) - Added trailing periods to 18 error messages across
fillhead.cpp,injector_controller.cpp, andheater_controller.cppfor consistency - Fixed ambiguous valve gate message: "Injector valve is not homed and open" -> "Injection valve must be homed and open"
Definition Updates
- Fixed
telemetry.json: joules help text now uses × (multiplication sign) matching Pressboi; added pin references (DI7)/(DI6) to home sensor help text
v0.4.0
Pressboi Parity (Telemetry)
- Added
torque_avg(wire keyta) to firmware telemetry — average of M0/M1 torque, matching Pressboi'storque_avgfield - Added combined
homedflag (wire keyhm) to firmware telemetry — 1 when both machine and cartridge homing are complete, matching Pressboi's singlehomedfield
Telemetry Key Mapping
- Added
firmware_keyfield to alltelemetry.jsonentries where the firmware wire key differs from the canonical name (e.g.force_load_cell→flc,current_pos→cp) - Added
derived_fromannotations for fields computed on the app side (motors_enabled,force_source)
Documentation
- Added
transducer/folder with HX711 load cell interface documentation (README.md) and Ruggeduino Arduino sketch (hx711_arduino.ino)
v0.3.0
ForceSensor Port (CRITICAL)
- Ported
ForceSensorclass from Pressboi (force_sensor.h/force_sensor.cpp) — HX711 load cell via Rugeduino on COM-0 - Added
ForceSensor m_forceSensoras public member onFillhead; Injector accesses viam_controller->m_forceSensor - Fixed
checkForceSensorStatus()stub — now checksisConnected()and validates force range (-10 to 1440 kg) - Wired
updateJoules()to real load cell data (was hardcoded0.0f) - Wired
getTelemetryString()force_load_cellandforce_adc_rawto real sensor readings - Uncommented and wired STATE_MOVING force limit check to
m_forceSensor.getForce() - Fixed pre-move force check in
moveAbsolute()/moveIncremental()for load cell hold action - Implemented
CMD_SET_FORCE_ZERO,CMD_SET_FORCE_OFFSET,CMD_SET_FORCE_SCALEfor load cell mode (were returning errors) - Changed default force mode from
motor_torquetoload_cell - NVM slots 0-1 now used by
ForceSensorfor load cell offset/scale calibration
Inject Command Rework (MAJOR)
- Merged
inject_statorandinject_rotorinto singleinjectcommand - New signature:
inject <volume_ml> [speed_ml_s] [force_limit_kg] [force_action] - Added
set_cartridge_ml_per_mmcommand — NVM-persisted cartridge ratio (slot 18) replaces hardcoded piston diameter constants - Default ratio 5.2732 ml/mm (computed from legacy 75+33mm stator pistons)
- Removed
STATOR_PISTON_A/B_DIAMETER_MMandROTOR_PISTON_A/B_DIAMETER_MMfrom config.h; replaced withDEFAULT_CARTRIDGE_ML_PER_MM - Added full force limit system to
STATE_FEEDINGwith configurable action (retract/hold/skip/abort) — detects cartridge bottom
Bug Fixes
- Extended
reset_nvmto clear slots 0-18 (was 0-15); now covers valve home-on-boot flags and cartridge ratio - Fixed
pressboi.set_strain_cal→fillhead.set_strain_calin press_report.html (done in prior session)
Definition Cleanup
- Removed 7 duplicate/dead C++ files from
definition/(commands.h, command_parser.cpp/h, events.h, responses.h, telemetry.h/cpp) - Removed
../definitionfrom compiler include paths in fillhead.cppproj definition/now contains only JSON schemas and Python files
Definition Updates
- Updated
commands.json: replacedinject_stator/inject_rotorwithinject(4 params) andset_cartridge_ml_per_mm - Updated
simulator.py: newinjectandset_cartridge_ml_per_mmhandlers; addedcartridge_ml_per_mmto default state
v0.2.0
Pinch Valve Homing
- Replaced torque-based homing with hall sensor homing (open-side sensor, negative direction); states: CHECK_SENSOR → RAPID_APPROACH → BACKOFF → SLOW_APPROACH → SET_ZERO
- Handles already-on-sensor edge case by skipping to backoff
- Added per-valve
home_on_bootNVM flags (default enabled); removed all tubed/untubed homing variants and torque-based logic - Added
home_sensorfield to pinch valve telemetry
Safety
- Light curtain on IO4 checked every loop under watchdog; beam break aborts all motion →
STATE_ERROR, blocks reset while obstructed - Added
lctelemetry field (1=tripped, 0=clear) and compile-timeLIGHT_CURTAIN_ENABLEDtoggle
Configuration
- Light curtain pins/config:
PIN_LIGHT_CURTAIN(IO4),LIGHT_CURTAIN_ACTIVE_STATE,LIGHT_CURTAIN_FILTER_MS - Hall sensor pins:
HOME_SENSOR_M2(DI8, vacuum valve),HOME_SENSOR_M3(A9, injection valve) - Pinch homing constants:
PINCH_HOMING_STROKE_MM,PINCH_HOMING_RAPID_VEL_MMS,PINCH_HOMING_SLOW_VEL_MMS,PINCH_HOMING_ACCEL_MMSS,PINCH_HOMING_BACKOFF_MM - NVM slots:
NVM_SLOT_INJ_VALVE_HOME_ON_BOOT,NVM_SLOT_VAC_VALVE_HOME_ON_BOOT; removed oldPINCH_HOMING_TUBED_*/PINCH_HOMING_UNTUBED_*constants - Replaced vacuum transducer with XP5-080-01 (compound, -101–100 kPa, 1-5V); updated
VAC_PRESSURE_MIN→ -14.65,VAC_PRESSURE_MAX→ 14.50 PSIG
Commands
- Added
injection_valve_home_on_boot/vacuum_valve_home_on_boot(NVM, true/false); removed*_home_tubed/*_home_untubedvariants - Updated
commands.jsonschema for GUI/simulator alignment
Bug Fixes
- Fixed valve auto-homing not firing when press
home_on_bootwas disabled (delay timer now starts when any homing is pending) - Fixed simulator valve state after homing (
'Open'instead of'Homed')
GUI
- Created
definition/gui.pystandalone panel module withcreate_gui_components()entry point - Sections: press (force w/ source, position current→target, retract, homed/polarity/motor, energy, endpoint/startpoint), injector (state, home positions, volumes), valves (compact row: state/position/torque bar), vacuum & heater (state w/ ON/OFF color, pressure, temp w/ setpoint)
- Force vs Position graph: live-updating canvas with auto-scaling and clear button
- Helpers:
make_homed_tracer,make_state_tracer,make_on_off_tracer,make_force_tracer,make_heater_value_tracer,make_vacuum_value_tracer,make_unit_stripper - Widget factories:
create_torque_widget(vertical progress bar),create_device_frame(bordered card w/ header, state, IP) get_gui_variable_names()declares all required tkinter variables for telemetry binding
Simulator
- Updated valve homing simulation: removed tubed/untubed, added
home_on_boothandling, addedinj_valve_home_sensor/vac_valve_home_sensorto telemetry