Skip to main content
Summary

카메라가 위치를 알려 주면, 로봇팔은 움직여야 한다

앞 장까지 우리는 로봇이 세상을 보는 방법을 배웠다. 카메라 이미지를 읽고, 물체를 찾고, 깊이를 이용해 3D 위치를 계산하고, 그 위치를 로봇 기준 좌표로 바꾸었다. 이제 질문은 훨씬 현실적으로 바뀐다.

"그래서 로봇팔은 어떻게 그곳까지 손을 뻗을까?"

사람은 컵을 집을 때 머릿속으로 복잡한 계산을 하지 않는 것처럼 느낀다. 하지만 실제로는 눈으로 컵을 보고, 어깨와 팔꿈치와 손목을 움직이고, 손가락을 벌리고, 컵에 닿는 순간 힘을 조절한다. 로봇팔도 비슷하다. 다만 로봇은 이 과정을 관절각, 좌표계, 목표 자세, 경로 계획, 그리퍼 제어라는 형태로 수행한다.

이번 장에서는 로봇팔 조작의 가장 기본적인 언어를 배운다. 관절과 링크가 어떻게 팔의 모양을 만들고, 엔드 이펙터와 그리퍼가 왜 중요한지, 순기구학과 역기구학이 무엇을 계산하는지 살펴본다. 마지막으로 로봇팔 프로젝트의 대표 작업인 Pick and Place, 즉 물체를 집어 다른 곳에 놓는 전체 흐름을 정리한다.

로봇팔을 처음 보면 금속 막대와 모터가 연결된 기계처럼 보인다. 하지만 조금만 익숙해지면 그것은 하나의 문장처럼 보인다. 관절은 문장의 동사이고, 링크는 단어를 이어 주는 구조이며, 그리퍼는 세상과 만나는 마지막 표현이다.

로봇팔 조작의 기본

관절과 링크: 로봇팔을 이루는 뼈대

로봇팔은 여러 개의 관절과 링크가 이어진 구조다. 링크는 팔의 뼈대에 해당하고, 관절은 링크와 링크 사이에서 움직임을 만들어 내는 부분이다. 사람 팔로 비유하면 위팔과 아래팔은 링크이고, 어깨와 팔꿈치와 손목은 관절이다.

로봇팔에서 관절 하나가 움직일 수 있는 독립적인 방향을 보통 자유도라고 부른다. 영어로는 Degree of Freedom, 줄여서 DOF라고 한다. 자유도가 많을수록 로봇팔은 더 다양한 자세를 만들 수 있다. 예를 들어 아주 단순한 2자유도 팔은 평면 위에서만 움직일 수 있다. 반면 6자유도 로봇팔은 공간상의 위치뿐 아니라 손목의 방향까지 비교적 자유롭게 조절할 수 있다.

여기서 중요한 점은 자유도가 단순히 "많으면 무조건 좋다"가 아니라는 것이다. 자유도가 많아지면 더 유연해지지만, 제어와 계획도 어려워진다. 가능한 자세가 많아지고, 충돌을 피해야 할 경우의 수도 늘어난다. 로봇팔은 편리한 도구이면서 동시에 움직일 수 있는 경우의 수가 많은 퍼즐이다.

일반적인 로봇팔 구성 요소를 정리하면 다음과 같다.

  • 베이스: 로봇팔이 고정되는 바닥 또는 몸체 부분이다.

  • 관절: 회전하거나 직선으로 움직이며 로봇팔의 자세를 바꾼다.

  • 링크: 관절과 관절을 연결하는 단단한 구조물이다.

  • 손목부: 엔드 이펙터의 방향을 섬세하게 조절하는 마지막 관절 그룹이다.

  • 엔드 이펙터: 로봇팔 끝에 달려 실제 작업을 수행하는 장치다.

많은 산업용 로봇팔은 회전 관절을 주로 사용한다. 회전 관절은 말 그대로 축을 중심으로 회전하는 관절이다. 팔꿈치를 굽히고 펴는 동작이나 손목을 돌리는 동작을 떠올리면 쉽다. 반면 어떤 로봇은 직선으로 미끄러지듯 움직이는 관절을 사용하기도 한다. 직선 관절은 엘리베이터처럼 위아래로 움직이거나, 레일을 따라 앞뒤로 이동한다.

