Creative Creators

MIE capstone
이동: 둘러보기, 검색

프로젝트 개요

기술개발 과제

국문 : UI로 제어하는 3축 로봇팔

영문 : 3-Axis Robot Arm Controlled By UI

과제 팀명

Creative Creators

지도교수

성민영 교수님

개발기간

2019년 9월 ~ 2019년 12월 (총 4개월)

구성원 소개

서울시립대학교 기계정보공학과 20134300** 강**(팀장)

서울시립대학교 기계정보공학과 20114300** 이**

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

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

서울시립대학교 기계정보공학과 20154300** 차**

서론

개발 과제의 개요

개발 과제 요약

 가정에서나 소규모 작업 환경에서 사용할 수 있는 UI 제어 3축 소형 로봇팔을 개발한다. 책상이나 작업대 위에서 사용할 수 있도록 작고 가볍게 만들고 또한 사용자 친화적 인터페이스를 갖춰 일반 사용자가 사용하기 쉽게 설계한다.

개발 과제의 배경 및 효과

로봇팔은 이미 제조 분야나 의료 분야 등 많은 산업 분야에서 다양한 용도로 쓰이고 있다. 기술이 발전되감에 따라 가정에서나 소규모 작업 환경에서도 쓰일 수 있는 로봇팔에 대한 수요가 늘어났다. 기존의 로봇팔은 일반 사용자가 사용하기엔 과한 스펙과 복잡한 인터페이스를 가지고 있어 가정에서나 소규모 작업 환경에 쓰이기 적합하지 않다. 따라서 해당 작품은 작고 가볍게 설계하여 일반 책상 위에서도 구동 가능하고 유저 인터페이스를 디자인하여 처음 로봇팔을 접하는 사용자도 쉽게 이용할 수 있도록 설계한다.

개발 과제의 목표와 내용

소규모 작업을 위한 소형화를 중점으로 개발한다. 또한 Graphical User Interface을 제공하여 사용자가 손쉽게 위치를 제어할 수 있도록 하고 Inverse kinematics를 이용한 위치 제어 방식을 채택하여 직관성을 높인다. 그리고 Feedback System의 구현으로 각도 제어의 정확성을 높였다.

완료작품의 평가방법

평가항목 평가방법 적용기준 개발 목표치 비중(%)
구조적 안정성 반복 작동 시킨 후 부품이 잘 체결되어있는지 확인 100회 반복 작동 이후 분리된 부품개수 0개 20
시장성 제품이 합리적인 가격인지 확인 제작 가격 60만원 20
정밀성 실제 결과값들의 상대적 오차 결과값들의 표준편차 1cm 30
정확성 엔드 이펙터의 지정된 위치와 실제 위치와의 오차를 확인 오차의 표준편차 0.1cm 30

개발일정 및 추진체계

단계별 세부개발 내용 담당자 개발기간(월단위) 비고
9 10 11 12
제품 구상 및 기초 설계 팀 전원
하드웨어 설계 및 3D 프린팅 이충원, 정희훈 10월 이후 다른 업무 보조
임베디드 개발 및 사용자 인터페이스 연동 강건우, 오그릴
테스트 및 보완 차돌딘 12월 외 다른 업무 보조

구성원 및 추진체계

관련 기술의 현황

State of art

현재 로봇팔은 제조 분야에서 활발히 사용되어지고 있는데 이런 로봇팔을 제조용 로봇이라고 한다. 자동차, 반도체 및 디스플레이 등 다양한 전자부품용 제조에 활용되어지고 있어 다양한 기술이 발달되었다. 대표적인 기술들은 다음과 같다.

1.힘 센서, 로봇간 협업(Co-work), 비전을 이용한 전자제품 조립 분야의 시스템 구현 기술(FANUC)

2.산업용 로봇 6축 다관절, 7축 다관절, 양팔로봇시스템 등 기술 (YASKAWA)

3.공장 자동화를 넘어선 일상 생활 자동화, 의료 자동화 (KUKA)

4.짧은 시간 안에 유저가 로봇 사용을 할 수 있게 해 주는 유저 친화적 인터페이스 기술 (Universal Robots)

기술 로드맵

3조 기술로드맵.PNG

특허조사

3조 특허조사.PNG

특허명: 산업용 로보트트의 링크 구조 LINK MECHANISM OF INDUSTRIAL ROBOT

위 특허는 3축 로봇팔이며 3번째 축에 대해서 4절링크 구조를 이용하여 3번째 링크를 동작하는 것이 특징이다.

위 특허의 장점은 모터를 밑에 위치시킬 수 있어서 무게중심이 밑에 있다는 것이다. 통상 3번째 링크를 돌리기 위해서 3번째 축에 모터가 위치하여 무게중심이 상승하지만 위 특허는 그것을 방지해준다.

특허전략

위 특허를 피하기 위해서 3번째 링크를 돌리기 위한 4절링크를 쓰지 않고 모터를 3번째 축에 직접 위치시킨다. 다만 이 경우 모터의 너비 때문에 양 옆으로 모터가 돌출되어 미관상 보기가 안좋을 뿐더러 질량 중심이 옆으로 이동한다. 이를 방지하기 위해 웜기어 모터를 활용하여 옆으로 돌출되는 부분을 최소화 시킨다.

관련 시장에 대한 분석

경쟁제품 조사 비교

3조 경쟁제품.PNG

마케팅 전략

3조 마케팅전략.PNG

개발과제의 기대효과

기술적 기대효과

DC 모터를 사용한 분해각이 작은 정밀한 소형 로봇팔을 가정이나 작은 사업장에서 사용할 수 있을 것이다. 전에 교육용으로 나온 소형 로봇팔들 보다 정밀한 제어가 가능하기 때문에 작업에 있어서 더 효율적이다. 또한 쉬운 사용자 인터페이스를 구현해 코딩을 전혀 모르는 사람도 이용할 수 있도록 할 것이다.

경제적 및 사회적 파급효과

기존 유사한 기능을 가진 제품에 비해 저렴하다. 가정, 학교 및 소규모 작업장의 로봇팔에 대한 수요가 늘어나고 있기 때문에 저렴한 가격은 충분히 로봇팔 시장에 파급효과를 줄 수 있다. 또한 작고 반복적인 업무를 줄여주어 노동시간의 감소를 가져올 수 있다.

구성원 및 추진체계

이충원 - 하드웨어 설계 및 부품 제작

정희훈 - 하드웨어 설계 및 부품 제작

오그릴 - 소프트웨어 개발

강건우 - 보고서 작성 및 임베디드 개발

차돌딘 - 보고서 작성 및 임베디드 개발

설계

설계사양

제품 요구사항
번호 요구사항 D or W
1 집게의 힘은 적당한가 D
2 집게의 위치는 일정한가 D
3 폭표 위치까지 도달하는가 D
4 위치 변화에 따라 적절한 각도값이 설정되는가 D
5 입-출력에 걸리는 시간이 적정한가 W
6 중량물 이동 시에도 일관된 움직임을 보이는가 W
7 4축이 리얼타임으로 반응하는가 W
8 가격은 적정한가 W

개념설계안

시스템 구성도

3조 시스템구성도.PNG

DC모터와 각도센서를 이용해 자체 서보모터를 구성하며 제어보드로는 Beaglebone Black을 이용한다. Beaglebone Black과 컴퓨터를 연결하는 방법은 TCP/IP를 이용해 통신하기로 한다. 컴퓨터는 UI인터페이스를 제공하며 사용자는 이 UI를 통해 로봇팔을 제어할 수 있다.

Computed Torque PID DC모터 제어

3조 PID개념.PNG

링크2, 링크3의 각도에 따라 중력에 의해 걸리는 토크를 미리 계산한 후, 토크제어를 통해 Feed Forward로 토크에 해당하는 전압을 PID 제어와 함께 걸어준다.

Computed Torque 계산

3조 Computed Torque.PNG

3축 로봇팔의 2번 링크와 3번 링크 위치에 따른 중력에 의한 토크는 위와 같다.

이론적 계산 및 시뮬레이션

모터 PID 시뮬레이션

3조 PID시뮬.PNG

3조 PID시뮬2.PNG

link1 모터의 서로 다른 PID값에 따른 reponse를 시뮬레이션 하였다. link1의 특징상, load를 토크 대신에 link2, link3 외 결합된 파트들의 관성 모멘트를 모터의 관성모멘트와 더해서 시뮬레이션을 진행하였다.

Inverse Kinematics 계산 식

3조 InverseKinematics계산식.PNG

Xc, Yc, Zc : End effector의 wrist center의 xyz좌표

Theta 1,2,3: link1,2,3의 각도

조립도

조립 완성 사진

3조 작품사진3.png

조립순서

베어링끼우기.JPG

link1에 베어링 4개를 조립한다.

모터조립.JPG

모터 브라켓과 모터와 link1_shaft를 조립한다.

모터와파트1결합.JPG

모터조립결합체와 link1을 결합한다.

파트1.1 1.2 결합.JPG

link2_support와 link1을 결합한다.

각도센서결합.JPG

각도센서와 link1_shaft을 결합한다.

파트1완성.JPG

지금까지 결합한 모습이다.


파트2조립각도센서.JPG

각도센서와 link2_power를 link2_base와 조립한다.

파트2모터커플러축결합.JPG

link2_motor_mount와 모터와 커플러와 긴 샤프트를 결합한다.

파트2결합.JPG

이전에 결합한 것을 link2_base와 결합한다.


파트3커플러허브조립.JPG

마운팅허브 16mm와 짧은 샤프트와 link3를 조립한다.

파트3조립.JPG

각도 센서와 이전에 조립한 것과 웜기어DC모터를 함께 조립한다.

부품도

link1

link1

link1_shaft

link1_shaft

link2_base

link2_base

link2_motor_mount

link2_motor_mount

link2_power

link2_power

link2_support

link2_support


link3

link3

제어부 및 회로설계

3조 회로.PNG

건전지로 이루어진 5V를 OP-amp를 이용해 3.3V로 전압강하시킨다.

이 3.3V를 센서와 모터 드라이브 컨트롤 핀을 제어하는 데 쓴다.

모터 드라이브에 12V 파워 서플라이를 연결한다.

이 12V로 모터를 구동한다.


3조 회로2.PNG

Beaglebone Black SPI Master 1개에 대해 센서(각도) 3개와 통신해야 한다.

이 경우 OR GATE와 Beaglebone Black의 GPIO를 이용하면 1개로 3개와 통신할 수 있다.

각각의 센서에 고유한 GPIO를 배정한다. 한 센서의 값을 알고 싶을 때 그 센서에 배정된 GPIO 신호를 LOW로 설정한다.

소프트웨어 설계

소프트웨어는 크게 2가지로 나뉜다. 첫째 PC에서 실행되는 UI프로그램과 둘째 Beaglebone Black에서 실행되는 임베디드 프로그램이다.

소프트웨어 언어는 C++를 선택하였다. 그에 따라 C++기반의 프레임워크인 QT를 이용하여 UI를 작성하였다. QT프로그램과 Beaglebone Black이 통신하는 방법은 TCP/IP를 이용하였다. 3D화면을 보여주기 위해서 Opengl 라이브러리를 이용하였다.

UI 소프트웨어 소개

View 조작 방법은 카티아의 조작 방법과 비슷하게 하였다.

3조 소프트웨어1 1.gif

화면에서 마우스 휠 버튼만 누른 상태에서 마우스를 움직이면 View가 양옆으로 이동한다.(Pan 모드)

3조 소프트웨어1 2.gif

화면에서 마우스 휠 버튼을 누른 상태에서 왼쪽 마우스를 누르면 View가 회전한다.(Rotation 모드)

3조 소프트웨어1 3.gif

화면에서 마우스 휠 버튼을 위아래로 움직이면 View가 앞뒤로 이동한다.(확대 축소와 비슷)

3조 소프트웨어1 4.gif

화면에서 xyz축에 마우스를 대고 드래그하면 inverse kinematics가 적용된다.

3조 소프트웨어2.png

connect 버튼: Beaglebone Black과 연결하는 버튼

set Angle 버튼: 목표 각도를 Beaglebone Black에 송신하는 버튼

set PID 버튼: PID와 offset을 Motor 번호에 맞는 모터에 적용한다.

슬라이더와 박스를 이용해 LInk1,2,3의 각도를 조정할 수 있다.

UI 소프트웨어 클래스

Axis 클래스: 로봇팔 Axis Camera 클래스: View에 대한 행렬을 저장하고 마우스 입력에 따라 그 행렬을 수정하는 클래스.

EndEffector 클래스: End effector 위치 좌표를 저장하는 클래스.

Grid 클래스: Grid의 좌표를 저장하고 그리는 클래스.

Hexahedron 클래스: 직육면체의 좌표를 저장하는 클래스.

Process 클래스: Beaglebone Black으로부터 센서 데이터를 받아 화면에 띄우는 클래스.

Slider 클래스: UI에 있는 목표각도 슬라이더를 관리하는 클래스.

SpinBox 클래스: UI에 있는 목표각도 박스를 관리하는 클래스.

Network 클래스: Beaglebone Black과 통신할 수 있도록 소켓 descriptor등을 관리하는 클래스.

Robot 클래스: Denavit A행렬을 저장하고 정기구학과 역기구학을 계산하는 클래스.

Beaglebone Black 소프트웨어 클래스

GPIO 클래스: Beaglebone Black의 GPIO를 제어하는 클래스.

PWM 클래스: PWM의 주기와 duty cycle을 제어하는 클래스.

Motor 클래스: 모터를 제어하는 클래스로 GPIO2개(H bridge)와 PWM채널을 이용해 모터의 방향과 duty cycle을 제어하는 클래스.

Network 클래스: 컴퓨터와 통신할 수 있도록 소켓 descriptor등을 관리하는 클래스.

NetStream 클래스: Network 클래스가 관리하는 소켓을 통해 데이터를 읽고 쓰는 것을 관리하는 클래스.

SPI 클래스: SPI 통신을 통해 센서로부터 각도 값을 읽어오는 클래스.

자재소요서

부품명 규격 수량 구매,외주,제작
자기 센서 absolute encoder 40 구매
점퍼 케이블 수-수 30cm 40 구매
점퍼 케이블 수-암 30cm 40 구매
점퍼 케이블 암-암 30cm 40 구매
점퍼 케이블 수-수 20cm 40 구매
점퍼 케이블 수-암 20cm 40 구매
점퍼 케이블 암-암 20cm 40 구매
파워 서플라이 12V-6A 1 구매
파워 서플라이 케이블 220V 3상 1 구매
DC 웜기어드 모터 12V 55rpm 1 구매
DC 기어드 모터 12V 200rpm 1 구매
DC 기어드 모터 12V 60rpm 1 구매
비글본 보드 BeagleBone Black 1 구매
마운팅 허브 내경 10mm 1 구매
볼트류 M2,M3,M4 120 구매
너트류 M2,M3,M4 120 구매
모터 커플링 6*10 기본직결형 2 구매
베어링 내경 10mm 3 구매
베어링 내경 3mm 4 구매
3D 프린트 부품 ABS, PLA 외주

결과 및 평가

완료작품 소개

프로토타입 사진

3조 작품사진1.png

3조 작품사진2.png

3조 작품사진4.png

파일:작동영상1.mp4

파일:작동영상2.mp4

파일:작동영상3.mp4

포스터

3조 포스터.JPG

개발사업비 내역서

항목 (품명, 규격) 수량 단가 (원) 계 (원)
자기 센서 3 23780 71340
점퍼 케이블 수-수, 30cm 40 1030
점퍼 케이블 수-암, 30cm 40 950
점퍼 케이블 암-암, 30cm 40 800
점퍼 케이블 수-수, 20cm 40 1260
점퍼 케이블 수-암, 20cm 40 1260
점퍼 케이블 암-암, 20cm 40 1260
파워 서플라이, 12V-6A 1 16300 16300
파워 서플라이 케이블, 220V 3상 1 8000 8000
DC 웜기어드 모터, 12V 55rpm 1 18000 18000
DC 기어드 모터, 12V 200rpm 1 14500 14500
DC 기어드 모터, 12V 60rpm 1 20590 20590
비글본 보드 1 73000 73000
비글본 케이스 1 9600 9600
알루미늄 마운팅 허브 1 14700 14700
볼트류, M2,M3,M4 11580
너트류, M2,M3,M4 3960
모터 커플링 2 1800 3600
베어링, 내경 10 3 360 1080
베어링, 내경 3 4 310 1240
3D 프린팅 비용

완료 작품의 평가

평가항목 평가방법 적용기준 개발 목표치 비중(%) 평가결과
구조적 안정성 반복 작동 시킨 후 부품이 잘 체결되어있는지 확인 100회 반복 작동 이후 분리된 부품개수 0개 20 분리된 부품 개수가 없다.
20%
시장성 제품이 합리적인 가격인지 확인 제작 가격 60만원 20 60만원보다 더 저렴하며 50만원대 가격이다.
20%
정밀성 실제 결과값들의 상대적 오차 결과값들의 표준편차 1cm 30 상대적 오차가 1cm이내에 들지 못하였다.
10%
정확성 엔드 이펙터의 지정된 위치와 실제 위치와의 오차를 확인 오차의 표준편차 0.1cm 30 엔드 이펙터의 오차가 0.1cm이내에 들지 못하였다.
10%

향후평가

전선배치에 대한 평가가 필요하다. 이번 프로젝트에서 우리 팀이 간과한 사항은 전선배치에 대한 고려였다. 전선이 너무 많아서 미관상 보기도 안좋을 뿐더러 로봇팔이 움직임에 따라 전선이 움직이며 센서 값을 읽는데에 오류가 발생했다. 향후에는 전선을 최대한 줄이는 방법과 그 전선이 최대한 움직이지 않도록 전선을 넣을 공간을 고려하는 것이 필요할 것이다.

부록

참고문헌 및 참고사이트

1. Mark W. Spong, Seth Hutchinson, and M. Vidyasagar, Robot Dynamics and Control, 2nd ed., 2004

2. Derek Molloy, Exploring BeagleBone: Tools and Techniques for Building with Embedded Linux, Wiley, 2014

3. Franklin, Gene F., Feedback Control of Dynamic Systems, 7th ed., Pearson, 2015

소프트웨어 프로그램 소스

void Motor::control(float & reference, float & realA){
	if (!run) {
		return;
	}
	pid.error0 = reference - realA;
	int dutyCycle = (int)(pid.Pgain * pid.error0 + pid.Igain * pid.errorI + pid.Dgain*(pid.error0 - pid.error1)); 
	pid.error1 = pid.error0;
	if (dutyCycle > 0) {
		setDirection(DC::MOTOR_DIRECTION::B);
		pid.errorI = pid.errorI + pid.error0;
		go(dutyCycle);
		}
	else if (dutyCycle < 0) {
		setDirection(DC::MOTOR_DIRECTION::A);
		pid.errorI = pid.errorI + pid.error0;
		go(dutyCycle);
	}
	else {
		setDirection(DC::MOTOR_DIRECTION::N);
		pid.errorI = pid.errorI + pid.error0;
	}
}

Beaglebone Black 임베디드 보드에 쓰였던 모터 컨트롤 코드이다.


Robot::Qs Robot::inverseKinematics(glm::mat4& target) {
    glm::vec3 position = (glm::vec3)target[3];
    glm::vec3 wrist_center= position;
    glm::f32 qs_[3];
    wrist_center = position;

    qs_[0] = atan2( wrist_center.y, wrist_center.x)*180.0/M_PI;
    glm::f32 a2 = glm::length((glm::vec3)denavitA[2][3]);
    glm::f32 a3 = endEffectorLength;
    glm::f32 r = sqrt(pow(wrist_center.x, 2) + pow(wrist_center.y, 2));
    glm::f32 s = wrist_center.z - glm::length((glm::vec3)denavitA[1][3])- glm::length((glm::vec3)denavitA[0][3]);
    double D = (+pow(r, 2) + pow(s, 2) - pow(a2, 2) - pow(a3, 2)) / (2.0*a2*a3);
    glm::f32 q3 = atan2( sqrt((1 - pow(D, 2))), D);
    qs_[2] = q3 * 180.0 / M_PI;
    qs_[1] = 90.0 - 180.0 / M_PI * (atan2(s, r) + atan2(a3*sin(q3), a2 + a3 * cos(q3)));

    Qs qs;
    for (int i = 0; i < 3; i++) {
        qs.q[i] = qs_[i];
    }
    return qs;
}

QT프로그램에 쓰였던 inverse kinematics에 관한 코드이다.