JBR-001 오픈소스 3D 프린팅 데스크톱 로봇 개요
TL;DR
JBR-001은 Arduino UNO Q를 기반으로 제작된 완전 오픈소스 3D 프린팅 데스크톱 로봇입니다. 3개의 서보 모터, 카메라, 거리 센서, 부저, 8×13 비트맵 디스플레이를 갖추고 있어 취미 사용자가 엣지 AI, 컴퓨터 비전, 물리적 상호작용을 실험할 수 있습니다.
JBR-001이란 무엇인가?
JBR-001은 로봇 공학, 인식 기술, 엣지 AI의 신속한 프로토타이핑을 위해 설계된 소형 3D 프린팅 로봇 플랫폼입니다. 모든 기계 부품, 펌웨어, CAD 파일은 오픈소스 라이선스로 공개되어 있으며, 부품 명세서는 저렴한 기성품으로 구성됩니다:
- Arduino UNO Q (중앙 컨트롤러)
- 카메라 연결용 USB-C 허브
- 카메라 모듈 1개 (전방)
- Modulino 거리 센서 (후방)
- Modulino 부저 (오디오 피드백)
- 취미용 서보 모터 3개 (머리 및 양팔)
- 서보용 외부 5 V/2 A 전원 공급 장치
- GitHub에 호스팅된 전체 STL 파일
이 로봇은 사용자를 맞이하고, 심장 박동 애니메이션을 표시하며, 거리 센서로 물체를 감지하고, 온보드에서 컴퓨터 비전 모델을 실행할 수 있습니다.
핵심 아키텍처 및 배선
Arduino UNO Q는 모든 주변 장치를 구동하고 컴퓨터 비전 모델의 추론을 실행합니다. 주요 배선 규칙은 다음과 같습니다:
- 머리 서보 → 9번 핀
- 왼팔 서보 → 10번 핀
- 오른팔 서보 → 11번 핀
- 모든 서보 → 외부 5 V 전원 (UNO Q에서 직접 전원을 공급하지 마십시오)
- 외부 전원 접지 ↔ UNO Q 접지 (공통 기준)
- Modulino 거리 센서 및 부저 → UNO Q 핀 (배선도 참조)
- 카메라 → USB-C 허브 → UNO Q
중요: 서보 전원을 UNO Q에 직접 연결하면 전압 강하가 발생하여 동작이 불안정해질 수 있습니다. 항상 전용 전원을 사용하고 접지를 공유하십시오.
기계 조립
로봇 본체는 전자 부품과 서보를 수용하는 3D 프린팅 부품으로 구성됩니다. 조립 단계:
- 모든 STL 파일을 출력합니다.
- 머리 서보(수평 회전)와 팔 서보(수직 이동)를 설치하여 축 정렬을 확인합니다.
- 머리에 카메라를, 후면에 거리 센서를 장착합니다.
- 쉘을 닫기 전에 프린팅된 채널을 통해 케이블을 배선합니다.
- Arduino UNO Q를 고정하고 외부 전원을 연결합니다.
전체 조립 영상은 프로젝트 페이지에서 확인할 수 있습니다.
디스플레이 애니메이션 (심장 박동)
8×13 LED 매트릭스는 유휴 상태일 때 뛰는 심장을 보여줍니다. 두 개의 비트맵 배열(heartSmall 및 heartLarge)이 센서 읽기를 차단하지 않는 타이밍 상태 머신에서 렌더링됩니다:
unsigned long heartbeatTimer = 0;
int heartbeatStep = 0;
void heartbeat() {
unsigned long now = millis();
switch (heartbeatStep) {
case 0: matrix.renderBitmap(heartLarge,8,13); heartbeatTimer=now; heartbeatStep=1; break;
case 1: if (now-heartbeatTimer>=120) { matrix.renderBitmap(heartSmall,8,13); heartbeatTimer=now; heartbeatStep=2; }
case 2: if (now-heartbeatTimer>=100) { matrix.renderBitmap(heartLarge,8,13); heartbeatTimer=now; heartbeatStep=3; }
case 3: if (now-heartbeatTimer>=160) { matrix.renderBitmap(heartSmall,8,13); heartbeatTimer=now; heartbeatStep=4; }
case 4: if (now-heartbeatTimer>=700) { heartbeatStep=0; }
}
}
이 비차단(non-blocking) 설계를 통해 로봇은 거리 센서와 카메라를 동시에 모니터링할 수 있습니다.
부저를 이용한 오디오 피드백
거리 센서가 근처의 물체를 감지하면 4음계 멜로디가 친근한 인사말을 제공합니다:
void playHello() {
buzzer.tone(523,120); delay(150);
buzzer.tone(659,120); delay(150);
buzzer.tone(784,180); delay(210);
buzzer.tone(1047,250); delay(270);
}
개발자는 멜로디를 사용자 정의 톤 시퀀스로 교체하여 다양한 로봇 상태를 알릴 수 있습니다.
근접 감지
후방 거리 센서는 지속적으로 범위를 보고합니다. 일반적인 상호작용 패턴은 다음과 같습니다:
if (distanceSensor.available()) {
float d = distanceSensor.get();
if (d < DETECTION_DISTANCE && !objectDetected) {
objectDetected = true;
playHello();
}
if (d > RESET_DISTANCE) objectDetected = false;
}
DETECTION_DISTANCE와 RESET_DISTANCE를 조정하여 반응성을 튜닝하십시오.
서보 제어 가이드라인
서보는 표준 Servo.write(angle) 호출을 통해 구동됩니다. 권장 사항:
- 프린팅된 관절의 기계적 범위 내로 동작을 제한하십시오 (0-180° 전체 스윕은 피하십시오).
- 자연스러운 동작을 위해 작고 표현력이 풍부한 움직임(예: 10-30° 머리 회전)을 사용하십시오.
- 항상 외부 전원에서 서보에 전원을 공급하고 접지를 공통으로 유지하십시오.
엣지 AI: UNO Q에서 컴퓨터 비전 실행
카메라는 96×96(또는 유사한) 프레임을 Arduino UNO Q로 전송하며, 여기서 Edge Impulse로 생성된 모델이 추론을 수행합니다. 워크플로우는 다음과 같습니다:
- 데이터셋 획득 – VisionDatasets.com을 사용하여 합성 데이터셋(예: Arduino Modulino 이미지)을 다운로드합니다.
- Edge Impulse 가져오기 – 제공된 API 키를 통해 데이터셋을 직접 업로드합니다.
- 모델 학습 – 이미지 분류 임펄스를 구성합니다. Edge Impulse가 학습 및 검증을 처리합니다.
- 배포 – 모델을 C++ 라이브러리로 내보내고 JBR-001 펌웨어에 통합합니다.
- 추론 루프 – 프레임을 캡처하고
run_classifier()를 실행한 후 예측된 클래스에 따라 동작합니다.
따라서 로봇은 특정 물체(예: 다양한 Modulino)를 인식하고 머리 움직이기, 팔 올리기, 소리 재생, 디스플레이 변경과 같은 조정된 동작을 트리거할 수 있습니다.
응용 예시: Modulino 인식
저자들은 여러 Arduino Modulino 보드를 구별하도록 모델을 학습시켰습니다. 로봇 앞에 Modulino가 나타나면 다음 시퀀스가 발생합니다:
- 카메라가 이미지를 캡처합니다.
- Edge Impulse 모델이 Modulino 클래스를 예측합니다.
- 펌웨어가 클래스를 동작(예: 머리 회전 + 팔 올리기 + 비프음)에 매핑합니다.
데이터셋에 다양한 조명, 포즈, 배경이 포함되어 있으므로 모델은 실제 환경에서도 잘 작동합니다.
JBR-001 확장하기
이 플랫폼은 의도적으로 모듈식으로 설계되었습니다:
- 카메라 교체 – 더 높은 해상도나 적외선 카메라로 교체 가능.
- 센서 추가 – 여분의 UNO Q 핀에 연결하여 온도, IMU 등을 추가.
- 디스플레이 교체 – 더 큰 매트릭스나 OLED로 교체하여 더 풍부한 UI 구현.
- 새로운 모델 학습 – VisionDatasets.com이나 사용자 정의 이미지를 사용하여 모든 물체 세트에 대해 학습.
- 사용자 정의 동작 프로그래밍 – 동일한 비차단 루프 구조를 활용하여 Arduino IDE 또는 PlatformIO에서 프로그래밍.
커뮤니티 반응
Hacker News 스레드에서는 다음과 같은 사용자 관점이 강조되었습니다:
- 오픈소스 특성과 가족 친화적인 조립 경험에 대한 긍정적인 열광 (salamachinas의 댓글).
- UNO Q의 비용과 제한된 클론 가용성에 대한 우려 (mrheosuper).
- 상업화 추세를 언급하며 Otto DIY와 같은 초기 오픈소스 키트와의 비교 (phil42).
- 로봇의 미학 및 유용성에 대한 가벼운 언급 (shevy-java, krisoft).
이러한 의견들은 프로젝트의 교육적 가치와 하드웨어를 저렴하고 진정으로 오픈 상태로 유지하는 것의 중요성을 강조합니다.
결론
JBR-001은 저렴한 3D 프린팅 부품과 단일 Arduino UNO Q 보드로 완전한 기능을 갖춘 AI 지원 데스크톱 로봇을 만들 수 있음을 보여줍니다. 오픈소스 설계, 완전한 펌웨어 예제, 원활한 Edge Impulse 통합은 로봇 공학, 컴퓨터 비전, 엣지 AI를 배우기 위한 이상적인 샌드박스입니다.
Sources
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트