Commit f4be977b authored by Andrey Filippov's avatar Andrey Filippov

CLAUDE: curt.pose_max_lma (lean inner cap, default 1) + one-line per-scene pose output

- pose_max_lma: inner LMA cap for the lean pose only (0 = legacy imp.max_LMA,
  which stays ~25 for flying-camera applications). 1 validated 07/13: static
  4x1 shape, dstored RMS 0.0350/0.0377/0.0213 == unlimited-inner run.
- Verbosity (Andrey): scene line now carries cyc=N and mb=(x, y); the separate
  'CuasPoseRT cycles:' trace and per-scene uniform-MB lines print only at
  curt.pose_lma_debug >= 1 (investigation closed; QC not-settled line stays).
Co-Authored-By: 's avatarClaude Fable 5 <noreply@anthropic.com>
parent 59f4182d
...@@ -559,6 +559,7 @@ public class CuasPoseRT { ...@@ -559,6 +559,7 @@ public class CuasPoseRT {
final double [][][] coord_motion_rslt, // out [3][][] final double [][][] coord_motion_rslt, // out [3][][]
final double [][][] corr_pd_out, // null or len-1: last-cycle PD correlations // By Claude on 07/04/2026 final double [][][] corr_pd_out, // null or len-1: last-cycle PD correlations // By Claude on 07/04/2026
final float [][] img_out, // null or len-1: last-cycle composite render // By Claude on 07/04/2026 final float [][] img_out, // null or len-1: last-cycle composite render // By Claude on 07/04/2026
final int [] ncyc_out, // null or [1]: outer cycles executed (for the one-line scene report) // By Claude on 07/13/2026
final int debugLevel) { final int debugLevel) {
final IntersceneLma intersceneLma = new IntersceneLma( final IntersceneLma intersceneLma = new IntersceneLma(
clt_parameters.ilp.ilma_thread_invariant, clt_parameters.ilp.ilma_thread_invariant,
...@@ -633,7 +634,10 @@ public class CuasPoseRT { ...@@ -633,7 +634,10 @@ public class CuasPoseRT {
clt_parameters.ilp.ilma_lambda_scale_bad, clt_parameters.ilp.ilma_lambda_scale_bad,
clt_parameters.ilp.ilma_lambda_max, clt_parameters.ilp.ilma_lambda_max,
clt_parameters.ilp.ilma_rms_diff, clt_parameters.ilp.ilma_rms_diff,
clt_parameters.imp.max_LMA, // lean-only inner cap (Andrey 07/13: 1 = validated static shape; the shared
// imp.max_LMA stays high for varying-scene applications). By Claude on 07/13/2026.
(clt_parameters.curt.pose_max_lma > 0) ?
clt_parameters.curt.pose_max_lma : clt_parameters.imp.max_LMA,
false, // last_run false, // last_run
lma_debug); // curt.pose_lma_debug boost (inner solver only) // By Claude on 07/12/2026 lma_debug); // curt.pose_lma_debug boost (inner solver only) // By Claude on 07/12/2026
if (lmaResult < 0) { if (lmaResult < 0) {
...@@ -663,12 +667,14 @@ public class CuasPoseRT { ...@@ -663,12 +667,14 @@ public class CuasPoseRT {
fixed_cycles+" fixed cycles: last ATR change "+last_diff_atr+ fixed_cycles+" fixed cycles: last ATR change "+last_diff_atr+
" >= exit_change_atr "+clt_parameters.imp.exit_change_atr); " >= exit_change_atr "+clt_parameters.imp.exit_change_atr);
} }
if (ncyc_out != null) ncyc_out[0] = ncyc; // for the one-line scene report // By Claude on 07/13/2026
// Per-cycle convergence trajectory (the "why does it take that many cycles" // Per-cycle convergence trajectory (the "why does it take that many cycles"
// investigation, Andrey 07/12/2026): geometric decay = healthy damped iteration, // investigation, Andrey 07/12/2026): geometric decay = healthy damped iteration,
// a stall/plateau = something re-anchoring each cycle (pull term, lambda warm-up, // a stall/plateau = something re-anchoring each cycle (pull term, lambda warm-up,
// prediction). One compact line per scene, both fixed and legacy modes. // prediction). One compact line per scene; gated by pose_lma_debug >= 1 after the
// By Claude on 07/12/2026. // 07/13 verbosity reduction (the investigation is closed - cyc= now rides the
if (debugLevel > -4) { // scene Done line). By Claude on 07/12/2026, gate 07/13.
if ((clt_parameters.curt.pose_lma_debug >= 1) && (debugLevel > -4)) {
final StringBuilder tsb = new StringBuilder(); final StringBuilder tsb = new StringBuilder();
for (int i = 0; i < ncyc; i++) tsb.append(String.format(" %.3g", cycle_datr[i])); for (int i = 0; i < ncyc; i++) tsb.append(String.format(" %.3g", cycle_datr[i]));
final StringBuilder isb = new StringBuilder(); // inner runLma iterations per cycle // By Claude on 07/12/2026 final StringBuilder isb = new StringBuilder(); // inner runLma iterations per cycle // By Claude on 07/12/2026
...@@ -1078,7 +1084,8 @@ public class CuasPoseRT { ...@@ -1078,7 +1084,8 @@ public class CuasPoseRT {
if (mb_vectors_scene == null) { if (mb_vectors_scene == null) {
System.out.println("CuasPoseRT: scene "+ts_name+ System.out.println("CuasPoseRT: scene "+ts_name+
" uniform MB degenerate - falling back to per-tile getMotionBlur"); " uniform MB degenerate - falling back to per-tile getMotionBlur");
} else if (debugLevel > -3) { } else if (clt_parameters.curt.pose_lma_debug >= 1) {
// verbosity reduction 07/13: mb=() now rides the scene Done line
System.out.println(String.format( System.out.println(String.format(
"CuasPoseRT: scene %s uniform MB vector = (%.4f, %.4f) px/s", "CuasPoseRT: scene %s uniform MB vector = (%.4f, %.4f) px/s",
ts_name, mb_vectors_scene[0][0], mb_vectors_scene[1][0])); ts_name, mb_vectors_scene[0][0], mb_vectors_scene[1][0]));
...@@ -1098,6 +1105,7 @@ public class CuasPoseRT { ...@@ -1098,6 +1105,7 @@ public class CuasPoseRT {
} }
} }
fail_reason[0] = 0; fail_reason[0] = 0;
final int [] ncyc_scene = {0}; // outer cycles executed (lean path; 0 = other paths) // By Claude on 07/13/2026
final double [][][] coord_motion_rslt = new double [3][][]; // [centers, vector_XYS, eigen] of the last LMA cycle final double [][][] coord_motion_rslt = new double [3][][]; // [centers, vector_XYS, eigen] of the last LMA cycle
if (corr_pd_holder != null) corr_pd_holder[0] = null; // no stale slices on failure // By Claude on 07/04/2026 if (corr_pd_holder != null) corr_pd_holder[0] = null; // no stale slices on failure // By Claude on 07/04/2026
if (img_holder != null) img_holder[0] = null; // By Claude on 07/04/2026 if (img_holder != null) img_holder[0] = null; // By Claude on 07/04/2026
...@@ -1154,6 +1162,7 @@ public class CuasPoseRT { ...@@ -1154,6 +1162,7 @@ public class CuasPoseRT {
coord_motion_rslt, // double [][][] coord_motion_rslt (out), coord_motion_rslt, // double [][][] coord_motion_rslt (out),
corr_pd_holder, // double [][][] corr_pd_out (last-cycle PD correlations) // By Claude on 07/04/2026 corr_pd_holder, // double [][][] corr_pd_out (last-cycle PD correlations) // By Claude on 07/04/2026
img_holder, // float [][] img_out (last-cycle composite render) // By Claude on 07/04/2026 img_holder, // float [][] img_out (last-cycle composite render) // By Claude on 07/04/2026
ncyc_scene, // int [] ncyc_out (outer cycles, for the one-line report) // By Claude on 07/13/2026
debugLevel - 2); // int debug_level debugLevel - 2); // int debug_level
if (pose == null) fail_reason[0] = 1; // measurement/LMA if (pose == null) fail_reason[0] = 1; // measurement/LMA
} else { } else {
...@@ -1271,6 +1280,12 @@ public class CuasPoseRT { ...@@ -1271,6 +1280,12 @@ public class CuasPoseRT {
sl.append("CuasPoseRT scene "+nscene+" (of "+quadCLTs.length+") "+ts_name+ sl.append("CuasPoseRT scene "+nscene+" (of "+quadCLTs.length+") "+ts_name+
(ok ? " Done." : " FAILED (coasted).")+ (ok ? " Done." : " FAILED (coasted).")+
String.format(" RMS=%.4f, weight=%.1f, num=%.0f", lma_rms[0], lma_rms[2], lma_rms[3])); String.format(" RMS=%.4f, weight=%.1f, num=%.0f", lma_rms[0], lma_rms[2], lma_rms[3]));
// one-line verbosity (Andrey 07/13): cycles + uniform MB vector fold into the
// scene line (the separate trace/MB lines are now pose_lma_debug >= 1 only)
if (ncyc_scene[0] > 0) sl.append(", cyc="+ncyc_scene[0]);
if ((mb_vectors_scene != null) && clt_parameters.curt.pose_mb_uniform) {
sl.append(String.format(", mb=(%.1f, %.1f)", mb_vectors_scene[0][0], mb_vectors_scene[1][0]));
}
if (st != null) { if (st != null) {
sl.append(" dstored[pix]=["); sl.append(" dstored[pix]=[");
for (int j = 0; j < 3; j++) { for (int j = 0; j < 3; j++) {
......
...@@ -31,7 +31,8 @@ public class CuasRtParameters { ...@@ -31,7 +31,8 @@ public class CuasRtParameters {
public boolean pose_mb_uniform = true; // lean v2 (Andrey's ruling 07/12/2026): ONE uniform motion-blur vector per scene, shared by ALL tiles - under constant-rpm rotation the image flow is uniform across the frame up to the roll flow component (roll rate << azimuth/tilt) and the wobble contribution (second-degree), both ignored. Same Jacobian-times-rates product as the per-tile OpticalFlow.getMotionBlur (identical sign/scale conventions), evaluated at ONE representative point (frame center, mean reference disparity) and broadcast; rates source unchanged (finite differences of predicted poses). OFF = legacy per-tile getMotionBlur (the A/B knob). // By Claude on 07/12/2026 public boolean pose_mb_uniform = true; // lean v2 (Andrey's ruling 07/12/2026): ONE uniform motion-blur vector per scene, shared by ALL tiles - under constant-rpm rotation the image flow is uniform across the frame up to the roll flow component (roll rate << azimuth/tilt) and the wobble contribution (second-degree), both ignored. Same Jacobian-times-rates product as the per-tile OpticalFlow.getMotionBlur (identical sign/scale conventions), evaluated at ONE representative point (frame center, mean reference disparity) and broadcast; rates source unchanged (finite differences of predicted poses). OFF = legacy per-tile getMotionBlur (the A/B knob). // By Claude on 07/12/2026
public int pose_cycles = 3; // lean v2 (Andrey's ruling 07/12/2026): run EXACTLY this many LMA measure<->solve cycles per scene, no convergence-based early exit - CUAS scenes are near-identical perturbations of the same view, so the needed count is a constant of the setup (and a fixed count gives the GPU pipeline a static launch shape). The convergence delta is still computed: a QC line flags scenes whose last ATR change misses the legacy imp.exit_change_atr threshold (diagnostic only). 0 = legacy convergence exit (imp.max_cycles cap + exit_change thresholds - for varying-scene/flying-camera applications). // By Claude on 07/12/2026 public int pose_cycles = 3; // lean v2 (Andrey's ruling 07/12/2026): run EXACTLY this many LMA measure<->solve cycles per scene, no convergence-based early exit - CUAS scenes are near-identical perturbations of the same view, so the needed count is a constant of the setup (and a fixed count gives the GPU pipeline a static launch shape). The convergence delta is still computed: a QC line flags scenes whose last ATR change misses the legacy imp.exit_change_atr threshold (diagnostic only). 0 = legacy convergence exit (imp.max_cycles cap + exit_change thresholds - for varying-scene/flying-camera applications). // By Claude on 07/12/2026
public double pose_lambda = 0.001; // lean v2 (Andrey 07/12/2026): INITIAL LMA lambda for the inner pose solve, replacing ilp.ilma_lambda (0.1) which restarts every outer measure<->solve cycle. 0.1 + the 0.1%-improvement inner exit = under-relaxation: the inner loop quits while still lambda-limited, the outer cycle re-measures and lambda resets - hence the observed ~0.8/cycle outer decay needing 6-13 cycles. The 3-angle/150-tile problem is heavily overdetermined and near-linear: a near-zero lambda makes the first inner steps ~Gauss-Newton so each outer cycle closes the measurable gap. 0 = legacy (use ilp.ilma_lambda). // By Claude on 07/12/2026 public double pose_lambda = 0.001; // lean v2 (Andrey 07/12/2026): INITIAL LMA lambda for the inner pose solve, replacing ilp.ilma_lambda (0.1) which restarts every outer measure<->solve cycle. 0.1 + the 0.1%-improvement inner exit = under-relaxation: the inner loop quits while still lambda-limited, the outer cycle re-measures and lambda resets - hence the observed ~0.8/cycle outer decay needing 6-13 cycles. The 3-angle/150-tile problem is heavily overdetermined and near-linear: a near-zero lambda makes the first inner steps ~Gauss-Newton so each outer cycle closes the measurable gap. 0 = legacy (use ilp.ilma_lambda). // By Claude on 07/12/2026
public int pose_lma_debug = 0; // inner-LMA debug level, passed to the inner runLma (max with the run's own debugLevel): 0 = quiet (default); 2 = one line PER INNER STEP ("LMA step N: {good,done} full RMS= ... pure RMS= ... + lambda=...") - the convergence trajectory INSIDE each outer cycle; 3-4 = progressively deeper solver dumps (parameter vectors, matrices). VERBOSE: 2 already prints ~5-25 lines per outer cycle x 6-13 cycles x 497 scenes - use for short investigation runs, not production. // By Claude on 07/12/2026 public int pose_max_lma = 1; // lean pose: INNER LMA iteration cap, replacing the shared imp.max_LMA (which stays at ~25 for flying-camera/varying-scene applications). VALIDATED 07/13: with the near-GN start (pose_lambda) the first inner step reaches the model optimum - step 2 only confirms <0.1% - so 1 halves the solver work and makes the shape fully static (pose_cycles x 1); dstored RMS identical to unlimited (0.0350/0.0377/0.0213). 0 = legacy (use imp.max_LMA). // By Claude on 07/13/2026, Andrey's design
public int pose_lma_debug = 0; // inner-LMA debug level, passed to the inner runLma (max with the run's own debugLevel): 0 = quiet (default; ALSO gates the per-scene "CuasPoseRT cycles:" trace line - >=1 to print it); 2 = one line PER INNER STEP ("LMA step N: {good,done} full RMS= ... pure RMS= ... + lambda=...") - the convergence trajectory INSIDE each outer cycle; 3-4 = progressively deeper solver dumps (parameter vectors, matrices). VERBOSE at >=2 - use for short investigation runs, not production. // By Claude on 07/12/2026, trace gate 07/13
public boolean rend_test = false; // RT full-render product (CuasRender.testRenderSequence): per scene raw /jp4/ -> conditionSceneToGpu -> virtual-grid render at BORROWED stored pose+ERS rates -> -CUAS-RT-RENDER hyperstack [s00..s15, merged][scenes], comparable to -CUAS-INDIVIDUAL/MERGED-CUAS-DBG. NON-exclusive: runs AFTER the pose stage when both are ON (the pose stage is part of the RT cycle - Andrey 07/06/2026). // By Claude on 07/05/2026 public boolean rend_test = false; // RT full-render product (CuasRender.testRenderSequence): per scene raw /jp4/ -> conditionSceneToGpu -> virtual-grid render at BORROWED stored pose+ERS rates -> -CUAS-RT-RENDER hyperstack [s00..s15, merged][scenes], comparable to -CUAS-INDIVIDUAL/MERGED-CUAS-DBG. NON-exclusive: runs AFTER the pose stage when both are ON (the pose stage is part of the RT cycle - Andrey 07/06/2026). // By Claude on 07/05/2026
public boolean log_test = false; // LoG A/B with the RT render (CuasRender): also save -CUAS-RT-RENDER-LOG-ORACLE (product convolved with the EXISTING pre-DNN pixel LoG, LINEAR alpha=1) and -CUAS-RT-RENDER-LOG-FOLDED (same render, LoG folded into the GPU aberration kernels via CuasLogFold - no pixel convolution; originals restored). The aberration+LoG kernel-fold validation (RT-seed step 1b). // By Claude on 07/06/2026 public boolean log_test = false; // LoG A/B with the RT render (CuasRender): also save -CUAS-RT-RENDER-LOG-ORACLE (product convolved with the EXISTING pre-DNN pixel LoG, LINEAR alpha=1) and -CUAS-RT-RENDER-LOG-FOLDED (same render, LoG folded into the GPU aberration kernels via CuasLogFold - no pixel convolution; originals restored). The aberration+LoG kernel-fold validation (RT-seed step 1b). // By Claude on 07/06/2026
public boolean log_ident = false; // LoG ISOLATION test with the RT render (CuasRender): render with IDENTITY kernels (-CUAS-RT-RENDER-ID, aberrations skipped), pixel-LoG it (-ID-LOG-ORACLE), and render with PURE-LoG kernels (-LOG-ONLY). If -LOG-ONLY vs -ID-LOG-ORACLE residual persists, the fold/L0 is wrong; if it collapses to the wrap floor, the aberration-kernel interaction was responsible (Andrey 07/06/2026). // By Claude on 07/06/2026 public boolean log_ident = false; // LoG ISOLATION test with the RT render (CuasRender): render with IDENTITY kernels (-CUAS-RT-RENDER-ID, aberrations skipped), pixel-LoG it (-ID-LOG-ORACLE), and render with PURE-LoG kernels (-LOG-ONLY). If -LOG-ONLY vs -ID-LOG-ORACLE residual persists, the fold/L0 is wrong; if it collapses to the wrap floor, the aberration-kernel interaction was responsible (Andrey 07/06/2026). // By Claude on 07/06/2026
...@@ -142,8 +143,10 @@ public class CuasRtParameters { ...@@ -142,8 +143,10 @@ public class CuasRtParameters {
"Lean v2 (CUAS): run EXACTLY this many measure<->solve cycles per scene (near-identical scenes need a constant count; fixed count = static GPU launch shape). A QC line flags scenes missing the legacy exit threshold. 0 = legacy convergence-based exit (imp.max_cycles + exit_change)."); "Lean v2 (CUAS): run EXACTLY this many measure<->solve cycles per scene (near-identical scenes need a constant count; fixed count = static GPU launch shape). A QC line flags scenes missing the legacy exit threshold. 0 = legacy convergence-based exit (imp.max_cycles + exit_change).");
gd.addNumericField("Pose lean initial LMA lambda", this.pose_lambda, 6,8,"", // By Claude on 07/12/2026 gd.addNumericField("Pose lean initial LMA lambda", this.pose_lambda, 6,8,"", // By Claude on 07/12/2026
"Initial lambda of the INNER pose LMA (restarts every outer cycle). The legacy 0.1 start + 0.1%-improvement inner exit under-relaxes the outer loop (~0.8/cycle decay, 6-13 cycles). Near-zero = ~Gauss-Newton first steps for the near-linear 3-angle problem. 0 = legacy ilp.ilma_lambda."); "Initial lambda of the INNER pose LMA (restarts every outer cycle). The legacy 0.1 start + 0.1%-improvement inner exit under-relaxes the outer loop (~0.8/cycle decay, 6-13 cycles). Near-zero = ~Gauss-Newton first steps for the near-linear 3-angle problem. 0 = legacy ilp.ilma_lambda.");
gd.addNumericField("Pose lean max inner LMA iterations", this.pose_max_lma, 0,3,"", // By Claude on 07/13/2026
"Inner LMA cap for the LEAN pose only (imp 'Max LMA iterations' stays for other applications). 1 = validated CUAS static shape (near-GN first step reaches the optimum; the second step only confirms). 0 = legacy imp.max_LMA.");
gd.addNumericField("Pose lean inner-LMA debug level", this.pose_lma_debug, 0,3,"", // By Claude on 07/12/2026 gd.addNumericField("Pose lean inner-LMA debug level", this.pose_lma_debug, 0,3,"", // By Claude on 07/12/2026
"0 = quiet; 2 = one line per INNER LMA step (good/done flags, full/pure RMS, lambda) - the trajectory inside each outer cycle; 3-4 = deeper solver dumps. VERBOSE - for short investigation runs."); "0 = quiet (also hides the per-scene 'CuasPoseRT cycles:' trace; >=1 shows it); 2 = one line per INNER LMA step (good/done flags, full/pure RMS, lambda); 3-4 = deeper solver dumps. VERBOSE at >=2 - for short investigation runs.");
gd.addCheckbox ("CUAS RT render (full product)", this.rend_test, // By Claude on 07/05/2026 gd.addCheckbox ("CUAS RT render (full product)", this.rend_test, // By Claude on 07/05/2026
"Full RT-chain render: raw jp4 -> conditioning -> virtual-grid render at borrowed stored poses/ERS; saves -CUAS-RT-RENDER [s00..s15+merged][scenes], comparable to the -CUAS-*-DBG oracle products. NON-exclusive: runs AFTER the pose stage when both are ON."); "Full RT-chain render: raw jp4 -> conditioning -> virtual-grid render at borrowed stored poses/ERS; saves -CUAS-RT-RENDER [s00..s15+merged][scenes], comparable to the -CUAS-*-DBG oracle products. NON-exclusive: runs AFTER the pose stage when both are ON.");
gd.addCheckbox ("RT render LoG A/B (folded kernels)", this.log_test, // By Claude on 07/06/2026 gd.addCheckbox ("RT render LoG A/B (folded kernels)", this.log_test, // By Claude on 07/06/2026
...@@ -325,6 +328,7 @@ public class CuasRtParameters { ...@@ -325,6 +328,7 @@ public class CuasRtParameters {
this.pose_mb_uniform = gd.getNextBoolean(); // By Claude on 07/12/2026 this.pose_mb_uniform = gd.getNextBoolean(); // By Claude on 07/12/2026
this.pose_cycles = (int) gd.getNextNumber(); // By Claude on 07/12/2026 this.pose_cycles = (int) gd.getNextNumber(); // By Claude on 07/12/2026
this.pose_lambda = gd.getNextNumber(); // By Claude on 07/12/2026 this.pose_lambda = gd.getNextNumber(); // By Claude on 07/12/2026
this.pose_max_lma = (int) gd.getNextNumber(); // By Claude on 07/13/2026
this.pose_lma_debug =(int) gd.getNextNumber(); // By Claude on 07/12/2026 this.pose_lma_debug =(int) gd.getNextNumber(); // By Claude on 07/12/2026
this.rend_test = gd.getNextBoolean(); // By Claude on 07/05/2026 this.rend_test = gd.getNextBoolean(); // By Claude on 07/05/2026
this.log_test = gd.getNextBoolean(); // By Claude on 07/06/2026 this.log_test = gd.getNextBoolean(); // By Claude on 07/06/2026
...@@ -427,6 +431,7 @@ public class CuasRtParameters { ...@@ -427,6 +431,7 @@ public class CuasRtParameters {
properties.setProperty(prefix+"pose_mb_uniform", this.pose_mb_uniform+"");// boolean // By Claude on 07/12/2026 properties.setProperty(prefix+"pose_mb_uniform", this.pose_mb_uniform+"");// boolean // By Claude on 07/12/2026
properties.setProperty(prefix+"pose_cycles", this.pose_cycles+""); // int // By Claude on 07/12/2026 properties.setProperty(prefix+"pose_cycles", this.pose_cycles+""); // int // By Claude on 07/12/2026
properties.setProperty(prefix+"pose_lambda", this.pose_lambda+""); // double // By Claude on 07/12/2026 properties.setProperty(prefix+"pose_lambda", this.pose_lambda+""); // double // By Claude on 07/12/2026
properties.setProperty(prefix+"pose_max_lma", this.pose_max_lma+""); // int // By Claude on 07/13/2026
properties.setProperty(prefix+"pose_lma_debug", this.pose_lma_debug+""); // int // By Claude on 07/12/2026 properties.setProperty(prefix+"pose_lma_debug", this.pose_lma_debug+""); // int // By Claude on 07/12/2026
properties.setProperty(prefix+"rend_test", this.rend_test+""); // boolean // By Claude on 07/05/2026 properties.setProperty(prefix+"rend_test", this.rend_test+""); // boolean // By Claude on 07/05/2026
properties.setProperty(prefix+"log_test", this.log_test+""); // boolean // By Claude on 07/06/2026 properties.setProperty(prefix+"log_test", this.log_test+""); // boolean // By Claude on 07/06/2026
...@@ -529,6 +534,7 @@ public class CuasRtParameters { ...@@ -529,6 +534,7 @@ public class CuasRtParameters {
if (properties.getProperty(prefix+"pose_mb_uniform")!=null) this.pose_mb_uniform=Boolean.parseBoolean(properties.getProperty(prefix+"pose_mb_uniform")); // By Claude on 07/12/2026 if (properties.getProperty(prefix+"pose_mb_uniform")!=null) this.pose_mb_uniform=Boolean.parseBoolean(properties.getProperty(prefix+"pose_mb_uniform")); // By Claude on 07/12/2026
if (properties.getProperty(prefix+"pose_cycles")!=null) this.pose_cycles=Integer.parseInt(properties.getProperty(prefix+"pose_cycles")); // By Claude on 07/12/2026 if (properties.getProperty(prefix+"pose_cycles")!=null) this.pose_cycles=Integer.parseInt(properties.getProperty(prefix+"pose_cycles")); // By Claude on 07/12/2026
if (properties.getProperty(prefix+"pose_lambda")!=null) this.pose_lambda=Double.parseDouble(properties.getProperty(prefix+"pose_lambda")); // By Claude on 07/12/2026 if (properties.getProperty(prefix+"pose_lambda")!=null) this.pose_lambda=Double.parseDouble(properties.getProperty(prefix+"pose_lambda")); // By Claude on 07/12/2026
if (properties.getProperty(prefix+"pose_max_lma")!=null) this.pose_max_lma=Integer.parseInt(properties.getProperty(prefix+"pose_max_lma")); // By Claude on 07/13/2026
if (properties.getProperty(prefix+"pose_lma_debug")!=null) this.pose_lma_debug=Integer.parseInt(properties.getProperty(prefix+"pose_lma_debug")); // By Claude on 07/12/2026 if (properties.getProperty(prefix+"pose_lma_debug")!=null) this.pose_lma_debug=Integer.parseInt(properties.getProperty(prefix+"pose_lma_debug")); // By Claude on 07/12/2026
if (properties.getProperty(prefix+"rend_test")!=null) this.rend_test=Boolean.parseBoolean(properties.getProperty(prefix+"rend_test")); // By Claude on 07/05/2026 if (properties.getProperty(prefix+"rend_test")!=null) this.rend_test=Boolean.parseBoolean(properties.getProperty(prefix+"rend_test")); // By Claude on 07/05/2026
if (properties.getProperty(prefix+"log_test")!=null) this.log_test=Boolean.parseBoolean(properties.getProperty(prefix+"log_test")); // By Claude on 07/06/2026 if (properties.getProperty(prefix+"log_test")!=null) this.log_test=Boolean.parseBoolean(properties.getProperty(prefix+"log_test")); // By Claude on 07/06/2026
...@@ -634,6 +640,7 @@ public class CuasRtParameters { ...@@ -634,6 +640,7 @@ public class CuasRtParameters {
cp.pose_mb_uniform = this.pose_mb_uniform; // By Claude on 07/12/2026 cp.pose_mb_uniform = this.pose_mb_uniform; // By Claude on 07/12/2026
cp.pose_cycles = this.pose_cycles; // By Claude on 07/12/2026 cp.pose_cycles = this.pose_cycles; // By Claude on 07/12/2026
cp.pose_lambda = this.pose_lambda; // By Claude on 07/12/2026 cp.pose_lambda = this.pose_lambda; // By Claude on 07/12/2026
cp.pose_max_lma = this.pose_max_lma; // By Claude on 07/13/2026
cp.pose_lma_debug = this.pose_lma_debug; // By Claude on 07/12/2026 cp.pose_lma_debug = this.pose_lma_debug; // By Claude on 07/12/2026
cp.rend_test = this.rend_test; // By Claude on 07/05/2026 cp.rend_test = this.rend_test; // By Claude on 07/05/2026
cp.log_test = this.log_test; // By Claude on 07/06/2026 cp.log_test = this.log_test; // By Claude on 07/06/2026
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment