# Smart-Cart-5 제작 메모

## 먼저 알아둘 범위

이 파일은 실물 부품과 체결·배선 공간을 기준으로 구축한 프로토타입 조립체이다. V8에서 실측을 요구한 수치까지 확정한 제작 승인 도면은 아니다. 구매 전장품의 미확정 정격을 외관상의 라벨이나 블록 크기로 대신하지 않는다. 실제 조립은 치수 확정, 하중 검증, 전장 검증 순서로 진행해야 한다.

## 단순화한 차체

기성 900×600 카트 상판·종방향 프레임·손잡이를 유지한다는 구조이다. 전체 알루미늄 프로파일 외곽 프레임을 새로 만드는 안은 사용하지 않는다. 기존 전륜 110mm TPR 캐스터는 높이 보정대를 사이에 두고 남기며, 후륜은 MY1016Z와 17mm 보어 휠로 교체한다. 후륜에도 원본 SCMB와 별개인 높이 연결대를 사용한다.

배터리는 높이 167mm이므로 원래 카트의 미확정 상판 높이에 억지로 넣지 않았다. 현재 안의 상판 상면은 바닥에서 **310mm**, 배터리 바닥은 **84mm**, 배터리 트레이 최저점은 약 **79mm**이다. 상판 높이 310mm는 구매품 사양이 아니라 제작 제안이다. 휠 지름 200mm, 캐스터 장착면 높이 142mm, 원래 프레임 단면도 미확정이다. 전륜·후륜 높이와 실제 차체 수평을 먼저 맞추어야 한다.

배터리 고정부가 허공이나 얇은 상판에만 매달리지 않도록 두 개의 가로 보강대가 좌우 종프레임 하부에 접촉한다. 배터리 트레이의 연결봉과 중앙 전력 트레이 지지봉은 이 보강대를 통해 지지된다. 보강대와 원래 중공 프레임을 체결하는 위치에는 관통홀과 크러시 슬리브 외형을 추가했다. 그러나 원래 프레임의 실제 단면, 용접부, 내부 접근 가능성, 볼트 체결 길이, 국부 좌굴과 휨 검증은 남아 있다. 표시한 볼트 위치를 그대로 가공 승인 좌표로 사용하면 안 된다.

## 후륜과 모터 브라켓

`Motor-Bracket`의 SCMB 원본 솔리드 구성과 4개 비대칭 장착홀 좌표를 유지했다. 좌우품은 같은 가공품을 Z축으로 180도 회전한 것이며 거울상 가공품이 아니다. 원본의 축 기준 상면 높이 88mm, 외곽 148×88×130mm, 원본 보강 형상과 경량화 창을 유지한다. 원본 질량 약 0.615083kg은 원본 6061 밀도 기준 형상 계산값일 뿐 조립체 허용 하중이 아니다.

V8의 모터 몸통 Ø72와 원본 브라켓의 참고 모터 Ø102는 충돌한다. 본체에는 V8의 Ø72를 사용했고, 이 선택을 실측 해결로 처리하지 않았다. 모터 축의 베어링 허용 반경하중, 휠 오프셋, 키홈, 너트/축 고정 방식과 스페이서 두께 확인이 필수이다. Ø17 보어만 일치한다고 직접 구동 휠 결합이 완성되는 것은 아니다. 원본 브라켓 문서의 18kg 가정도 현재 카트의 검증된 총중량으로 옮기지 않았다.

## 전장 배치

두 납축전지 사이 중앙 트레이에 BTS7960 두 개, K1 접촉기, 서비스 커넥터, 분기 퓨즈, 분배 단자와 DC/DC 공간을 배치했다. 상부 후방의 탈착 플레이트에는 Pi 4B, RBP-002 계열 듀얼팬 케이스의 임시 외곽, 외부전원 USB 허브, ESP32, INA226과 제어 인터페이스 공간을 배치했다. 추가품은 모두 D/M이며 확정 구매 모델이 아니다.

12AWG 전력, 보조전원, USB, 논리 하네스, 비상정지 코일 회로와 전압 감시를 구분했다. 케이블은 선만 그린 것이 아니라 원형 단면을 실제 중심선에 스윕한 솔리드이다. 단자 출발과 도착, 외경, 모델 굴곡반경과 경로 길이는 동일한 연결 데이터에서 나온다. 18AWG를 USB 차동 신호선이나 모든 GPIO 단선의 실제 규격으로 가정하지 않는다.