관절과 링크의 조합은 로봇팔의 성격을 결정한다. 긴 링크를 가진 팔은 멀리 닿을 수 있지만 좁은 공간에서는 불리할 수 있다. 짧고 많은 관절을 가진 팔은 복잡한 자세를 만들 수 있지만 계산이 복잡해진다. 작업대 위의 컵을 집는 로봇, 자동차를 용접하는 로봇, 창고에서 상자를 옮기는 로봇은 모두 로봇팔이지만 필요한 구조는 서로 다르다.

자유도와 작업 공간

로봇팔이 실제로 도달할 수 있는 공간을 작업 공간이라고 한다. 영어로는 workspace라고 부른다. 작업 공간은 로봇팔 주변의 보이지 않는 영역이다. 그 안에 있는 물체는 잡을 가능성이 있고, 바깥에 있는 물체는 아무리 좋은 AI가 있어도 팔이 닿지 않는다.

이 점은 로봇 AI에서 매우 중요하다. LLM이 "저 컵을 집어"라는 계획을 만들 수 있고, 비전 모델이 컵의 위치를 정확히 찾을 수도 있다. 그러나 컵이 로봇팔의 작업 공간 밖에 있다면 작업은 실패한다. 로봇은 머릿속 계획만으로 세상을 바꿀 수 없다. 팔이 닿아야 하고, 그리퍼가 접근할 수 있어야 하며, 경로 중간에 장애물과 부딪히지 않아야 한다.

작업 공간은 보통 관절의 회전 범위와 링크 길이에 의해 결정된다. 어떤 관절은 360도 회전할 수 있지만, 어떤 관절은 케이블이나 기계적 제한 때문에 일정 각도까지만 움직인다. 링크가 길면 닿는 범위가 넓어지지만, 가까운 곳에서 팔을 접는 동작이 어려울 수 있다. 또한 로봇팔이 자기 몸과 충돌하지 않도록 제한을 두기도 한다.

작업 공간을 이해할 때는 "위치"와 "자세"를 구분해야 한다. 위치는 엔드 이펙터가 어디에 있는지를 뜻한다. 예를 들어 x=0.4m, y=0.1m, z=0.2m 같은 값이다. 자세는 엔드 이펙터가 어느 방향을 향하는지를 뜻한다. 컵을 위에서 집을 때와 옆에서 집을 때, 그리퍼의 위치는 비슷할 수 있지만 자세는 완전히 다르다.

로봇팔 조작에서는 이 둘을 합쳐 목표 자세라고 부르는 경우가 많다. 즉, 로봇팔에게 "여기로 가라"라고 말할 때는 단순히 점 하나를 지정하는 것이 아니라 "이 위치에, 이 방향으로 손을 놓아라"라고 말해야 한다.

엔드 이펙터: 로봇팔의 손

로봇팔 자체는 팔이다. 하지만 팔만으로는 물체를 집거나, 누르거나, 돌리거나, 닦을 수 없다. 실제 작업은 팔 끝에 달린 장치가 수행한다. 이 장치를 엔드 이펙터라고 부른다.

엔드 이펙터는 로봇이 세상과 직접 만나는 부분이다. 사람으로 치면 손, 손가락, 도구에 해당한다. 같은 로봇팔이라도 끝에 무엇을 다느냐에 따라 완전히 다른 일을 할 수 있다. 그리퍼를 달면 물체를 집을 수 있고, 흡착 패드를 달면 평평한 물체를 빨아들여 들어 올릴 수 있다. 드라이버를 달면 나사를 조일 수 있고, 카메라를 달면 검사 장비가 될 수 있다.

대표적인 엔드 이펙터에는 다음과 같은 것들이 있다.

  • 그리퍼: 손가락처럼 물체를 양쪽에서 잡는다.

  • 흡착 패드: 진공 압력으로 물체 표면을 붙잡는다.

  • 공구형 이펙터: 드릴, 드라이버, 용접기, 절단기처럼 특정 작업을 수행한다.

  • 센서형 이펙터: 카메라, 힘 센서, 거리 센서 등을 달아 측정 작업을 한다.

  • 소프트 그리퍼: 부드러운 재질로 불규칙하거나 약한 물체를 감싸 잡는다.

이 책에서는 주로 물체를 집고 놓는 작업을 다루므로 그리퍼를 중심으로 설명한다. 하지만 중요한 관점은 하나다. 엔드 이펙터는 작업에 맞게 선택되어야 한다. 박스를 옮기는 로봇과 딸기를 수확하는 로봇은 같은 방식으로 물체를 잡을 수 없다. 박스는 강하게 눌러도 괜찮지만, 딸기는 조금만 힘을 잘못 줘도 망가질 수 있다.

