Whatever

cdc wiki
이동: 둘러보기, 검색

프로젝트 개요

기술개발 과제

국문 : 실내 자율주행 배달 로봇

영문 : Indoor Autonomous Delivery Robot System

과제 팀명

Whatever

지도교수

이동희 교수님

개발기간

2019년 3월 ~ 2019년 6월 (총 4개월)

구성원 소개

서울시립대학교 컴퓨터과학부 2016860038 조재형(팀장)

서울시립대학교 컴퓨터과학부 2016920005 김경석

서울시립대학교 컴퓨터과학부 2015920022 박현정

서울시립대학교 기계공학과 2018430023 노민

서론

개발 과제의 개요

개발 과제 요약

  • 실내 자율주행 배달 로봇 시스템(Indoor Autonomous Delivery Robot System)을 구축함.
    • 여기서 실내 자율주행 배달 로봇이란 한정된 실내 공간에서 원하는 목적지로 무언가를 배달하는 로봇을 말함.
  • 본 프로젝트에서는 차륜형 배달 로봇의 하드웨어와 특정 목적지까지 안전하게 자율 주행하여 물건을 배달할 수 있는 소프트웨어 시스템을 개발하고자 함.

개발 과제의 배경

  • 코로나 확산에 따른 비대면 수요가 증가하고 있는 요즘, 배달 로봇에 대한 시장 규모가 확대되고 있음.
  • 실내 배달 로봇은 단순 반복 업무나 무거운 짐을 나르는 일을 도맡아 일의 효율성을 높여주는 역할을 할 것으로 기대됨.
  • 비대면 배달이 가능해짐으로써 코로나 19 예방에 도움을 줄 수 있고 사생활 또한 보호될 수 있을 것이라 기대됨.
  • 개발되고 있는 배달 로봇보다 저렴한 비용으로 실내 자율주행 배달 시스템을 개발함으로써 사무 공간과 공장 같은 특정 장소에서 더욱 효율적인 배달 시스템을 구축할 수 있을 것이라 기대됨.

개발 과제의 목표 및 내용

  • 실내 공간을 한정으로 하여 원하는 목적지까지 무언가를 배달할 수 있는 차륜형 로봇 시스템을 제작함.
  • 적외선 센서를 이용하여 검은색 라인을 따라가면서 특정 목적지까지 이동하도록 하며, QR 코드로 목적지를 인식하거나 특정 명령을 수행하도록 함.
  • 초음파 센서를 이용하여 장애물을 인식 후 대응할 수 있도록 함.
  • 배달 물품의 하중이나 방향 및 속도에 따라 모터를 제어하고 안전하게 이동할 수 있도록 제작함.

관련 기술의 현황

State of art

  • 트위니에서 사람을 따라 움직이는 카트 로봇이 현재 개발되었고 상용화 단계에 있다. 레이저 거리 측정 및 초음파 센서를 통해 안전성을 확보하고 자동 충전 스테이션을 사용한다.
  • 배달의 민족과 DL이앤씨의 자율주행 배송로봇 기술 업무협약을 맺고 광화문에 실내 자율 주행 및 층간 이동이 가능한 배달 로봇 ‘딜리타워’가 도입될 예정이다.
  • 인천 공항 공사에서 세계 공항 최초로 실내 자율주행 전동차 및 카트로봇을 시범 도입하였다.

특허조사 및 특허 전략 분석

  • 운송 로봇의 실내자율주행 시스템 – 씨제이올리브네트웍스 : 운송 로봇이 실내 공간을 촬영하고 해당 이미지를 기반으로 주행 가능 영역을 추출하여 주행 가능 영역을 학습한다. 해당 학습을 기반으로 확정 주행 경로를 생성하여 로봇으로 송신한다. 장애물이 발견된 경우 상대 거리를 산출하고 이를 기반으로 주행 경로를 보정하고 재전송한다.
  • 에지 컴퓨팅환경에서 마그넷 트리거링과 마커를 이용한 실내 자율주행 차량의 위치 마킹 방법 – 경희대학교 산학협력단 : QR코드를 통한 자율주행은 인식된 위치에 따라 측위를 진행하기 때문에 정확한 위치를 기대할 수 없다. 또한 QR코드를 놓치는 상황에서 새로운 변수가 발생한다. 이를 해결하기 위해 QR 코드 근방에 자석을 배치하여 QR코드가 전방에 있음을 인지하고 전달된 명령어를 실행한다. 이를 통해 명확한 측위를 돕는다.
  • 실내 토폴로지맵 생성 방법 및 이를 위한 자율주행 로봇 – 선문대학교 산학협력단 : 실내 토폴로지맵 생성 방법 및 이를 위한 자율주행 로봇이 개시된다. 실내 토폴로지맵 생성 방법은, 실내에서 주행을 시작하는 단계, 라이다 센서를 이용하여 주변형태 데이터를 획득하는 단계, 기주행경로에 대한 폐루프(loop closure) 검사를 수행하는 단계, 폐루프 검사 결과에 따라 기주행경로와 주행예정경로가 교차되지 않도록 주행예정경로를 설정하는 단계, 주행이 종료되면, 획득된 주변형태 데이터를 이용하여 실내 지도를 생성하는 단계 및 생성된 실내 지도를 이용하여 실내 토폴로지맵을 생성하는 단계를 포함한다.

