Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

zonal-architecture-kit

TOPST 기반 Zonal E/E 아키텍처 교육 키트. 카메라 영상을 AI 보드에서 추론하고, 그 결과를 Zone 컨트롤러(MCU)와 클러스터 디스플레이(AP)로 각각 분배해 실제 축소 차량을 제어·시각화하는 전체 파이프라인을 다룹니다.

Dashboard

개요

이 저장소는 하나의 SoC가 모든 것을 처리하는 대신, 역할이 분리된 여러 노드가 네트워크로 통신하는 Zonal 아키텍처를 작은 규모로 재현한 교육용 키트입니다.

  • AI 보드가 카메라 영상을 추론해 차선/객체 정보를 만들고
  • **AP(Bridge_App)**가 이 결과를 표시용/제어용으로 나눠 가공하고
  • **Zone 컨트롤러(VCP-G MCU)**가 실제 모터·서보·조명·CAN 통신을 담당하고
  • **클러스터 디스플레이(TOPST_DashBoard)**가 운전자에게 3D BEV와 계기판을 보여줍니다

아키텍처

                      video (TCP:9999)
   ┌────────────┐  ───────────────────▶  ┌──────────────────┐
   │  Bridge_App │                       │  topst-nn-server  │
   │  (Python,   │  ◀───────────────────  │  (TOPST AI 보드,  │
   │   AP)       │   JSON result (:9998) │   NPU 추론, C)     │
   └─────┬───────┘                       └──────────────────┘
         │  dual-BEV 변환
         │  (표시용 homography / 제어용 homography 분리)
         │
         ├── JSON broadcast (TCP:10000) ──▶ TOPST_DashBoard (Qt/QML, C++)
         │                                    3D BEV, 계기판, ADAS 경고 UI
         │
         └── /dev/tcc_ipc_micom (CAN 매핑) ──▶ Zonal-VCP / FreeRTOS-VCP
                                                (TCC70xx, FreeRTOS 펌웨어)
                                                모터/조향/조명/BSM 도트매트릭스

Bridge_App은 같은 프레임을 **표시용 homography(display_bev.json)**와 **제어용 homography(control_bev.json)**로 각각 BEV 변환합니다. 화면에 보이는 좌표와 조향/커브 계산에 쓰는 좌표를 분리해, 디스플레이 튜닝이 실제 주행 제어에 영향을 주지 않도록 설계되어 있습니다.

저장소 구성

경로 역할
Zonal-VCP/ TCC70xx Zone 컨트롤러(VCP-G) MCU 펌웨어. FreeRTOS 기반, CAN/LIN/GPIO/I2C/PDM/HSM 드라이버와 샘플 앱. Telechips 제공 BSP(Apache-2.0).
FreeRTOS-VCP/ Zonal-VCP와 동일한 VCP-G BSP 베이스라인(참고/백업 사본).
topst-nn-server/ TOPST AI 보드에서 도는 NPU 추론 서버(C). 영상을 받아 차선/객체를 추론하고 결과 JSON을 스트리밍.
Bridge_App/ AP에서 도는 Python 브리지. 추론 결과를 dual-BEV payload로 조립해 대시보드로 broadcast하고, 조향/속도/조명 명령을 IPC로 MCU에 전달.
TOPST_DashBoard/ Qt/QML 기반 3D 클러스터 대시보드(C++). 속도계·RPM·차선/객체 BEV·ADAS 경고를 실시간 렌더링.
docs/ 스크린샷 등 문서 자료.
env_setup.sh 개발 환경 셋업 스크립트(ARM EABI 툴체인, tc-nn-toolkit 등).

컴포넌트 상세

Zonal-VCP — MCU 펌웨어 (Zone 컨트롤러)

Telechips TCC70xx용 FreeRTOS 기반 VCP-G BSP를 베이스로 한 Zone 컨트롤러 펌웨어입니다.

  • sources/app.drivers/ : HSM, LIN, SWL 등 애플리케이션 드라이버
  • sources/dev.drivers/ : ADC/CAN/GPIO/I2C/PDM/GPSB(SPI) 등 SoC 디바이스 드라이버
  • sources/app.sample/ : CAN 데모, GPIO/I2C/PDM 테스트 앱, 콘솔, FW 업데이트 등 샘플 애플리케이션
  • build/tcc70xx/ : GCC/GHC 빌드 산출물 및 서명 도구(vcpSignTool)

Bridge_App/dev/tcc_ipc_micom을 통해 아래 CAN 메시지 ID로 이 펌웨어를 제어합니다(정의: bev_lane_modules/control.py):

