INDRBT / ENGINEERING

INDRBT / Reading room

Final theory review

Digital engineering model. Payload and repeatability are design targets. All ordinary guide reading, figures and PDFs work here. Links marked Source file lead to the public engineering repository.
On this page

Retained digital evidence · results/validation/final_theory_review.json · SHA-256 f6533feb7af9757b5961e97e6dbeb07008bf65b3988648e95149e950cfcfd367

This readable record comes from the engineering project. Its assumptions, sampling and rule scope remain part of the result.

{
  "status": "PASS",
  "scope": "Independent digital engineering theory/evidence review; no physical qualification or exhaustive continuous-motion certificate",
  "checks": {
    "units_and_parameters": {
      "status": "PASS",
      "scope": "Current authoritative SI configuration and degree-to-radian conversion"
    },
    "kinematics": {
      "status": "PASS",
      "seed": 202610051,
      "independent_fk_and_perturbed_ik_trials": 40,
      "max_fk_position_discrepancy_m": 3.4219371797089426e-16,
      "max_fk_rotation_element_discrepancy": 5.551115123125783e-16,
      "max_ik_position_error_m": 1.6460396263267862e-11,
      "max_ik_orientation_error_rad": 3.2680671661697834e-12,
      "max_jacobian_finite_difference_discrepancy": 2.828198786275493e-10,
      "shoulder_reach_m": 0.7900000000000001,
      "vertical_tcp_height_m": 0.9800000000000002,
      "outside_radial_bound_rejected": true,
      "scope": "Necessary radial bound, bounded local IK and geometric world Jacobian; no exhaustive reachability or collision proof"
    },
    "workspace": {
      "status": "PASS",
      "saved_samples_rechecked": 6000,
      "scope": "Stored sample envelope, hull, above-floor count and dimensionless singularity threshold; no reachable-volume certificate"
    },
    "recorded_task": {
      "status": "PASS",
      "fk_samples_recomputed": 1041,
      "duration_s": 9.243979567042027,
      "path_length_m": 1.323599790764895,
      "scope": "Stored FK/path/limits/events; finite-difference MOVE L limits remain sampled"
    },
    "quintic_analytic_limits": {
      "status": "PASS",
      "duration_s": 0.8782600579769633,
      "max_exact_speed_fraction": 0.5693074567819126,
      "max_exact_acceleration_fraction": 0.9980029960049941
    },
    "gravity_and_structure": {
      "status": "PASS",
      "gravity_gradient_trials": 12,
      "max_gravity_gradient_discrepancy_Nm": 7.105427357601002e-09,
      "gravity_bound_samples": 40,
      "independent_point_mass_inertia_bound_kg_m2": [
        4.490834687500001,
        4.490834687500001,
        1.3017946875000008,
        0.09401906250000004,
        0.09401906250000004,
        0.0
      ],
      "equivalent_sizing_inertia_kg_m2": [
        4.490834687500001,
        4.490834687500001,
        1.3017946875000008,
        0.09401906250000004,
        0.09401906250000004,
        0.03
      ],
      "sizing_inertia_correction": "Use max(educational control inertia, all-angle point-COM inertia bound), avoiding inertia below the same assumed load model; complete coupled dynamics remain excluded",
      "unloaded_finger_yield_ratio": "N/A (zero root stress), represented by JSON null",
      "serial_tcp_deflection_mm": 0.10407510103105926,
      "independent_virtual_work_deflection_mm": 0.10407510103105932,
      "forearm_rotation_contribution_mm": 0.015523199087904484,
      "correction": "Included forearm tip slope multiplied by rigid wrist/tool reach; earlier total omitted that term",
      "scope": "Extended-pose ideal beam/load models with assumed COMs and materials; no complete CAD stiffness, physical repeatability or load rating"
    },
    "gripper_work_and_friction": {
      "status": "PASS",
      "opening_m": 0.09,
      "travel_per_jaw_m": 0.045,
      "full_stroke_screw_revolutions": 11.25,
      "target_total_normal_force_N": 200.0,
      "required_motor_torque_Nm": 0.3637827270671894,
      "ideal_force_at_assumed_motor_torque_N": 247.40042147019622,
      "friction_limited_payload_kg_with_safety_factor": 5.0985810648896415,
      "model_evidence_class": "CALCULATED from assumed screw efficiency and friction; no contact simulation",
      "scope": "Both-jaw work balance and static ideal friction capacity; no contact/acceleration or motor validation"
    },
    "pid_model": {
      "status": "PASS",
      "unsaturated_linear_routh_hurwitz_condition": true,
      "default_discrete_unsaturated_state_spectral_radii": [
        0.9998093683413861,
        0.9998234863734055,
        0.9998310499283998,
        0.9998310499283997,
        0.999796961204562,
        0.999831279555964
      ],
      "first_feedback_command_agrees": true,
      "coarse_dt_s": 0.002,
      "fine_dt_s": 0.001,
      "max_step_position_difference_on_time_refinement_rad": 0.0003822071823264238,
      "scope": "Independent inertia/damping plant, conditional antiwindup and semi-implicit Euler; two-step-size comparison is a sensitivity check, not an error-bound proof"
    },
    "five_research_sweeps": {
      "status": "PASS",
      "RQ1_independent_FK_samples": 11000,
      "RQ2_payload_points": 7,
      "RQ3_durations": 3,
      "RQ4_repeated_controller_cases": 3,
      "RQ5_finger_lengths": 7,
      "scope": "Rechecked stored data with independent FK, lever/beam relations and replayed controller cases; numerical sensitivity, no physical experiments"
    }
  },
  "source_and_evidence_sha256": {
    "config/robot.yaml": "fde183861589ceaa492879da6e6114c80fdd659dcff6adcf46fc734b3a50934f",
    "src/robotarm/config.py": "0ef8974921d8cdfb4fbd822c5cd0d4002496cf0d5e3d136c848b75733ee3ae51",
    "src/robotarm/kinematics/model.py": "6a8d563ef7230e96ed517df15bd8ce59358417b1bbfe5653f7fdefff49e3e1f3",
    "src/robotarm/planning/trajectories.py": "986cd32bf077d8deba937a2cbbc77f266da6044c9a84b1e53d278e8e6d64642c",
    "src/robotarm/control/pid.py": "e379778f8ca9161877d42fb637baf1b4b26de0fb98118ef15de53c917178fa6c",
    "src/robotarm/gripper/model.py": "4152eb1ea321ec2a6ce6a8cca6941ec8c32afceecfcba61a1f15b0164409b160",
    "analysis/joint_torque_analysis.py": "8ccad6e712becb109c60d3729b73e4fdc1854cf54ea1f1982937704a3dcb21fa",
    "analysis/structural_analysis.py": "d276cbad4885a10c1850a1f3b2bbf646f40e3425c2b53835ac2c7dfc390779f8",
    "analysis/research_experiments.py": "cc19bd4668ee7467037ae61d28e7e977e894f6a9d8c15188f3d443f408db2c93",
    "tests/test_mechanical.py": "2fc6c83978b9940772180b4d6056e9e4cb3eed4a71acc1950c88aefed1c162c7",
    "scripts/review_theory.py": "a9d653050edc926727931d32449e874e99ed09af42223b6899d4c3ca8788acdc",
    "results/mechanical/structural.json": "e154259f6e835f55347676ebec23f77bf524f8b53a704c831320f36e41e6382d",
    "results/research/experiments.json": "4713ee57cd533a569dfd001d36d3a6cd52b22f3b673a023c3051d39ba6d4208a"
  },
  "primary_formula_references": [
    "https://www.ocw.mit.edu/courses/6-152j-micro-nano-processing-technology-fall-2005/4e555db93fbd2b7473f14100fbaadcc8_lecture13.pdf",
    "https://www.thomsonlinear.com/downloads/screws/Lead_Screws_cten.pdf"
  ]
}