기술 로드맵

Whatever 자료1.png

  • 주행 기능은 라인트래킹 및 조향 구현을 단기에 걸쳐 수행하였고 중기에 두 기술을 조합해 팀에서 목표로 하는 주행 기능을 완성하였다. 직선이 아닌 선이나, 조향이 어긋난 경우에 대해 로봇의 위치를 보정하게끔 하여 로봇 주행의 강인성을 보완하고자 한다.
  • QR 코드 인식은 라즈베리 카메라를 통한 pybar 라이브러리를 적용하여 QR 코드를 인식하고 해당 텍스트를 읽어들이게끔 하였다. 해당 기능 구현 외에도 이 QR 코드에 어떤 값을 저장하여 해당 노드의 위치를 알게 할지에 대해 표준화를 단기에 걸쳐 진행하였다. 이후 중기에서 이를 조합하여 QR 코드의 기능을 완성하였다.
  • 장애물 인식 및 피드백의 경우 초음파 센서로 전방에 장애물이 감지될 경우 일시정지되도록 구현하였다. 해당 반응 시간을 줄여서 안전성을 더욱 확보하는게 좋을 듯 하다.
  • 경로 추적 기능의 경우 개발 콘셉트에 맞게 맵 기반이며 Dijkstra 알고리즘을 채택하여 적용하였다.
  • 통신의 경우 사용자 인터페이스와 Navigator 서버를 Python으로, 클라이언트를 자바 기반으로 구현하여 서로 socket 통신이 가능하도록 한 다음 어플과 통합시켰다. 다만 초기 연결 때 시간 지연이 불규칙하고 늘어지는 경향이 있어, 통신 안정성을 보완할 필요가 있다.

시장상황에 대한 분석

경쟁제품 조사 비교

국내 기업을 대상으로 조사 진행한 결과,

  • Thordrive에서 자율주행 인식, 측위, 고정밀지도제작 및 주행경로 생성, 제어까지 Full-stack 기술 및 특허를 보유중이며 미국 실리콘밸리에서 자율주행 배송 서비스 및 인천 공항과 협력하여 항공기 운항편에 맞춰 제1여객터미널 입국장 도착게이트에 자동 배치되며 도착게이트에서부터 검역대까지 교통약자의 이동을 지원하는 서비스를 시행하였다.
  • 트위니에서 카메라, 초음파, 거리측정 센서를 활용하여 물품을 운반하는 물류로봇을 적재형과 추종형 두가지 유형으로 선보이고 있다.
  • 브이디컴퍼니에서 서빙로봇인 푸드봇과 방역로봇이 푸닥터를 선보이고 있으며, 이 중 푸두봇은 국내 서빙로봇의 90%이상을 점유중이다.
  • 베어로보틱스에서 사각지대 없이 사물 및 사람을 인식하는 AI 기반 인지능력을 보유한 서빙로봇을 선보이고 있다.

마케팅 전략 제시

  • 실내 인프라를 많이 요구하는 기존 실내 배달 로봇과 초기비용에 있어 차별화 두었음을 강조한다.

개발과제의 기대효과

기술적 기대효과

  • 적외선 센서, 라즈베리 카메라를 통한 QR 인식, DC 모터와 드라이버, 초음파 센서를 결합하여 상호 간 기능의 충돌 없이 안정성 확보에 대한 기술적 기대를 예상하고 있음.
  • 해당 로봇이 동시간에 수행해야 할 작업에 대한 스레드 구성 및 우선순위 배치, 상호배제 영역의 설정을 통해 멀티스레싱 프로그램의 완벽성 구현을 기대하고 있음.

경제적, 사회적 기대 및 파급효과

  • 사용자 입장에서는 원격, 비대면, 비접촉 배송 수요를 충족하리라 기대된다.
  • 코로나의 감염증 예방을 기대할 수 있다.
  • 기존 실내 로봇이 요구하던 고비용의 인프라 문제를 어느정도 해소 가능하리라 기대된다.
  • 단순 반복 업무 및 무거운 짐을 나르는 일을 도맡아 일의 효율성을 크게 높여주는 역할을 하리라 기대된다.

기술개발 일정 및 추진체계

개발 일정

Whatever 자료2.png

