더듬이 로봇 동영상

Development period

2주

Using device

얀센, 리밋 스위치, 더듬이(3d 프린팅)

Schematic diagram

About the project

오른쪽 더듬이 터치: 2초 후진 -> 2초 왼쪽 제자리 회전
왼쪽 더듬이 터치 : 2초 후진 -> 2초 오른쪽 제자리 회전

Algorithm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#define Limit_L 2  // Pin 2 connected to Limit switch out
#define Limit_R 3 // Pin 3 connected to Limit switch out
#define button 4

#define straight=255;
#define rotateH=255;
#define rotateL=180;

int buttonState = 0;
int Lim_L = 0;
int Lim_R = 0;
//모드
char mode ='G';

void setup() {
pinMode(button, INPUT_PULLUP);
pinMode(Limit_L,INPUT);
pinMode(Limit_R,INPUT);
pinMode(4, OUTPUT); // 방향 HIGH, LOW +,-
pinMode(5, OUTPUT); // PWM
pinMode(6, OUTPUT); // PWM
pinMode(7, OUTPUT); // 방향 HIGH, LOW +,-
Serial.begin(9600);
}

void loop() {
// put your main code here, to run repeatedly
buttonState = digitalRead(button);
Lim_L = digitalRead(Limit_L);// leftstate값 확인필요!, 흰색 = 750, 검은색 = 0
Lim_R = digitalRead(Limit_R);

mode_selector();

Serial.println(mode);

switch(mode){
case 'G': digitalWrite(4,0); //직진
analogWrite(5,255);
analogWrite(6,255);
digitalWrite(7,0);
break;
case 'L': digitalWrite(4,1); // 후진
analogWrite(5,255);
analogWrite(6,255);
digitalWrite(7,1);
delay(2000);
digitalWrite(4,0); // 좌회전
analogWrite(5,0);
analogWrite(6,255);
digitalWrite(7,0);
delay(2000);
break;
case 'R':digitalWrite(4,1); // 후진
analogWrite(5,255);
analogWrite(6,255);
digitalWrite(7,1);
delay(2000);
digitalWrite(4,0); // 우회전
analogWrite(5,255);
analogWrite(6,0);
digitalWrite(7,0);
delay(2000);
break;
case 'B': digitalWrite(4,1); // 후진
analogWrite(5,255);
analogWrite(6,255);
digitalWrite(7,1);
break;
}
delay(10);
}

void mode_selector(){
if(Lim_L == 1 && Lim_R == 1){mode ='G';}
else if(Lim_L == 0 && Lim_R == 1){mode ='R';}
else if(Lim_L == 1 && Lim_R == 0){mode ='L';}
else if(Lim_L == 0 && Lim_R == 0){mode ='B';}
}

delay(2000); 을 통해 하나의 case 안에서 두 가지 모션 수행

1
2
3
4
5
6
7
8
9
10
11
case 'L':  digitalWrite(4,1);  // 후진
analogWrite(5,255);
analogWrite(6,255);
digitalWrite(7,1);
delay(2000);
digitalWrite(4,0); // 좌회전
analogWrite(5,0);
analogWrite(6,255);
digitalWrite(7,0);
delay(2000);
break;

Reference

[1]리밋 스위치
[2]더듬이 로봇

알렉사 얀센 연동 동영상

Team member

김영수, 김현준

Development period

2017.4 - 5

Using device

Alexa echo dot, jansen, L239D motor driver, esp8266

Schematic diagram

About the project

aduino library 설치 아래 있는거 다 설치했더니 됬다

ESPAsyncTCP-master.zip
ESPAsyncUDP-master.zip
ESPAsyncWebServer-master.zip
fauxmo-master.zip
xoseperez-fauxmoesp-fdf5ffd6793d.zip
Adafruit_CC3000_Library-master.zip
CDM v2.12.06 WHQL Certified.zip

code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include "fauxmoESP.h"

#define WIFI_SSID "KBDLAB1"
#define WIFI_PASS "kbdlabwifi2@"
#define SERIAL_BAUDRATE 115200


fauxmoESP fauxmo;

// -----------------------------------------------------------------------------
// Wifi
// -----------------------------------------------------------------------------
#define Driver1 5 // D1
#define Driver2 4 // D2
#define Driver3 0 // D3
#define Driver4 2 // D4


void wifiSetup() {

// Set WIFI module to STA mode
WiFi.mode(WIFI_STA);

// Connect
Serial.printf("[WIFI] Connecting to %s ", WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASS);

// Wait
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(100);
}
Serial.println();

// Connected!
Serial.printf("[WIFI] STATION Mode, SSID: %s, IP address: %s\n", WiFi.SSID().c_str(), WiFi.localIP().toString().c_str());
}

