TOPST 기반 Zonal E/E 아키텍처 교육 키트. 카메라 영상을 AI 보드에서 추론하고, 그 결과를 Zone 컨트롤러(MCU)와 클러스터 디스플레이(AP)로 각각 분배해 실제 축소 차량을 제어·시각화하는 전체 파이프라인을 다룹니다.
이 저장소는 하나의 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 등). |
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 AI 보드 위에서 카메라/영상 프레임을 받아 NPU로 차선·객체 인식을 수행하고, 결과를 JSON으로 스트리밍하는 C 애플리케이션입니다. Bridge_App이 영상 입력(TCP :9999)과 결과 출력(TCP :9998)의 클라이언트 역할을 합니다.
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-enableQt 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
makeconfig.json의 server_ip/server_port를 Bridge_App의 --qt-host/--qt-port와 맞춰야 연결됩니다.
env_setup.sh로 개발 환경(ARM EABI 툴체인, tc-nn-toolkit 등) 설치Zonal-VCP를 빌드해 TCC70xx 보드에 플래시 (cd Zonal-VCP/build/tcc70xx/gcc && make, 플래싱은Zonal-VCP/tools/fwdn_vcp)- TOPST AI 보드에서
topst-nn-server실행 - AP에서
Bridge_App/zonal_app.py실행 (AI 보드/Qt/MCU 엔드포인트 지정) TOPST_DashBoard를 빌드해 클러스터 디스플레이에서 실행
Zonal-VCP/FreeRTOS-VCP는 Telechips Inc.가 배포하는 Apache License 2.0 BSP를 포함합니다. 자세한 내용은 각 디렉터리의 LICENSE를 참고하세요.