Short term으로 각 모듈에 맞는 단편적 기능을 구현하였으며, Medium term에서는 기능 1차 통합 진행을 추진하였다. 이는 비슷한 기능끼리 통합을 의미한다. 모듈 구현 및 통합을 진행하면서 하드웨어 프레임 워크 제작을 같이 추진하였다. Long term에서는 모든 모듈을 라즈베리 파이 및 아두이노에 통합 연결하고, 모든 기능이 원하는 우선순위와 동시성을 가지고 작동할 수 있도록 소프트웨어/하드웨어 통합을 추진하였다.

구성원 및 추진체계

  • 조재형 팀장은 통합 테스트 이후 최종 블랙박스 테스트를 통해 전문적 지식이 없는 고객이 이를 충분히 이용할 수 있는지 상세히 검토했다. 각 바퀴에 로드셀을 통해 짐을 실었을 때의 실제 하중이 어떻게 나가는를 검사하고 이를 기반으로 로봇 주행의 강인성을 보완하며, 적외선 센서를 통해 바닥의 선을 인식하게 하며 최대 인식 범위 테스트를 진행하였다. 이후 담당 모듈을 통합하여 라인 트래킹 기능을 총괄 담당하였다. 또한, 팀의 재무담당으로 지출 관리를 하고 매주 팀원들에게 지출 명세를 정리하여 보내주었다. 또한, 팀원 간의 소통 조율 및 진척 상황 체크, 목표 수립에 힘썼다.
  • 김경석 팀원은 소프트웨어 아키텍처 설계 및 프레임워크 제작 관련 UML을 통합 및 조율하며, 로봇이 회전해야 하는 경우 의도한 대로 바퀴가 회전할 수 있도록 하는 모터 드라이버의 제어를 담당하였다. 또한, 자이로 센서를 통해 얻어지는 데이터를 통해 로봇의 이동 및 회전에 따른 객관적 위치를 파악할 수 있도록 하였다. 이후 담당 모듈을 통합하여 경로 추적기능을 총괄 담당하였다.
  • 노민 팀원은 기계공학 전공을 활용하여 모든 모듈을 통합했을 시 로봇의 설계도 및 호환성 체크를 담당했다. DC 모터 드라이버의 제어를 통해 의도한 속도로 로봇이 주행할 수 있도록 값을 체크 및 조율하고, 초음파 센서를 통해 센서 반경 내 인식 가능 물체가 나타난 경우의 값의 변동을 파악하고 이를 이용해 실제 주행 중 경로상의 장애물을 인식하고 더 나아가 어떻게 대응할 것인지에 대해 연구했다. 이후 담당 모듈을 통합하여 장애물 감지 및 피드백 기능을 총괄 담당하였다. 또한, 매주 보고서 작성을 담당하였다.
  • 박현정 팀원은 모든 모듈 통합 및 기존의 설계도대로 프로토타입을 제작하고 팀원 각자가 맡은 모듈 관련 작업이 통합된 프로토타입 상태에서도 의도한 대로 이전과 같이 동작하는지에 대해 테스트 및 피드백을 담당하였다. 그리고 라인 상 분기점에서 로봇이 QR 코드를 읽어내는 작업에 대해 카메라와 QR 스캐너 모듈 두 가지의 경우에 대해 모두 정상 작동할 수 있도록 하며, QR 코드를 통해 읽어내는 텍스트의 구조체 및 분기의 구조 설계를 담당하였다. 이후 담당 모듈을 통합하여 QR 코드 인식 및 지정 명령 수행 총괄 담당하였다.

설계

설계사양

제품의 요구사항

  • 사용자
R1: 사용자가 UI를 통해 목적지 설정
  • 로봇
F1: 라인 주행 기능 - 속도 20cm/s
F2: QR 인식 후 분기 기능 - 오차범위 10도 이내
F3: 장애물 감지 기능 - 전방 30cm 이내 물체 감지
  • 클라이언트
F4: 목적지 입력기능 - 100% 정확도
  • 서버
F5: 경로 계산 - 최단 경로

설계 사양

  • 라인 인식에는 초기에 OpenCV를 이용한 라인 검출 방법을 활용하였으나 사소한 노이즈에도 라인 검출에 실패하는 상황이 발생하였다. 따라서 노이즈에 대한 저항성을 가지길 기대하고 딥러닝 방법으로 변경하였다. 이에 라즈베리파이와 같은 한정된 자원을 가진 기기에서 작동하는 텐서플로우 라이트를 활용하였다.
  • QR Code 인식에는 Python의 pybar 라이브러리를 활용하였다.
  • 로봇의 조향은 양측 바퀴의 속도차이를 활용한 탱크턴(Tank Turn)방법을 채택했다. 또한 양측 바퀴에 가해지는 하중과 목표 회전각에 따라 양측 바퀴가 내야 하는 속도를 계산하는 모델을 만들기 위해 무게센서와 IMU센서를 활용하였고 이들의 데이터를 모아 텐서플로우 라이트를 활용하여 머신러닝으로 모델을 구축하였다. 하지만 바닥의 마찰계수를 고려하지 못해 다양한 바닥 환경에서의 성능은 매우 떨어지게 되어 결국 IMU 센서의 피드백을 받아 조정하는 방법을 채택하였다.
  • 로봇은 라인과 QR Code, 그리고 장애물을 모두 실시간(Real Time)에 측정해야 하며, 주행을 위한 모터의 제어 또한 실시간으로 이루어져야 한다. 따라서 실시간성을 높이기 위해 위 작업들이 병렬적으로 이루어지도록 Python의 multiprocessing 라이브러리를 활용하였다.