후방에는 보호 부싱을 갖춘 60×30mm 배선홀 두 곳을, 전면에는 센서 전용 관통홀 세 곳을 추가했다. 전면 USB는 가로 프레임 아래를 뚫고 나가는 대신 프레임 앞의 지정된 홀로 올라온다. BU04 지지대 중앙에는 USB 굴곡 공간을 위한 개구부가 있다. 원래 차체에 없는 가공홀은 D 설계 제안으로 별도 표시했다. 탈착식 제어 커버의 케이블 출구는 실제 케이블과의 교차 위치를 바탕으로 절개했으며 `data/cover-cutouts.json`에서 확인한다.

손잡이 배선은 튜브 내부를 통과시키지 않고 외부 고정 밴드와 힌지 여유 루프를 사용한다. 제공 모델은 손잡이를 펼친 한 자세이며 접힘 전체 운동의 간섭을 검증한 것은 아니다. 접을 때 배선을 잡아당기거나 끼우지 않는지 실물에서 확인한다.

## 비상정지와 충전

손잡이의 래칭 NC 버튼이 K1 코일 경로를 끊고, 별도의 순간 RESET 및 K1 보조 NO 접점으로 수동 자기유지를 구성하는 안이다. E-stop 해제만으로 자동 재시작하지 않는다. 코일 억제 소자, DC 차단 정격, 접점 용착 대응, PWM 기본 차단과 정지거리는 미검증이다. 전원 차단을 즉시 제동 또는 안전 인증으로 간주하지 않는다.

현재 안에서는 Pi 전원도 K1 출력의 DC/DC 분기에서 공급된다. 따라서 비상정지 때 Pi가 강제 전원 차단될 수 있다. 읽기 전용 파일시스템, 상태 저장 정책 또는 별도 비상정지 비차단 로직 전원 계통 중 하나를 실제 설계에서 검토해야 한다. 구현되지 않은 전원 유지 기능을 있다고 가정하지 않는다.

서비스 커넥터는 OPEN 상태로 모델링했다. 두 외장 12V 충전기는 주행체 외장품이며, 배터리와 직렬 링크를 분리하고 충전기의 절연 조건을 확인한 뒤 개별 충전한다. 직렬 연결을 유지한 채 서로 절연되지 않은 충전기 두 개를 연결하는 방식은 제시하지 않는다.

## CAD 열기와 수정

FreeCAD에서는 먼저 `cad/Smart-Cart-5.FCStd`를 연다. 이 파일의 대상은 D5만이며 D4 원형이나 오래된 프로토타입 객체를 포함하지 않는다. 각 Part::Feature에는 실제 BREP 형상이 들어 있다. 문제가 있으면 `cad/Load-Smart-Cart-5.FCMacro`를 실행해 `cad/assembly-manifest.json`을 선택한다. 매크로는 동일 BREP를 새 문서에 넣고 전체 맞춤을 호출한다. 원본을 덮어쓰지 않고 다른 이름으로 저장한다.

SolidWorks 등에서는 `cad/Smart-Cart-5.step`을 mm 단위로 가져온다. 이 STEP은 제조용 솔리드 형식을 사용하지만, 그 사실이 모델의 D/M 치수를 제조 승인한다는 뜻은 아니다. 원본 브라켓 단품은 따로 제공한다. FCStd는 PartDesign/Sketcher의 원래 피처 이력 문서가 아닌 솔리드 스냅샷이다.

재생성 환경에는 `requirements-cad.txt`의 CadQuery를 설치한다.

```sh
python -m pip install -r requirements-cad.txt
python tools/build_release.py
python tools/package_fcstd.py
```

`data/parameters.json`과 `tools/build_model.py`의 관련 배치·배선을 함께 수정한다. JSON에 등장하는 모든 좌표가 전체 배선과 고정부까지 자동으로 재최적화되는 것은 아니다. `build_release.py`는 등록된 주요 고체에 대한 배선 교차나 모델 최소 굴곡 위반이 있으면 내보내기를 중지한다. 실제 치수 변경 후에는 기존 검증 결과를 재사용하지 않는다.
