# tta-uds-streamer ## ๐Ÿ“˜ TTA UDS Streamer C ๋ชจ๋“ˆ์ด ์ „์†กํ•˜๋Š” **UDS ๊ธฐ๋ฐ˜ ํ”„๋ ˆ์ž„/๋””ํ…์…˜ ์ŠคํŠธ๋ฆผ**์„ ์ฒ˜๋ฆฌํ•˜๋Š” Python ๋ชจ๋“ˆ --- ## ๐Ÿ“Œ ๊ฐœ์š” ์ด ํ”„๋กœ์ ํŠธ๋Š” C ์ธก์—์„œ **Unix Domain Socket(UDS)** ์„ ํ†ตํ•ด ์ „์†ก๋˜๋Š” - JPEG ํ”„๋ ˆ์ž„(FRA) - ๋””ํ…์…˜(UDSD) ๋ฐ์ดํ„ฐ๋ฅผ Python์—์„œ ์ˆ˜์‹ ํ•˜์—ฌ - ํ”„๋ ˆ์ž„ ๋ฒ„ํผ๋ง - ๋””ํ…์…˜ ํƒ€์ž„์Šคํƒฌํ”„ ๋งค์นญ - WebSocket ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ ๊นŒ์ง€ ์ฒ˜๋ฆฌํ•˜๋Š” ํŒŒ์ดํ”„๋ผ์ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ณธ ์ €์žฅ์†Œ๋Š” **Python ์ธก ๋ชจ๋“ˆ๋งŒ ํฌํ•จ**ํ•˜๋ฉฐ C ์ธก **NPU โ†’ Postprocess โ†’ UDS ๋ชจ๋“ˆ(cam_ws_app ๋“ฑ)** ๊ณผ ์—ฐ๋™ํ•˜์—ฌ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. --- ## ๐Ÿ“ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ ```text tta-uds-streamer/ โ”‚ โ”œโ”€โ”€ uds_postprocessing.py # ์ „์ฒด ํŒŒ์ดํ”„๋ผ์ธ ์ฒ˜๋ฆฌ ๋ชจ๋“ˆ โ”‚ โ”œโ”€โ”€ feat_control/ # ๊ธฐ๋Šฅ ์ œ์–ด ๋ชจ๋“ˆ โ”‚ โ””โ”€โ”€ ctrl_cli.py # ๊ธฐ๋Šฅ ON/OFF ์ œ์–ด CLI (UDS ์ œ์–ด) โ”‚ โ”œโ”€โ”€ requirements.txt # ํŒจํ‚ค์ง€ ๋ชฉ๋ก โ”‚ โ””โ”€โ”€ README.md ``` --- ## ๐Ÿ”ง ํŒจํ‚ค์ง€ ์„ค์น˜ ```bash pip install -r requirements.txt ``` --- ## ๐Ÿš€ ์ „์ฒด ํŒŒ์ดํ”„๋ผ์ธ ์‹คํ–‰ ```bash python uds_postprocessing.py ``` C ํ”„๋กœ๊ทธ๋žจ์ด `/tmp/cam.sock` UDS ์†Œ์ผ“์œผ๋กœ ์•„๋ž˜ ํฌ๋งท์„ ์ „์†กํ•˜๋ฉด Python์€ ํ”„๋ ˆ์ž„ ๋ฐ ๋””ํ…์…˜์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. --- ## ๐Ÿ“ก ๋ฐ์ดํ„ฐ ํฌ๋งท ์š”์•ฝ ### ๐Ÿ“Œ FRA (Frame) | ํ•„๋“œ | ์„ค๋ช… | |------|------| | magic | "FRA\0" | | width / height | JPEG ์ด๋ฏธ์ง€ ํฌ๊ธฐ | | stride | JPEG ๋ฐ”์ดํŠธ ๊ธธ์ด | | pixfmt | WS_PIXFMT_JPEG | | ts_us | ํ”„๋ ˆ์ž„ ํƒ€์ž„์Šคํƒฌํ”„(ฮผs) | | payload | JPEG binary | --- ### ๐Ÿ“Œ UDSD (Detection) | ํ•„๋“œ | ์„ค๋ช… | |------|------| | magic | "UDSD" | | count | ๋””ํ…์…˜ ์ˆ˜ | | ENTRY | prob, x, y, w, h, cls, ... | | ts_us | ๋””ํ…์…˜ ํƒ€์ž„์Šคํƒฌํ”„(ฮผs) | --- ## ๐Ÿงฉ ๊ธฐ๋Šฅ ์š”์•ฝ - ์ตœ๊ทผ ํ”„๋ ˆ์ž„ N์žฅ ๋ฒ„ํผ๋ง - ๋””ํ…์…˜ ํƒ€์ž„์Šคํƒฌํ”„์™€ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ํ”„๋ ˆ์ž„ ์ž๋™ ๋งค์นญ - WebSocket ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ ์ง€์› - C ๋ชจ๋“ˆ ๊ธฐ๋Šฅ ํ”Œ๋ž˜๊ทธ๋ฅผ UDS๋กœ ์‹ค์‹œ๊ฐ„ ์ œ์–ด ๊ฐ€๋Šฅ --- # ๐ŸŽฎ Feature Control ์‚ฌ์šฉ๋ฒ• `ctrl_cli.py` ์™€ `ctrl_features.sh` ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ C ์ŠคํŠธ๋ฆฌ๋จธ ๊ธฐ๋Šฅ(OBJDET, FIRE, FACE ๋“ฑ)์„ ON/OFF ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --- ## ๐Ÿ“ ๊ด€๋ จ ํŒŒ์ผ ```text feat_control/ โ”œโ”€โ”€ ctrl_cli.py # ๊ธฐ๋Šฅ ์ œ์–ด ๋ฉ”์‹œ์ง€๋ฅผ UDS๋กœ ์ „์†กํ•˜๋Š” Python CLI โ””โ”€โ”€ feat_on.sh # ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ํ•œ ๋ฒˆ์— ON/OFF ์ œ์–ดํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ``` --- ## ๐Ÿ”ง ctrl_features.sh ์‚ฌ์šฉ๋ฒ• ### ๊ธฐ๋ณธ ๊ตฌ์กฐ ```bash ./ctrl_features.sh FEATURE [FEATURE ...] ``` ### ์˜ˆ์‹œ #### ๊ฐ์ฒด ํƒ์ง€ ํ™œ์„ฑํ™” ```bash ./feat_on.sh OBJDET ``` #### ๊ฐ์ฒด ํƒ์ง€ + ํ™”์žฌ ํƒ์ง€ ```bash ./feat_on.sh OBJDET FIRE ``` --- ## ๐Ÿงฉ ctrl_cli.py ๋™์ž‘ ์š”์•ฝ `ctrl_cli.py`๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค: 1. UDS ์ œ์–ด ์†Œ์ผ“(`/tmp/ctrl_feat.sock`) ์—ฐ๊ฒฐ 2. ๋ช…๋ น ๋ฌธ์ž์—ด ์ „์†ก 3. OK / FAIL ์‘๋‹ต ์ˆ˜์‹  C ์ธก์—์„œ๋Š” ์ด ๋ช…๋ น์„ ๊ธฐ๋ฐ˜์œผ๋กœ `ctrl_flags.h` ์— ์ •์˜๋œ ๊ธฐ๋Šฅ ํ”Œ๋ž˜๊ทธ๋ฅผ ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ---