AprilTag
Visual Fiducial System
AprilTag jsou 2D černobílé kódy podobné QR-kodům. V SubT jsou použity pro definici globálního souřadného systému.
- https://april.eecs.umich.edu/software/apriltag
- https://github.com/AprilRobotics/apriltags
- http://wiki.ros.org/apriltag_ros (dříve apriltag2_ros)
AprilTag is a visual fiducial system, useful for a wide variety of tasks
including augmented reality, robotics, and camera calibration. Targets can be
created from an ordinary printer, and the AprilTag detection software computes
the precise 3D position, orientation, and identity of the tags relative to the
camera. The AprilTag library is implemented in C with no external dependencies.
It is designed to be easily included in other applications, as well as be
portable to embedded devices. Real-time performance can be achieved even on
cell-phone grade processors.
AprilTags are conceptually similar to QR Codes, in that they are a type of
two-dimensional bar code. However, they are designed to encode far smaller data
payloads (between 4 and 12 bits), allowing them to be detected more robustly
and from longer ranges. Further, they are designed for high localization
accuracy— you can compute the precise 3D position of the AprilTag with respect
to the camera.
SubT specification
The AprilTag targets are in the 16h5 family and are mounted onto a
rigid backing material. The outer white border dimensions are 12” x 12” and the
black boarder dimensions are 9” x 9”.
- "Safety Research" portal — ID 4, 5, 6, 7
- "Experimental" portal — ID 24, 25, 26, 27
pro referenci ještě staré STIX:
- "ARMY" portal — ID 4, 5, 6, 7
- "Miami" portal — ID 24, 25, 26, 27
Tags 16h5
ID=4 |
ZW 15/7
Jaké problémy byly při použití knihovny z pythonu? V nějakém emailu jsi to
zmiňoval (teď to nemůžu najít). Zdá se
https://github.com/AprilRobotics/apriltag#python že python je podporovaný
dost nativně.
No, je to "trošku" komplikované:
https://github.com/AprilRobotics/apriltag/issues/44#issuecomment-511406545
detection 0: id (16x 5)-24 , hamming 0, margin 167.760 detection 1: id (16x 5)-25 , hamming 0, margin 110.377 detection 2: id (16x 5)-26 , hamming 0, margin 170.637 0 init 0.000000 ms 0.000000 ms 1 decimate 0.622000 ms 0.622000 ms 2 blur/sharp 0.000000 ms 0.622000 ms 3 threshold 0.743000 ms 1.365000 ms 4 unionfind 2.825000 ms 4.190000 ms 5 make clusters 4.495000 ms 8.685000 ms 6 fit quads to clusters 7.641000 ms 16.326000 ms 7 quads 0.117000 ms 16.443000 ms 8 decode+refinement 0.800000 ms 17.243000 ms 9 reconcile 0.002000 ms 17.245000 ms 10 debug output 0.000000 ms 17.245000 ms 11 cleanup 0.001000 ms 17.246000 ms hamm 3 0 0 0 0 0 0 0 0 0 17.246 54 Summary hamm 3 0 0 0 0 0 0 0 0 0 17.246 54
Tj. detekoval 3 tagy: 24, 25 a 26. Zbytku zatím nerozumím (koukám, že hamming
jsou bit errors, tj. 0 je dobře).
BTW: před časem mergovali support pro windows:
https://github.com/AprilRobotics/apriltag/pull/27
Doporučený postup instalace
Jednak je potřeba vyjít z
originálního git repozitáře a
zcela ignorovat existující Python balíčky (zastaralé, neudržované a bez vazby
na původní autory).
git clone https://github.com/AprilRobotics/apriltag.git cd apriltag/ mkdir build cd build/ cmake .. make
Instalace není úplně bezproblémová a například numpy se očekává na dané
cestě (momentálně nejsnazší řešení bylo přes symbolický link).
Ověření závislostí výsledku:
ldd apriltag.cpython-36m-x86_64-linux-gnu.so gpu@gpu-desktop:~/git/apriltag/build$ ldd apriltag.cpython-36m-x86_64-linux-gnu.so linux-vdso.so.1 (0x00007ffc5d2e8000) libapriltag.so.3 => lib/libapriltag.so.3 (0x00007f085dc66000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f085da47000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f085d656000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f085d2b8000) /lib64/ld-linux-x86-64.so.2 (0x00007f085e4be000)
Výsledný balíček je třeba ještě správně doplnit do PYTHONPATH nebo Python
instalace, jinak lze importovat pouze ze složky build.
Windows instalace
- Visual Studio Community 2015 Update 3 … je třeba naklikat přes starší verze
- Vcpkg
PS E:\git\vcpkg> .\bootstrap-vcpkg.bat Building vcpkg.exe … TRACKER : error TRK0005: Failed to locate: "CL.exe". The system cannot find the file specified. [E:\git\vcpkg\toolsrc\vcpkglib\vcpkglib.vcxproj] Write-Error : Building vcpkg.exe failed. Please ensure you have installed Visual Studio with the Desktop C++ workload a nd the Windows SDK for Desktop C + +. At E:\git\vcpkg\scripts\bootstrap.ps1:409 char:16 + Write-Error <<<< "Building vcpkg.exe failed. Please ensure you have installed Visual Studio with the Desktop C++ workload and the Windows SDK for Desktop C + +." + CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Microsoft.PowerShell.Commands.WriteErr orCommand
https://github.com/lovell/sharp/issues/341,
Visual
C++ in Visual Studio 2015 — mám to chápat tak, že v těch 8GB, co jsem
stáhnu a speciálně zatrhnul C++ nakonec kompiler chybí?!
Vypadá to, že problém s VS2015 a vytvořením vcpkg.exe byl způsoben
„zdvojenou instalací”, kdy kus zůstal na disku C a většina na disku E.
Nejjednodušší řešení se zatím jeví překopířovaní VC složky k instalaci na disku
E.
e:\git\vcpkg>vcpkg.exe integrate install Applied user-wide integration for this vcpkg root. All MSBuild C++ projects can now #include any installed libraries. Linking will be handled automatically. Installing new libraries will make them instantly available. CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=e:/git/vcpkg/scripts/buildsys tems/vcpkg.cmake"
e:\git\vcpkg>vcpkg.exe install pthreads The following packages will be built and installed: pthreads[core]:x86-windows Starting package 1/1: pthreads:x86-windows Building package pthreads[core]:x86-windows… A suitable version of cmake was not found (required v3.14.0). Downloading portab le cmake v3.14.0… Downloading cmake… https://github.com/Kitware/CMake/releases/download/v3.14.0/cmake-3.14.0-win32- x86.zip -> e:\git\vcpkg\downloads\cmake-3.14.0-win32-x86.zip …
'"E:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\VCVarsQueryRegistry.bat"' is not recognized as an internal or external command, operable program or batch file. ERROR: Cannot determine the location of the VS installation.
Looks like it is very common bug in VS installer. Download VS 2015
Redistributable from Microsoft site for both x86 and x64, install it and then
rerun VS 2015 installer.
Kopie VC nestačila, ještě bylo třeba Common7.
ZW 24/7
tak cmake --build . --config Release --target pyinstall to i nainstaluje
respektive cmake --build . --target pyinstall na linuxu
cmake „instalace” pomoci conda
Ta "instalace" je jen nakopírování do příslušného adresáře site-packages, nic
jiného. Jinak pokud budeš chtít nový cmake && používáš conda, tak se nabízí
conda install -c anaconda cmake
instalace ve venv
pozór --- instalace vychazí ze ZWN forku
git clone https://github.com/zwn/apriltag.git cd apriltag python3 -m venv env source .env/bin/activate pip install –upgrade pip pip install cmake mkdir build cd build cmake .. cmake –build . –target pyinstall
by mělo být vše, co je třeba a v aktivovaném venv by měl být importovatelný
modul apriltag
ZW 29/7
- https://docs.opencv.org/4.1.1/d9/d6a/group__aruco.html
- https://docs.opencv.org/4.1.1/d9/d6a/group__aruco.html#ggac84398a9ed9dd01306592dd616c2c975a6235dfb8007de53d3e8de11bee1e3854
tj. někde je uvnitř opencv schovaný detektor apriltagů, tj. asi tohle:
https://docs.opencv.org/4.1.1/d9/d6a/group__aruco.html#gab9159aa69250d8d3642593e508cb6baa
ale asi to nikde nevrací takové ty hamming vzdálenosti a decision_margin atd. Ale možná je to dobře (?).
MD: … hmm ve 4.0 je to také …
dokonce 3.4.5
https://docs.opencv.org/3.4.5/d9/d6a/group__aruco.html#ggac84398a9ed9dd01306592dd616c2c975a6235dfb8007de53d3e8de11bee1e3854
v praci mam 3.4.0 a tam to jeste neni:
https://docs.opencv.org/3.4.0/d9/d6a/group__aruco.html#ggac84398a9ed9dd01306592dd616c2c975a6235dfb8007de53d3e8de11bee1e3854
JK:
Jak to čtu, tak jsem zkoušel co defaultně instaluje anaconda, a je to verze 3.4.2. Tahle verze by měla/mohla být na apůčkách.
dle:
https://mecaruco2.readthedocs.io/en/latest/notebooks_rst/Aruco/aruco_basics_video.html
>>> im = cv2.imread("eduro_april.jpg", 0) #eduro pri vstupu do tunelu >>> aruco_dict = cv2.aruco.Dictionary_get(cv2.aruco.DICT_APRILTAG_16h5) >>> parameters = cv2.aruco.DetectorParameters_create() >>> corners, ids, rejectedImgPoints = cv2.aruco.detectMarkers(im, aruco_dict, parameters=parameters) >>> frame_markers = cv2.aruco.drawDetectedMarkers(im.copy(), corners, ids) >>> cv2.imwrite( "april.jpg", frame_markers) True >>>
Apriltag pomocí OpenCV |