خلاصه (Summary)

OAK Device CHOP به‌عنوان رابط اصلی برای ارتباط با یک دوربین OAK عمل می‌کند. این CHOP همچنین بسیاری از قابلیت‌های Timer CHOP را پیاده‌سازی می‌کند؛ از جمله شمارنده‌های تایمر، پالس‌ها و کال‌بک‌های سفارشی Python.


استفاده پایه (Basic Usage)

پیش از اجرای TouchDesigner، هر دستگاه OAK را از طریق USB یا Power over Ethernet (PoE) به کامپیوتر متصل کنید.
اگر در زمانی که TouchDesigner در حال اجراست دستگاهی را متصل کردید، باید پارامتر Refresh Device List را در OAK Device CHOP پالس کنید.

سپس کال‌بک Python به نام createPipeline را شخصی‌سازی کرده و پارامتر Start را پالس کنید تا دوربین شروع به کار کند.
ذخیره کردن پروژه در حالی که دوربین در حال اجراست مشکلی ندارد؛ دوربین به‌صورت خودکار تشخیص می‌دهد که هنگام باز شدن دوباره پروژه، باید مجدداً اجرا شود.


رزولوشن و مقیاس ISP (Resolution and ISP Scale)

ماژول Python مربوط به depthai دارای یک enum برای رزولوشن RGB است:

dai.ColorCameraProperties.SensorResolution

این enum در حال حاضر شامل گزینه‌هایی مانند THE_1080_P، THE_1200_P، THE_4_K و موارد دیگر است.
ممکن است همه‌ی این گزینه‌ها با سخت‌افزار OAK شما سازگار نباشند.

رایج‌ترین رزولوشن RGB در دسترس، 1080p است.
برای کاهش مصرف پهنای باند، می‌توانید از طریق ISP scale رزولوشن پایین‌تری انتخاب کنید.
به‌عنوان مثال، انتخاب (2, 3) همراه با THE_1080_P منجر به تصویری با رزولوشن 1280×720 می‌شود.


پیکربندی‌ها (Configs)

پروژه‌ی DepthaiTestSuite.toe شامل چندین Base Component است که به کنترل تنظیمات دوربین OAK از طریق ارسال پیام با OAK Device CHOP کمک می‌کنند.

برای مثال:

  • oakDeviceConfig
    امکان تنظیم XLinkChunkSize، سطح لاگ‌گیری (logging level) و تنظیمات لیزر مادون قرمز دستگاه را فراهم می‌کند.

  • oakCameraControl
    برای کنترل تنظیمات دوربین RGB استفاده می‌شود.

  • oakStereoDepthConfig
    برای کنترل تنظیمات عمق استریو کاربرد دارد.

این پیکربندی‌ها حتی در زمانی که دوربین در حال اجراست نیز قابل استفاده هستند.


بهینه‌سازی تأخیر و FPS (Optimizing Latency and FPS)

شرکت Luxonis یک آموزش برای کاهش تأخیر (low latency) ارائه کرده است.
در برخی شرایط، مانند استریم ویدئوی 4K، بهتر است مقدار XLinkChunkSize روی صفر تنظیم شود.
این کار از طریق oakDeviceConfig قابل انجام است.

هنگام ساخت pipeline در depthai، می‌توان برای نودهای مختلف (مثل ColorCamera) مقدار FPS هدف تعیین کرد.
به‌طور کلی، FPS پس از بارگذاری pipeline روی دوربین قابل تغییر نیست.

توصیه می‌شود مقادیر FPS بالا انتخاب شوند، اما توجه داشته باشید اگر این اعداد بیش از حد بالا باشند، ممکن است FPS مؤثر (که توسط Info CHOP نمایش داده می‌شود) کاهش پیدا کند.


همچنین ببینید

OAK-D
OAK Select CHOP
OAK Select TOP


محتویات (Contents)

  1. Summary
     1.1 Basic Usage
     1.2 Resolution and ISP Scale
     1.3 Configs
     1.4 Optimizing Latency and FPS

  2. Parameters – OAK Page

  3. Parameters – Stream In Page

  4. Parameters – Outputs Page

  5. Parameters – Common Page

  6. Info CHOP Channels
     6.1 Common CHOP Info Channels
     6.2 Common Operator Info Channels


پارامترها – صفحه OAK (Parameters – OAK Page)

Active
active –

Sensor
sensor – انتخاب دستگاه OAK موجود از لیست کشویی.

Refresh Sensor List
refreshpulse – تازه‌سازی لیست سنسورهای در دسترس.

Initialize
initialize – سیگنالی برای قرار دادن دستگاه OAK در وضعیت آماده.
در این مرحله کال‌بک onInitialize() اجرا می‌شود و در صورت موفقیت، کال‌بک createPipeline() اجرا خواهد شد.
زمانی که کانال ready روشن شود، نشان‌دهنده آماده بودن دستگاه است.

Start
start –

