- 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
56 lines
2.1 KiB
Lua
56 lines
2.1 KiB
Lua
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")
|