هذه هي روابط Python لمكتبة Apriltags 3 التي تم تطويرها بواسطة AprilRobotics. مستوحاة من روابط apriltags2 من مات زوكر.
يتم نشر المكتبة الأصلية بترخيص BSD 2-Cause.
يمكنك التثبيت باستخدام pip
(أو pip3
لـ Python 3):
pip install dt-apriltags
وإذا كنت تريد إصدارًا معينًا ، فأضفه مثل هذا:
pip install [email protected]
استنساخ هذا المستودع والتنقل فيه. ثم تهيئة الجهاز الفرعي apriltags:
$ git submodule init
$ git submodule update
قم بإنشاء مكتبة Apriltags C وقم بتضمين المكتبة المصممة حديثًا في عجلة PIP.
$ make build
ستكون العجلة الجديدة متوفرة في Distory dist/
. يمكنك الآن تثبيت العجلة
pip install dt_apriltags-VERSION-pyPYMAJOR-none-ARCH.whl
ملاحظة: استنادًا إلى VERSION
الحالي من هذه المكتبة وإصدار Python المستخدمة PYMAJOR
، مع بنية ARCH
وحدة المعالجة المركزية الخاصة بك ، يختلف اسم الملف أعلاه.
تدعم هذه المكتبة بناء عجلات للبيثون 2
و 3
. سيتم استخدام Python 2 افتراضيًا. استخدم الأمر التالي لبناء Python 3.
make build PYTHON_VERSION=3
تدعم هذه المكتبة بناء عجلات لبنية وحدة المعالجة المركزية amd64
و arm32v7
و arm64v8
. العمارة الافتراضية هي amd64
. عند بناء عجلات لبنية ARM ، سيتم استخدام QEMU لمحاكاة وحدة المعالجة المركزية المستهدفة. استخدم الأمر التالي لبناء arm32v7
.
make build ARCH=arm32v7
يمكن إطلاق جميع العجلات التي تم تصميمها داخل dist/
make upload
استخدم الأمر التالي لإنشاء وإصدار عجلات لـ Python 2 و 3 و CPU Architecture amd64
و arm32v7
.
make release-all
يمكن رؤية بعض الأمثلة على الاستخدام في ملف test.py
فئة Detector
هي غلاف حول وظيفة apriltags. يمكنك تهيئته على النحو التالي:
at_detector = Detector(searchpath=['apriltags'],
families='tag36h11',
nthreads=1,
quad_decimate=1.0,
quad_sigma=0.0,
refine_edges=1,
decode_sharpening=0.25,
debug=0)
الخيارات هي:
خيار | تقصير | توضيح |
---|---|---|
العائلات | 'tag36h11' ' | العلامات العلامات ، مفصولة بمساحة |
nthreads | 1 | عدد المواضيع |
max_hamming | 2 | الحد الأقصى لعدد البتات المسموح به لإنشاء اكتشاف علامات ناجح. يمكن أن تساعد في تقليل السلبيات الخاطئة عندما تتسبب الضوضاء في قراءة بعض بت البيانات بشكل غير صحيح ، ولكن يمكن أيضًا زيادة إيجابيات كاذبة. |
Quad_Deciment | 2.0 | يمكن إجراء الكشف عن الكواد على صورة أقل دقة ، مما يؤدي إلى تحسين السرعة بتكلفة دقة تشكل وانخفاض طفيف في معدل الكشف. لا يزال فك تشفير الحمولة الثنائية يتم في دقة كاملة. اضبط هذا على 1.0 لاستخدام الدقة الكاملة. |
quad_sigma | 0.0 | ما يجب تطبيق طمس غاوسي على الصورة المجزأة. المعلمة هي الانحراف المعياري في وحدات البكسل. تستفيد الصور الصاخبة جدًا من القيم غير الصفر (على سبيل المثال 0.8) |
refine_edges | 1 | عندما لا يتم تعديل حواف كل رباعية إلى "SNAP إلى" التدرجات القوية القريبة. يكون هذا مفيدًا عند استخدام القضور ، حيث يمكن أن يزيد من جودة تقدير الربع الأولي بشكل كبير. موصى بها بشكل عام أن تكون على (1). غير مكلفة حسابي جدا. يتم تجاهل الخيار إذا Quad_Deciment = 1 |
decode_sharpening | 0.25 | ما مقدار الحدة التي يجب القيام بها لصور فك التشفير؟ يمكن أن يساعد ذلك في فك تشفير العلامات الصغيرة ولكن قد يساعد أو لا يساعد |
SearchPath | ['apriltags'] | أين تبحث عن مكتبة Apriltag 3 ، يجب أن تكون قائمة |
تصحيح | 0 | إذا 1 ، سيحفظ صور التصحيح. يدير بطيئًا جدًا |
يتم اكتشاف العلامات في الصور عن طريق تشغيل طريقة detect
الكاشف:
tags = at_detector.detect(img, estimate_tag_pose=False, camera_params=None, tag_size=None)
إذا كنت ترغب أيضًا في استخراج وضع العلامة ، فيجب ضبط estimate_tag_pose
على True
و camera_params
( [fx, fy, cx, cy]
) و tag_size
(بالأمتار) يجب توفيرها. تقوم طريقة detect
بإرجاع قائمة كائنات Detection
لكل من السمات التالية (لاحظ أن تلك ذات العلامات النجمية يتم حسابها فقط إذا كانت estimate_tag_pose=True
):
يصف | توضيح |
---|---|
tag_family | عائلة العلامة. |
TAG_ID | معرف فك التشفير للعلامة. |
هامينغ | كم عدد بتات الخطأ التي تم تصحيحها؟ ملاحظة: إن قبول أعداد كبيرة من الأخطاء المصححة يؤدي إلى زيادة معدلات إيجابية خاطئة إلى حد كبير. ملاحظة: اعتبارًا من هذا التنفيذ ، لا يمكن للكاشف اكتشاف العلامات بمسافة هشية أكبر من 3. |
القرار | مقياس لجودة عملية فك التشفير الثنائية: متوسط الفرق بين شدة بت البيانات مقابل عتبة القرار. تشير الأرقام الأعلى تقريبًا إلى فك تشفير أفضل. هذا مقياس معقول لدقة الكشف فقط للعلامات الصغيرة جدًا- غير فعال للعلامات الأكبر (حيث كان بإمكاننا أخذ عينات من أي مكان داخل خلية صغيرة ولا يزالون يكتشفون جيدًا.) |
التماثيل | مصفوفة Homography 3x3 التي تصف الإسقاط من علامة "مثالية" (مع زوايا في (-1،1) ، (1،1) ، (1 ، -1) ، و (-1 ، -1)) للبكسل في صورة. |
مركز | مركز الكشف في إحداثيات Pixel Pixel. |
زوايا | زوايا العلامة في إحداثيات Pixel Image. هذه دائما تلتزم على مدار الدورات الحكيمة حول العلامة. |
متصنع* | مصفوفة الدوران من تقدير الوضع. |
pose_t* | ترجمة التقدير الوضعية. |
pose_err* | خطأ كائن الفضاء من التقدير. |
إذا كنت ترغب في استخدام تخطيط مخصص ، فأنت بحاجة إلى إنشاء ملفات مصدر C و Header له ثم إنشاء المكتبة مرة أخرى. ثم استخدم مكتبة libapriltag.so
الجديدة. يمكنك العثور على مزيد من المعلومات حول مستودع apriltags الأصلي.
تم تصميم العجلة داخل حاوية Docker. Dockerfile في جذر هذا المستودع هو قالب لبيئة البناء. تعتمد بيئة الإنشاء على ubuntu:18.04
ويتم تثبيت الإصدار الصحيح من Python أثناء الطيران. سيؤدي الأمر make build
إلى إنشاء بيئة البناء إذا لم تكن موجودة قبل بناء العجلة.
بمجرد أن تصبح بيئة البناء (صورة Docker) جاهزة ، يتم إطلاق حاوية Docker مع التكوين التالي:
/source
؛dist/
دليل الوجهة تحت /out
؛ سيتم تنفيذ البرنامج النصي للبناء من assets/build.sh
داخل الحاوية. خطوات البناء هي:
/source
إلى موقع مؤقت (داخل الحاوية)apriltags/
(سوف تنتج ملف مكتبة. لذا)package_data
)/out
(سوف يظهر في dist/
خارج الحاوية)