void callback(uint8_t device_id, const char * device_name, bool state) {
Serial.printf("[MAIN] %s state: %s\n", device_name, state ? "ON" : "OFF");

if ( (strcmp(device_name, "left") == 0) ) {
// this just sets a variable that the main loop() does something about
if (state) {
digitalWrite(Driver3, HIGH);
digitalWrite(Driver4, LOW);

} else {
digitalWrite(Driver1, LOW);
digitalWrite(Driver2, LOW);
digitalWrite(Driver3, LOW);
digitalWrite(Driver4, LOW);

}
}
if ( (strcmp(device_name, "going") == 0) ) {
// this just sets a variable that the main loop() does something about
if (state) {
digitalWrite(Driver1, HIGH);
digitalWrite(Driver2, LOW);
digitalWrite(Driver3, HIGH);
digitalWrite(Driver4, LOW);

} else {
digitalWrite(Driver1, LOW);
digitalWrite(Driver2, LOW);
digitalWrite(Driver3, LOW);
digitalWrite(Driver4, LOW);

}
}
if ( (strcmp(device_name, "backing") == 0) ) {
// this just sets a variable that the main loop() does something about
if (state) {
digitalWrite(Driver1, LOW);
digitalWrite(Driver2, HIGH);
digitalWrite(Driver3, LOW);
digitalWrite(Driver4, HIGH);

} else {
digitalWrite(Driver1, LOW);
digitalWrite(Driver2, LOW);
digitalWrite(Driver3, LOW);
digitalWrite(Driver4, LOW);

}
}
if ( (strcmp(device_name, "spinning") == 0) ) {
// this just sets a variable that the main loop() does something about
if (state) {
digitalWrite(Driver1, HIGH);
digitalWrite(Driver2, LOW);
digitalWrite(Driver3, LOW);
digitalWrite(Driver4, HIGH);

} else {
digitalWrite(Driver1, LOW);
digitalWrite(Driver2, LOW);
digitalWrite(Driver3, LOW);
digitalWrite(Driver4, LOW);

}
}
}

void setup() {
// Init serial port and clean garbage
Serial.begin(SERIAL_BAUDRATE);
Serial.println("FauxMo demo sketch");
Serial.println("After connection, ask Alexa/Echo to 'turn <devicename> on' or 'off'");
pinMode(Driver1, OUTPUT);
pinMode(Driver2, OUTPUT);
pinMode(Driver3, OUTPUT);
pinMode(Driver4, OUTPUT);


// Wifi
wifiSetup();

// Fauxmo
fauxmo.addDevice("going");
fauxmo.addDevice("backing");
fauxmo.addDevice("left");

fauxmo.addDevice("spinning");

fauxmo.onMessage(callback);
}

void loop() {
fauxmo.handle();
}

코드에서

1
fauxmo.addDevice("going");

를 통해 알렉사 장치에 device를 추가해 주고,
callback 함수를 통해 해당 디바이스를 on/off 제어 한다.

Thanks to

영수~~

Reference

[1]알렉사 esp8266 SW setup adafruit 홈페이지
[2]아마존 알렉사

라인 트레이싱 유튜브 영상

Team Member

[수염난 피터팬] 김현준 이수홍
Special thanks 김영수, 차혜민, 공현배, 강남규, 김승하

Development Period

2017.2 ~ 3

Using Device

아두이노, 적외선 센서, DC 모터, 과학상자 기어 및 축, 3D 프린터(신도 DP200)

Schematic Diagram

About the project & Goal

여러개의 적외선 센서 조합을 이용하여 Jansen이 검은색 선을 따라갈 수 있도록 한다.

HW design


다리 길이의 비율은, 참조[1]의 다리 길이 비율을 차용하였고, 30*30*30cm의 경진 대회 규격을 고려하여 최대한 길게 길이를 정했습니다.

  1. 보행중에 다리의 흔들림을 줄이기 위해서
  2. 축의 흔들림으로 인한 내부 마찰을 줄이기 위해서

위와 같은 목적으로 Joint에서의 디자인은 사용, 와셔와 볼트로 두 linkage 고정

동력 전달부에서, 기구의 강도가 가장 약해짐
이를 해결하기 위해, 알맞은 공차 설계로 동력 전달 중 흔들림으로 인한 파워 로스를 줄여줌

무게 중심을 낮추기 위해, 부품 중 가장 무거운 모터의 위치를 아래로 내릴 수 있도록 바디를 설계 하였다.

Algorithm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
// 센서
int left2 = A2;
int left1 = A3;
int right1 = A4;
int right2 = A5;

int l2 = 0;
int l1 = 0;
int r1 = 0;
int r2 = 0;
//모드
int mode=0;
int r = 1;

int straight=255;
int rotateH=255;
int rotateL=180;

void setup() {
pinMode(left2,INPUT);
pinMode(left1,INPUT);
pinMode(right1,INPUT);
pinMode(right2,INPUT);
pinMode(4, OUTPUT); // 방향 HIGH, LOW +,-
pinMode(5, OUTPUT); // PWM
pinMode(6, OUTPUT); // PWM
pinMode(7, OUTPUT); // 방향 HIGH, LOW +,-
Serial.begin(9600);
}

