"ARM - 립 모션과 증강현실을 이용한 로봇 팔 제어"의 두 판 사이의 차이

MIE capstone
이동: 둘러보기, 검색
(느낀점)
(세부 개발 내용)
103번째 줄: 103번째 줄:
  
 
(나) 6-자유도 로봇 팔
 
(나) 6-자유도 로봇 팔
 +
:[[파일:Arm.jpg|400픽셀]]
 +
:[[파일:Leap.jpg|400픽셀]]
 +
(다) 차량 베이스
 +
:[[파일:Car.jpg|400픽셀]]
  
(다) 차량 베이스
 
  
 
(라) VR
 
(라) VR
 
:'''원거리 작업환경 VR영상'''   
 
:'''원거리 작업환경 VR영상'''   
 
:스마트폰 헤드마운트 기기와 스마트폰을 이용하여 작업환경에 있는 로봇팔에 부착된 Webcamera 2대에서 이미지를 받아온 뒤 사용자에게 출력한다.  
 
:스마트폰 헤드마운트 기기와 스마트폰을 이용하여 작업환경에 있는 로봇팔에 부착된 Webcamera 2대에서 이미지를 받아온 뒤 사용자에게 출력한다.  
[[파일:LEAP.png|400픽셀]]
+
:[[파일:Vr.jpg|400픽셀]][[파일:webcamera.png|380픽셀]]
[[파일:VR.png]]
 
:[[파일:webcamera.png|380픽셀]]
 
 
:Webcamera가 촬영한 이미지를 비교적 컴퓨팅파워가 약한 라즈베리파이를 통해 전송하기 위해, Webcamera API를 이용하여 fps와 화질 값을 조정하였다.
 
:Webcamera가 촬영한 이미지를 비교적 컴퓨팅파워가 약한 라즈베리파이를 통해 전송하기 위해, Webcamera API를 이용하여 fps와 화질 값을 조정하였다.
 
:  
 
:  

2018년 6월 13일 (수) 08:08 판

프로젝트 소개

프로젝트 명

립 모션과 증강현실을 이용한 로봇 팔 제어

프로젝트 기간

2018.03.02. ~ 2018.06.15

팀 소개

서울시립대학교 기계정보공학과 20124300+* 오*식 (팀장)
서울시립대학교 기계정보공학과 20124300** 최*연
서울시립대학교 기계정보공학과 20134300** 조*재

프로젝트 개요

요약

헤드마운트 디스플레이와 LEAP-Motion 센서를 이용하여 원격으로 로봇 팔을 제어 할 수 있는 시스템
을 제작 한다. LEAP-Motion 센서가 사용자의 팔의 움직임을 인식하여, 이 데이터를 기반으로 로봇 팔을
제어한다. 실감나는 증강현실을 구현하기 위하여 로봇 팔과 스테레오 카메라를 함께 설치하고 카메라에
서 송출된 데이터를 헤드마운트 디스플레이로 출력시킨다. 동시에 헤드마운트 장비의 디스플레이로 사용
되는 단말기에서 측정된 사용자의 위상 데이터(머리의 움직임)를 이용하여 카메라에 부착된 모터를 제어,
카메라와 시선을 일치시킨다

개발 배경

현시대의 기술력으로 제작된 로봇은 사회의 여러 분야에서 사람의 일을 대신해 수행한다.
현존하는 대부분의 로봇은 인식한 상황에 대해 미리 입력한 데이터나 알고리즘을 기반으로
작동하는 것이 기본이며 이러한 방식은 공장 생산 라인 등의 제어된 환경 하에서 매우 유용하게
사용된다. 이와는 반대로 현재의 기술로 극복하기 힘든 인간의 직관이 요구되는 상황이 존재한다.
단적인 예로 폭발물 처리(EOD) 작업자를 들 수 있는데, 급조 폭발물을 해체하는 상황에서 매우
다양한 경우가 존재하므로 이 환경은 제어할 수 없다고 할 수 있다. 따라서 기존의 입력된
데이터를 바탕으로 구동하는 로봇은 사용될 수 없으며 대부분의 경우 원격 로봇을 사용하여
폭파하거나 직접 방호복을 입고 해체를 실시한다. 이 상황에서는 알려지지 않은 폭발물에 대해
대처해야 하므로 원격 로봇을 이용한다 하더라도 직접 해체를 수행하는 경우보다 효율이 떨어진다.
ARM.png EOD.png Wireless.png
이러한 위험한 상황에서 사용자에게 직관적인 상황 인식을 가능하게 하는 정보를 전달하고 사용자의
움직임을 모방할 수 있는 로봇이 존재한다면 리스크를 큰 폭으로 낮출 수 있을 것이다. 이러한 종류의
로봇은 이미 다양한 방법과 기술을 통하여 연구되고 있지만, 비용 등의 문제로 인하여 실용화가 된
사례가 별로 없다. 하지만 4차 산업혁명이 활성화된다면 네트워크를 이용한 원격 제어시스템은 더욱
큰 가치를 가지게 될 것이다. 따라서 이러한 배경을 토대로 해당 프로젝트를 제안하게 되었으며,
이를 통해 로봇제어에 대해 이해하고 이를 응용한 시스템을 만들 수 있는 기회를 얻을 것으로 예상된다.

