TECH 으로 돌아가기
TECH HACKER NEWS 7분 읽기 27 READS

64MB RAM 로크칩 RV1103로 만든 스테레오 비전 보드, 하드웨어 해커의 실험

64MB RAM 로크칩 RV1103로 만든 스테레오 비전 보드, 하드웨어 해커의 실험
SOURCE IMAGE · HACKER NEWS

로봇에게 '눈'을 달아주는 일은 생각보다 비싸고 복잡하다. 깊이(depth)를 인식하려면 보통 전용 센서나 꽤 강력한 연산 장치가 필요하기 때문이다. 한 개발자가 로크칩(Rockchip)의 저가 마이크로프로세서 RV1103을 활용해 저렴하고 단순한 스테레오 비전 보드를 직접 설계하고 공개했다. 이 글은 전적으로 사람이 쓴 개인 프로젝트 기록으로, 상용 제품 발표가 아니라 '칩 하나에 꽂혀서' 만들어 본 결과물에 가깝다. 하지만 그 과정에는 임베디드 리눅스와 영상 처리를 다루는 실무자가 참고할 만한 구체적인 설계 판단이 담겨 있다.

핵심 부품인 RV1103은 1.1GHz 단일 코어 ARM Cortex-A7 기반 SoC다. 64MB DDR2 메모리와 MIPI CSI-2 카메라 버스를 QFN-88 패키지 하나에 통합했다. 사양만 보면 요즘 기준으로는 소박하지만, 카메라 인터페이스와 리눅스 구동 능력, 그리고 뒤에서 설명할 하드웨어 가속기를 한 칩에 담았다는 점이 이 프로젝트의 출발점이 됐다. 개발자는 이 칩으로 4층 PCB를 제작했는데, 상단 레이어에 USB·MIPI·이더넷 같은 임피던스 제어가 필요한 신호를 배치하고, 내부 한 층을 통짜 그라운드로 쓰는 전형적인 신호 무결성 중심의 적층 구성을 택했다. 첫 제작에서 대부분 맞췄지만 몇 가지 수정할 부분이 있었다고 한다.

리눅스를 올리는 과정

보드를 '컴퓨터'로 만들기 위해 개발자는 빌드루트(Buildroot)를 사용했다. 빌드루트는 부트로더, 커널, 드라이버를 묶어 sdcard.img 하나로 만들어 주고, 이를 SD카드에 구워 보드에 꽂으면 바로 부팅된다. 문제는 필요한 요소가 모두 업스트림(upstream) 리눅스에 있지는 않다는 점이다. 로크칩의 MIPI 드라이버와 하드웨어 가속기 등 핵심 구성요소는 벤더 BSP(보드 지원 패키지)에서 가져와야 했고, 빌드루트의 아웃오브트리(out-of-tree) 커널 지원 기능으로 이를 통합했다. 이는 중국계 SoC로 임베디드 리눅스를 다룰 때 흔히 마주치는 현실적인 제약으로, 완전한 오픈소스 스택만으로는 하드웨어의 모든 기능을 쓸 수 없는 경우가 많다.

부팅이 끝난 뒤에는 시리얼 포트로 셸에 접근했고, 이후 USB-C 포트를 이더넷 어댑터처럼 활용해 SSH로 넘어갔다. 카메라 영상은 리눅스 표준 영상 계층인 Video4Linux2(V4L2)를 통해 /dev/videoX 노드로 노출된다. 카메라 한 대당 무려 11개의 비디오 노드가 생기며, 노출 같은 제어는 /dev/v4l-subdevX 노드로 이뤄진다. 이 구조의 장점은 추상화다. 상위 사용자 애플리케이션은 V4L2가 만든 노드만 상대하면 되고, 어떤 카메라(여기서는 OV9281) 명령어를 써야 하는지, 어떤 SoC 위에서 도는지는 하위 드라이버가 책임진다. 응용 개발자가 하드웨어 세부사항에서 분리될 수 있다는 뜻이다.

깊이를 계산하는 SAD 엔진

이 보드의 진짜 무기는 로크칩 '비디오 엔진' 안에 들어 있는 SAD(Sum of Absolute Differences) 가속기다. /dev/rve 노드와 독점 라이브러리 librve.a를 통해 접근하며, SoC 자체에서 하드웨어로 동작한다. SAD는 두 흑백 이미지를 0~255 값의 행렬로 보고, 대응하는 픽셀 값 차이의 절댓값을 모두 더해 두 영상 조각(패치)이 얼마나 비슷한지를 수치화하는 방식이다. 이미지를 작은 패치로 잘게 쪼개 전 영역에서 이 계산을 수행하면, 어느 부분이 서로 일치하고 어느 부분이 다른지를 판별할 수 있다.

스테레오 블록 매칭은 이 원리를 깊이 측정에 적용한다. 수평으로 일정 거리(베이스라인)만큼 떨어진 두 카메라에서 들어온 영상 중 하나를 고정하고, 다른 하나를 조금씩 옆으로 밀면서 일치하는 블록을 찾는다. 블록이 맞아떨어지는 순간의 이동량이 곧 깊이값이 된다. 아주 조금만 밀어도 일치하면 멀리 있는 물체이고, 많이 밀어야 일치하면 가까운 물체다. 이 반복적인 비교 연산을 CPU가 아니라 전용 하드웨어 블록이 처리하기 때문에, 저사양 단일 코어 칩으로도 깊이 영상을 실시간에 가깝게 뽑아낼 수 있다는 점이 이 설계의 핵심 아이디어다.

실무적으로 이 보드는 장애물 회피나 내비게이션이 필요한 아두이노 기반 로봇에 시리얼로 깊이 데이터를 넘겨주는 보조 두뇌로 쓰거나, 리눅스 보드로 단독 사용하는 두 가지 쓰임을 상정하고 있다. 즉 깊이 인식이라는 무거운 작업을 전담하는 모듈을 저렴하게 붙일 수 있다는 가능성을 보여준다. 다만 한계도 분명하다. 핵심 영상 엔진이 공개 소스가 아닌 독점 바이너리(librve.a)와 벤더 BSP에 의존하므로, 완전한 오픈소스 스택을 원하거나 가속기 동작을 깊이 커스터마이징하려는 경우에는 제약이 따른다. SAD 기반 블록 매칭 자체도 질감이 없는 평평한 면이나 반복 패턴에서는 매칭 실패에 취약한 고전적 기법이다.

개발자는 이 보드를 소량 판매하며 피드백을 받고 싶다고 밝혔다. 이메일 알림 신청자가 20명을 넘으면 수정 사항을 반영한 10대를 추가 제작해 판매하겠다는 조건을 달았는데, 이는 사전 주문이 아니라 수요를 가늠하기 위한 관심 표명 절차다. 충분한 호응이 모이면 다음 단계로 소프트웨어 정리, 영상 최적화, 그리고 SLAM과 YOLO 구현을 계획하고 있다. 아직은 한 사람의 실험 단계지만, 저가 SoC의 하드웨어 가속기를 끝까지 활용해 비용 장벽을 낮추려는 접근은 임베디드 비전을 고민하는 이들에게 참고할 만한 사례다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://rootkitlabs.com/2026/10/06/i-built-a-stereo-vision-b...
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...