개념설계안

  • 본 시스템은 서버, 클라이언트, 그리고 로봇으로 구성된다.
  • 서버는 지도를 그래프 형태로 저장한다.
    • 여기서 지도란 라인과 QR 코드로 이루어진 지도를 의미하며 이 지도를 그래프화 시키면 라인은 간선(Edge)이 되며 QR 코드는 노드(Node)(또는 정점(Vertex))가 된다.
    • 라인은 일종의 레일 역할을 하며, QR 코드는 분기 역할을 한다.

Whatever 자료4.png

  • 클라이언트에서는 서버로부터 지도정보를 받아와 사용자가 목적지를 설정할 수 있도록 하는 기능을 갖는다. 클라이언트가 사용자로부터 목적지를 입력받으면 설정된 목적지가 서버로 다시 전송되며 서버는 해당 목적지로의 최단 경로를 계산하여 경로를 리스트형태로 로봇에 전달한다.
  • 로봇은 서버로부터 경로를 받아 경로대로 주행을 시작한다. 주행을 성공적으로 하기 위해서는 다음 목적을 달성하여야 한다.
Line을 이탈하지 않고 주행
QR Code 인식 시, 올바른 방향으로 전환
장애물 인식 시, 정지
  • 이를 위해 총 4가지 프로세스가 병렬적으로 실행되도록 설계하였다. 이 중 3개는 로봇의 주행 방향을 제시하는 프로세스이고 다른 하나는 이들로부터 주행 방향을 받아 그 주행을 수행하는 프로세스이다.
Line을 인식하여 로봇이 주행을 제대로 하기 위한 방향을 제시하는 Liner Process
QR Code를 인식하여 로봇의 분기 방향을 제시하는 Director Process
장애물을 인식하여 로봇에 정지명령을 내리는 Detector Process 
위 프로세스들로부터 로봇이 가야할 방향을 받아 모터를 제어하는 Main Process
  • Main Process가 나머지 세 개의 프로세스로부터 주행 방향을 받을 수 있도록 로봇의 주행 방향을 공유 변수에 저장하도록 설계하였다. 위 프로세스들은 이 공유 변수의 값을 바꾸고 Main 프로세스는 이 공유 변수로부터 주행 방향을 얻는다.
  • 이때, 공유 변수에 대한 각 프로세스의 논리적 충돌을 최소화하기 위해 프로세스들의 주행 방향 공유 변수에 접근하는 우선 순위를 Detector, Director, Liner 순이 되도록 하는 장치로 로봇의 상태변수를 공유 변수로 추가하였다. 이 상태 변수는 각 프로세스가 바꾸기도 하지만 역으로 상태 변수가 프로세스의 작업을 바꾸기도 한다.
  • Python 내의 multiprocessing 모듈을 활용하여 구현하기 위해 Liner, Director, 그리고 Detector라는 이름의 클래스로 만든 뒤, 프로세스 동작을 work라는 이름을 가진 메소드에 정의하는 방법을 사용하였다.
  • 클라이언트 - 서버 - 로봇 간의 통신은 소켓 통신을 사용하기로 설계하였다.

이론적 계산 및 시뮬레이션

QR Code 정보 정의

QR Code가 분기점 역할을 충실히 수행하기 위해서 담아야 하는 정보를 정의하였다. QR Code로부터 얻은 수(텍스트)로부터 단순 산술 연산 몇 번만으로도 로봇의 주행 방향을 도출할 수 있도록 하였다. 구체적인 방법은 다음과 같다.

1. 노드 번호는 모두 소수(Prime)로 주어진다. 이때 그래프에서 최대 분기 개수보다 큰 소수로 부여한다. (여기서 최대 분기 개수란 그래프 상의 노드에 대해서 각 노드에 연결된 간선 수의 최댓값을 의미한다.)
ex: Figure 2.1에서 나타난 최대 분기 개수는 8이다.
2. 라인과 라인이 이루는 각도는 단위적(Unitary)이도록 구성한다. 
ex: Figure 2.1의 경우 인접 라인간 각도는 45도의 배수로 구성
3. 현재 노드를 중심으로 단위 각 방향에 특정 방향으로 각순서(Angle Order)를 부여한다. 이때 시작 지점(1번을 받는 지점)은 어디가 되어도 상관없다. 
ex: Figure 2.1 참고
4. 해당 노드 번호로 나누었을 때 3번에서 부여한 순서가 나오도록 중국인의 나머지 정리를 사용하여 n을 생성한다.
ex: Figure 2.1에서는 다음이 성립한다.