그리퍼: 단순해 보이지만 어려운 장치

가장 흔한 그리퍼는 두 손가락 그리퍼다. 양쪽 손가락이 벌어졌다가 좁혀지면서 물체를 잡는다. 구조가 단순하고 제어하기 쉬워 교육용 로봇팔이나 연구용 로봇팔에서 자주 사용된다.

하지만 단순해 보이는 그리퍼도 실제로는 많은 고민을 필요로 한다. 물체를 너무 약하게 잡으면 들어 올리는 순간 떨어진다. 너무 강하게 잡으면 물체가 깨지거나 찌그러진다. 둥근 컵, 납작한 카드, 미끄러운 병, 천처럼 흐물흐물한 물체는 모두 잡는 방식이 다르다.

그리퍼를 사용할 때는 보통 세 가지를 생각해야 한다.

  • 어디를 잡을 것인가: 물체의 중심, 가장자리, 손잡이 등 후보 위치를 정한다.

  • 어떤 방향으로 접근할 것인가: 위에서 내려갈지, 옆에서 다가갈지 결정한다.

  • 얼마나 벌리고 얼마나 힘을 줄 것인가: 물체 크기와 재질에 맞게 그리퍼 폭과 힘을 조절한다.

예를 들어 컵을 집는다고 해 보자. 컵의 윗부분을 잡을 수도 있고, 몸통을 잡을 수도 있고, 손잡이를 잡을 수도 있다. 사람이 보기에는 쉬운 선택처럼 보이지만 로봇에게는 각각 다른 의미를 가진다. 컵의 몸통을 옆에서 잡으려면 그리퍼가 컵 양옆에 들어갈 공간이 있어야 한다. 위에서 잡으려면 컵 입구가 열려 있는지, 안에 액체가 있는지까지 고려해야 할 수 있다. 손잡이를 잡으려면 손잡이의 형태를 정확히 인식해야 한다.

이 때문에 로봇 조작에서 "물체를 찾았다"와 "물체를 집을 수 있다"는 같은 말이 아니다. 객체 검출 모델이 컵을 찾았더라도 그 컵을 어떻게 잡을지는 별도의 문제다. 이후 장에서 우리는 물체 중심점, 세그멘테이션 마스크, 깊이 정보, 접근 방향을 이용해 집기 후보를 만드는 과정을 더 자세히 다룰 것이다.

로봇팔은 관절각으로 움직인다

우리가 로봇에게 주고 싶은 명령은 보통 작업 중심이다.

"컵 위로 이동해."

"그리퍼를 내려."

"물체를 잡아."

하지만 로봇팔의 모터가 실제로 이해하는 값은 대부분 관절각이다. 첫 번째 관절을 몇 도 돌릴지, 두 번째 관절을 몇 도 구부릴지, 손목 관절을 얼마나 회전할지 같은 값이다. 즉, 사람은 목표 위치로 생각하고, 로봇은 관절값으로 움직인다.

여기에서 기구학이라는 개념이 등장한다. 기구학은 힘이나 토크보다는 로봇의 위치와 움직임의 관계를 다루는 분야다. 쉽게 말해 "관절을 이렇게 움직이면 손끝이 어디로 가는가?" 또는 "손끝을 저기로 보내려면 관절을 어떻게 움직여야 하는가?"를 계산한다.

이 두 질문은 각각 순기구학과 역기구학으로 나뉜다.

순기구학: 관절각을 알 때 손끝 위치 구하기

순기구학은 현재 관절각을 알고 있을 때 엔드 이펙터의 위치와 자세를 계산하는 것이다. 영어로는 Forward Kinematics, 줄여서 FK라고 부른다.

예를 들어 2개의 관절을 가진 단순한 평면 로봇팔을 생각해 보자. 첫 번째 링크가 어깨에서 팔꿈치까지, 두 번째 링크가 팔꿈치에서 손끝까지 이어져 있다. 첫 번째 관절을 30도 돌리고 두 번째 관절을 45도 구부렸다면 손끝은 어디에 있을까? 순기구학은 이 질문에 답한다.

