본문 바로가기
STEM - 학술세미나/기계공학

SBM: 컴퓨터에게 로봇 설계를 맡겨봅시다

by STEMSNU 2021. 5. 25.

 

안녕하세요ㅎㅎ 저는 STEM 11기 기계공학부 김민재입니다.
며칠 전 STEM 회원 분들 앞에서 진행했던 세미나 내용을 STEMentor에도 공유하기 위해 이렇게 찾아뵙게 되었답니다 ;)



우리가 살아가는 현대 사회는 컴퓨터 없이는 1분은 커녕 1초도 돌아가지 못할 정도로, 컴퓨터가 우리 대신 처리해 주는 일은 정말 다양하죠. 오늘은 컴퓨터에게 한 가지 일을 추가로 맡겨보려고 하는데요,

바로 로봇을 설계하는 일입니다!!

본론으로 들어가기에 앞서, 수월한 이해를 위해 몇 가지 간단한 로봇공학 지식을 훑어보도록 할게요.

로봇공학 훑어보기

- 로봇공학 용어

  • 링크(link)변형이 일어나지 않는 강체 부분을 의미합니다. 막대 AB, BC, AD, 그리고 파란 삼각형 CDE가 링크에 해당합니다.
  • 조인트(joint)링크와 링크가 맞닿는 부분을 의미합니다. 예를 들어 점 A는 링크 AB와 AD를 이어주는 조인트라고 할 수 있겠네요.
  • 링키지(linkage)위 그림과 같이 링크와 조인트로 이루어진 장치를 링키지라고 부릅니다.
  • end-effector움직임을 분석하는 지점입니다. 윗 링키지의 end-effector는 보라색 경로를 그리고 있는 점 E가 되겠네요.

- 조인트의 종류

  • R joint앞의 링키지에서 봤던 조인트인 점 A를 생각해 봅시다. 두 링크 AB와 AD는 한 점 A에서 닿아 있어서, 한 링크가 다른 링크에 대해 회전을 할 수 있습니다. 이러한 조인트를 Revolute의 앞 글자를 따와 R joint라고 부릅니다.
  • P jointP joint로 연결된 두 링크는 서로에 대해 직선 운동을 할 수 있습니다. P joint의 이름은 Prismatic의 앞 글자를 따서 지어졌습니다.
  • othersU joint ▲          ▲ S joint      R joint, P joint 이외에도 위와 같이 다양한 조인트가 있습니다.
  •      

본 포스팅에서는 R joint와 P joint만 아셔도 충분합니다.


자, 그럼 이제 본론으로 들어가보도록 할게요!

SBM을 알아보자


본 포스팅의 주제는 컴퓨터에게 로봇(링키지)의 설계를 맡겨보는 것입니다. 이를 자율합성(automatic synthesis)이라고 부르기도 합니다. 이때, 저희는 컴퓨터에게 SBM이라는 수단을 통해 링키지를 합성하도록 명령할 것입니다.
SBM은 Spring-connected rigid Block Model의 약자입니다. 이름에서 유추할 수 있듯, 스프링블럭이 이 모델의 핵심 요소입니다. SBM은 링키지를 표현할 수 있는 수단인데요, 즉 스프링과 블럭으로 링크와 조인트를 구현할 수 있다는 것이죠.


스프링 & 블럭 ⇒ 링키지(링크 & 조인트)


앞에서 링크는 강체 부분이라고 했으니, 링크는 (강체)블럭으로써 구현하면 되겠네요. 블럭의 변의 길이를 조절하면 링크의 모양을 원하는대로 만들 수 있을 것입니다.

그러면 조인트는 어떻게 구현할 수 있을까요?

- 스프링으로 R joint 구현하기