void loop() {
// put your main code here, to run repeatedly
l2 = analogRead(left2);// leftstate값 확인필요!, 흰색 = 750, 검은색 = 0
l1 = analogRead(left1); //rightstate 확인필요!, 흰색 = 750, 검은색 = 0
r1 = analogRead(right1);
r2 = analogRead(right2);

Serial.print(l2);
Serial.print("/");
Serial.print(l1);
Serial.print("/");
Serial.print(r1);
Serial.print("/");
Serial.print(r2);
Serial.print("/");
Serial.println(mode);

r = r + 1;
if(r>10){ r = 1; }
mode_selector();

switch(mode){
case 0: digitalWrite(4,0);
analogWrite(5,straight);
analogWrite(6,straight);
digitalWrite(7,0);
break;
case -1: digitalWrite(4,0); // 좌회전
analogWrite(5,rotateL);
analogWrite(6,rotateH);
digitalWrite(7,0);
break;
case -2: digitalWrite(4,0); // 좌강회전
analogWrite(5,0);
analogWrite(6,rotateH);
digitalWrite(7,0);
break;
case 1: digitalWrite(4,0); // 우회전
analogWrite(5,rotateH);
analogWrite(6,rotateL);
digitalWrite(7,0);
break;
case 2: digitalWrite(4,0); // 우강회전
analogWrite(5,rotateH);
analogWrite(6,0);
digitalWrite(7,0);
break;

case 5: digitalWrite(4,0); // 정지
analogWrite(5,0);
analogWrite(6,0);
digitalWrite(7,0);
break;
case -5: digitalWrite(4,1); // 후진
analogWrite(5,180);
analogWrite(6,180);
digitalWrite(7,1);
break;
}
delay(10);
}
void mode_selector(){
if(l2>200 && r2>200){
mode=0; //0**0 직진
if(l1>200 && r1>200){
mode=-5; //0000 후진
}
if(l1<200 && r1 >200){mode=-1;} //0100 좌

if(r1<200 && l1 >200){mode=1;} //0010 우
}
if(l2<200){mode=-2;} //1000 좌강
if(r2<200){mode=2;} //0001 우강

if(l2<200 && r2<200){pow(-1,r);} //좌우 흔들어 줘서, 계속 앞 뒤로 움직이며 정체 된 것을 해결해 줌
}

Awarded

Thanks to

경진 대회 참가 할 수 있는 기회를 주신 이수홍 교수님
기본 적인 얀센 구조를 알려주고, 연구실 팀의 작품 완성을 위해 헌신해준 영수
마지막날 까지 같이 작업하며, 센서 배치 구조, 알고리즘 등 많은 도움을 준 혜민,현배
그리고 경진대회로 고생 많이 한 남규 승하 형 감사합니다.

Reference

[1] JIN YONGZHU, 지형근. (2016). 얀센 메커니즘을 이용한 보행 로봇의 최적설계에 관한 연구. 한국CDE학회지, 22(2), 18-22. 2. 트레이싱 알고리즘
[2] m.sketch 프로그램 - 2D mechanism modeling
[3] 에디슨 홈페이지

맨몸 운동


어떻게든 되겠지
근데 가서 진짜 열심히 할꺼야
신나고 재밌고 즐겁게


브런치
스타트업 이력서에 대한 충고
1.이력서 쓸 때, “스타트업에서 주도적으로 일하며 내가 만든 서비스가 직접 유저들에게 사용되는 걸 보고 싶다.”
이건 스타트업에서 얻을 수 있는 장접이지, 지원하는 회사에 대한 이야기가 아니다.
지원자를 ‘스타트업에 가고 싶은 사람’으로 볼 뿐 ‘우리 회사에 오고 싶어 하는 사람’으로 보진 않습니다.

  1. 자신이 만든 ‘서비스’보단 ‘기술’에 더 집중하세요

  2. 함께 성장한다.

  3. 회사와 함께 성장한다.

취업을 위해 무언가를 하나 더 배운다기 보단 스스로를 잘 분석하고 자신이 이미 가지고 있는 것들을 점검해 보면
자신이 어떤 장점을 가지고 있는지 알게 됩니다.
이런 장점들을 이력서에 적어놓고, 다듬고 적어놓고 다듬고 하다 보면, 문장/ 포트폴리오 하나하나에 들어간 나의 고민은 절대 퇴색하지 않습니다.


오픽
!@#1

뉴스킨 아이디
3617452

Header 1 Header 2
Content 1 Content 3
Content 2 Content 4

Mark down


Hexo

  • Hexo Start Guaid
    hexo –deploy 적용 부분에서,
    1
    $ npm install hexo-deployer-git --save

Git 서버 배포 플러그인 해줘야함

  • Color scripter

  • [$ npm install hexo-generator-category –save] 이거 깔면 node_modules로 들어옴


윈도우


구직 사이트


HTML CSS

openCV-python

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×