실제 6자유도 로봇팔에서도 원리는 같다. 각 관절의 회전량과 링크 길이를 차례대로 적용하면 베이스 좌표계에서 엔드 이펙터 좌표계까지의 변환을 구할 수 있다. 앞 장에서 좌표 변환을 배웠기 때문에 이 구조가 낯설지 않을 것이다. 로봇팔도 결국 여러 좌표계가 줄줄이 연결된 시스템이다.

베이스에서 첫 번째 관절까지의 변환, 첫 번째 관절에서 두 번째 관절까지의 변환, 두 번째 관절에서 세 번째 관절까지의 변환을 계속 곱해 나가면 마지막에 엔드 이펙터의 위치와 방향이 나온다. 수식으로 쓰면 복잡해 보이지만, 개념은 기차처럼 단순하다. 앞 칸의 위치가 정해져야 다음 칸의 위치를 알 수 있고, 마지막 칸까지 따라가면 손끝이 어디 있는지 알 수 있다.

순기구학은 로봇 상태를 확인할 때 매우 중요하다. 현재 관절 센서 값이 주어졌을 때 로봇팔 끝이 어디에 있는지 알아야 카메라가 찾은 물체와 비교할 수 있다. 또한 계획한 경로를 따라 움직이는 중에 엔드 이펙터가 목표에 가까워지고 있는지도 계산할 수 있다.

역기구학: 목표 자세에서 관절각 구하기

역기구학은 순기구학의 반대 질문이다. 영어로는 Inverse Kinematics, 줄여서 IK라고 부른다.

"엔드 이펙터를 이 위치와 이 방향으로 보내고 싶다. 그러려면 각 관절을 몇 도로 만들어야 할까?"

로봇팔 조작에서는 역기구학이 훨씬 자주 등장한다. 비전 시스템이 컵의 위치를 알려 주면 우리는 그리퍼를 컵 위 특정 위치로 보내고 싶다. 이때 목표는 3D 공간상의 자세다. 하지만 모터에 보내야 하는 것은 관절각이다. 이 간격을 메워 주는 계산이 역기구학이다.

역기구학이 어려운 이유는 답이 하나가 아닐 수도 있고, 아예 없을 수도 있기 때문이다. 사람 팔을 생각해 보자. 손을 책상 위 같은 위치에 두더라도 팔꿈치를 위로 세울 수도 있고, 아래로 내릴 수도 있다. 손끝 위치는 같지만 팔의 자세는 다르다. 로봇팔도 마찬가지다. 하나의 목표 자세에 대해 여러 관절각 조합이 가능할 수 있다.

반대로 목표가 작업 공간 밖에 있으면 어떤 관절각도 답이 될 수 없다. 그리퍼를 벽 너머로 보내라고 하거나, 로봇팔이 닿지 않는 먼 곳에 있는 물체를 잡으라고 하면 역기구학은 실패한다. 또한 위치는 닿을 수 있어도 원하는 방향으로 그리퍼를 맞출 수 없는 경우도 있다. 좁은 선반 안쪽의 컵을 집으려는데 손목이 회전할 공간이 없다면 목표 자세는 현실적으로 불가능할 수 있다.

그래서 역기구학은 단순한 수학 문제가 아니라 로봇의 현실을 반영하는 필터이기도 하다. LLM이 만든 계획이 그럴듯해 보여도, IK가 풀리지 않으면 실행 가능한 계획이 아니다. 좋은 로봇 에이전트는 이 실패를 숨기지 않고 상위 계획 모듈에 되돌려준다. "그 위치는 현재 자세에서 접근할 수 없습니다. 다른 접근 방향을 시도하겠습니다." 이것이 물리 세계의 에이전트다운 대답이다.

목표 자세는 점 하나가 아니다

초보자가 자주 하는 실수는 물체의 중심 좌표 하나만 있으면 로봇이 물체를 집을 수 있다고 생각하는 것이다. 하지만 로봇팔에게 필요한 것은 대개 하나의 점이 아니라 여러 개의 자세다.

컵을 집는 작업을 생각해 보자. 그리퍼가 갑자기 컵 중심으로 순간이동할 수는 없다. 먼저 컵 위쪽 또는 옆쪽의 안전한 위치로 접근해야 한다. 그다음 천천히 컵에 가까워져야 한다. 그리퍼를 닫고, 컵을 들어 올리고, 목적지로 이동한 뒤, 다시 내려놓아야 한다.