프로젝트 목적 및 기대효과

이 시스템은 네트워크가 연결된 어떠한 장소에서도 사람을 대신하여 움직임을 모방하며 작업을 수 행할 수 있다.
위험한 작업 환경에서 인간의 안전을 보장할 수 있는 효과가 있을 뿐 아니라 다른 공간 에서도 업무를 수행할 수
있으므로 응용범위를 확장 시킬 수 있으며, 추후 기술을 발전시켜 다양한 인터페이스를 이용한 제어나 자동화 :
기능을 추가한다면 더 많은 분야에서의 적용 또한 기대할 수 있 을 것이다.

개발 목표

(가) 제어환경 구축

모션을 입력할 수 있는 센서와 실제 작업 환경을 확인할 수 있는 디스플레이 및 데이터 통신을 담당할
컨트롤러로 구성된 제어환경을 구축한다. 모션 센서는 손가락의 각 관절을 좌표로 전환한 뒤 실제로
제어할 로봇 관절에 맞는 형태로 가공하여 서버로 전송하며, 디스플레이는 서버에서 이미지를 받아 출력한다.


(나) 실제 작업환경 구축

작업환경은 실제로 로봇이 작업을 수행하는 환경으로 로봇 팔과 상황을 전송해줄 카메라, 데이터 통신 및
관절 제어를 담당할 컨트롤러로 구성한다. 카메라는 서버에 이미지를 전송하며 프로세서는 서버에 존재하는
관절 데이터를 받아 제어식을 통해 모터를 제어한다.


(다) 서버 구축

제어환경과 작업환경 간의 데이터 통신을 위해 서버를 구축한다. 서버는 특별한 부가 기능은 필요로 하지
않으며 단순히 데이터 전송의 중간단계로 이용한다. 서버는 플랫폼 간 통신에 용이한 오픈소스 시스템인 ROS
(Robot Operation System)를 사용한다. 또한 ROS는 시뮬레이션을 지원하므로 이를 이용해 디버그를 수행할 수 있다.

세부 개발 내용

(가) 모션 센서

센서 필터링
자이로 센서, 가속도 센서 중 사용자의 움직임에 따른 roll, pitch, yaw 값이 더욱 정확한 것을 이용 하려 하였다.
하지만 가속도 센서는 빠른 회전이나 갑작스런 이동에 측정되는 값이 참 값에 벗어나며, 자이로 센서는 각속도를
적분하여 회전각을 구하는 과정에서 적분 오차가 생겨버리는 현상이 일어난다.
필터.png
각각의 센서가 장단점이 존재하여, 장점만을 이용하기로 하였다. 자이로 센서에서 low pass filter, 자력계, 가속도 센서에
high pass filter를 적용하여, 좀더 정확환 roll, pitch, yaw 데이터를 얻었다.

(나) 6-자유도 로봇 팔

Arm.jpg
Leap.jpg

(다) 차량 베이스

Car.jpg


(라) VR

원거리 작업환경 VR영상
스마트폰 헤드마운트 기기와 스마트폰을 이용하여 작업환경에 있는 로봇팔에 부착된 Webcamera 2대에서 이미지를 받아온 뒤 사용자에게 출력한다.
Vr.jpgWebcamera.png
Webcamera가 촬영한 이미지를 비교적 컴퓨팅파워가 약한 라즈베리파이를 통해 전송하기 위해, Webcamera API를 이용하여 fps와 화질 값을 조정하였다.
전체적인 과정
스마트폰과통신과정.png
네트워크를 통해 원거리 작업환경에서 전송된 이미지를 입력받고 스마트폰의 위상변화 값을 센싱한 뒤 네트워크를 통해 다시
roll, yaw, pitch값을 작업환경으로 전송한다. 이 위상 값을 가지고 Webcamera에 부착된 서보모터를 제어하여 사용자의 시야의 움직임에 맞춰
Webcamera의 움직임을 제어하였다.


(마) 통신

프로젝트 설계

개발 일정

개발계획.PNG

시나리오

시나리오.png

목적계통도

목표.png

● 정확성

이용자에게 전달된 시각적인 정보를 바탕으로 이용자가 모션을 통해 다음 동작을 지시하는 피드백 형태로

작동하기 때문에 1. 이용자의 동작을 정확하게 판단할 수 있어야 하며, 2. 기계는 지시에 따라 정확히

제어될 수 있어야 한다.


● 실시간성

증강현실을 이용해 로봇 팔을 제어하는 경우, 단순히 사용자가 내린 명령을 일회적으로 수행하는 형태보다는

시각적 피드백을 통해 실시간으로 로봇을 제어하는데 그 초점이 맞춰져 있다. 따라서 사용자의 동작을 인식한

순간부터 동작이 일어나 피드백이 돌아오기까지 실시간성이 보장되어야 한다. 이를 위해 1.알고리즘이 최적화

되어 동작을 빠르게 처리하여 명령으로 변환해야 하며, 2. 명령은 이더넷(Ethernet) 혹은 wifi 등의 네트워크를

통해 빠른 속도로 로봇에 전달되어야 한다. 또한 3. 전달된 명령을 따라 모터제어를 하여 로봇 팔이 정확한 지점

으로 신속히 움직일 수 있어야 하며, 마지막으로 4. 영상 정보를 실시간으로 전송하여 사용자에게 보여주어야 한다.


● 편의성

사용자가 원격에서 로봇 팔을 이용하여 제어해야 하는 데에 있어 직관적인 판단을 이용하여 자연스럽게

제어할 수 있어야 한다. 따라서 사용자는 불편함을 느끼지 않고 로봇을 제어할 수 있도록 하는데 중점을

맞추어야 하며 이를 위해 실제 사용자의 모션에서 제어할 좌표를 구하기 위한 적절한 알고리즘을 사용해야

하며, 피드백 영상 또한 자연스러운 크기와 시야각을 사용하여 가상현실 장비 사용 시 어지러움을 느끼는

VR Sickness 등의 증상을 방지할 수 있어야 한다. 플랫폼이 원격으로 제어되기 때문에 독립성 또한 중요한

요소이다. 제어 환경을 독립적인 모듈로 제작한다면 처리환경과 제어환경을 별도의 환경으로 독립시킬 수 있다.

따라서 로봇 팔은 어떠한 환경에 대해서도 독립적인 동작을 보장받을 수 있게 되어 다양한 용도로 사용될 수

있으며, 제어환경 또한 모션 변환 알고리즘의 형태만 바꾸어 다른 장치를 동작시킬 수 있게 된다.



● 경제성

로봇 팔을 구성하는 핵심 부품이라 할 수 있는 서보 모터(Servo Motor)의 경우 다양한 스펙과 가격대가 형성되어

있다. 용도에 맞는 적절한 부품을 사용한다면 상당히 저렴한 가격으로 플랫폼을 제작할 수 있을 것이다. 또한

이때 조립식 플랫폼을 사용하므로 현재 판매되는 완성된 로봇 플랫폼의 가격과 비교해 보았을 때 매우 저렴하게

제작할 수 있다. 또한 원격으로 작동하는 로봇 플랫폼이기 때문에 자원 관리가 매우 중요하다. 배터리를 이용해

작동시키므로 컨트롤러의 성능을 품질이 보장하는 범위 하에서 낮추어 사용할 수 있다면 이러한 자원을 절약하여

오랜 시간 동작하도록 할 수 있을 것이다.

개념 설계안

계통도.png

설계사양

요구사항2.png 요구사항1.png

프로젝트 개발 과정

업무 분담

업무분담.png

하드웨어 개발 과정

Armtest.jpg
1차적으로 하드웨어에서 제일 핵심인 부분인 팔을 개발하였다. 이 때 각 팔의 관절에는 서보모터가
장착되었으며 서보모터의 구동 전원이 부족함을 확인하여 아래의 개선사항에서 서술되었듯이 추가적인
전원 모듈을 개발하였다. 이 때 기본적인 테스트를 위하여 아크릴판 위에서 고정하여 테스트를 진행하였다.


Makearm2.jpg
팔의 테스트가 어느정도 진행 된 후 카메라 장치의 개발을 하였다. 카메라 장치는 VR의 헤드트래킹
기능에서 출력된 값을 이용하여 고개가 회전된 값만큼 2축 장치가 회전을 할 수 있도록 제작하였다.


Bat.jpg
팔과 카메라의 테스트와는 별개로 카메라와 로봇 팔을 거치하기 위한 차량 베이스의 개발도 진행하였다.
기본적으로 차체 내부에 라즈베리파이와 PWM 모듈의 전원을 공급하기위한 외장 배터리를 내장하였다.


Wiringbase.jpg
그 후 각 모터와 motor-driver을 연결하기 위하여 각 배선을 따로 납땜을 하여 배선을 연장하는
작업을 하였고 라즈베리 파이를 차량 위에 탑재하면서 예상된 공간 설계와 적절한지 파악하였다.