Whatever 자료5.png

5. QR Code에 담기는 정보(QR Code로부터 인식되는 Text)는 수의 형태이고 맨 앞자리 5자리는 현재 노드 번호를 저장하는데 사용한다. 그리고 나머지 부분은 앞서 구한 n을 저장한다.
ex: Figure 2.1에서 11번 노드의 QR Code에 담기는 정보는 0001113387572이다.

Whatever 자료6.png

6. 다음과 같은 director 함수를 구현하여 로봇의 주행 방향을 QR Code로부터 단순 산술 연산만으로 도출해 낼 수 있다. 여기서 qr_Value에는 앞서 구한 n이 대입된다.

Whatever 자료7.png

예시) 41 – 11 – 13 경로에서 11번 노드의 Landmark QR Code를 인식하여 값 13387572을 얻으면 이를 이전 노드 번호인 41과 다음 노드 번호인 13으로 나누었을 때 나머지로 각각 6과 3을 얻는다. 41 – 11경로를 따라온 것이라면 로봇의 전면이 향하는 방향은 6번 방향의 반대 방향인 2번 방향이므로 (3 - 2) x 45 = 45도를 얻는다. 이는 순서를 부여한 방향의 반대 방향인 시계방향으로  회전하라는 것이다. 반면 반대의 경우, 즉 13 – 11 – 41 경로에서는 13 – 11 로봇이 경로를 따라왔으므로 로봇 정면이 향하는 방향은 3번 방향의 반대 방향인 7번 방향이다. 같은 방법으로 (6 - 7) x 45 = - 45도를 구할 수 있다. 이는 순서를 부여한 방향인 시계 반대 방향의 반대 방향, 즉 시계방향으로  회전하라는 것이다. 즉, 회전각의 크기는 물론 방향까지 얻을 수 있다.

Tank Turn

Vl.pngVr.png을 각각 기기의 왼쪽 속도와 오른쪽 속도로 표기하고 이를 기기의 너비로 표기하도록 한다. 그러면 기기는 어떤 동심원을 따라 원운동을 하게 된다. 이를 그 동심원의 반지름 (회전 반경)으로 두면 다음이 성립한다.

Whatever 자료8.png

Whatever 자료9.png

Whatever 자료10.png

상세설계 내용

하드웨어 설계

본 시스템의 로봇 하드웨어 컴포넌트는 다음과 같다.

무게센서(로드셀+ADC) (2개)
-> 양측 바퀴에 가해지는 하중을 측정
초음파 센서
-> 전방 충돌 방지
IMU
-> 차체 회전각 피드백
카메라
-> 라인인식과 QR Code 인식
모터드라이버 (2개)
-> 바퀴 제어
라즈베리파이
-> 로봇의 컴퓨터
아두이노 우노 (2개) 
-> 라즈베리파이와의 시리얼 통신
(이는 라즈베리파이의 GPIO 핀을 전부 사용하기 보다 비교적 실시간성이 떨어져도 괜찮은 정보인 하중과 회전각의 측정은 별개의 MCU 보드를 두어 필요시에만 시리얼 통신으로 측정값을 받아오도록 구성한 것이다.)

Whatever 자료11.png

프레임 설계

Whatever 자료12.png Whatever 자료13.png Whatever 자료14.png

소프트웨어 설계

Diagram

Whatever 자료15.png

Liner

Whatever 자료16.png

Director

Whatever 자료17.png

Detector

Whatever 자료18.png

Main

Whatever 자료22.png

Activity Diagram

라인 인식 모델 학습을 위한 이미지 매트릭스(Image Matrix) 구조

데이터 수집은 먼저 작성한 Open CV 기반 알고리즘을 적절한 환경에서 구동하여 이미지 매트릭스와 해당 이미지에 대해 알고리즘이 도출한 주행 방향을 기록하는 방법으로 수집한다.

Whatever 자료19.png

양측 바퀴에 가해지는 하중이 서로 다른 경우, 양측 모터에 같은 전압을 부여해도 바퀴의 회전 속도가 달라진다. 따라서 로봇 위에 실리는 짐의 하중에 따라같은 움직임이더라도 모터에 가해져야 하는 전압이 달라질 수 있다. 이를 해결하기 위해 딥러닝을 활용하여 모델을 구성한다.

Whatever 자료20.png

이를 해결하기 위해 딥러닝을 활용하여 하중과 목표 회전각을 입력으로 받아 양측 모터에 가해야 하는 전압을 출력하는 모델을 구축하는 방법을 활용. 다음은 해당 데이터 수집을 순서도로 도식화한 것이다.

Whatever 자료21.png

결과 및 평가

완료 작품의 소개

프로토타입 사진 혹은 작동 장면

Whatever prototype1.png Whatever prototype2.png

완료작품의 평가

평 가 항 목 평가방법 적용기준 개발 목표치 비중 (%) 평가결과
1. Line Tracking 성능 평가
- 강인성(Robustness)
- 주행 속도(Speed)
Line Tracking이 제대로 이루어지는지 평가한다.
외부 환경에 대한 강인성(Robustness)을 가장 우선순위 평가항목으로 두어 평가한다.
이는 여러 환경에서 테스트하여 성패를 측정하여 평가한다.
이후 주행 속도(Speed)를 2순위로 평가한다.
조명, 바닥재 등의 환경 차이에 의해 라인 인식률이 떨어지는 일이 없어야 한다.
주행 속도는 사람의 걸음걸이 속도 정도가 적당하다.
비교적 편차가 적은 실내환경에서 제대로 작동해야 한다.
느리지 않고 끊김 없는 부드러운 Line Tracking이 되어야 한다.
20% 실내 환경에서 라인 트래킹 자체 기능은 작동하였으나, 한 번 각이 비뚤어지면 그대로 이탈하는 현상이 발생하였다.
끊김없는 주행 은 하지 못했다.
2. QR Code 인식 및 인식된 명령 수행능력 평가
- 강인성(Robustness)
- 응답성(Response Time)
- 신뢰도(Reliability)
QR Code를 제대로 인식하여 주어진 동작을 제대로 수행하는지 평가한다.
QR Code 인식에 대한 강인성(Robustness) 측정은 다양한 환경에서 인식을 수행하고 성패를 측정하여 평가한다.
이후 QR Code 인식 후 명령 수행까지의 시간을 측정해 응답성(Response Time)을 측정한다.
이후 명령 수행에 대한 일관성을 측정하여 신뢰도(Reliability)를 측정한다.
조명, 바닥재 등의 환경 차이에 의해 QR Code 인식률이 떨어지는 일이 없어야 한다.
QR Code 인식 후 지연이 크면 안 된다.
같은 조건에서 동일한 QR Code를 인식하면 일관되게 같은 움직임을 보여야 한다.
비교적 편차가 적은 실내환경에서 제대로 작동해야 한다.QR Code 인식 속도 1초 이내인 것이 적당하다.
로봇이 QR Code를 인식하고 움직인 후 위치 차이가 15cm 이내의 오차 범위를 가져야 한다.
20% QR 코드 인식을 가끔 하지 못하고 그대로 주행하는 경우가 가끔 발생하였다.
인식하는 경우, 해당 노드에서의 위치 차이는 15cm 내로 조건을 충족하였다.
3. 장애물 감지 능력 및 피드백 작동능력 평가
- 정확도(Accuracy)
- 반응성(Reactivity)
해당 로봇은 장애물을 인식하는 기능이 있어야 하며 정확하게 장애물을 인식할 수 있어야 한다.
장애물 탐지의 정확도(Accuracy)를 측정하기 위해 장애물 환경에서 여러 번 구동하여 성패를 측정한다.
센서의 장애물 감지와 로봇이 이를 감지하고 정지하는 피드백 작동에 대한 시간을 측정해 반응성(Reactivity)을 평가한다.
장애물 탐지율은 100%일수록 좋다.
장애물 탐지에 따른 피드백 작동이 빨라야 한다.
장애물 탐지율 90% 이상장애물 탐지 후 2초 이내 정지할 수 있어야 한다. 10% 주행 중 경로에 장애물이 있으면 100% 인식하고 정지하였다.
탐지 후 2초 이내에 정지하였다.
4. 경로 추적기능 평가
- 신뢰도(Reliability)
계산된 경로의 일관성을 측정하여 신뢰도(Reliability)를 측정한다. 계산된 경로는 로봇의 국소적(Local) 움직임을 추적할 수 있을 정도의 타당성을 가져야 한다.
통계적 방법으로 경로 보정이 가능한 수준의 신뢰도를 확보하여야 한다.
QR Code 간의 움직임 추적이 가능한 수준의 타당성같은 조건에서 같은 명령 수행 시 계산된 경로의 오차 범위는 15cm 이하여야 한다. 10% QR 코드를 통해 현재 위치를 인식할 수 있었다.
경로 계산 역시 최적의 경로로 계산되었다.
5. 목적지까지 무사고 자율주행
- 시간(Time)
본 시스템의 유일한 비즈니스 목적인 목적지까지 무사고 자율주행에 대한 테스트를 진행한다. 평가항목은 왕복 시간을 기준으로 둔다. 사람이 이동한 시간의 1.5배 정도의 제한 시간을 두어 평가한다. 제한 시간 내 목적지까지의 무사고 자율주행 40% 주행에 끊김이 있어, 사람의 이동 시간보다 대략 2배정도 지연이 발생하였다.

