152 lines
4.9 KiB
Batchfile
152 lines
4.9 KiB
Batchfile
@echo off
|
|
setlocal EnableDelayedExpansion
|
|
REM run_pipeline_v8.bat
|
|
REM v8 pipeline: adds elbow angle estimation + camera z refinement
|
|
REM
|
|
REM Steps:
|
|
REM 1 ArUco detection (same as v4)
|
|
REM 2 Camera pose from board markers (same as v4)
|
|
REM 3a First bundle adjustment with board-calibrated cameras
|
|
REM 3b Elbow angle estimation (robust to z-error, uses relative marker vectors)
|
|
REM 4 Camera z refinement using FK-predicted Ellbow z
|
|
REM 5 Second bundle adjustment with z-corrected cameras -> v8/ subfolder
|
|
REM 6 Robot state estimation from v8 positions
|
|
REM
|
|
REM Usage: .\run_pipeline_v8.bat ..\data\simulation\Scene9
|
|
|
|
if "%1"=="" (
|
|
echo.
|
|
echo [INFO] Aufruf fehlt!
|
|
echo Beispiel: .\run_pipeline_v8.bat ..\data\simulation\Scene9
|
|
echo.
|
|
exit /b
|
|
)
|
|
|
|
set "IMAGES=%~1"
|
|
if "%IMAGES:~-1%"=="\" set "IMAGES=%IMAGES:~0,-1%"
|
|
if "%IMAGES:~-1%"=="/" set "IMAGES=%IMAGES:~0,-1%"
|
|
|
|
set ROBOT_JSON=..\data\robot\robot.json
|
|
set BASE_OUT_DIR=C:\Users\kech\SynologyDrive\2026-AppServer-AppRobot\appRobotRendering\data\evaluations
|
|
|
|
for %%I in ("%IMAGES%") do set "SCENE_NAME=%%~nxI"
|
|
|
|
set OUT_DIR=%BASE_OUT_DIR%\%SCENE_NAME%
|
|
set OUT_DIR_V8=%OUT_DIR%\v8
|
|
|
|
REM ── STEP 1: ArUco detection ────────────────────────────────────
|
|
echo.
|
|
echo [STEP 1] Detect ArUco markers from %IMAGES%
|
|
|
|
for %%F in ("%IMAGES%\*.png" "%IMAGES%\*.PNG" "%IMAGES%\*.jpg" "%IMAGES%\*.jpeg" "%IMAGES%\*.JPG" "%IMAGES%\*.JPEG") do (
|
|
set "NAME=%%~nF"
|
|
echo Bearbeite: !NAME!
|
|
for /f "tokens=2 delims=_" %%A in ("%%~nF") do (
|
|
set "CAMID=%%A"
|
|
python3 ../pipeline/1_detect_aruco_observations.py ^
|
|
-i "%%F" ^
|
|
-npz "%IMAGES%\render_a.npz" ^
|
|
-outDir %OUT_DIR% ^
|
|
-robot %ROBOT_JSON% ^
|
|
-cameraId !CAMID!
|
|
)
|
|
)
|
|
|
|
REM ── STEP 2: Camera pose from board markers ─────────────────────
|
|
echo.
|
|
echo [STEP 2] Estimate camera poses from board markers
|
|
|
|
for %%F in ("%OUT_DIR%\*_aruco_detection.json") do (
|
|
echo Bearbeite: %%F
|
|
python3 ../pipeline/2_estimate_camera_from_observations.py ^
|
|
-i "%%F" ^
|
|
-robot %ROBOT_JSON% ^
|
|
-outDir %OUT_DIR%
|
|
)
|
|
|
|
REM ── Collect file lists ─────────────────────────────────────────
|
|
set DET_ARGS=
|
|
set POSE_ARGS=
|
|
set POSE_ARGS_V8=
|
|
|
|
for %%F in ("%OUT_DIR%\*_aruco_detection.json") do (
|
|
set DET_ARGS=!DET_ARGS! -det "%%F"
|
|
)
|
|
for %%F in ("%OUT_DIR%\*_camera_pose.json") do (
|
|
set POSE_ARGS=!POSE_ARGS! -pose "%%F"
|
|
)
|
|
|
|
REM ── STEP 3a: First bundle adjustment (board cameras) ──────────
|
|
echo.
|
|
echo [STEP 3a] Initial bundle adjustment with board-calibrated cameras
|
|
|
|
python3 "..\pipeline\3_multiview_bundle_adjustment_v5_board_anchor_patch.py" ^
|
|
-robot "%ROBOT_JSON%" ^
|
|
-lambdaWeight 100.0 ^
|
|
!DET_ARGS! ^
|
|
!POSE_ARGS!
|
|
|
|
REM ── STEP 3b: Elbow angle (robust to z-error) ──────────────────
|
|
echo.
|
|
echo [STEP 3b-v8] Estimate elbow angle
|
|
|
|
python3 "..\pipeline\4b_revolute_angle.py" ^
|
|
--robot "%ROBOT_JSON%" ^
|
|
--aruco "%OUT_DIR%\aruco_positions_optimized.json" ^
|
|
--link Ellbow ^
|
|
--output "%OUT_DIR%\v8_ellbow_angle.json"
|
|
|
|
if errorlevel 1 (
|
|
echo [ERROR] Elbow angle estimation failed. Aborting v8 pipeline.
|
|
exit /b 1
|
|
)
|
|
|
|
REM ── STEP 4: Camera z refinement ───────────────────────────────
|
|
echo.
|
|
echo [STEP 4-v8] Refine camera z using FK prediction
|
|
|
|
for %%F in ("%OUT_DIR%\*_camera_pose.json") do (
|
|
set POSE_ARGS_V8=!POSE_ARGS_V8! -pose "%%F"
|
|
)
|
|
|
|
python3 "..\pipeline\5_camera_z_refine.py" ^
|
|
--angle "%OUT_DIR%\v8_ellbow_angle.json" ^
|
|
--robot "%ROBOT_JSON%" ^
|
|
--aruco "%OUT_DIR%\aruco_positions_optimized.json" ^
|
|
!POSE_ARGS_V8! ^
|
|
--outDir "%OUT_DIR%"
|
|
|
|
if errorlevel 1 (
|
|
echo [ERROR] Camera z refinement failed. Aborting v8 pipeline.
|
|
exit /b 1
|
|
)
|
|
|
|
REM ── STEP 5: Second bundle adjustment (z-corrected cameras) ────
|
|
echo.
|
|
echo [STEP 5-v8] Second bundle adjustment with z-corrected cameras
|
|
|
|
set POSE_ARGS_REFINED=
|
|
for %%F in ("%OUT_DIR%\*_camera_pose_v8.json") do (
|
|
set POSE_ARGS_REFINED=!POSE_ARGS_REFINED! -pose "%%F"
|
|
)
|
|
|
|
python3 "..\pipeline\3_multiview_bundle_adjustment_v5_board_anchor_patch.py" ^
|
|
-robot "%ROBOT_JSON%" ^
|
|
-lambdaWeight 100.0 ^
|
|
--outDir "%OUT_DIR_V8%" ^
|
|
!DET_ARGS! ^
|
|
!POSE_ARGS_REFINED!
|
|
|
|
REM ── STEP 6: Robot state estimation from v8 positions ──────────
|
|
echo.
|
|
echo [STEP 6-v8] Robot state estimation
|
|
|
|
python3 "..\pipeline\4_robotState_estimation_v6.py" ^
|
|
"%OUT_DIR_V8%\aruco_positions_optimized.json" ^
|
|
-robot "%ROBOT_JSON%" ^
|
|
-out "%OUT_DIR_V8%\robot_state_v8.json"
|
|
|
|
echo.
|
|
echo [DONE] v8 results in: %OUT_DIR_V8%
|
|
echo z-correction summary: %OUT_DIR%\v8_z_correction.json
|