/ PROJECT

VANGUARD-DT

RC카 기반 임베디드 제어와 MQTT 연동 프로젝트

0. 프로젝트 소개

VANGUARD-DT 소개 영상

VANGUARD-DT GitHub

1. 프로젝트 개요

  • RC카 기반 시스템을 직접 구성하며 임베디드 제어와 통신 구조를 경험한 프로젝트
  • 상위 시스템과의 연동을 위해 MQTT 통신 적용
  • Qt를 활용해 제어 및 상태 확인용 인터페이스 구성
  • STM32 NUCLEO-F103RB로 모터와 서보 1개 제어
VANGUARD-DT 프로젝트 개요 이미지

주요 개발 내용

STM32 제어

  • STM32CubeIDE를 사용하여 PWM 기반 DC 모터 제어
  • UART 기반 명령 수신

통신 및 UI

  • MQTT 기반 메시지 송수신
  • Qt GUI 상태 확인 UI 구성

2. 나의 역할

STM32 제어

  • STM32를 이용한 모터 제어를 처음으로 구현
  • STM32CubeIDE를 처음 사용하며 .ioc 설정과 핀 구성을 직접 진행
  • PWM을 이용한 DC 모터 속도 제어
  • 서보모터 1개 제어 로직 구현
  • UART를 통해 외부 명령을 수신하고 제어에 반영

통신

  • MQTT 통신 구조 적용
  • 상위 시스템과 메시지를 주고받는 기본 송수신 로직 구현

UI

  • Qt를 활용한 제어 UI 구성
  • 시스템 상태를 확인하고 명령을 입력할 수 있는 기본 인터페이스 구현

3. 트러블슈팅

1) STM32 기반 모터/서보 제어

문제

라즈베리파이와 ST 보드가 UART로 주고받는 데이터 형식을 정확히 맞추지 못해, 서보가 의도와 다르게 움직이는 문제가 발생

원인 분석

  • UART 통신 자체 문제인지 수신값 해석 문제인지 분리해 점검
  • 송신 값 형식과 수신 값의 순서/범위를 비교하며 확인
  • 고정값 서보 테스트와 UART 수신 테스트를 분리해 원인 특정

해결

  • 라즈베리파이와 STM32 간 명령 형식을 단순화해 정리
  • UART 수신 값을 범위 제한 후 제어 로직에 반영하도록 수정
  • 통신과 제어를 분리 디버깅해 외부 명령 기반 서보 동작 안정화

2) MQTT

문제

ROS와 MQTT 사이에서 어떤 데이터를 어떤 흐름으로 주고받아야 하는지 구조가 명확하지 않아 메시지 연동 과정이 혼란스러웠음

원인 분석

  • ROS 토픽 흐름과 MQTT 브로커 메시지 흐름의 구조 차이 존재
  • UI/MQTT/제어 로직이 동시에 연결되어 장애 지점 파악이 어려움

해결

  • ROS → MQTT → UI/제어 로직 순으로 데이터 흐름 단순화
  • 송신/수신 메시지 역할을 분리하고 topic별로 구분
  • MQTT 단독 송수신 테스트 후 ROS 연동으로 단계별 검증
  • 상태 확인과 명령 전달이 가능한 기본 통신 구조 구현