operator01.jpg


안녕하세요? 교주 LGS입니다.
오늘은 4-Bar Linkage에 대해서 알아 봅시다. ^^
(본 강좌는 '한대만더맞자' 님의 질문에 대한 답변이기도 합니다.)

우선 Four-bar Linkage라는 것이 어떤 녀석인지부터 보겠습니다.


(참고로 위의 동영상은 Simulink - SimMechanics로 만들었습니다.)
4 bar Linkage가 어떤 녀석인지 대충 아시겠죠? =(=^ㅅ^=)=


OneMore_img01.png
(이미지 출처: http://www.cse.unsw.edu.au/~en1811/)

각각의 Link를 부르는 이름이 있으니 위의 그림 참고하시구요~
본격적으로 애니매이션을 구현해봅시다. 

OneMore_img03.png
θ는 우리가 직접 drive 하는 각도이구요~ γ만 알면 Link를 모두 그릴 수 있습니다.
우선 아랫쪽 삼각형에서 각도 θ와 p, q의 길이를 알고 있으므로 cos 제 2법칙을 쓰면 d의 길이를 구할 수 있겠네요.

OneMore_img04.png
d의 길이를 구했으니 sin 법칙을 이용하여 α의 각도를 계산할 수 있습니다.

OneMore_img05.png


윗쪽 삼각형에서 β도 코사인 제2법칙을 이용하면 쉽게 구하실 수 있겠죠? ^^

OneMore_img06.png

α, β를 구했으니 pi(180도) - α - β 로 γ의 각도를 알아 낼 수 있습니다.
위의 내용을 MATLAB code로 나타내면 아래 code가 됩니다. (아 고등학교 수학 시간이네요 )

OneMore_img07.png
for 문을 사용하셔서 각 θ에 대한 γ 값을 계산하셔도 되구요 
아니면 MATLAB의 dot operator(점이 붙은 연산자 .*, ./ 등)를 사용하시면 code도 깔끔해지고 실행속도도 높아집니다. ^^
나머지는 문제 없으시죠? θ와 γ 값을 알고 있으므로 
q와 r link가 만나는 joint의 좌표 x1 = q*cos(θ), y1 = q*sin(θ) 와
r과 s link가 만나는 joint의 좌표 x2 = s*cos(γ), y2 = s*sin(γ)를 쉽게 계산 할 수 있습니다.

p.q.r.s가 각각 p =100 ,q = 120, r = 120, s = 120 인 경우에 대해서 풀어 봅시다. ^^('한대만더맞자'님이 제시해주신 조건)


OneMore_img08.png

그런데 위의 code데로 따라가다보면 한가지 문제점이 있습니다.
예를 들어 θ가 0도일때 α을 위의 식대로 계산해주면 α = asin(120 *sin(0) / 100) = asin(0) = 0 이나오거든요 -_-;;
우리가 기대하는 α의 값은 180도인데 말이죠~ 

(중략)

그러므로 최종적인 code는 아래와 같이 되구요~

(중략)

아~  물론 Mindstorm wiht MATLAB에서 보셨던 Transformation Matrix를 활용하셔도 됩니다요~ ^^
p.q.r.s가 각각 p =100 ,q = 120, r = 120, s = 120 인 경우 최종적인 motion은 아래처럼 되는 군요.


똑같은 결과를 Simulink의 SimMechanics를 이용해서 얻을 수도 있습니다.
맨 위의 동영상을 만들 때 사용한 SimMechanics 파일 첨부해둘테니 참고하세요 =(=^ㅅ^=)=

OneMore_img10.png

SimMechanics의 애니매이션을 보시고자 하시면
Simulink의 메뉴 -> Simulation -> Configuration Parameters.. -> SimMechanics 1G -> Show animation during simulation을 체크하시면 됩니다.

OneMore_img11.png


간단하게 이번 강좌는 여기에서 끝~
다음 시간에 뵈요 뿅!! o(^o^)o

생략된 내용은 VIP 게시판에서 확인 가능합니다.

profile