Files
VSAG_AUTO_AIM_PRACTICE_27RM/xmake.lua
T
mzxwww 19ac43da6f Add pose_test tool and harden solvePose; expose camera controls
- pose_test: verify the geometry chain (4 corners -> distance/yaw/pitch)
  before any detector exists; modes: camera + mouse clicks, --image,
  --corners (headless), --selftest (synthetic round-trip, no camera needed)
- solvePose: undistort corners first, then solvePnPGeneric(IPPE) and pick
  the best candidate; reject solutions behind the camera (z<=0) or with
  reprojection error > 8px
  - fixes IPPE + distortion + in-plane rotation returning garbage
  - 4 coplanar points: cyclic/mirrored orderings give the same quad and
    the same pose (harmless); crossing orderings blow up reprojection
    and are rejected
- camera_set: implement setAeState/setExposureTime/setAnalogGain(+-Times)/
  setWbMode/setFrameSpeed; configs/camera_runtime.yaml drives them
- selftest passes all 6 synthetic cases; verified on 6 real photos
  (chessboard outer rect 180x120mm): distance 0.44-0.69m, reproj <2.5px
2026-09-16 21:08:03 +08:00

56 lines
2.1 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
add_rules("mode.debug", "mode.release")
set_policy("generator.compile_commands", true)
set_languages("c++17")
-- 公共依赖:OpenCV + MindVision 相机 SDK
local ROOT = os.scriptdir()
rule("rm_deps")
on_load(function (target)
target:add("includedirs", ROOT .. "/inc")
target:add("includedirs", "/usr/local/include/opencv4")
target:add("includedirs", "/home/mzxiang/MindVisionSDK/include")
target:add("linkdirs", "/usr/local/lib")
target:add("linkdirs", "/home/mzxiang/MindVisionSDK/lib/x64")
target:add("rpathdirs", "/home/mzxiang/MindVisionSDK/lib/x64")
target:add("links", "opencv_core", "opencv_imgproc", "opencv_highgui",
"opencv_imgcodecs", "opencv_videoio", "opencv_calib3d",
"MVSDK")
end)
rule_end()
-- 主程序(自瞄本体)
target("27RM")
add_rules("rm_deps")
set_kind("binary")
-- 各工具有自己的 main 函数,从主程序中排除
add_files("src/*.cpp")
remove_files("src/capture_calib.cpp")
remove_files("src/calibrate.cpp")
remove_files("src/pose_test.cpp")
-- 标定图采集工具
-- ./build/linux/x86_64/debug/capture_calib (MindVision 相机)
-- ./build/linux/x86_64/debug/capture_calib --usb 0 (USB 摄像头)
target("capture_calib")
add_rules("rm_deps")
set_kind("binary")
add_files("src/capture_calib.cpp", "src/camera_set.cpp")
-- 标定计算工具(读 calib_images/ 算出内参,存 camera_calib.yml)
target("calibrate")
add_rules("rm_deps")
set_kind("binary")
add_files("src/calibrate.cpp")
-- 几何链路验证工具(4 角点 → PnP → 距离/yaw/pitch)
-- ./build/linux/x86_64/debug/pose_test (相机 + 鼠标点角)
-- ./build/linux/x86_64/debug/pose_test --selftest (合成自检,无需相机)
-- ./build/linux/x86_64/debug/pose_test --image x.jpg --corners x1,y1 x2,y2 x3,y3 x4,y4
target("pose_test")
add_rules("rm_deps")
set_kind("binary")
add_files("src/pose_test.cpp", "src/camera_calib.cpp", "src/camera_set.cpp")