Basetest.jpg
예상된 공간보다 차체의 크기가 작아 아래의 개선사항에서 서술되었듯이 차체 뒷부분을 연장하였고
라즈베리파이 2대를 거치하였으며 motor-driver과 motor을 연결하여 모터의 구동 테스트를 실시하였다.


Almost.jpg
카메라 모듈과 로봇 팔의 테스트가 어느정도 진행된 후 최종적으로 모든 하드웨어를 통합하여 각 값[1]
조정한 후 최종적으로 모든 부품을 분해 후 록타이트 등의 약품을 사용하여 나사를 단단하게 조여 하드웨어가
분리되지 않도록 하였다.

변경 사항

(가) 하드웨어 개선사항

●차랑 베이스
Car.jpg
기존에 차용한 차량 베이스의 경우 위의 제품을 사용하려 하였으나 위의 pwm모듈의 추가 전원 같은 요소가 발생하여
차량 베이스를 추가적으로 크기를 늘려야 할 필요가 발생하여 차량 베이스를 늘리고 라즈베리 파이와 모터 드라이버,
카메라 마운트를 미리 세팅하였다. 변경 사항은 아래와 같다.
Tunecar.jpg Tunecar2.jpg
위의 사진과 같이 과학상자 재료를 이용하여 뒷부분을 연장 후 아래 부분에는 모터와 배터리를 탑재하고 위 부분에는
AA 배터리 홀더와 라즈베리파이를 거치하였다. 추후 앞부분에는 로봇 팔이 거치될 예정이며 뒤의 솟은 부분에는 카메라가
거치될 예정이다
●추가 전원 회로
기존 PWM 모듈에 인가되는 5V, 2.5A의 전원만을 이용하여 구동하려 했으나 전력이 충분하지 않아 3개 이상의 모터를
구동시키기 어려운 점을 확인하였다.
Pwmp.png
제조사의 설명에 따르면 5V, 4A 이상을 권장한다. 이때 각 서보모터는 약 7V의 전압이 인가되었을 때 더 빠르고 정확한
동작을 한다는 점에 기안하여 1.2V 리튬 이온 배터리 6개를 직렬 연결하여 7.2V의 출력을 내는 추가 전원장치를 사용하기로
결정하였다. 이 때 보드의 PCB 기판을 확인하면 윗부분이 시그널부, 중간 부분이 전원 공급부, 아래 부분이 그라운드임을
확인할 수 있다. 이때 보드에 5V의 전원 공급이 이뤄져야 보드가 작동하는데 해당 전원은 보드를 구동할 때만 사용하고
서보모터에는 시그널과 그라운드만 제공하도록 한다. 이때 그라운드는 추가 전원의 그라운드와도 묶여있다.
Line.png
외부전원을 사용하기 위하여 추가적인 보드를 설계하였다. 왼쪽 두 단자의 줄은 각각 PWM 보드의 그라운드와 시그널,
오른쪽 세 단자의 줄은 서보모터의 시그널, 그라운드, VCC를 꽂는 단자이며 아래의 단자는 배터리의 +와 –를 연결하며
오른쪽에는 스위치를 장착하였다. 이때 배터리 단자가 두 줄인 이유는 추가적인 암페어를 확보해야 할 때 배터리를
추가적으로 연결할 수 있도록 하였다. 제작 후 아래와 같이 연결한 결과 기존 대비 빠르고 정확하게 동작하는 것을 확인하였다.
Linpic.jpg Linepic2.jpg

(나) 소프트웨어 개선사항

절대위상 값을 상대위상 값으로 변환하였다.
자력계 센서를 이용하여 위상 값을 도출하다 보니 roll, yaw, pitch 값이 자기장의 영향을 받아 위치에 따라 다른 위상 값을 얻었다.
우리가 원하는 데이터는 roll, yaw, pitch의 변화 값이므로, 상대 위상 값을 얻기 위해 센서가 처음 위치에서의 값을 저장하여
본래의 위치와의 offset을 이용해 변화량을 얻을 수 있었다.
초기실행 상태 [yaw, pitch, roll] = [0, 0, 0]

스마트폰의 위상에 따른 yaw값

정면셋팅.png 좌회전셋팅.png 우회전셋팅.png

정면을 기준으로 초기 실행을 하였음
정면에서의 yaw 값 약 1.2
좌회전에서의 yaw 값 약 -29
우회전에서의 yaw 값 약 29

프로젝트 결과

최종 하드웨어

Hw.png

최종결과물시연

제약 사항

프로젝트 평가

평가항목

평가사항.png

평가결과

느낀점

제작자.png

오**:
최**:
조**:
  1. 서보모터의 영점 값, 모터의 회전 방향, 카메라의 위치 등