FISICA: A Deployed Service for Plantar-Pressure and Posture Assessment with Ontology-Grounded Recommendation
Organizations: Department of Computer Science, University of Illinois Urbana-Champaign · Care&Co., Busan, South Korea
Abstract
FISICA is a body-assessment and recommendation service running in production. One standing session with two photographs returns foot-loading measures, posture coordinates, a driven 3D avatar, a visual report, and ranked shoe and exercise candidates. Measurement comes from a purpose-built scale carrying 634 force-sensitive elements on a 1 cm grid and four load cells, and a rule-based evaluator controls every recommendation while a language model only explains the stored result. The method contribution is the avatar. Instead of mapping a measured angle onto a rig through a tuned gain, we measure the avatar with the same function used on the subject and solve until the two agree, on a sampling-invariant spinal metric that separated a normal from a kyphotic record by 7.2 degrees against 0.9 degrees for a single-joint formulation. In production, general APIs respond at a 0.023 s median, plantar-pressure analysis at 0.45 s, and recommendation at 2.16 s to 2.26 s with the rule-based portion under one second in every trial. The served keypoint graph reaches 0.960 [email protected] on public data, and the catalog holds 699 shoes with 10,500 typed facts. An approved study supplies the radiographic reference for the validation still ahead.
Figures & tables
| Path | Sensing element | Read-out | Reported output |
|---|---|---|---|
| Pressure | 634 FSR elements at pitch | Analog multiplexer into the STM32F103RCT6 ADC | 645-byte frame (Section 4 ) |
| Mass | Four SC902 load cells | Dedicated channel | Total load, displayed body mass |
| Area | Standard or reference |
|---|---|
| Safety and EMC | KC, against KS C 9832:2023 and KS C 9835:2019 |
| Emissions | Class B |
| Immunity | Electrostatic discharge, contact and air |
| Conformity | CE, FCC, and TELEC declarations of conformity; VCCI registration |
| Hazardous substances | RoHS 2011/65/EU with (EU) 2015/863, all ten restricted substances; assessed under IEC 63000:2016+AMD1:2022 with IEC 62321 methods |
| End of life | WEEE 2012/19/EU with (EU) 2024/884, category 5; rates under IEC/TR 62635:2012 |
| Item | Specification |
|---|---|
| Device size | mm |
| Pressure sensing | logical grid at pitch, split into left and right regions; 634 physical FSR elements |
| Array read-out | Analog multiplexer into the sensor-controller ADC |
| Body-mass sensing | Four SC902 load cells on a separate channel; maximum specified load 180 kg |
| Sensor controller | STM32F103RCT6 (sensor PCB, FR4) |
| Main controller | ESP32-S3 (main PCB, FR4) |
| Tier | Host | Compute | Role |
|---|---|---|---|
| Edge | AWS Seoul, t4g.medium | Ubuntu 24.04 | HTTPS termination (Traefik), central configuration, central logging (Grafana, Loki, Promtail) |
| Production | On-premise, k3s v1.34 | Control plane, plus (12 cores, , NVIDIA RTX 5060 Ti ) | Thirteen microservices at two to three pods each |
| Development | On-premise, k3s, single node | 8 cores, , NVIDIA RTX 3070 | Same stack, one pod per service |
| State | Amazon RDS | PostgreSQL | Separate production and development databases, per-service schema |
| Service output | Primary input | Returned information |
|---|---|---|
| Posture analysis | Frontal and lateral RGB images | Body keypoints, depth, a C7 landmark, and view-specific alignment indicators |
| Pressure analysis | FSR grid and mass channel | Pressure heatmap, left and right balance, regional loading, foot dimensions, and top classifier labels |
| Embodied view | Fused posture coordinates and the pressure image | An avatar driven to the measured parameters, with the pressure decal and the centre-of-gravity line registered to it |
| Footwear | Pressure observations and user constraints | Ranked shoes from the released catalog, matched features, exclusions, and an explanation trace |
| Exercise | Posture or pressure needs, goals, and safety constraints | Supported movements, instructions, exclusions, and permitted safety text |
| Configuration | AP | AP 50 | AP 75 | mOKS | [email protected] | Inst. det. | p50 (ms) |
|---|---|---|---|---|---|---|---|
| Deployed ONNX ( , fp16) | |||||||
| PyTorch, input (fp32) | |||||||
| PyTorch, native res. (fp32) | |||||||
| MediaPipe BlazePose (heavy) | † |
| Deployed ( , fp16) | Native res. (fp32) | |||||
|---|---|---|---|---|---|---|
| Keypoint | mean (px) | median (px) | norm. | mean (px) | norm. | |
| nose | 145 | 7.83 | 2.36 | 0.0260 | 4.23 | 0.0155 |
| left_eye | 127 | 4.23 | 2.21 | 0.0196 | 4.64 | 0.0171 |
| right_eye | 129 | 7.21 | 1.89 | 0.0236 | 4.38 | 0.0156 |
| left_ear | 92 | 5.11 | 3.17 | 0.0161 | 6.31 | 0.0230 |
| right_ear | 106 | 9.76 | 3.18 | 0.0326 | 6.21 | 0.0215 |
| Configuration | mean (ms) | std (ms) | p50 (ms) | p95 (ms) | p99 (ms) |
|---|---|---|---|---|---|
| Deployed ONNX ( , fp16) | |||||
| PyTorch, input (fp32) | |||||
| PyTorch, native res. (fp32) |
| Stage | mean (ms) | std (ms) | p50 (ms) | p95 (ms) | p99 (ms) |
|---|---|---|---|---|---|
| Preprocess | |||||
| Inference | |||||
| Postprocess | |||||
| End-to-end |
| Candidate instances | images | median latency (ms) |
|---|---|---|
| 2–5 | ||
| 6–10 | ||
| 11–20 | ||
| Configuration | Quantity | median | mean | p95 | within | |
|---|---|---|---|---|---|---|
| Deployed ONNX ( , fp16) | shoulder tilt | 159 | 3.16 | 12.40 | 54.06 | 32.1% |
| Deployed ONNX ( , fp16) | pelvic tilt | 144 | 5.26 | 18.62 | 140.59 | 25.0% |
| PyTorch, (fp32) | shoulder tilt | 159 | 3.12 | 10.65 | 34.48 | 36.5% |
| PyTorch, (fp32) | pelvic tilt | 145 | 5.86 | 14.23 | 39.50 | 20.7% |
| PyTorch, native res. (fp32) | shoulder tilt | 159 | 3.16 | 10.21 | 43.71 | 40.3% |
| PyTorch, native res. (fp32) | pelvic tilt | 145 | 4.95 | 13.85 | 38.36 | 22.8% |
| Quantity | Pair separation (px) | median ( ) | p95 ( ) | reversed | within | |
|---|---|---|---|---|---|---|
| Shoulder tilt | – | 53 | 5.21 | 147.57 | 9.4% | 20.8% |
| – | 58 | 3.09 | 18.44 | 1.7% | 34.5% | |
| – | 30 | 1.91 | 9.97 | 0.0% | 50.0% | |
| – | 17 | 2.85 | 33.19 | 0.0% | 29.4% | |
| Pelvic tilt | – | 82 | 6.15 | 157.50 | 9.8% | 18.3% |
| – | 39 | 4.03 | 22.61 | 2.6% | 38.5% |
| Parameter | Normal | Kyphotic | |
| Thoracic two-line bend (subject) | |||
| Thoracic bend, avatar badge | |||
| CVA (subject) | , more forward head | ||
| CVA, avatar badge † | |||
| Lumbar two-line bend (subject) | |||
| Lumbar bend, avatar badge |
| Channel | Drive | Display | Note |
|---|---|---|---|
| Thoracic bend | Closed-loop | Solver function | One definition end to end |
| Lumbar bend | Closed-loop | Solver function | Displays on both records; range and saturation marker under review |
| Lateral bend, trunk lean | Closed-loop | Solver function | One definition end to end |
| Craniovertebral angle | Closed-loop | Separate indicator, offset each frame to the measured value | The drive carries the measurement; the badge repeats the input, so it is not convergence evidence |
| Round-shoulder protraction | Tuned gain | Not displayed | No avatar-side measurement; no number reaches the reader |
| Shoulder level | Per-side drop relative to C7, scaled by avatar shoulder width | Separate indicator geometry | Three definitions not yet collapsed to one |
| Node | Role | Example |
| MeasurementRecord | Source measurement used | record identifier, capture time |
| Observation | Value computed from the measurement | forefoot load share, shoulder alignment |
| StateTendency | Tendency the model suggests, not a diagnosis | flat-foot tendency, high-arch tendency |
| Pattern | Combination of observations or change over time | forward head with round shoulder |
| FunctionalNeed | What an item must support | forefoot pressure redistribution |
| ShoeFeature | Derived shoe function | heel cushioning, stability support |
| Attribute | Meaning | Items | Coverage |
|---|---|---|---|
| arch_support | Arch-support class | 699 | 100% |
| forefoot_width_mm | Forefoot width at reference size | 699 | 100% |
| removable_insole | Insole detachable | 699 | 100% |
| orthotic_friendly | Accepts a functional insole | 699 | 100% |
| weight_g | Mass | 688 | 98.43% |
| drop_lab_mm | Heel-to-forefoot height difference | 674 | 96.42% |
| Observation condition | Functional need | Principal shoe feature |
|---|---|---|
| Forefoot load | Forefoot pressure redistribution | Forefoot cushioning |
| Rearfoot load | Heel-impact accommodation | Heel cushioning |
| Midfoot load and flat-foot confidence | Midfoot support | Stability support |
| Forefoot load and high-arch confidence | Reinforced redistribution | Cushioning and space |
| Rearfoot load and high-arch confidence | Reinforced heel accommodation | Heel cushioning |
| Domain | User relation | Effect on score |
| Footwear | Preferred brand | confidence |
| Preferred product | confidence | |
| Preferred attribute | confidence strength coverage, capped at per candidate | |
| Recorded fit issue | confidence | |
| Exercise | Matching goal | confidence |
| Preferred movement | confidence |
| Feature | Environment | Mean SD | 95% CI | Median | p95 | Min / Max | |
|---|---|---|---|---|---|---|---|
| Shoe recommendation | Production | 30 | [1.92, 2.98] | 2.16 | 3.61 | 1.58 / 9.38 | |
| Shoe recommendation | Development | 30 | [1.60, 2.26] | 1.60 | 3.19 | 1.30 / 5.79 | |
| Exercise recommendation | Production | 30 | [2.41, 5.07] | 2.26 | 13.26 | 1.74 / 14.47 | |
| Exercise recommendation | Development | 30 | [1.98, 2.08] | 1.99 | 2.27 | 1.84 / 2.41 |
| Stage | Shoe prod. | Shoe dev. | Exercise prod. | Exercise dev. |
|---|---|---|---|---|
| (1) Admission, validation, quota | 0.31 | 0.25 | 0.33 | 0.25 |
| (2) Language-model planning | 0.13 | 0.13 | 0.11 | 0.10 |
| (3) Recommendation matching | 0.36 | 0.15 | 0.38 | 0.24 |
| (4) Time to first answer token | 0.78 | 0.73 | 1.07 | 0.62 |
| (5) Answer streaming complete | 0.39 | 0.36 | 0.31 | 0.76 |
| System subtotal (1 to 3) | 0.78 | 0.53 | 0.84 | 0.59 |
| ML feature | Environment | Mean | Median | p90 | p95 | Min / Max | |
|---|---|---|---|---|---|---|---|
| Plantar-pressure analysis | Production | 199 | 0.56 | 0.45 | 0.82 | 1.52 | 0.25 / 2.46 |
| Plantar-pressure analysis | Development | 232 | 0.43 | 0.28 | 0.79 | 1.55 | 0.14 / 2.64 |
| Body-composition report OCR | Production | 9 | n/a | 2.45 | n/a | n/a | 0.35 / 4.64 |
| Body-composition report OCR | Development | 544 | 14.49 | 17.63 | 25.92 | 27.66 | 0.44 / 83.74 |
| Composite measurement analysis | Production | 351 | 3.10 | 1.30 | 2.19 | 13.17 | 0.77 / 48.82 |
| Composite measurement analysis | Development | 112 | 6.97 | 9.91 | 11.93 | 12.13 | 0.39 / 16.84 |
| Feature | Environment | Mean SD | 95% CI | Median | p95 | Min / Max | |
|---|---|---|---|---|---|---|---|
| Measurement, pressure only | Production | 30 | [0.57, 0.65] | 0.58 | 0.86 | 0.48 / 0.93 | |
| Measurement, pressure only | Development | 30 | [0.42, 0.44] | 0.43 | 0.49 | 0.38 / 0.50 | |
| Measurement, pressure+pose | Production | 30 | [2.21, 3.87] | 2.70 | 3.41 | 2.02 / 14.61 | |
| Measurement, pressure+pose | Development | 29 | [1.81, 3.93] | 2.43 | 4.34 | 1.54 / 16.74 |
| Ours (production) | Published baseline | Source | Fairness note |
|---|---|---|---|
| General REST APIs, p50 | threshold for instantaneous response | [ 20 , 10 ] | Four times of headroom below the classic threshold |
| Agent time to first token, , including tool orchestration | Median TTFT of comparable reasoning-class LLM APIs, , model only | [ 4 ] | Ours includes gateway and tool execution; the baseline is a model-only API |
| Agent end-to-end, | Iterative tool-calling agents, per query, and after optimization | [ 13 ] | Peer-reviewed agent system; the task domain is graph QA |
| Document OCR, per report sheet | Commercial cloud OCR APIs over 500 invoices: , , and for three vendors | [ 33 ] | Same unit, one document, end-to-end; vendor-run benchmark, so the vendor’s own row is the favourable one |
| Composite measurement analysis, | Within the limit for holding attention on a task | [ 20 ] | Threshold, not a competing system |
| Requirement | Specified | Measured | Reported in |
|---|---|---|---|
| Keypoint localization (PCK) | on the held-out split | Section 6 | |
| API response time | 450\text{,}\mathrm{ms}$$ | median, p95, production | Section 9 |
| Item | Approved value |
|---|---|
| Approval number | P01-202512-01-047 |
| Review outcome | Approved, reviewed 29 December 2025 |
| Approval valid to | 28 December 2026 |
| Study period | From approval to 31 December 2026 |
| Study type | Human-subject research, survey research |
| Study form | Single site |
Appendix figures & tables2 assets
Supplementary material from the paper’s appendix.
Appendix
3D Avatar Generation
3D avatar generation creates realistic, controllable digital humans from images, video, text, or other inputs.
See all 90 papers