어려웠던 부분

  • 일직선 주행의 경우 어느 환경에서도 일관성 있게 진행되었으나, 조향 기능의 경우 바닥재에 영향을 크게 받았다. 대리석 바닥에서는 바퀴가 헛돌아서 원하는 만큼의 회전이 사실상 불가능하였으며, 아스팔트 도로 같은 경우에도 마찰을 크게 받아서 원하는 조향보다 덜 도는 경향이 발견되었다. 하드웨어 개발 환경이 주로 목재 바닥에서 진행되었기 때문에 바닥재에 대한 과적합이 있었고, 이를 최종 프로젝트 마감 전에 뒤늦게서야 파악하게 되었다.
  • 해당 문제를 해결하려면 바닥재를 파악하고 바닥재에 따라 섬세하게 조향 기능을 보정했어야 한다. 하지만 무엇보다 바퀴 및 DC 모터의 하드웨어적 한계이기도 하기에, 좀 더 강인성이 보장되는 부품으로 진행하였다면 쉽게 해결되었으리라고 생각된다. 또한 이를 통해 적재된 화물의 무게에 따라 조향의 차이가 발생할 것을 예상할 수 있었으며, 이를 해결하려면 결국 조향에 대한 많은 개선이 요구될 것 같았다.
  • 하드웨어 제작, 특히 프레임 구현에 있어서 많은 시행착오를 겪어야 했다. 처음 프레임의 경우 아크릴 가공 중 손상 문제로 재주문을 했다. 이후 기반으로 만든 완성품이 예상보다 크기가 커졌고, 이는 테스트 및 관리에 있어서 큰 제약사항이 되었다. 결국 프레임을 더 작은 크기로 재주문을 했다.
  • 이러한 문제들로 인해 하드웨어가 프로젝트 전반적으로 병목(bottleneck)이었다. 하드웨어가 일단 완성이 되어야 모듈 통합 테스트를 진행하고 결과를 기반으로 소프트웨어 피드백을 진행하는데 이런 점에서 시간 소요가 컸다.

향후계획

  • 라인 트래킹 기능의 향상 및 보정과 라인 이탈 시, 복구 기능을 구현함으로써 주행 전반에 대한 강인성을 보완하고자 한다.
  • 장애물 반응 시간에 대한 단축이 필요하다.
  • 클라이언트 – 서버 간의 초기 연결이 지연되는 경향이 있어, 이를 해결하여 안정성 있는 통신 환경을 구축해야 한다.

자재 소요서