각 단계마다 엔드 이펙터의 목표 자세가 다르다. 접근 자세는 물체와 약간 떨어진 곳이다. 집기 자세는 물체를 실제로 잡을 위치다. 들어올린 자세는 충돌을 피하기 위해 물체를 위로 올린 위치다. 놓기 자세는 목적지의 정확한 위치와 방향이다.

따라서 로봇팔 조작은 하나의 목표점으로 끝나는 문제가 아니라 목표 자세들의 시퀀스를 만드는 문제다. 이 관점을 이해하면 이후 MoveIt2, 경로 계획, Pick and Place 구현이 훨씬 자연스럽게 보인다.

경로와 궤적: 어디로 갈지, 어떻게 갈지

목표 자세를 정했다고 해서 로봇팔이 바로 안전하게 움직일 수 있는 것은 아니다. 로봇팔은 현재 자세에서 목표 자세까지 이동하는 동안 장애물과 부딪히지 않아야 한다. 자기 팔끼리 충돌해서도 안 되고, 테이블을 긁어서도 안 되며, 들고 있는 물체를 다른 물체에 부딪히게 해서도 안 된다.

현재 자세에서 목표 자세까지 이어지는 움직임의 길을 경로라고 한다. 이 경로에 시간 정보가 더해지면 궤적이 된다. 경로가 "어디를 지나갈 것인가"라면, 궤적은 "언제, 어떤 속도와 가속도로 지나갈 것인가"까지 포함한다.

로봇팔이 너무 빠르게 움직이면 물체를 떨어뜨릴 수 있다. 너무 급하게 멈추면 관절에 부담이 가거나 그리퍼 안의 물체가 흔들릴 수 있다. 사람 옆에서 움직이는 협동 로봇이라면 속도 제한과 안전 거리도 고려해야 한다. 실제 로봇 제어에서는 위치만큼이나 속도와 가속도가 중요하다.

다음 장에서 살펴볼 MoveIt2 같은 도구는 이런 문제를 다루기 위해 사용된다. 목표 자세를 주면 가능한 관절 경로를 찾고, 충돌을 확인하고, 실행 가능한 궤적을 만든다. 이 장에서는 먼저 큰 그림만 기억하자. 로봇팔 조작은 "목표 좌표를 모터에 보내는 일"이 아니라 "안전하게 도달할 수 있는 자세들의 흐름을 만드는 일"이다.

Pick and Place: 로봇팔 조작의 기본 문장

Pick and Place는 로봇팔 프로젝트에서 가장 기본적이면서도 중요한 작업이다. 말 그대로 물체를 집어서 다른 곳에 놓는 것이다. 단순해 보이지만 이 안에는 로봇 비전, 좌표 변환, 역기구학, 경로 계획, 그리퍼 제어, 실패 감지가 모두 들어 있다.

Pick and Place를 제대로 이해하면 로봇팔 조작의 뼈대를 이해한 것이다. 컵을 옮기든, 블록을 쌓든, 부품을 조립하든 많은 작업이 이 흐름을 변형한 형태로 이루어진다.

기본 흐름은 다음과 같다.

  • 접근: 물체 근처의 안전한 위치로 이동한다.

  • 집기: 그리퍼를 물체에 맞춰 정렬하고 닫는다.

  • 들어올리기: 물체를 잡은 상태로 위쪽 또는 안전한 방향으로 이동한다.

  • 이동: 목적지 근처로 물체를 운반한다.

  • 놓기: 물체를 내려놓고 그리퍼를 연다.

각 단계는 독립적인 작은 스킬처럼 생각할 수 있다. 나중에 LLM 로봇 에이전트를 만들 때도 이 관점이 중요해진다. LLM이 직접 모든 관절각을 계산하는 것이 아니라, "컵을 집기", "오른쪽에 놓기" 같은 고수준 명령을 로봇 스킬에 연결하는 방식이 더 안전하고 현실적이다.

1단계: 접근

접근 단계에서는 로봇팔이 물체 바로 위나 옆의 준비 위치로 이동한다. 이 위치를 흔히 pre-grasp pose, 즉 집기 전 자세라고 부른다. 집기 전 자세는 물체와 약간 떨어져 있어야 한다. 그래야 로봇이 물체에 부딪히지 않고 마지막 접근을 할 수 있다.

