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
- In tmux, source:
source /opt/ros/jazzy/setup.bashsource ~/ros2_ws/install/setup.bash
- Stop
mole_pid_joint_controller. - Set engine RPM separately.
- Preposition manually with direct current pulses.
- 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.25and+0.17 .. +0.25J_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 sfor 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.csvsegments.csvplots.pdf
References
- Repo note:
/home/lorenzo/ros2_ws/src/moleworks_ros/low_level/mole_sysid/OPEN_LOOP_LUT_TUNING.md