No. 품명 구매량 소요량
1 로드셀 앰프 24비트 A/D 컨버터 HX-711 2 2
2 4선식 로드셀 무게센서 5kg 2 2
3 적외선 송수선(라인트레이서센서 모듈) 2 2
4 저렴한 2채널 모터 드라이버 모듈 4 4
5 Bipolar Stepper Motor with Planet Gear Box(18kg.cm) 1 1
6 프로파일 40X40PF(L) 1 1
7 부속 DC BK및볼트너트(40용) 1 1
8 부속 DC BK및스프링,둥근(20) 1 1
9 부속 스프링너트(M8-8 40용) 1 1
10 부속 둥근렌지볼트(M8X12) 1 1
11 [SMG] 전동차 바퀴연결허브 [SZH-GNP216] 4 4
12 [SMG] 전동차 샤프트 [SZH-GNP218] 2 2
13 [ITM] DRV8825 정밀 스텝모터 드라이버 모듈 (방열판 포함) 2 2
14 [SMG] 전동차 타이어 240ø 4개입 세트 [SZH-GNP213] 1 1
15 [SMG] MPU-9250 아두이노 9축 자이로 센서 모듈 GY-9250 [SZH-EK037] 1 1
16 [ Coms] [LC3097] Coms 18650 충전지 팩(Y자형) DC12V/5.2Ah (3.7V / 2600mA*6ea (5.5-2.1 DC JACK) 1 1
17 [SMG] RS550 전동차 기어박스 DC모터 [SZH-GNP208-4] 4 4
18 [YwRobot] 아두이노 초음파 센서 모듈 [SEN080802] 1 1
19 [DYSCAN] CMOS QR코드 스캐너 모듈 2D Barcode Scanner USB [DE2110] 1 1
20 DC잭 전원 소켓 방수 커넥터 PCB기판 터미널 단자, MR0025 1 1
21 명가철물 고무발 받침 다리 방진고무 조절발 높이, 고무발 20호(8개묶음), 1개 3 3
22 아크릴판 투명/컬러 2T 3T 5T 8T 10T 15T 20T 아크릴재단 (70x70 3T) 2 2
23 아크릴판 투명/컬러 2T 3T 5T 8T 10T 15T 20T 아크릴재단 (20x20 3T) 4 4
24 아크릴판 투명/컬러 2T 3T 5T 8T 10T 15T 20T 아크릴재단 (20x20 3T) 4 4
25 아크릴판 투명/컬러 2T 3T 5T 8T 10T 15T 20T 아크릴재단 (70x70 3T) 1 1
26 18650 건전지 충전전용 DC 아답터(DC 12.6V/2A) [IB703] 1 1
27 십자접시머리볼트 M2 M3 M4 M5 M6 M8 스텐 서스 너트 소량(십자접시-d: 3 l: 10 - 50개) 1 1
28 십자접시머리볼트 M2 M3 M4 M5 M6 M8 스텐 서스 너트 소량(십자접시-d: 3 l: 30 - 30개) 1 1

관련사업비 내역서

항 목
(품명, 규격)
수 량 단 가 금 액 비 고
카드 현금
직접 개발비 로드셀 앰프 24비트 A/D 컨버터 HX-711 2 10,050 20,100 20,100
4선식 로드셀 무게센서 5kg 2 16,650 33,300 33,300
적외선 송수선(라인트레이서센서 모듈) 2 3,040 6,080 6,080
저렴한 2채널 모터 드라이버 모듈 4 1,950 7,800 7,800
Bipolar Stepper Motor with Planet Gear Box(18kg.cm) 1 47,970 47,970 47,970
프로파일 40X40PF(L) 1 62,400 62,400 62,400
부속 DC BK및볼트너트(40용) 1 12,620 12,620 12,620
부속 DC BK및스프링,둥근(20) 1 10,000 10,000 10,000
부속 스프링너트(M8-8 40용) 1 3,520 3,520 3,520
부속 둥근렌지볼트(M8X12) 1 6,680 6,680 6,680
[SMG] 전동차 바퀴연결허브 [SZH-GNP216] 4 3,520 14,080 14,080
[SMG] 전동차 샤프트 [SZH-GNP218] 2 11,000 22,000 22,000
[ITM] DRV8825 정밀 스텝모터 드라이버 모듈 (방열판 포함) 2 1,980 3,960 3,960
[SMG] 전동차 타이어 240ø 4개입 세트 [SZH-GNP213] 1 78,100 78,100 78,100
[SMG] MPU-9250 아두이노 9축 자이로 센서 모듈 GY-9250 [SZH-EK037] 1 5,500 5,500 5,500
[ Coms] [LC3097] Coms 18650 충전지 팩(Y자형) DC12V/5.2Ah (3.7V / 2600mA*6ea (5.5-2.1 DC JACK) 1 50,050 50,050 50,050
[SMG] RS550 전동차 기어박스 DC모터 [SZH-GNP208-4] 4 24,640 98,560 98,560
[YwRobot] 아두이노 초음파 센서 모듈 [SEN080802] 1 4,290 4,290 4,290
[DYSCAN] CMOS QR코드 스캐너 모듈 2D Barcode Scanner USB [DE2110] 1 48,730 48,730 48,730
DC잭 전원 소켓 방수 커넥터 PCB기판 터미널 단자, MR0025 1 1,800 4,600 4,600 배송비 2,800
명가철물 고무발 받침 다리 방진고무 조절발 높이, 고무발 20호(8개묶음), 1개 3 2,600 10,800 10,800 배송비 3,000
아크릴판 투명/컬러 2T 3T 5T 8T 10T 15T 20T 아크릴재단 (70x70 3T) 2 23,000 46,000 46,000
아크릴판 투명/컬러 2T 3T 5T 8T 10T 15T 20T 아크릴재단 (20x20 3T) 4 2,000 8,000 8,000
아크릴판 투명/컬러 2T 3T 5T 8T 10T 15T 20T 아크릴재단 (20x20 3T) 4 8,000 32,000 32,000 타공비 포함
아크릴판 투명/컬러 2T 3T 5T 8T 10T 15T 20T 아크릴재단 (70x70 3T) 1 29,000 29,000 29,000 타공비 포함
18650 건전지 충전전용 DC 아답터(DC 12.6V/2A) [IB703] 1 16,800 16,800 16,800
십자접시머리볼트 M2 M3 M4 M5 M6 M8 스텐 서스 너트 소량(십자접시-d: 3 l: 10 - 50개) 1 3,580 3,580 3,580
십자접시머리볼트 M2 M3 M4 M5 M6 M8 스텐 서스 너트 소량(십자접시-d: 3 l: 30 - 30개) 1 3,400 3,400 3,400
합 계 50 492 689 689

특허 출원 내용

해당 없음.