|
|
7 months ago | |
|---|---|---|
| feat_control | 7 months ago | |
| .gitignore | 7 months ago | |
| README.md | 7 months ago | |
| requirements.txt | 7 months ago | |
| uds_postprocessing.py | 7 months ago | |
README.md
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 등) 과 연동하여 동작합니다.
📁 디렉토리 구조 tta-uds-streamer/ │ ├── uds_postprocessing.py # 전체 파이프라인 처리 모듈 │ ├── feat_control/ # 기능 제어 모듈 │ └── ctrl_cli.py # 기능 ON/OFF 제어 CLI (UDS 제어) │ ├── ctrl_features.sh # 기능 ON/OFF 제어 스크립트 │ ├── requirements.txt # 패키지 목록 (버전 제거됨) │ └── README.md
🔧 패키지 설치 pip install -r requirements.txt
🚀 전체 파이프라인 실행 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장 버퍼링
디텍션 타임스탬프와 가장 가까운 프레임 자동 매칭
C 측 bytesort 기반 tracking ID 적용 가능
WebSocket 실시간 스트리밍 지원
C 모듈의 기능 플래그를 UDS를 통해 실시간 제어 가능
🎮 Feature Control 사용법
Python의 ctrl_cli.py와 Shell 스크립트 ctrl_features.sh를 사용하여 C 스트리머의 기능(OBJDET, FIRE, FACE 등)을 ON/OFF할 수 있습니다.
📁 관련 파일 feat_control/ └── ctrl_cli.py # 기능 제어 메시지를 UDS로 전송하는 Python CLI ctrl_features.sh # 여러 기능을 한 번에 ON/OFF하는 스크립트
🔧 ctrl_features.sh 사용법 기본 구조 ./ctrl_features.sh FEATURE [FEATURE ...]
예시 객체 탐지만 활성화 ./ctrl_features.sh OBJDET
객체 탐지 + 화재 탐지 ./ctrl_features.sh OBJDET FIRE
잘못된 사용(인자 없음) ./ctrl_features.sh
Usage 출력
🔍 ctrl_features.sh 동작 방식
-
모든 기능 OFF $CLI "ALL_OFF"
-
전달받은 기능 목록을 순서대로 ON for f in "$@"; do $CLI "ON $f" done
예시:
./ctrl_features.sh OBJDET FIRE
전송되는 실제 명령:
ALL_OFF ON OBJDET ON FIRE
🧩 ctrl_cli.py 동작 요약
ctrl_cli.py는 내부적으로:
UDS 제어 소켓(/tmp/ctrl_feat.sock) 연결
명령 문자열 전송
OK / FAIL 응답 수신
하는 단순한 CLI로 구성되어 있습니다.
C 측에서는 이를 기반으로 ctrl_flags.h 에 정의된 기능 플래그를 실시간 변경합니다.