예를 들어 테이블 위의 컵을 위에서 집는다면, 집기 전 자세는 컵 중심보다 10cm 정도 높은 위치가 될 수 있다. 로봇은 먼저 이 위치로 이동한 뒤, 수직 방향으로 천천히 내려간다. 이 방식은 경로를 단순하게 만들고 충돌 위험을 줄인다.

접근 방향은 작업 성공률에 큰 영향을 준다. 위에서 접근하면 테이블 위 물체를 집기 쉽지만, 선반 안의 물체에는 적합하지 않을 수 있다. 옆에서 접근하면 컵 몸통을 잡기 좋지만, 주변에 다른 물체가 있으면 그리퍼가 끼일 수 있다. 로봇팔은 물체만 보는 것이 아니라 주변 공간도 함께 고려해야 한다.

2단계: 집기

집기 단계에서는 그리퍼가 물체를 실제로 잡는다. 이때 먼저 그리퍼 폭을 물체 크기에 맞게 벌리고, 목표 위치로 천천히 이동한 뒤, 그리퍼를 닫는다.

그리퍼가 닫혔다고 해서 항상 물체를 잡은 것은 아니다. 손가락 사이에 아무것도 없는데 닫혔을 수도 있고, 물체를 건드렸지만 밀어냈을 수도 있다. 또는 물체를 잡기는 했지만 중심이 맞지 않아 들어 올리는 순간 빠질 수도 있다.

그래서 집기 단계에는 확인 과정이 필요하다. 간단한 로봇에서는 그리퍼가 완전히 닫히지 않았는지를 보고 물체가 끼어 있다고 추정할 수 있다. 더 정교한 시스템에서는 힘 센서, 전류 값, 카메라 확인, 깊이 변화 등을 이용한다. 예를 들어 그리퍼를 닫았는데 예상보다 빨리 멈췄다면 손가락 사이에 물체가 있을 가능성이 있다.

집기는 로봇팔 조작의 핵심 순간이다. 비전 인식이 조금 틀렸거나, 깊이 값에 노이즈가 있거나, 그리퍼 접근 방향이 어긋나면 이 단계에서 바로 실패가 드러난다.

3단계: 들어올리기

물체를 잡은 뒤에는 바로 목적지로 이동하지 않는다. 먼저 물체를 살짝 들어 올린다. 이 단계는 단순해 보이지만 매우 중요하다. 테이블 표면에 끌리지 않도록 하고, 주변 물체와의 충돌을 피하며, 집기가 성공했는지 확인할 기회를 준다.

들어올리기는 보통 엔드 이펙터를 수직 위쪽으로 이동시키는 방식으로 수행한다. 하지만 항상 위쪽이 정답은 아니다. 선반 안에서 물체를 꺼낼 때는 먼저 앞으로 빼야 할 수도 있고, 좁은 공간에서는 대각선 방향으로 빠져나와야 할 수도 있다.

이 단계에서 카메라나 센서를 이용해 물체가 실제로 따라 올라왔는지 확인할 수 있다. 만약 그리퍼는 올라갔는데 물체가 테이블 위에 그대로 남아 있다면 집기에 실패한 것이다. 좋은 로봇 시스템은 이 실패를 바로 감지하고 다시 시도하거나, 다른 집기 후보를 선택한다.

4단계: 이동

물체를 안전하게 들어 올렸다면 목적지로 이동한다. 이때 로봇은 자신이 들고 있는 물체까지 포함해서 충돌을 고려해야 한다. 빈 그리퍼일 때는 지나갈 수 있었던 좁은 공간도, 컵을 들고 있으면 지나갈 수 없을 수 있다.

이동 단계에서는 경로 계획이 특히 중요하다. 목적지가 단순히 오른쪽이라 해도, 로봇팔은 테이블 위의 다른 물체, 자신의 링크, 작업 공간 한계, 관절 제한을 모두 고려해야 한다. 사람이 보기에는 직선으로 가면 될 것 같지만, 로봇에게는 관절 공간에서 훨씬 복잡한 움직임이 필요할 수 있다.

또한 물체의 방향을 유지해야 하는 작업도 있다. 물이 담긴 컵을 옮길 때는 컵을 기울이면 안 된다. 트레이 위의 물체를 옮길 때도 수평을 유지해야 한다. 반면 부품을 조립할 때는 목적지에 맞춰 특정 방향으로 회전시켜야 할 수 있다. 이동은 단순한 운반이 아니라, 물체의 자세를 관리하는 과정이기도 하다.

5단계: 놓기

목적지에 도착하면 물체를 내려놓고 그리퍼를 연다. 놓기 단계에서는 목적지의 높이와 표면을 정확히 알아야 한다. 물체를 너무 높은 곳에서 놓으면 떨어지면서 굴러가거나 깨질 수 있다. 너무 낮게 내려가면 테이블이나 다른 물체를 누를 수 있다.

일반적으로는 목적지 위의 안전한 자세로 먼저 이동한 뒤, 천천히 내려가고, 그리퍼를 열고, 다시 위로 빠져나온다. 이 마지막 빠져나오기 동작도 중요하다. 그리퍼를 연 직후 옆으로 움직이면 방금 놓은 물체를 밀어버릴 수 있기 때문이다.

놓기 역시 확인이 필요하다. 물체가 목적지에 실제로 놓였는지, 넘어지지 않았는지, 그리퍼에 계속 끼어 있지는 않은지 확인해야 한다. 간단한 프로젝트에서는 카메라로 물체 위치를 다시 검출하는 방식으로 확인할 수 있다.

Pick and Place를 하나의 절차로 보기

이제 전체 흐름을 하나의 절차로 다시 정리해 보자. 카메라가 물체를 찾고 좌표 변환을 거쳐 로봇 기준 위치가 계산되었다고 가정한다. 로봇팔은 그 위치를 바로 향해 돌진하지 않는다. 먼저 집기 전 자세를 만들고, 역기구학으로 관절각을 구하고, 충돌 없는 경로를 계획한 뒤, 천천히 물체에 접근한다. 그리퍼를 닫고, 물체가 잡혔는지 확인하고, 안전 높이로 들어 올린다. 이후 목적지로 이동하고, 내려놓고, 그리퍼를 연 뒤, 다시 물러난다.

이 과정을 의사코드처럼 표현하면 다음과 같다.

detect object
estimate object pose in robot base frame
compute pre-grasp pose
plan and move to pre-grasp pose
move to grasp pose
close gripper
check grasp success
lift object
plan and move to place pose
lower object
open gripper
retreat
check result

이 짧은 절차 안에 지금까지 배운 내용과 앞으로 배울 내용이 모두 들어 있다. detect object는 로봇 비전이다. estimate object pose는 깊이 추정과 좌표 변환이다. compute pre-grasp pose는 집기 후보 생성이다. plan and move는 경로 계획이다. check grasp success는 실패 감지다. 나중에 LLM 에이전트를 붙이면 사용자의 자연어 명령이 이 절차의 목표와 조건을 정하게 된다.

로봇팔 조작에서 자주 만나는 실패

로봇팔은 처음부터 완벽하게 움직이지 않는다. 실제 프로젝트에서는 작은 오차들이 계속 등장한다. 카메라 위치가 조금 틀어지고, 깊이 값이 흔들리고, 물체 표면이 미끄럽고, 그리퍼 중심이 맞지 않는다. 로봇팔 조작을 배울 때 실패를 자연스러운 일부로 받아들이는 것이 중요하다.

대표적인 실패는 다음과 같다.

  • 도달 실패: 목표가 작업 공간 밖에 있거나 IK가 풀리지 않는다.

  • 충돌 위험: 목표까지 가는 경로가 테이블, 장애물, 로봇 자신과 충돌한다.

  • 집기 실패: 그리퍼가 물체를 놓치거나 밀어낸다.

  • 운반 실패: 이동 중 물체가 흔들리거나 떨어진다.

  • 놓기 실패: 목적지에 정확히 놓지 못하거나 물체가 넘어간다.

이 실패들은 로봇이 나쁘기 때문에 생기는 것이 아니다. 물리 세계가 원래 그렇다. 그래서 로봇 조작 시스템은 한 번의 명령으로 끝나지 않고, 실행 결과를 확인하고 필요하면 다시 시도하는 구조를 가져야 한다. 앞부분에서 배운 AI 로봇 에이전트의 인식, 계획, 실행, 피드백, 재계획 구조가 여기서 다시 등장한다.

로봇 스킬로 바라보기

Pick and Place는 나중에 더 큰 로봇 에이전트 안에서 하나의 스킬이 된다. 사용자가 "빨간 컵을 오른쪽에 놓아줘"라고 말하면 LLM은 이 명령을 여러 단계로 나눈다. 하지만 각 관절을 몇 도 움직일지 직접 결정하지는 않는다. 대신 detect_object("red cup"), pick("red cup"), place("right area") 같은 스킬을 호출하는 방식이 더 안전하다.

