프로젝트 / RECORD
포트폴리오 선정카메라와 제어 화면을 연결한 휠체어 라인트레이싱
실물 휠체어에 영상 입력·경로 화면·제어부를 통합해 주행 시험을 진행한 작업.
작업 기록 · 2023.02–2023.03 · 2024.07–2025.11 (자료 기준)
카메라로 경로를 읽고 휠체어의 좌우 구동으로 연결하는 라인트레이싱 시스템을 개발했다. 영상 처리와 제어 화면, 구동 명령, 전자부와 실제 장치 시험을 함께 다뤘다. 센서 입력을 시각화하는 단계에서 이동 장치의 제어로 연결하는 단계까지 진행한 시스템 통합 프로젝트다.
주행 검토에 사용한 전동 휠체어
카메라·화면·구동부를 연결한 구성
시스템은 카메라 영상을 받는 부분, 경로를 해석하는 부분, 좌우 모터에 명령을 보내는 부분으로 구성했다. 화면에서는 카메라 영상과 조작부를 함께 보여주도록 만들었다. 사용자가 실제 영상을 보면서 이동을 조작하거나 경로 추종 상태를 살펴볼 수 있는 구조다.
데스크톱 클라이언트는 PySide6로 구성하고, 카메라 스트림과 기존 장치 제어 인터페이스를 연결했다. 두 카메라 영상을 큰 화면과 작은 화면으로 배치하고 서로 전환하는 기능도 다뤘다. 영상의 표시 위치를 바꾸는 처리와 실제 카메라 입력을 연결하는 처리를 구분했다.
영상 수신은 별도 작업으로 구성해 연속된 JPEG 프레임을 읽고 화면에 전달했다. 카메라에서 프레임을 받는 처리와 화면의 조작·제어 갱신이 각각 진행되는 구조다. 두 영상의 크기와 위치를 바꿀 때도 원본 비율을 유지해 표시하도록 다뤘다.
카메라 영상과 경로를 표시하는 제어 화면
색상 경로를 읽고 화면에 표시하기
영상 처리에서는 색상과 밝기 정보를 이용해 배경을 줄이고 경로 후보를 찾았다. 빨강·노랑·파랑 계열을 구분한 뒤, 길게 이어지는 후보의 방향과 중심을 계산해 영상 위에 표시했다. 화면에 그려지는 선은 이후 제어에 사용할 경로 정보를 보여주는 요소다.
색상 구분에서는 HSV 정보와 Lab 색상 정보를 함께 사용했다. 한 가지 색상 조건만으로 판단하기 어려운 후보에는 보조 기준을 적용하고, 이전 프레임의 분류도 참고하도록 구성했다. 경로 후보를 찾는 과정과 후보의 색을 구분하는 과정을 나눠 다룬 것이다.
찾은 영역에서는 길게 이어지는 방향을 계산해 중앙선을 표시하고, 색상별 후보 가운데 가장 긴 경로의 중심을 추종에 사용했다. 영상 전체에서 무엇을 검출했는지와 실제로 어떤 경로를 제어에 사용하는지 구분할 수 있도록 구성했다.
경로의 중심 위치는 화면 크기와 분리해 다루도록 정규화했다. 창의 크기나 영상 표시 위치가 바뀌어도 제어에서 사용하는 위치 정보가 같은 기준을 갖도록 한 것이다. 인식 결과의 색상과 위치, 최근에 확인한 시점도 함께 관리했다.
휠체어에 장착한 구동·제어 전자부
경로의 좌우 오차를 이동 명령으로
선택한 경로가 영상의 중앙에서 어느 쪽으로 벗어났는지를 좌우 구동 명령에 반영했다. 전진·후진 방향과 속도 상한을 함께 다루고, 좌우 출력 차이로 조향하도록 구성했다. 경로 검출과 구동 명령의 연결을 한 제어 흐름으로 만든 부분이다.
출력은 목표값으로 한 번에 바꾸는 대신 현재 명령과 목표 명령 사이를 단계적으로 갱신했다. 경로 정보가 오래 갱신되지 않거나 추종 입력을 놓으면 정지 명령을 보내도록 처리했다. 영상 처리 결과가 없는데 이전 명령을 계속 사용하는 상태를 제어 흐름에서 구분한 것이다.
수동 조작과 상태 확인
조이스틱 조작도 좌우 모터 명령으로 변환했다. 사용자가 드래그하는 동안 명령을 주기적으로 보내고, 손을 떼면 정지 요청을 보내도록 구성했다. 화면에는 비상정지와 최대 속도 설정도 함께 배치했다.
조이스틱의 전후 입력과 좌우 입력은 선속도·조향 성분으로 나눠 좌우 바퀴 명령으로 조합했다. 작은 입력의 흔들림을 처리하는 영역과 출력 상한도 함께 적용했다. 화면에서 움직인 방향을 실제 좌우 구동의 차이로 옮기는 처리다.
이처럼 경로 추종과 수동 조작은 입력 방식이 다르지만 같은 구동 인터페이스를 사용한다. 영상 처리, 화면 입력, 구동 명령을 나눠 구성해 서로 다른 조작 흐름을 실제 휠체어 제어에 연결했다.
실물 장치와 주행 시험으로 이어가기
카메라와 전자부를 실제 휠체어에 장착하고, 경로 화면과 움직이는 장치를 함께 확인하며 개발을 이어 갔다. 전체 휠체어, 화면, 내부 전자부 사진은 각각 이동 구조와 사용자 인터페이스, 하드웨어 연결을 보여준다.
직접 맡은 범위는 영상 처리와 제어·표시 프로그램, 전자부와 장치 통합·시험이다. 코드에 구현한 제어 흐름을 실제 이동 장치의 구성으로 옮긴 사례다. 별도로 제작한 배터리 모니터링 IoT 기판은 다른 프로젝트로 정리했다.