팔레타이징 자동화 시스템
인쇄·출판 공정에서 스태커로 모인 책(인쇄물)을 로봇이 팔레트에 적재하는 산업 자동화 시스템입니다. 작업자가 UI에서 팔레트 종류·치수·모드를 선택하면, 선택 조건에 따라 로봇 적재 동작을 실행하고 진행 상태를 확인할 수 있도록 구성했습니다.
- •기간: 2024년 1월 ~ 2025년 2월
- •플랫폼: Desktop (pywebview 기반 로컬 앱)
- •납품처: 인쇄·출판 기업
담당 역할
장비 제어 백엔드와 운영 UI 개발에 참여했습니다. 로봇 적재 시퀀스, 팔레트 타입별 분기, 스태커/그리퍼 제어 API를 구현했고, 실행 중 재시작 상황을 고려해 진행 상태를 JSON 파일로 저장하도록 구성했습니다.
- •팔레트 타입별 좌표값 계산 및 적재 시퀀스 분기
- •일반 / 1열 적재 모드 분리 운영
- •스태커·그리퍼·동력장치 IO 제어 (Modbus RTU + 로봇 IO)
- •센서·로봇 상태에 따른 동력장치 및 경광등 제어
- •진행 상태 JSON 영속화 (재기동 시 작업 재개)
기술 스택
| 분류 | 기술 |
| Backend | Python, Flask (Blueprint), Waitress |
| Desktop App | pywebview (로컬 웹 UI 앱 구동) |
| Robot Control | JAKA Robot SDK (jkrc) |
| 설비 통신 | Modbus RTU (minimalmodbus, pyserial) |
| Frontend | HTML, CSS, Vanilla JavaScript (fetch API) |
| 데이터 / 운영 | JSON 기반 상태 캐시 (cache.json, oneLine.json), 파일 로그 |
| 동시성 | threading (스태커 구동 스레드 + 상태 모니터링 루프) |
핵심 기능
팔레트 타입별 운전
목재 바퀴형 / 철제 바퀴형 / 목재 평판형 팔레트를 선택하고, 치수(가로·세로·높이)를 입력하면 해당 값에 맞춰 로봇 사용자 좌표계와 적재 시퀀스를 분기합니다.
일반 / 1열 적재 모드
연속 적재(Normal) 모드와 특정 라인 중심 적재(One-line) 모드를 분리했습니다. 각 모드의 진행 상태를 cache.json·oneLine.json에 나눠 저장해 재시작 후에도 이전 진행 값을 참고할 수 있도록 했습니다.
로봇 동작 자동화
수직/수평 그리퍼 IO 제어로 책을 집고, 레이어별 적재 위치로 이동한 뒤 홈으로 복귀하는 흐름을 구현했습니다. 적재 높이와 최대 높이 조건을 확인해 다음 동작 여부를 판단하도록 처리했습니다.
스태커 · 주변장치 제어
스태커 시작/정지, 상하·좌우 실린더 수동 제어 API를 제공해 작업자가 현장 상황에 맞춰 개입할 수 있도록 했습니다. Modbus RTU와 로봇 디지털 IO를 사용해 실린더·동력장치·경광등 제어를 처리했습니다.
상태 확인 및 장비 제어
센서 상태, 로봇 보호정지 여부, 최대 높이 근접 여부를 확인해 동력장치와 경광등(초록/주황/빨강)을 분기 제어했습니다. 작업자가 현재 상태를 파악하고 필요한 경우 정지·수동 조작을 할 수 있도록 운영 화면과 API를 구성했습니다.
운영 편의 기능
즉시 집기, 작업 종료, 데이터 리셋, 파일 로그, 진행 화면 실시간 갱신 등 현장 작업자가 자주 쓰는 기능을 UI로 노출했습니다.
성과
- •인쇄·출판 현장에 자동 팔레타이징 장비 1대 납품 프로젝트 참여
- •팔레트 타입별 운전, 모드 분리, 수동 개입 등 현장 요구를 운영 UI와 제어 API에 반영
- •진행 상태 저장 구조를 적용해 프로그램 재시작 후에도 이전 작업 상태를 참고할 수 있도록 개선