Play
play – پارامتر Play داخلی مشخص می‌کند که آیا TouchDesigner پیام‌های جدید دریافتی از دوربین را پردازش کند یا نه.
مثلاً اگر چند OAK Select CHOP یا TOP به یک OAK Device CHOP متصل باشند، با خاموش کردن Play، تمام آن‌ها آخرین پیام دریافتی را نگه می‌دارند و پیام‌های جدید را نادیده می‌گیرند.

Go to Done
gotodone –

Callbacks DAT
callbacks – مسیر DAT حاوی کال‌بک‌های مربوط به این OAK Device CHOP.


پارامترها – صفحه Stream In

این صفحه‌ی داخلی برای ارسال تصاویر RGBA 8-bit از TouchDesigner به دوربین OAK استفاده می‌شود.
می‌توانید یک TOP، نام استریم و فرکانس ارسال (بر حسب هرتز) را مشخص کنید.

اگر نام استریم خالی باشد، هیچ داده‌ای ارسال نمی‌شود.
هنگام ارسال تصویر، TouchDesigner تصویر ورودی را به فرمت BGR تبدیل می‌کند؛
زیرا بیشتر شبکه‌های عصبی اجراشده روی OAK انتظار ورودی BGR دارند.

اگر به فرمت دیگری نیاز دارید، باید از نود ImageManip در pipeline مربوط به depthai برای تغییر فرمت استفاده کنید.

Stream
stream – مجموعه‌ای از پارامترهای اطلاعات استریم.

Name
stream0name – نام استریمی که قادر به دریافت تکسچر است.
این استریم باید در pipeline depthai با نود XLinkIn ساخته شود:
pipeline.create(dai.node.XLinkIn)

Frequency (Hz)
stream0frequency – فرکانسی که تکسچر با آن به دستگاه OAK ارسال می‌شود.

TOP
stream0top – اپراتور TOP حاوی تکسچری که به استریم ارسال می‌شود.


پارامترها – صفحه Outputs

Initializing
outinit – کانال initializing = 1 را در زمان مقداردهی اولیه دستگاه OAK خروجی می‌دهد.

Initialize Fail
outinitfail – اگر هنگام مقداردهی اولیه یا ساخت pipeline خطایی رخ دهد، کانال initialize_fail = 1 خواهد شد.

Ready
outready – کانال ready = 1 بعد از Initialize و قبل از Start.

Running
outrunning – کانال running = 1 بعد از Start و قبل از Done.

Done
outdone – کانال done = 1 در زمان پایان یا تکمیل فرآیند.

Timer Count
outtimercount –

Running Time Count
outrunningcount – زمان واقعی (wall-clock) سپری‌شده از لحظه Start را خروجی می‌دهد،
حتی اگر Play دستگاه خاموش باشد.
پس از رسیدن به وضعیت Done، شمارش متوقف می‌شود.


پارامترها – صفحه Common

Time Slice
timeslice – فعال‌سازی Time Slice باعث می‌شود کانال‌ها به‌صورت time-sliced پردازش شوند.

Scope
scope – مشخص می‌کند کدام کانال‌ها تحت تأثیر قرار بگیرند.

Sample Rate Match
srselect – مدیریت اختلاف Sample Rate بین چند CHOP ورودی.
در صورت Resampling، منحنی‌ها بر اساس روش Interpolation تنظیم می‌شوند.

Export Method
exportmethod – نحوه اتصال کانال CHOP به پارامتر را مشخص می‌کند.

Export Root
autoexportroot – مسیر ریشه‌ای که export بر اساس Channel Name نسبت به آن انجام می‌شود.

Export Table
exporttable – DAT مورد استفاده برای نگهداری اطلاعات export در حالت DAT Table Export.


کانال‌های Info CHOP

اطلاعات تکمیلی OAK Device CHOP از طریق Info CHOP در دسترس است.

کانال‌های عمومی Info در CHOP

  • start – شروع بازه CHOP بر حسب سمپل

  • length – تعداد سمپل‌ها

  • sample_rate – نرخ نمونه‌برداری (فریم بر ثانیه)

  • num_channels – تعداد کانال‌ها

  • time_slice – اگر Time Slice فعال باشد 1

  • export_sernum – تعداد دفعات به‌روزرسانی اتصال‌های export

کانال‌های عمومی Info اپراتور

  • total_cooks – تعداد دفعات Cook شدن اپراتور

  • cook_time – مدت زمان آخرین Cook (میلی‌ثانیه)

  • cook_frame – شماره فریم Cook نسبت به تایم‌لاین کامپوننت

  • cook_abs_frame – شماره فریم Cook نسبت به زمان مطلق

  • cook_start_time – زمان شروع Cook (میلی‌ثانیه)

  • cook_end_time – زمان پایان Cook (میلی‌ثانیه)

  • cooked_this_frame – اگر در این فریم Cook شده باشد 1

  • warnings – تعداد هشدارها

  • errors – تعداد خطاها