ID 용도 페이로드
0x101 비상등 [0] 0x01 on
0x102 브레이크등 [0] 0x01 on / 0x02 off
0x103 조향(모터 휠) [0] 0~127도
0x104 모터 속도(PWM duty %) [0] int, [1] frac
0x105 방향지시등 [0] 1=좌/2=우, [1] 1=on/2=off
0x106 헤드라이트 [0] 0x01 on / 0x02 off
0x107 연료 게이지(LCD) [0] 0~100%
0x108 정지등 [0] 0x01 on / 0x02 off
0x10A ADAS 경고 단계 (VCP→AP) [0] 1=NEAR/2=MID/3=FAR
0x10B 블라인드스팟 경고 (AP→VCP) [0] bit0=좌, bit1=우

현재 포함된 최신 드라이버/샘플 변경 사항:

  • dev.drivers/gpsb/dot_matrix.c : MAX7219 8x8 도트매트릭스에 좌/우 화살표, 블라인드스팟(BSM) 경고 아이콘 패턴 추가
  • app.sample/test.app.gpio, test.app.i2c, test.app.pdm, test.app.lin : 드라이버 검증용 테스트 앱 확장

topst-nn-server — AI 추론 서버

TOPST AI 보드 위에서 카메라/영상 프레임을 받아 NPU로 차선·객체 인식을 수행하고, 결과를 JSON으로 스트리밍하는 C 애플리케이션입니다. Bridge_App이 영상 입력(TCP :9999)과 결과 출력(TCP :9998)의 클라이언트 역할을 합니다.

Bridge_App — AP 브리지 (Python)

zonal_app.py가 진입점이며, bev_lane_modules/ 아래 모듈들을 조합해 동작합니다.

  • video_stream.py : 시나리오 영상을 topst-nn-server로 계속 송신
  • net.py : 재시도 로직을 갖춘 TCP 연결 유틸
  • geometry.py / pathing.py : 호모그래피 변환, 차선 피팅, pure-pursuit 조향 계산
  • payload.py / payload_builder_dual.py : 추론 결과를 표시용/제어용 payload로 각각 조립
  • state.py : 프레임 간 차선/객체/조향 스무딩 상태 유지
  • qt_server.py : TOPST_DashBoard 클라이언트로 payload를 broadcast(TCP :10000)
  • control.py + Library/IPC_Library.py : 조향/속도/조명 명령을 CAN 메시지로 변환해 /dev/tcc_ipc_micom으로 VCP-G에 전달
  • scenario.py : 재생할 시나리오 영상 목록 관리 + Qt에서 오는 선택 명령 수신(TCP :10001)
  • telemetry.py : 실데이터가 없을 때 계기판 시연용 telemetry 생성
  • app_config.py : 위 값들을 묶는 실행 옵션/보정값 설정

실행 예:

python3 zonal_app.py \
  --board-host 192.168.0.100 \
  --qt-port 10000 \
  --can-enable

TOPST_DashBoard — 클러스터 대시보드 (Qt/QML, C++)

Qt Quick 3D 기반 클러스터 UI로, Bridge_App이 broadcast하는 JSON(TCP)을 구독해 렌더링합니다.

  • main.cpp : config.json(서버 IP/포트) 로드, QML 엔진 부트스트랩
  • tcpclient.{h,cpp} : newline-delimited JSON 스트림을 파싱해 telemetry/ADAS/차선/객체 신호로 분해
  • appcontroller.{h,cpp} : 오버레이 토글, 시나리오 리플레이, 알림 등 UI 상태 관리
  • laneribbonmesh.*, lanecorridormesh.* : 3D 차선 메시 커스텀 지오메트리
  • qml/components/ : 속도계·RPM 게이지, BEV 씬, 상단 상태바, 시나리오 선택/리플레이 UI 등

빌드:

qmake TOPST_DashBoard.pro
make

config.jsonserver_ip/server_portBridge_App--qt-host/--qt-port와 맞춰야 연결됩니다.

시작하기

  1. env_setup.sh로 개발 환경(ARM EABI 툴체인, tc-nn-toolkit 등) 설치
  2. Zonal-VCP를 빌드해 TCC70xx 보드에 플래시 (cd Zonal-VCP/build/tcc70xx/gcc && make, 플래싱은 Zonal-VCP/tools/fwdn_vcp)
  3. TOPST AI 보드에서 topst-nn-server 실행
  4. AP에서 Bridge_App/zonal_app.py 실행 (AI 보드/Qt/MCU 엔드포인트 지정)
  5. TOPST_DashBoard를 빌드해 클러스터 디스플레이에서 실행

라이선스

Zonal-VCP/FreeRTOS-VCP는 Telechips Inc.가 배포하는 Apache License 2.0 BSP를 포함합니다. 자세한 내용은 각 디렉터리의 LICENSE를 참고하세요.

About

TOPST 기반 Zonal E/E 아키텍처 교육 키트 — NPU 추론(AI보드) → AP 브리지 → Zone 컨트롤러(FreeRTOS/CAN) + Qt/QML 클러스터, dual-BEV 변환

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages