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

MIE capstone
이동: 둘러보기, 검색
(최종결과물시연)
(평가항목)
369번째 줄: 369번째 줄:
 
==프로젝트 평가==
 
==프로젝트 평가==
 
===평가항목===
 
===평가항목===
[[파일:2.mp4|600픽셀]]
 
  
 
===평가결과===
 
===평가결과===

2018년 6월 13일 (수) 10:21 판

프로젝트 소개

프로젝트 명

Leap Motion Sensor와 증강 현실을 이용한 로봇 팔 제어


프로젝트 기간

2018.03.02 ~ 2018.06.15 (15주)


팀 소개

서울시립대학교 기계정보공학과 20124300** 오*식 (팀장)

서울시립대학교 기계정보공학과 20124300** 최*연

서울시립대학교 기계정보공학과 20134300** 조*재

프로젝트 개요

요약

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


개발 배경

현시대의 기술력으로 제작된 로봇은 사회의 여러 분야에서 사람의 일을 대신해 수행한다. 현존하는 대부분의 로봇은 인식한 상황에 대해 미리 입력한 데이터나 알고리즘을 기반으로 작동하는 것이 기본이며 이러한 방식은 공장 생산 라인 등의 제어된 환경 하에서 매우 유용하게 사용된다. 이와는 반대로 현재의 기술로 극복하기 힘든 인간의 직관이 요구되는 상황이 존재한다. 단적인 예로 폭발물 처리(EOD) 작업자를 들 수 있는데, 급조 폭발물을 해체하는 상황에서 매우 다양한 경우가 존재하므로 이 환경은 제어할 수 없다고 할 수 있다. 따라서 기존의 입력된 데이터를 바탕으로 구동하는 로봇은 사용될 수 없으며 대부분의 경우 원격 로봇을 사용하여 폭파하거나 직접 방호복을 입고 해체를 실시한다. 이 상황에서는 알려지지 않은 폭발물에 대해 대처해야 하므로 원격 로봇을 이용한다 하더라도 직접 해체를 수행하는 경우보다 효율이 떨어진다.

ARM.png EOD.png Wireless.png

이러한 위험한 상황에서 사용자에게 직관적인 상황 인식을 가능하게 하는 정보를 전달하고 사용자의 움직임을 모방할 수 있는 로봇이 존재한다면 리스크를 큰 폭으로 낮출 수 있을 것이다. 이러한 종류의 로봇은 이미 다양한 방법과 기술을 통하여 연구되고 있지만, 비용 등의 문제로 인하여 실용화가 된 사례가 별로 없다. 하지만 4차 산업혁명이 활성화된다면 네트워크를 이용한 원격 제어시스템은 더욱 큰 가치를 가지게 될 것이다. 따라서 이러한 배경을 토대로 해당 프로젝트를 제안하게 되었으며, 이를 통해 로봇제어에 대해 이해하고 이를 응용한 시스템을 만들 수 있는 기회를 얻을 것으로 예상된다.


프로젝트 목적 및 기대효과

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


개발 목표

제어환경 구축

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


실제 작업환경 구축

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


서버 구축

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


세부 개발 내용

Smart Phone Application

Android studio.png

스마트폰은 Stereo Image를 출력할 수 있는 좋은 수단이며 Card Board와 같은 도구를 이용하여 이를 쉽게 VR 환경으로 전환할 수 있다. 또한 내부에 Gyro 센서, 가속도 센서, 자기력 센서 등의 다양한 센서들을 내장하고 있기 때문에 사용자의 상태를 입력받을 수 있다. 안드로이드 스튜디오를 이용하여 네트워크와 통신하여 사용자에게 Vision을 제공하고 상태를 입력 받는 Application을 제작한다.


Motion Sensor

Leap.jpg

로봇을 제어할 입력 수단으로 모션 센서를 사용한다. 몇 가지 후보 중 Leap-Motion을 채택하였는데, 손의 형상을 입력받는데 특화되어 있으며 전용 API를 지원하여 제어하기에 편리하다는 장점이 있다.


6-자유도 로봇 팔

Arm.jpg

6개의 따로 회전 가능한 Servo Motor를 이용하여 구동하는 로봇 팔이다. 각 서보는 한 개의 관절을 담당하게 된다. 이 로봇 팔을 이용하여 사용자의 입력을 모방하여 동작하는 로봇을 구성한다.


차량 베이스

Car.jpg

다른 모듈을 장착할 수 있는 Base 장치로 로봇 팔과 카메라에 이동성을 제공한다. 4개의 모터를 이용한 AWD 구동이 가능하며 내부에 배터리 등을 수납할 수 있는 공간이 존재하여 공간 활용성 또한 높다.


VR

Vr lr.png

VR은 가상 현실 플랫폼을 나타내며 최근 매우 각광받는 분야이다. Application을 제작하여 두 개의 카메라에서 입력받은 좌우 이미지를 출력한다. Webcamera 2대와 Head-Mount 및 스마트폰을 이용하여 작업 환경의 이미지를 사용자에게 출력한다.


네트워크 구축

제어 플랫폼으로 ROS(Robot Operating System)를 채택하였다. ROS는 현재 널리 사용되는 검증된 플랫폼으로 장치를 객체의 형태로 구현하여 네트워크에 연결해 사용할 수 있도록 해준다. 매우 안정적이며 Debug에 이용할 수 있는 다양한 도구, Android와의 연동 API를 지원한다.


알고리즘 설계

입력부 설계
입력 장치는 총 5개로 스마트 폰 센서, 컨트롤러, 모션 인식 센서, 두 대의 카메라이다. 센서에서 측정된 각도 값은 상하 각도는 그대로 입력하며 좌우 각도의 경우 초기 상태를 따로 Publishing하여 고개를 돌린 크기를 감지할 수 있도록 한다. 모든 센서들의 입력 값은 ROS Core로 Publishing되어야 한다.


출력부 설계
출력 장치는 총 3개로 두 종류의 드라이버와 스마트 폰이다. 스마트 폰은 자체적으로 두 카메라에서 Publishing한 이미지 메시지를 Subscribing 하여 그대로 출력하며, 드라이버의 경우 각각 연결된 라즈베리 파이가 필요한 메시지를 Publishing 하여 이를 제어 명령으로 변환한 뒤 드라이버에 출력한다.


처리부 설계
Leap Motion에서 입력받은 좌표를 이용하여 End Effector의 위치를 산출하며, 이를 이용해 손을 움켜쥔 모션을 구별하여 Grabber를 제어할 수 있도록 해야 한다.
추가적으로 Leap-Motion 데이터를 처리하여 잘못된 좌표가 입력된 경우를 해결하는 알고리즘을 개발한다. 또한 제스처를 적용하기 위해 Deep Learning을 적용할 수 있는 구조로 제작한다.

프로젝트 설계

개발 일정

개발계획.PNG

시나리오

시나리오.png


목적계통도

목표.png
  • 정확성
이용자에게 전달된 시각적인 정보를 바탕으로 이용자가 모션을 통해 다음 동작을 지시하는 피드백 형태로 작동하기 때문에 (1)이용자의 동작을 정확하게 판단할 수 있어야 하며, (2)기계는 지시에 따라 정확히 제어될 수 있어야 한다.


  • 실시간성
증강현실을 이용해 로봇 팔을 제어하는 경우, 단순히 사용자가 내린 명령을 일회적으로 수행하는 형태보다는 시각적 피드백을 통해 실시간으로 로봇을 제어하는데 그 초점이 맞춰져 있다. 따라서 사용자의 동작을 인식한 순간부터 동작이 일어나 피드백이 돌아오기까지 실시간성이 보장되어야 한다. 이를 위해 (1)알고리즘이 최적화 되어 동작을 빠르게 처리하여 명령으로 변환해야 하며, (2)명령은 이더넷(Ethernet) 혹은 Wi-Fi 등의 네트워크를 통해 빠른 속도로 로봇에 전달되어야 한다. 또한 (3)전달된 명령을 따라 모터제어를 하여 로봇 팔이 정확한 지점으로 신속히 움직일 수 있어야 하며, 마지막으로 (4)영상 정보를 실시간으로 전송하여 사용자에게 보여주어야 한다.


  • 편의성
사용자가 원격에서 로봇 팔을 이용하여 제어해야 하는 데에 있어 직관적인 판단을 이용하여 자연스럽게 제어할 수 있어야 한다. 따라서 사용자는 불편함을 느끼지 않고 로봇을 제어할 수 있도록 하는데 중점을 맞추어야 하며 이를 위해 실제 사용자의 모션에서 제어할 좌표를 구하기 위한 적절한 알고리즘을 사용해야 하며, 피드백 영상 또한 자연스러운 크기와 시야각을 사용하여 가상현실 장비 사용 시 어지러움을 느끼는 VR Sickness 등의 증상을 방지할 수 있어야 한다. 플랫폼이 원격으로 제어되기 때문에 독립성 또한 중요한 요소이다. 제어 환경을 독립적인 모듈로 제작한다면 처리환경과 제어환경을 별도의 환경으로 독립시킬 수 있다. 따라서 로봇 팔은 어떠한 환경에 대해서도 독립적인 동작을 보장받을 수 있게 되어 다양한 용도로 사용될 수 있으며, 제어환경 또한 모션 변환 알고리즘의 형태만 바꾸어 다른 장치를 동작시킬 수 있게 된다.


  • 경제성
로봇 팔을 구성하는 핵심 부품이라 할 수 있는 서보 모터(Servo Motor)의 경우 다양한 스펙과 가격대가 형성되어 있다. 용도에 맞는 적절한 부품을 사용한다면 상당히 저렴한 가격으로 플랫폼을 제작할 수 있을 것이다. 또한 이때 조립식 플랫폼을 사용하므로 현재 판매되는 완성된 로봇 플랫폼의 가격과 비교해 보았을 때 매우 저렴하게 제작할 수 있다. 또한 원격으로 작동하는 로봇 플랫폼이기 때문에 자원 관리가 매우 중요하다. 배터리를 이용해 작동시키므로 컨트롤러의 성능을 품질이 보장하는 범위 하에서 낮추어 사용할 수 있다면 이러한 자원을 절약하여 오랜 시간 동작하도록 할 수 있을 것이다.

개념 설계안

계통도.png 전체적인 시스템은 부분적인 모듈을 네트워크를 통해 연결한 형태를 가지며, 각 모듈은 한 개의 프로세서와 입력센서 혹은 출력을 위한 모터로 구성된다.


모션 센서 부분

Leap Motion 센서
  • 사용자의 동작을 입력 받아 이를 관절의 형태로 변환한다.


PC
  • 입력 받은 관절의 형태를 이용하여 목적 좌표와 End Effector의 각도 및 Grabber의 각도로 변환한 뒤, 이를 네트크로 전송한다.
  • ROS Core를 구동하는 역할을 맡는다.


Application 부분

Smart Phone
  • 사용자에게 Stereo 이미지를 출력하며, 사용자의 시선의 방향을 인식하여 네트워크로 전송한다.


Actuator (Arm)

Raspberry Pi
  • 전송된 좌표와 End Effector의 각도 및 Grabber의 각도를 Inverse Kinematics를 이용하여 Servo Motor의 각도로 환한다.
  • 변환된 각도를 PWM Module로 전송한다.


PWM Module & Robotic Arm
  • 전송된 각도를 이용하여 Servo Motor를 구동한다.


Actuator (Base)

Raspberry Pi (Arm)
  • 전송된 입력을 이용하여 Base를 구성하는 네 개의 바퀴의 속도로 변환한다.
  • 입력은 PC에 부착된 입력장치가 수행하며 이는 Controller, Key Board 등 어떠한 형태의 입력장치라도 될 수 있.
  • 변환된 속도를 Motor Driver로 전송한다.


Motor Driver & Base
  • 전송된 각도를 이용하여 모터를 구동, 차체를 이동시킨다.

설계사양

필요 요구사항 (D)

요구사항2.png


희망사항 (W)

요구사항1.png

프로젝트 개발 과정

업무 분담

업무분담.png

주 업무

  • 오**:일정 조율, 네트워크 통합, 제어 식 및 소프트웨어
  • 최**:물품 선정 및 주문 담당, 하드웨어 조립
  • 조**:Application 제작, 발표자료 편집, 테스트 자료 수집


하드웨어 개발 과정

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


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


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


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


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


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


소프트웨어 개발 과정

6-DOF 로봇 팔

모델 선정
Arm.jpg
사용된 로봇 팔은 총 6개의 Servo Motor를 사용하므로 6개의 수정 가능한 각도를 갖는다. 이는 6 자유도를 나타내게 되며, 이중 2개의 자유도는 Wrist와 Grabber의 각도로 사용되기 때문에 End Effector의 좌표를 나타내기 위한 자유도는 총 4개로 제한된다. 따라서 위의 그림과 같이 4개의 Link를 가진 구조로 모델링하여 이에 따른 Inverse Kinematics를 실행, 좌표와 모터의 각도 사이의 관계식을 구한다.


Inverse Kinematics
[Image]
역기구학 방법을 통해 필요한 관계식을 구한다. 다시 Decoupling을 수행한 뒤 3자유도 모델로 변환하여 Geometric Solution을 찾는다. 아래는 해를 찾기 위한 도식화 표현과 시뮬레이션 결과이다.


Smart Phone 센서 보정

Gyro 센서 및 자기력 센서를 이용하여 사용자의 시선 방향을 Roll, Pitch, Yaw의 형태로 계산한다. 이 방향은 Gyro 센서만을 이용하여 사용자의 회전을 적분하여 누적시킨 값과 같으나, 센서에 Offset이 존재하는 경우 이 값이 시간에 따라 누적되어 오차가 점점 커지게 된다. 따라서 아래의 그림과 같이 Complementary Filter를 이용하여 이를 극복한다.


필터.png


위의 처리 과정은 Complementary Filter의 처리 알고리즘을 나타낸 것으로, Low-Pass Filter를 이용하여 자기력 센서의 노이즈를 제거한 뒤, Gyroscope의 누적 값을 보정하기 위한 기준으로 사용한다. 이 방법은 자기력 센서가 시간에 대한 오차의 영향을 받지 않는다는 점에서 짧은 시간 동안은 상당히 정확하나 장기간 누적되면 정확성이 떨어지는 Gyro 센서가 일정 비율로 더해져 보완하는 방법이다.


원거리 작업환경 VR영상

Head-Mount 기기의 디스플레이로 사용되는 스마트폰을 이용하여 작업환경에 있는 차체에 부착된 Webcamera 2대에서 받아온 이미지를 사용자에게 Stereo Image로 출력한다.

Vr.jpgWebcamera.png VR.png

Raspberry Pi의 연산능력이 상당히 부족하였기 때문에 Webcamera가 촬영한 이미지를 그대로 출력할 수 없었다. 따라서 이러한 부분을 해결하기 위해 Webcamera Driver가 제공하는 API를 이용하여 해상도를 (160*120)으로 조절하였다.


스마트폰과의 통신

Gyro 센서 및 자기력 센서를 이용하여 사용자의 시선 방향을 Roll, Pitch, Yaw의 형태로 계산한다. 이 방향은 Gyro 센서만을 이용하여 사용자의 회전을 적분하여 누적시킨 값과 같으나, 센서에 Offset이 존재하는 경우 이 값이 시간에 따라 누적되어 오차가 점점 커지게 된다. 따라서 아래의 그림과 같이 Complementary Filter를 이용하여 이를 극복한다.

[Image]

위의 처리 과정은 Complementary Filter의 처리 알고리즘을 나타낸 것으로, Low-Pass Filter를 이용하여 자기력 센서의 노이즈를 제거한 뒤, Gyroscope의 누적 값을 보정하기 위한 기준으로 사용한다. 이 방법은 자기력 센서가 시간에 대한 오차의 영향을 받지 않는다는 점에서 짧은 시간 동안은 상당히 정확하나 장기간 누적되면 정확성이 떨어지는 Gyro 센서가 일정 비율로 더해져 보완하는 방법이다.


ROS를 이용한 Node 간 통신 구축

Robot Operating System (ROS)은 로봇의 각 부품들을 Node의 형태로 변환한 뒤 네트워크를 통해 연결하는 방법을 사용한다. 이때 정보를 배포하는 객체를 Publisher, 정보를 찾아 입력 받는 객체를 Subscriber라고 하며, 모든 통신은 한 개의 ROS Core가 존재하여 이를 중계하는 방식으로 진행된다. 통신은 ROS Core가 실행되고 있는 ROS Master와 다른 장치 간의 TCP/IP 통신 방식으로 진행되며, 송수신되는 모든 정보들은 Topic이라고 불린다. 따라서 모든 장비는 ROS Master의 IP와 ROS Core의 Port 번호를 알고 있어야 한다. 각 모듈이 배포하는 데이터는 다음과 같다.

  • Smart Phone: 사용자의 시선 방향
  • PC: 차량 구동 명령, 처리된 End Effector의 좌표
  • Raspberry Pi (Arm): Stereo Camera Image
  • Raspberry Pi (Body): Stereo Camera Image

반대로 각 모듈이 요구하는 데이터는 다음과 같다.

  • Smart Phone: 두 개의 Stereo Image
  • PC: 없음
  • Raspberry Pi (Arm): End Effector의 좌표
  • Raspberry Pi (Body): 차량 구동 명령

이를 다음과 같은 그래프로 나타낼 수 있다.

Rqt GRAPH.PNG


스마트폰과통신과정.png

네트워크를 통해 원거리 작업환경에서 전송된 이미지를 입력받고 스마트폰의 위상변화 값을 센싱한 뒤 네트워크를 통해 다시\roll, yaw, pitch값을 작업환경으로 전송한다. 이 위상 값을 가지고 Webcamera에 부착된 서보모터를 제어하여 사용자의 시야의 움직임에 맞춰 Webcamera의 움직임을 제어하였다.

변경 사항

하드웨어 개선사항

차랑 베이스

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

소프트웨어 개선사항

Application 실행 시 방향 초기화

Gyro 센서와 자력 센서를 동시에 이용하여 위상 값을 도출하다 Roll, Pitch, Yaw의 초기 값이 자기장의 방향을 나타내게 되었다. 이 상황에서 Application을 사용하는 경우 정면 시선이 주변을 향하게 되어 사용자에게 불편함이 발생한다. 따라서 Application이 처음 실행되는 경우에 Yaw 방향을 영점으로 하여 최초 실행 이후 시선의 변화에 따라 움직임이 변화하도록 한다.
아래의 사진은 초기값 설정을 나타낸다.

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

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

프로젝트 결과

최종 하드웨어

Hw.png

최종결과물시연

사용자의 움직임을 입력받는 로봇팔

제약 사항

프로젝트 평가

평가항목

평가결과

느낀점

제작자.png

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