camera-agent

camera-agent Project

프로젝트 소개

Camera Agent Project는 컨테이너 기반으로 MobileX Station에 부착된 웹캠 카메라들을 IP 카메라처럼 활용할 수 있게 하는 프로젝트로 Falcon을 보완하기 위해 진행되었습니다. 이 프로젝트의 주요 목표는 다음과 같습니다:

  1. 웹캠을 IP 카메라로 변환: 기존 MobileX Station의 웹캠을 IP 카메라와 같은 기능성을 가진 장치로 전환합니다. 이를 통해 네트워크를 통한 원격 접근과 제어가 가능해집니다.

  2. 중앙화된 카메라 관리: WebUI를 통해 현재 사용 가능한 모든 카메라의 목록을 확인하고 관리할 수 있습니다. 이는 시스템 관리자에게 직관적이고 효율적인 카메라 관리 환경을 제공합니다.

  3. 서비스 모니터링: 카메라를 사용하는 다양한 서비스들의 상태를 실시간으로 확인하고 추적할 수 있는 기능을 제공합니다. 이를 통해 시스템의 안정성과 성능을 지속적으로 모니터링하고 개선할 수 있습니다.

이 프로젝트는 기존 하드웨어 자원을 최대한 활용하면서도 IP 카메라의 유연성과 기능성을 제공함으로써, 코드 재사용성을 높이고 디지털 트윈 프로젝트와 연계하여 개발 진행 예정입니다.

web-UI 는 light 버전만 지원됩니다.

그 외 프로젝트 요구사항 관련

기존에 사이트가 없어서 해당 서버의 경우 요구사항을 README.md 에 같이 정리했었는데 , 이후 생성되는 DT 서비스 관련 repo 와 프로젝트들의 요구사항은 아래 사이트에서 별도로 통합 유지 관리 예정 입니다.

https://smartx-team.github.io/digital-twin-hub/

프로젝트 주요 목표 및 작업 진행률

프로젝트 관리

Swagger 로 기본 API 사용법이 제공되긴하나 Omniverse 전체 API 를 관리하는 gitblog 생성하여 해당 Repo에 API 및 문서 이력 관리 진행 예정

전체 구조도

ver 240930 Falcon 설계 고민사항

Agent 와 visibility Server 통신 스크린샷 2024-10-01 오전 7 24 17

Web-UI 동작 예시

스크린샷 2024-10-04 오전 10 00 21

주요 컴포넌트 및 기능

1. Agent

주요 스택: FAST API(gRPC로 대체될 수 있음), Gstreamer

목적: Gstreamer 기반으로 웹캠과 같은 일반 카메라 장비를 IP 카메라 처럼 사용할수 있도록 지원하고, 카메라 상태를 주기적으로 Visibility Server 에 주기적으로 전송

또한 스트리밍 on/off 등 동적으로 조절할 수 있는 API를 지원하여, 네트워크 상태등에 따라 유동적으로 생성되는 데이터 크기를 조절할 수 있음

Rtsp 프로토콜로 스트리밍 되기에 여러 서비스에서 동시에 카메라의 데이터에 접근하기 수월해지고, 전체 시스템를 관리하기도 쉬어짐

주요 기능:

구현된 세부 요구사항:

자세한 정보: Agent/README.md

2. Visibility Server

주요 스택: Flask, tinyDB

목적: Agent 들의 현재 상태를 관리하고, 사용자가 사용하는 WebUI 를 위해 기본적인 CRUD 기능 지원

주요 기능:

구현된 요구사항:

비기능적 요구사항:

자세한 정보: Backend/README.md

3. PTP Server

목적: Agent들의 시간 동기화를 위한 컨테이너 기반 PTP 서버

주요 기능:

자세한 정보:

4. WebUI

목적: Agent들의 관리를 위한 WebUI

주요 기능:

구현된 요구사항:

비기능적 요구사항:

자세한 정보:

설치 및 실행 방법

모든 서버 기능들은 컨테이너 베이스로 유지됨, 도커 파일은 프로젝트마다 있음 MobileX 에서는 K8S 에 자동 배포 유지되도록 세팅 해둘것임