Robot_Arm(한이음_프로젝트)

Raccoon·2024년 6월 17일

개요

한이음 팀프로젝트
팀 프로젝트 - 5인 개발
기간 22년 03월 ~ 22년 11월
SW총괄 담당

프로젝트 배경

21년 기준 한국전기안전공사의 통계에 따르면 16~20년 사이 전기 감전사고 사상자는 총 2509명, 사망자는 94명인데 대부분이 산업재해 사상자가 차지하였습니다.
현장에서 작업자는 위험요소에 항상 대면하고 있으며 작업시 무거운 장비로 인하여 근골격계 질환에 취약하다는 점이 있습니다.
해당 문제를 해결하기 위해 동작을 감지하는 웨어러블을 착용하고 현장의 실시간 영상을 보며 작업할 수 있는 원격 제어 로봇을 개발, 사용자와 위험요소를 이격시켜 사고 발생 위험을 사전에 차단할 수 있으면 좋겠다는 생각을 하여 시작하게 되었습니다.

실제로 건설 현장과 같은 작업 현장에서의 로봇 투입이 활발해지면서 웨어러블 로봇에 대한 투자가 많아지고 있습니다.(현대 로템등 산업용 근력 증강 로봇)

요구 기능

작업자의 안전을 위한 웨어러블 로봇을 개발하기 이전에 어떠한 기능들이 있는지 먼저
정의하고 구체화하고 기록한 후 작업을 시작하였습니다.
다음은 초기 기능 요구 입니다.
원거리 작업을 위한 원격제어 기능, 정밀도 향상을 위한 악력 측정 기능,
위치/높이를 조절 할 수 있는 기능, 로봇의 상태를 측정하고 현장을 기록할 수 있는 기능, 등을

요구사항 정의서

유즈케이스

간단한 유즈케이스를 작성하였습니다

유즈케이스

기능처리도 및 메뉴 구성도

기능처리도 및 메뉴 구성도

서비스 구성도

다음은 서비스 구성도를 작성하였습니다.

H/W 구성도
  • 웨어러블, 로봇 각각 Jetson Nano 한 대씩을 배정하여 상호통신/서버 연결 및 Arduino에서 받은 RAW DATA 전처리 및 연산을 담당합니다.

  • 다양한 센서, 모터 등을 일차적으로 제어하기 위한 Arduino를 장착하여 자이로, 서보모터 등등 여러 가지 부품을 제어합니다.

  • 현장 상황 영상을 촬영해줄 카메라와 사용자가 직접 영상을 제공 받을 수 있는 스마트폰을 부착합니다.

  • 진동과 온도를 감지하여 로봇 관절 모터의 결함을 실시간으로 확인 가능하게 합니다.

S/W 구성도
  • 서버: AWS, 웹 프레임워크 : Flask, 배포 : Amazon EC2, DBMS : mySql

  • ArduinoIDE를 통해 센서 및 모터 전체적인 하드웨어 부품들을 일차적으로 제어

  • Arduino의 RAW DATA를 Topic으로 ROS에 송/수신, Python에서 전체적인 연산을 맡아 전처리 후 Jetson간 WIFI통신을 통하여 상호 연결

서비스 흐름도
  • 원격 제어: 사용자 동작을 센서로 감지하여 데이터 전송, 사용자가 위험한 현장과 떨어져 작업을 할 수 있도록 지원

    데이터 이동 경로 : 센서 -> Arduino -> JetsonNano -> Arduino -> 모터
  • 악력 감지 : 원격으로 작업하므로 정밀도를 높이기 위해 악력 측정기능을 지원, 로봇 손에 압력 센서 부착 후 로봇이 물체를 집을 때 측정되는 힘을 일부 사용자에게 모터로 전달

    데이터 이동 경로 : 압력 센서 -> Arduino -> JetsonNano -> Arduino -> 모터
  • 결함 측정 : 작업 도중 부하가 걸릴 가능성이 높은 환경이니만큼 실시간으로 로봇의 결함을 진단할 수 있는 시스템 구성, 온도/진동 센서를 통해 비정상적인 값이 측정된다면 결함 발생으로 인지하고 작업 중지 가능

    데이터 이동 경로 : 온도/진동센서 -> Arduino -> JetsonNano -> Server -> Web
  • 영상 제공 : 사용자가 실시간으로 현장 상황을 볼 수 있도록 카메라를 로봇 머리부에 부착하여 실시간 영상 촬영 및 제공

