Skip to content

kngyeol/Project-SCV

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Project: SCV

SCV promotional poster composed from actual prototype photos

자연어 명령을 주행, 정렬과 조작 흐름으로 변환하는 이동형 AI 어시스턴트

항목 내용
기간 2026.03 - 2026.06
형태 SSAFY 팀 프로젝트
담당 Autonomous Driving, ROS2 Integration, LLM Drive Bridge, Runtime Tools
핵심 기술 ROS2, Nav2, C++, Python, OpenCV, IMU, EKF, Gazebo
공개 범위 공개용으로 재작성한 설명·다이어그램과 비식별화한 데모 미디어만 수록

목차

프로젝트 개요

SCV는 사용자의 자연어 요청을 이해하고, 필요한 위치로 이동한 뒤 비전 정렬과 로봇팔 작업을 이어서 수행하도록 설계한 이동형 로봇입니다.

한 문장의 요청이 여러 장치로 전달될 때 발생하는 충돌을 줄이기 위해 다음 단계를 분리했습니다.

  1. 자연어 의도와 작업 순서 계획
  2. 작업 명령을 실행 가능한 주행·정렬·조작 단위로 변환
  3. 여러 이동 명령의 우선순위와 취소를 한곳에서 중재
  4. ROS2 Navigation, Vision, Manipulation runtime으로 전달

프로토타입

SCV mobile robot prototype

실내 주행 플랫폼, 카메라, 로봇팔과 수납 공간을 하나의 이동형 시스템에 통합했습니다.

실제 로봇 주행 데모 보기

시스템 구조

SCV system architecture

주황색으로 표시한 영역이 제 담당 범위입니다.

  • LLM 결과를 ROS2 작업으로 변환하는 Drive Bridge
  • Nav2 기반 경로 계획과 주행 runtime
  • 이동 명령 충돌을 줄이는 중재 계층
  • 차체 명령, odometry와 IMU를 잇는 주행 인터페이스
  • 실기 실행과 진단을 반복하기 위한 runtime 도구

비전 정렬과 로봇팔 조작은 전체 시스템 흐름에 포함되지만, 이 저장소에서는 팀 공통 영역으로 구분합니다.

담당 작업

  • 자연어 작업 명령을 주행 동작으로 변환하는 ROS2 Bridge 설계·구현
  • Nav2와 실차 차체 사이의 속도 명령, 상태와 취소 흐름 통합
  • 다중 주행 요청을 중재하고 오래된 명령에서 안전하게 정지하는 runtime 구성
  • IMU와 odometry를 이용한 자세 추정 및 메카넘 주행 보정
  • 실차 기록을 시뮬레이션에 반영하는 real-to-sim 검증 환경 정리
  • 반복 실험을 위한 실행, 진단과 원격 제어 도구 구성

문제 해결 1 - 엔코더 입력 불량

SCV encoder debugging

현상

네 개 엔코더 채널 중 하나의 입력이 반복적으로 정상 값을 만들지 못했습니다. 처음에는 모터, 엔코더 배선 또는 드라이버 코드 문제를 모두 가능성으로 두었습니다.

분리 과정

  1. 엔코더 신호 전압을 직접 측정해 센서 출력 여부를 확인했습니다.
  2. 정상 채널과 문제 채널의 포트를 교차 연결했습니다.
  3. 문제가 모터나 엔코더를 따라가지 않고 특정 보드 입력 포트에 남는 것을 확인했습니다.

대응

프로젝트 일정 안에서 주행 검증을 이어가기 위해 네 모터 PWM 개방형 구동과 대체 odometry 경로를 구성했습니다. 이는 하드웨어 수리 전까지 통합 시험을 지속하기 위한 프로젝트용 fallback이며, 양산 수준의 폐루프 제어를 대신하는 해법으로 제시하지 않습니다.

문제 해결 2 - 메카넘 횡이동 Drift

SCV mecanum drift correction

현상

오른쪽으로 1.0m 횡이동하는 실차 시험에서 목표 축과 직교하는 body-x 방향으로 +0.17m 밀림을 관찰했습니다. heading 유지 만으로는 이 횡방향 결합 오차를 충분히 줄이기 어려웠습니다.

조치

  • 좌우 횡이동 방향별 feedforward 보정을 분리했습니다.
  • IMU와 EKF heading 보정을 함께 사용해 회전 오차가 누적되지 않도록 했습니다.
  • 실제 주행 기록을 rosbag과 시뮬레이션 입력으로 옮겨 반복 튜닝 비용을 낮췄습니다.

이 저장소는 측정된 보정 전 오차만 수치로 공개하며, 공개 가능한 동일 조건 로그가 없는 보정 후 잔차는 별도 수치로 주장하지 않습니다.

검증

SCV validation flow

실차에서 얻은 지도와 주행 기록을 시뮬레이션에 반영하고, 같은 명령 경로를 반복 실행했습니다. 최신 포트폴리오 기준으로 출발지에서 water 목적지까지의 SILS 경로 시험은 5/5였습니다.

5/5는 특정 시뮬레이션 조건의 SILS 결과이며 실차 주행 성공률이 아닙니다.

기술 스택

영역 기술
Robot Runtime ROS2, C++, Python
Navigation Nav2, AMCL, SLAM, MPPI
State Estimation Odometry, IMU, EKF
Vision Integration OpenCV, ROS2 image pipeline
Simulation & Validation Gazebo, rosbag, real-to-sim

공개 범위

SSAFY 팀 프로젝트의 소스 코드는 공개하지 않습니다. 내부 모듈명, 설정값, 자격 증명, 원본 Git 이력, rosbag과 세부 인터페이스 문서는 제외했습니다. 데모 사진과 영상은 사람, 화면과 음성을 제거하거나 포함하지 않는 장면만 선별했습니다.

자세한 기준은 NOTICE.md를 참고해 주세요.

About

Natural-language-driven ROS2 mobile robot project introduction

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors