open-loop-lut-recollection

star 1

Recollect bounded-joint open-loop current LUT data on the robot machine using one bag per amplitude, asymmetric start poses, dense low-speed knee filling, and immediate per-point analysis. Use when recollecting or repairing `J_TELE` / `J_EE_PITCH` LUT points or when `mole_sysid_tune_lut` rejects edge amplitudes.

Idate96 By Idate96 schedule Updated 3/18/2026

name: open-loop-lut-recollection description: Recollect bounded-joint open-loop current LUT data on the robot machine using one bag per amplitude, asymmetric start poses, dense low-speed knee filling, and immediate per-point analysis. Use when recollecting or repairing J_TELE / J_EE_PITCH LUT points or when mole_sysid_tune_lut rejects edge amplitudes.

Open-Loop LUT Recollection

Overview

Use this for robot-side MODE_CURRENT LUT recollection on bounded joints.

Default rules:

  • one bag per amplitude,
  • stop mole_pid_joint_controller,
  • positive current starts near the lower joint limit,
  • negative current starts near the upper joint limit,
  • dense extra points near breakaway,
  • exclude edge amplitudes that cannot produce a clean steady window.

Quick Start

  1. In tmux, source:
    • source /opt/ros/jazzy/setup.bash
    • source ~/ros2_ws/install/setup.bash
  2. Stop mole_pid_joint_controller.
  3. Set engine RPM separately.
  4. Preposition manually with direct current pulses.
  5. Run one amplitude:
/home/lorenzo/.codex/skills/open-loop-lut-recollection/scripts/run_open_loop_lut_step.sh \
  J_TELE pos 0.25 4.0 1.0 1.0

Collection Rules

Bounded-joint start rule

  • positive current: start near the lower limit
  • negative current: start near the upper limit

Do not start directly on the hard stop. Back off slightly first.

Dense low-speed rule

If there is a jump from "no motion" to "moving", fill the gap with extra points.

Examples:

  • J_TELE: fill around -0.20 .. -0.25 and +0.17 .. +0.25
  • J_EE_PITCH: fill around +/-0.10 .. +/-0.20

Plateau rule

If analysis fails with no valid steady segment:

  • repeat once from the correct start side,
  • try a longer plateau before increasing current,
  • use 4.0 s for higher-current bounded-joint points by default.

Edge-point rule

Drop amplitudes that cannot produce a clean steady window away from joint stops.

Symptoms:

  • large current but near-zero median velocity,
  • strong non-monotonic jump relative to neighbors,
  • repeated recollection still collapses near zero.

Wrapper

The wrapper records one MCAP bag, runs the current step, stops recording cleanly, and runs mole_sysid_tune_lut.

/home/lorenzo/.codex/skills/open-loop-lut-recollection/scripts/run_open_loop_lut_step.sh \
  <joint> <pos|neg> <abs_current> <step_phase_s> [settle_s] [steady_window_s]

Defaults:

  • bag root: /home/lorenzo/rosbags_from_diego_20260304
  • baseline: 1.0 s
  • final hold: 1.0 s
  • no return leg
  • --max-abs-current 1.0
  • fastwrite MCAP

Outputs

Per amplitude:

  • bag: <bag_root>/<tag>
  • analysis: <bag_root>/analysis_<tag>_lut

Read:

  • lut_points.csv
  • segments.csv
  • plots.pdf

References

  • Repo note:
    • /home/lorenzo/ros2_ws/src/moleworks_ros/low_level/mole_sysid/OPEN_LOOP_LUT_TUNING.md
Install via CLI
npx skills add https://github.com/Idate96/codex_skills --skill open-loop-lut-recollection
Repository Details
star Stars 1
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator