Creative Creators

MIE capstone
Mie201904 (토론 | 기여)님의 2019년 12월 18일 (수) 04:53 판 (개발일정 및 추진체계)
이동: 둘러보기, 검색

프로젝트 개요

기술개발 과제

국문 : 00000000..

영문 : 00000000..

과제 팀명

Creative Creators

지도교수

성민영 교수님

개발기간

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

구성원 소개

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

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

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

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

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

서론

개발 과제의 개요

개발 과제 요약

 가정에서나 소규모 작업 환경에서 사용할 수 있는 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

내용

기술 로드맵

내용

특허조사

내용

특허전략

내용

관련 시장에 대한 분석

경쟁제품 조사 비교

내용

마케팅 전략

내용

개발과제의 기대효과

기술적 기대효과

내용

경제적 및 사회적 파급효과

내용

구성원 및 추진체계

내용

설계

설계사양

내용

개념설계안

내용

이론적 계산 및 시뮬레이션

내용

조립도

조립도

내용

조립순서

내용

부품도

link1

link1


link2_base

link2_base

link2_motor_mount

link2_motor_mount

link2_power

link2_power

link2_support

link2_support

link3

link3

제어부 및 회로설계

내용

소프트웨어 설계

내용

자재소요서

부품명 규격 수량 구매,외주,제작
자기 센서 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조 작품사진3.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 프린팅 비용

완료 작품의 평가

내용

향후평가

내용

부록

참고문헌 및 참고사이트

내용

관련특허

내용

소프트웨어 프로그램 소스

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;
	}
}
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)this->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)this->denavitA[1][3])- glm::length((glm::vec3)this->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;
}