UI/UX정의서

UI/UX정의서

화면 설계서

화면 설계서

수행 일정

간트 차트

결과

결과물 이미지 해당 프로젝트를 통해 입상을 수상하게되었습니다.

영상 링크

문제점 및 해결방안

프로젝트 관리 측면

  • 역할 분담 문제
    미숙한 인원 배분으로 인하여 효율적인 프로젝트 진행에 차질을 겪었습니다.
    해결방안 : 지속적인 진행 상황 공유와 대면 회의로 합리적인 역할 분재를 통해 이견 조율을 하였습니다.

  • 개발 진척도
    프로젝트 후반부로 접어들수록 진척도 파악에 어려움이 늘어남으로써 집중력 저하로 진행이 지연되는 상황이 발생하였습니다.
    해결방안 : 멘토링을 통해 현재 상황을 직시하고 조언과 교훈을 얻으며 해결방안을 모색하였고 구성원 휴가나 자유시간, 단합 대회를 하며 팀워크를 다시 한번 다지고 충분한 휴식을 통하여 지친 심신을 환기하였습니다.

  • 구성원 간 개발 충돌
    프로젝트 중/후반부 각자 임무를 수행하는 과정에서 복잡한 내용이 추가될수록 의사소통이 제대로 이루어지지 않았을 때 코드 및 의견 충돌 발생으로 문제가 발생하였습니다.
    해결방안 : 기존에 진행 상황을 이메일 및 카카오톡으로 공유하던 방식의 한계점이 드러남으로 Git을 사용해서 공유 하였으며 주기적으로 관련 업무를 진행하는 인원끼리 의견을 나누었습니다.

  • 미흡한 진행 계획 설계
    초기 프로젝트 계획에서 미흡한 부분이 있어 개발 과정에서 수정 사항이 다소 발생(서버, 각종 센서 등), 사전 자료 조사와 공부가 제대로 되지 않은 채 즉흥적으로 적용이 되어 난항을 겪었습니다.
    해결방안 : 웹 서핑과 예제 소스코드 등을 통하여 비교적 빠른 개발을 진행 하였으며 지속적인 회의를 통해 팀원 간의 의사소통을 통해 브레인스토밍을 하여 협동적 자세로 문제해결을 촉구하였습니다.

    작품 개발 측면

  • 코드 설계
    Arduino를 이용한 모터 제어 및 센서 데이터 측정 테스트 도중 오류가 발생하는 문제가 빈번히 발생하여 개발 시간이 오래 소요되는 문제가 발생하였습니다.
    해결방안 : 비슷한 예제의 소스코드를 참조하여 테스트를 진행하고 궁극적으로 필요한 코드를 도출하였습니다.

  • 회로 및 부품 최적화 문제
    원하는 작품을 구성하는 부품을 하드웨어적으로 연결하고 구성하는 과정에서 각각의 부품들의 전력 분할, 호환성 문제가 발생하였습니다.
    해결방안 : Power Supply와 DMM을 사용하여 테스트를 진행하고, 멘토링을 통하여 난해한 과제들을 순차적으로 해결하였습니다.

  • 웹 제작 사전 지식 미흡으로 인한 문제
    프로젝트 중간 단계에서 긴박하게 추가된 부분으로써 사전 자료 조사 및 지식 습득이 완전히 이해되지 않은 채 개발을 착수하게 되었고 전체적인 구조이해에 어려움을 겪었습니다.
    개발과 학습을 병행해 진행하게 되었으며, 학습시간을 추가로 확보하기 위해 시간을 할애 하였습니다.

profile
배우는 개발자

0개의 댓글