이렇게 생긴 시스템이 있다고 해봅시다. 그림에서 kk는 훅의 법칙(F=−kx)(F=-kx)에서 등장하는 스프링 상수를 의미합니다. 위쪽 스프링은 kk가 커서(k→∞)(k→\infty) 길이가 쉽게 늘어나거나 줄어들지 못합니다. 반면 아래쪽 스프링은 kk가 작아서(k→0)(k→0) 자유롭게 늘어나고 줄어들 수 있습니다. 왼쪽 블럭은 지면에 고정되어 있습니다. 그렇다면 오른쪽 블럭은 어떻게 움직일 수 있을까요?

    

그렇습니다! 마치 맞닿는 변의 위쪽에 R joint가 달려있는 것처럼 움직일 것입니다.


그럼 만약 두 스프링 모두 kk가 크다면(k→∞)(k→\infty) 어떨까요?

    

두 스프링 모두 늘어나거나 줄어들지 못해, 두 블럭이 달라붙은 상태를 유지할 것입니다. 두 블럭이 마치 하나의 블럭인 것처럼 움직이겠죠.

- 스프링으로 P joint 구현하기


이번엔 스프링이 다른 형태로 달려 있는 시스템을 생각해봅시다. kk가 작은(k→0)(k→0) 스프링이 수평방향으로, kk가 큰(k→∞)(k→\infty) 스프링이 수직방향으로 달려 있습니다. 마찬가지로 왼쪽 블럭이 지면에 고정돼있다면, 오른쪽 블럭은 어떻게 움직일까요?

    

위와 같이 두 블럭 사이에 수평 방향 P joint가 달려있는 것처럼 움직일 것입니다.


그렇다면, 아래와 같이 두 스프링의 kk값을 서로 바꾼다면 수직 방향 P joint가 달린 상황으로 볼 수 있겠군요.

    


- SBM이란?

앞서 스프링으로 R joint와 P joint를 구현할 수 있음을 살펴봤습니다. 방금 두 개씩 달았던 스프링을 아래 그림과 같이 한번에 달아서 kk 값들을 적절히 조절하면, R joint와 P joint를 모두 구현할 수 있을 것입니다.


이제 블럭을 차곡차곡 쌓으면 비로소 SBM이 됩니다.


앞서 SBM이 링키지를 표현할 수 있는 수단이라 언급한 바 있습니다. 그런데 아직은 감이 잘 오지 않죠? 그러니 SBM이 링키지와 대응되는 예시를 하나 살펴보도록 합시다.
SBM에서 어떤 스프링의 kk는 상대적으로 큰 값이고, 어떤 스프링의 kk는 작은 값일 것입니다. 아래의 SBM은 스프링 중 kk가 작은 것들을 생략하고, kk가 큰 스프링만 남겨둔 것입니다.


이 SBM은 아래와 같이 링키지로 변환할 수 있습니다. 첫 번째 그림에서 두 번째 그림으로 넘어가는 과정은, 앞에 나왔던 스프링으로 조인트들을 구현하는 과정을 다시 보면서 찬찬히 따라가면 이해하실 수 있을 거예요. 세 번째 그림은 두 번째 그림에서 링크들을 다이어트시킨 것에 불과합니다.


- 왜 SBM인가?

그런데, 굳이 컴퓨터가 SBM이라는 수단으로 링키지를 설계해야만 하는 이유는 무엇일까요? 먼저 기존의 로봇 설계 방식을 살펴봅시다. 예를 들어, 아래와 같은 8자 모양의 경로를 따라가는 로봇을 설계하려 할 때, 기존에는 어떻게 했을까요?



제가 학교에서 로봇을 설계하는 과제를 받았을 땐 다음과 같이 했던 것 같습니다. 링키지 형태를 하나 예상한 다음, 각 링크의 길이를 조금씩 조절해가면서 원하는 경로를 그리는지 체크하는 과정을 계속 반복하는 것입니다. 원하는 8자 모양 경로를 정확히 그리는 링키지가 나올 때까지 말이죠. 그런데 이와 같은 방식은, 원하는 경로가 복잡할수록 시간이 정말 많이 소요될 것입니다.


이제 다시 SBM을 살펴봅시다. SBM에서는 kk값들의 크기를 키우거나 줄임으로써 조인트의 종류를 바꿀 수 있고, 블럭들을 합체시킬 수도 있었습니다. 그리고 앞서 짧게 언급했는데, 블럭의 변의 길이를 키우거나 줄여서 블럭의 모양을 바꿀 수도 있었습니다. 스프링의 kk값 및 블럭의 변의 길이는 모두 실수(real number)이죠. 즉, SBM을 사용하면 오로지 숫자의 크기만을 조절하여 수없이 많은 링키지들을 구현해낼 수 있습니다.

기존에 우리가 링키지를 설계할 때 “이 부분은 R joint에서 P joint로 바꿔보고, …” 같은 과정들을 컴퓨터도 수행하도록 해야 하는데, 컴퓨터는 숫자만을 다룰 수 있습니다. 그래서 컴퓨터가 SBM이라는 수단을 이용하도록 하는 것입니다.

SBM의 적용 예시


사실 컴퓨터가 SBM을 이용해 어떻게 로봇을 설계하는지 상세히 알려면 복잡한 미분식들을 이해해야 합니다. 그러나 본 포스팅의 목적은 SBM이라는 모델이 연구되고 있다는 것을 소개하는 것이기에, 이론적으로 더 깊게 파고들지는 않겠습니다. 마지막으로는 SBM의 적용 예시로써 제가 진행 중인 프로젝트를 소개하려고 해요.

야구선수 중 투수들은 강속구를 계속 던지느라 어깨와 팔꿈치에 부상을 많이 입는다고 합니다. 그런데 팔꿈치에 부상을 입었을 땐 수술 후 선수생활로 복귀할 수 있을 확률이 높은 데 반해, 어깨에 부상을 입을 경우 재활 훈련 기간은 물론 재활에 성공할 확률도 낮습니다. 그래서 작게나마 보탬이 되어보고자 어깨 부상 재활훈련을 위한 외골격 로봇(=웨어러블 로봇)을 설계해 보고자 했습니다.

어깨 관절을 보조하려면, 위팔과 아래팔 중에서 어깨와 직접적으로 연결된 위팔의 운동에 초점을 맞춰야겠죠. 그래서 투수들이 공을 던질 때, 그들의 위팔이 그리는 궤적을 조사했더니 아래와 같았습니다.


다음으로, 이 중 어깨가 힘을 가장 많이 받는 구간을 잘라내면 아래와 같았습니다. 그림을 통해 알 수 있는 것은, 잘라낸 경로는 yz평면 상에 있는 거나 다름없다는 점입니다.


따라서 경로의 y, z 좌표를 가져온 뒤, SBM 기반 자율합성을 진행했습니다. 최종적으로 아래와 같은 결과를 도출해내었습니다. 오른쪽 그림에서 검은색 점들은 목표 경로, 빨간색 점들은 합성된 링키지의 경로입니다. 목표 경로를 잘 따르는 로봇이 잘 설계되었음을 볼 수가 있죠.

    


이상의 과정은 투수들의 평균 팔꿈치 궤적을 가지고 진행된 것이나, 사실 투수별로 투구폼은 정말 다양합니다. 이러한 점에서 SBM의 사용은 외골격 로봇 설계에 유리합니다. 기존의 로봇 설계 방식에서는 목표 궤적이 살짝만 바뀌어도 설계를 변경하는 데 긴 시간이 걸릴 수 있습니다. 변의 길이 한 두 개를 건든다고 해서 궤적이 원하는 방향으로 쉽게 변하지 않기 때문이죠. 그러나 SBM을 적용할 경우, 목표 경로만 바꾸고 같은 과정을 반복하면 되므로 비교적 용이하게 새로운 링키지를 합성할 수 있답니다.

 


SBM에 대해서 살펴보았던 이번 포스팅은 여기까지입니다! 중간중간에 다소 복잡한 부분도 있었을텐데 끝까지 읽어주셔서 감사드린다는 말 전하고 싶네요ㅎㅎ 다음에 기회가 된다면 또 찾아뵙도록 하겠습니다!!

댓글