AI 기반으로 차량의 위험 상황을 실시간 분석하고, 사고 전후의 맥락을 함께 저장하는 지능형 블랙박스 시스템입니다. 단순한 영상 기록을 넘어, 차량 센서 데이터(CAN)와 AI 모델 분석을 결합해 위험도 기반의 이벤트 감지를 수행합니다.
기존 블랙박스는 사고가 난 이후의 영상만 기록하기 때문에, 사고 이전의 위험 징후나 차량 상태를 분석하기 어렵다는 한계가 있습니다.
이 프로젝트는 이러한 문제를 해결하기 위해 AI 기반 위험도 판단 및 사고 전후 맥락 분석이 가능한 블랙박스를 구현합니다.
이 프로젝트는 이러한 요구사항을 모두 충족합니다.
| 구성 요소 | 설명 |
|---|---|
| Raspberry Pi 5 | 메인 컨트롤러, 영상 수집 및 전처리 |
| Hailo-8 | AI 추론 가속기 (PETR 모델 구동) |
| CAN 모듈 | 차량 상태 데이터 수집 (속도, 브레이크 등) |
| CARLA | 시뮬레이터 가상 도로 환경에서의 테스트 |
| Yocto / AGL | 임베디드 환경 기반 OS 및 런타임 구성 |
Carla의 핵심 기능
CAN(Controller Area Network) 통신은 자동차, 산업 자동화 등에서 널리 사용되는 네트워크 프로토콜입니다.
표준 PID 참고 URL : https://en.wikipedia.org/wiki/OBD-II_PIDs
본 프로젝트에서의 커스텀 PID를 이용한 CAN 통신
- Multi-view 이미지를 Backbone을 통해 2D Feature 추출
- 3D Meshigrid 형태의 Camera Frustum Sace 생성
- Frustum을 이용하여 3D World Space Coordinate 로 변환
- 3D Position Encoder에서 3D Position Aware Feature 추출
- Object Query 와 Cross-Attention
- 최종결과(3D box + class) 예측
Yocto Project는 임베디드 소프트웨어 개발을 위한 도구 체인을 제공하는 프로젝트로, 개발자들이 하드웨어에 최적화된 Linux 배포판을 쉽게 만들 수 있도록 설계되었습니다.
| 섹션 | 하위 요소 | 설명 |
|---|---|---|
| 왼쪽: 입력 및 구성 요소 | User Configuration (사용자 구성) | - Metadata (.bb + patches): 레시피 파일과 패치. - Machine BSP Configuration: 타겟 하드웨어 설정. - Policy Configuration: 정책 설정 (컴파일 옵션 등). |
| Source Materials (소스 자료) | - Source Fetching: 소스 가져오기 (Upstream, Local, SCMs [optional]). - Patch Application: 패치 적용. - Configure / Compile / Autoconf as needed: 구성, 컴파일, Autoconf 실행. |
|
| 중앙: 빌드 시스템 | Output Analysis for Package Splitting plus relationships | 패키지 분할과 관계 분석 (컴파일 결과 분할 및 의존성 분석). |
| .deb generation, .rpm generation, .ipk generation | 패키지 생성 (Debian, RPM, IPK 형식). | |
| QA Tests | 품질 보증 테스트 (오류 및 호환성 검사). | |
| 오른쪽: 출력 | Package Feeds (패키지 피드) | - Image Generation: 시스템 이미지 생성. - SDK Generation: SDK 생성. |
| 최종 출력 | - Application Images: 애플리케이션 이미지. - Application Development SDK: 개발 SDK. |
-동작 원리
- 소스 자료 수집: 업스트림 소스, 로컬 프로젝트, SCM(Git 등)에서 소스를 가져옵니다.
- 사용자 구성: local.conf, bblayers.conf 등으로 머신, 배포판, 레이어를 설정
- 빌드 실행: BitBake가 레시피를 처리하여 패치 적용, 컴파일, 패키지 생성
- 출력 생성: RPM, DEB, IPK 등의 패키지 피드, 이미지 파일, SDK를 생성
- 오류 처리와 QA: 빌드 중 QA 테스트를 수행
| 항목 | 내용 |
|---|---|
| 보드 | RaspBerryPi5 |
| AI 가속기 | Hailo-8 |
| 운영체제 | Ubuntu / Yocto 기반 Linux |
| 언어 | Python 3.8 / C |
| AI 프레임워크 | Pytorch / ONNX Runtime / Hailo SDK |
| 비전 프레임워크 | OpenCV / GStreamer |
| 시뮬레이터 | Carla |
- submodule 다운로드
$ git submodule update --init --recursive- 크로스 컴파일용 라이브러리 설치
- ARM64 아키텍처 추가
$ sudo dpkg --add-architecture arm64- /etc/apt/sources.list 파일 수정
$ sudo vi /etc/apt/sources.list- ARM용 저장소 주소 추가
# ARM64 아키텍처를 위한 Ubuntu Ports 저장소
$ deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports jammy main restricted universe multiverse
$ deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports jammy-updates main restricted universe multiverse
$ deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports jammy-backports main restricted universe multiverse
$ deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports jammy-security main restricted universe multiverse- ARM64용 패키지를 다운로드
$ sudo apt update- ARM용 GStreamer 개발 라이브러리 설치
$ sudo apt install -y libgstreamer1.0-dev:arm64 libgstreamer-plugins-base1.0-dev:arm64$ cd blackbox- x86 빌드
$ make- arm 빌드
$ make cross- arm 빌드 및 타겟 보드로 전송(scp)
$ make deploy PI_USER=(USER_NAME) PI_IP=(USER_PASSWORD)$ git clone https://github.com/~
$ cd ~- python3.8
- requirements.txt
- hailo SDK
- python3.8 의존성 설치
$ sudo apt update
$ sudo apt install -y build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev curl git libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev- pyenv 설치
$ curl https://pyenv.run | bash- vi ~/.bashrc 변경
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
exec $SHELL- python3.8 설치 & 적용
$ pyenv install 3.8.0
$ pyenv version
$ pyenv global 3.8.0- requirements 설치
$ sudo apt update && sudo apt full-upgrade -y
$ sudo raspi-config # Interface Options > PCIe > Enable
$ sudo reboot#가상환경 접속 후
$ pip install -r requirements.txt- hailo SDK 설치
$ sudo dpkg -i hailort_<version>_<architecture>.deb
$ sudo dpkg -i hailort-pcie-driver_<version>_all.deb$ tar xzf hailo-rt-sdk-4.20.0-rpi.tar.gz
$ cd hailo-rt-sdk-4.20.0-rpi # 또는 실제 디렉토리
$ ./install.sh$ python3.8 -m venv hailo_env
$ source hailo_env/bin/activate
$ pip install hailort-4.20.0-cp38-cp38-linux_aarch64.whl- SDK 설치 후 확인
$ dpkg -l | grep hailo
$ hailortcli fw-control identify- 의존성 오류 시
$ sudo apt --fix-broken install$ python vision_server.py.
├── README.md
│
└── blackbox
└── event6
추가 바람| 이름 | 담당 |
|---|---|
| 강송구 | PM / APP / HW |
| 김기환 | APP / Carla |
| 김민성 | Yocto |
| 이두현 | Gstream / AI / Carla |
| 정찬영 | AI / HW / 3D printing |