스킬은 내부적으로 복잡한 로봇 제어를 감춘다. 사용자는 "집어"라고 말하지만, 스킬 내부에서는 접근 자세 계산, IK, 경로 계획, 그리퍼 제어, 성공 여부 확인이 수행된다. 이렇게 추상화하면 LLM은 고수준 계획에 집중하고, 로봇 제어 모듈은 물리적 실행에 집중할 수 있다.

이 구조는 책 전체의 큰 방향과도 연결된다. 우리는 로봇을 단순한 채팅봇으로 만들려는 것이 아니다. 자연어를 이해하고, 카메라로 환경을 보고, 로봇팔로 실제 행동을 수행하며, 실패하면 다시 계획하는 물리 세계의 에이전트를 만들려는 것이다. 그 출발점이 바로 로봇팔 조작의 기본 구조다.

좋은 로봇팔 프로젝트를 위한 생각법

로봇팔 프로젝트를 시작할 때는 처음부터 복잡한 작업을 목표로 삼기보다 작은 동작을 안정적으로 쌓아 가는 것이 좋다. 먼저 관절을 안전하게 움직이고, 엔드 이펙터 위치를 확인하고, 간단한 목표 자세로 이동해 본다. 그다음 그리퍼를 열고 닫고, 고정된 위치의 물체를 집어 보고, 마지막에 카메라 인식 결과와 연결한다.

처음부터 "아무 물체나 자연어로 명령하면 알아서 집는 로봇"을 만들려고 하면 어디서 실패했는지 알기 어렵다. 비전이 틀렸는지, 좌표 변환이 틀렸는지, IK가 실패했는지, 경로 계획이 문제인지, 그리퍼가 약한지 구분하기 어렵다. 좋은 로봇 개발자는 복잡한 문제를 작은 검증 단위로 나눈다.

예를 들어 다음 순서로 실험하면 원인을 훨씬 쉽게 찾을 수 있다.

  • 로봇팔의 각 관절이 명령대로 움직이는지 확인한다.

  • 엔드 이펙터의 현재 위치가 순기구학 계산과 맞는지 확인한다.

  • 고정된 목표 자세에 대해 역기구학이 안정적으로 풀리는지 확인한다.

  • 장애물이 없는 상태에서 목표까지 안전하게 이동하는지 확인한다.

  • 그리퍼가 특정 물체를 반복해서 잡을 수 있는지 확인한다.

  • 카메라로 찾은 좌표를 이용해 실제 물체를 집을 수 있는지 확인한다.

이런 작은 성공들이 모여 로봇팔 프로젝트의 신뢰성을 만든다. 로봇은 한 번 멋지게 성공하는 것보다 열 번 반복해도 안정적으로 성공하는 것이 더 중요하다.

다음 장으로 가기 전에

이번 장에서는 로봇팔 조작의 기본 구조를 살펴보았다. 관절과 링크는 로봇팔의 자유도와 작업 공간을 만들고, 엔드 이펙터와 그리퍼는 실제 작업의 성격을 결정한다. 순기구학은 관절각에서 손끝 위치를 계산하고, 역기구학은 목표 자세에서 필요한 관절각을 찾는다. 그리고 Pick and Place는 접근, 집기, 들어올리기, 이동, 놓기라는 단계로 이루어진다.

이제 우리는 로봇팔에게 무엇을 시켜야 하는지 조금 더 정확히 말할 수 있다. "저 컵을 집어"라는 말 뒤에는 물체 위치 추정, 목표 자세 생성, IK 계산, 경로 계획, 그리퍼 제어, 실패 확인이 숨어 있다.

다음 장에서는 이 과정을 실제 로봇 소프트웨어에서 어떻게 다루는지 살펴본다. 특히 ROS2 환경에서 널리 사용되는 MoveIt2를 중심으로, 로봇팔 경로 계획과 충돌 회피, 목표 자세 설정, 실행 계획 생성의 흐름을 배울 것이다. 로봇팔의 뼈대를 이해했다면, 이제 그 팔이 안전하게 움직일 길을 찾아 줄 차례다.

책 목록

AI 로봇 에이전트 만들기: 비전·로봇팔·학습·LLM으로 자연어 명령을 실행하는 로봇

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기