Skip to main content
Summary

로봇공학은 눈으로 보기 전까지는 조금 추상적으로 느껴진다. 센서, 좌표계, 제어, 경로 계획, 인공지능이라는 말은 각각 따로 배울 때는 이해되는 듯하지만, 막상 "그럼 내가 무엇을 만들 수 있지?"라는 질문 앞에서는 다시 흐릿해진다.

그래서 로봇 프로젝트는 거창한 발명에서 시작하지 않는 편이 좋다. 좋은 로봇 프로젝트는 작고, 구체적이며, 실패를 관찰하기 쉽다. "사람처럼 집안일을 하는 로봇"보다 "책상 위의 빨간 컵을 찾아 10cm 앞으로 밀어내는 로봇팔"이 훨씬 좋은 시작점이다. "완전 자율주행 로봇"보다 "방 안에서 충돌하지 않고 문 앞까지 가는 바퀴 로봇"이 더 오래 지속할 수 있는 프로젝트다.

이 장의 목표는 하나다. 지금까지 배운 로봇의 큰 그림을 실제 프로젝트 계획으로 바꾸는 것이다. 로봇은 감지하고, 추정하고, 판단하고, 움직이고, 다시 피드백을 받는 시스템이다. 프로젝트 설계란 이 순환을 내가 감당할 수 있는 크기로 자르는 일이다.

나만의 로봇 프로젝트 설계하기

프로젝트는 아이디어가 아니라 경계에서 시작된다

처음 로봇 프로젝트를 떠올리면 대부분 기능부터 상상한다. 물건을 집는 로봇, 사람을 따라오는 로봇, 말로 명령하면 움직이는 로봇, 방을 스스로 돌아다니는 로봇. 상상은 중요하지만, 프로젝트를 실제로 완성하려면 기능보다 먼저 경계를 정해야 한다.

경계란 "어디까지 할 것인가"를 뜻한다. 로봇이 움직일 공간은 책상 위인가, 방 안인가, 복도인가. 인식할 물체는 하나인가, 여러 개인가. 조명은 일정한가, 바뀌는가. 사람과 가까이 움직이는가, 혼자 움직이는가. 속도는 느려도 되는가, 빠르게 반응해야 하는가.

경계를 정하지 않은 프로젝트는 금방 커진다. 처음에는 카메라로 물체를 찾으려 했는데, 어느새 조명 문제를 해결해야 하고, 물체가 가려지는 상황을 처리해야 하며, 잡는 힘까지 조절해야 한다. 이동 로봇도 마찬가지다. 처음에는 방 안을 돌아다니게 하려 했는데, 바닥 재질, 문턱, 충전, 지도, 장애물, 사람의 움직임이 한꺼번에 등장한다.

프로젝트를 시작할 때는 다음 네 문장을 먼저 채워 보자.

  • 이 로봇은 어디에서 움직이는가?

  • 이 로봇은 무엇을 감지해야 하는가?

  • 이 로봇은 어떤 행동을 성공적으로 수행해야 하는가?

  • 이 로봇이 하지 않아도 되는 일은 무엇인가?

마지막 질문이 특히 중요하다. 좋은 프로젝트 계획에는 "할 일"만큼이나 "하지 않을 일"이 분명히 들어간다. 예를 들어 첫 번째 이동 로봇 프로젝트에서 "계단은 오르지 않는다", "야외 주행은 하지 않는다", "사람이 많은 환경은 다루지 않는다"라고 정하면 설계가 훨씬 선명해진다. 첫 번째 로봇팔 프로젝트에서 "투명한 물체는 집지 않는다", "무거운 물체는 다루지 않는다", "사람 손 근처에서는 자동 동작하지 않는다"라고 정하면 안전하고 완성 가능한 프로젝트가 된다.

한 장짜리 프로젝트 정의서 만들기

프로젝트가 머릿속에만 있으면 매일 목표가 바뀐다. 오늘은 SLAM을 하고 싶고, 내일은 강화학습을 붙이고 싶고, 모레는 LLM으로 자연어 명령을 처리하고 싶어진다. 이런 흔들림을 막기 위해 처음에는 한 장짜리 프로젝트 정의서를 만드는 것이 좋다.

프로젝트 정의서는 복잡한 문서가 아니다. 로봇이 무엇을 해야 하고, 어떤 조건에서 성공했다고 볼 것인지를 적는 작은 약속이다. 이 약속이 있어야 센서를 고를 수 있고, 모터를 정할 수 있고, 소프트웨어 구조를 나눌 수 있다.

항목적어야 할 내용예시
프로젝트 이름무엇을 만드는지 한 문장으로 표현방 안에서 목표 지점까지 가는 미니 이동 로봇
목표 환경로봇이 동작할 장소와 조건평평한 실내 바닥, 낮은 조명 변화, 사람 없음
핵심 행동반드시 성공해야 하는 행동출발점에서 문 앞까지 충돌 없이 이동
센서로봇이 세상을 관찰하는 방법엔코더, IMU, 2D LiDAR 또는 초음파 센서
구동 방식로봇이 움직이는 구조차동구동 바퀴 두 개와 보조 바퀴 하나
판단 방식경로, 행동, 예외 처리를 정하는 방법지도 기반 목표 이동, 장애물 감지 시 정지
성공 기준완료 여부를 판단하는 기준10회 중 8회 이상 목표 지점 30cm 이내 도착
제외 범위이번 프로젝트에서 다루지 않을 것야외 주행, 계단, 사람 추적, 음성 명령

성공 기준은 숫자로 적을수록 좋다. "잘 움직인다"는 기준은 애매하다. "1m 떨어진 목표점까지 10번 중 8번 도착한다"는 기준은 분명하다. "물체를 잘 집는다"보다 "지름 5cm 이상, 무게 100g 이하의 물체를 10번 중 7번 집어 지정 위치에 놓는다"가 더 좋은 기준이다.

로봇 프로젝트에서 성공은 완벽함이 아니다. 반복 가능한 정도가 조금씩 높아지는 것이다. 처음에는 10번 중 2번 성공해도 괜찮다. 중요한 것은 실패를 기록하고, 실패 이유를 줄여 나가는 일이다.

이동 로봇 프로젝트 설계하기

이동 로봇은 로봇공학 입문자에게 매우 좋은 프로젝트다. 이유는 단순하다. 눈에 보이는 변화가 빠르다. 바퀴가 돌고, 로봇이 앞으로 가고, 벽 앞에서 멈추고, 목표 지점으로 방향을 바꾼다. 센서, 위치 추정, 제어, 경로 계획이 모두 작게 들어 있기 때문에 로봇 시스템의 전체 흐름을 몸으로 이해하기 좋다.

하지만 이동 로봇 프로젝트도 처음부터 "자율주행"이라는 큰 말로 시작하면 어렵다. 먼저 로봇이 움직일 세계를 좁혀야 한다.

목표 환경부터 정하기

이동 로봇의 난이도는 로봇 자체보다 환경이 결정하는 경우가 많다. 같은 로봇이라도 평평한 실내 바닥에서는 잘 움직이지만, 카펫 위에서는 바퀴가 미끄러질 수 있다. 복도에서는 벽을 따라가기 쉽지만, 의자 다리가 많은 방에서는 장애물이 복잡하다. 야외에서는 햇빛, 먼지, 경사, GPS 오차, 바퀴 접지 문제가 한꺼번에 등장한다.

처음 프로젝트라면 환경을 작고 예측 가능하게 만드는 편이 좋다. 예를 들어 "가로 3m, 세로 3m의 방 안", "문턱 없음", "바닥은 평평한 마루", "움직이는 사람 없음"처럼 조건을 적는다. 이렇게 하면 로봇이 실패했을 때 원인을 찾기 쉽다. 바퀴가 문제인지, 센서가 문제인지, 지도 작성이 문제인지 분리해서 볼 수 있다.

목표 환경을 정할 때는 다음 요소를 확인하자.

  • 바닥 재질과 마찰: 마루, 타일, 카펫, 콘크리트는 바퀴의 미끄러짐 정도가 다르다.

  • 장애물의 모양: 벽처럼 큰 장애물과 의자 다리처럼 얇은 장애물은 센서에서 다르게 보인다.

  • 조명과 반사: 카메라나 적외선 센서는 빛의 영향을 크게 받을 수 있다.

  • 이동 범위: 1m 주행과 10m 주행은 위치 오차가 누적되는 정도가 다르다.

  • 사람의 개입: 사람이 옆에서 계속 지켜보는지, 완전히 혼자 움직이는지에 따라 안전 설계가 달라진다.

처음에는 "작은 방 안에서 느리게 움직이는 로봇"이 가장 좋다. 느린 로봇은 덜 위험하고, 실패를 관찰하기 쉽고, 디버깅할 시간이 많다.

센서 구성은 욕심보다 역할로 정한다

이동 로봇에는 많은 센서를 달 수 있다. 바퀴 엔코더, IMU, 초음파 센서, 적외선 센서, 카메라, LiDAR, 깊이 카메라, GPS까지 선택지는 많다. 하지만 센서는 많을수록 무조건 좋은 것이 아니다. 센서가 많아지면 전원, 배선, 데이터 처리, 시간 동기화, 좌표계 관리도 함께 어려워진다.

센서를 고를 때는 "이 센서가 어떤 질문에 답하는가?"를 먼저 생각해야 한다.

질문필요한 정보사용할 수 있는 센서
바퀴가 얼마나 돌았는가?이동 거리와 회전량 추정엔코더
로봇이 어느 방향으로 기울거나 회전했는가?자세 변화와 각속도IMU
앞에 장애물이 있는가?가까운 물체와 거리초음파, 적외선, LiDAR
주변 구조가 어떻게 생겼는가?벽, 복도, 장애물의 배치2D LiDAR, 깊이 카메라
특정 물체나 사람을 볼 수 있는가?색, 형태, 객체 종류카메라
야외에서 대략 어디에 있는가?전역 위치GPS

입문 프로젝트에서는 엔코더와 간단한 거리 센서만으로도 많은 것을 배울 수 있다. 엔코더로 "내가 얼마나 움직였는지"를 추정하고, 거리 센서로 "앞에 막힌 것이 있는지"를 확인할 수 있다. 조금 더 나아가면 IMU를 붙여 회전 추정을 보완하고, LiDAR나 깊이 카메라로 장애물 지도를 만들 수 있다.

중요한 것은 센서 구성을 단계적으로 확장하는 것이다. 처음부터 모든 센서를 붙이면 문제가 생겼을 때 어디서 틀렸는지 알기 어렵다. 먼저 엔코더만으로 직진과 회전을 확인하고, 다음에 장애물 센서를 붙이고, 그다음 위치 추정과 지도 작성으로 넘어가는 편이 좋다.

주행 방식은 로봇의 성격을 결정한다

바퀴 로봇의 주행 방식은 로봇의 행동을 크게 제한한다. 차동구동 로봇은 양쪽 바퀴 속도 차이로 회전한다. 구조가 단순하고 제자리 회전이 가능해 입문용으로 좋다. 자동차형 로봇은 앞바퀴 조향으로 방향을 바꾸며, 실제 자동차와 비슷한 움직임을 배울 수 있다. 전방향 로봇은 메카넘 휠이나 옴니휠을 사용해 옆으로도 움직일 수 있지만, 바퀴 제어와 바닥 조건의 영향을 더 많이 받는다.

프로젝트 목표가 "방 안에서 목표 지점까지 이동"이라면 차동구동이 가장 단순하다. 목표가 "자동차처럼 차선을 따라가기"라면 자동차형 조향이 어울린다. 목표가 "좁은 공간에서 옆으로 미끄러지듯 정렬하기"라면 전방향 구동이 매력적이다.

주행 방식을 정할 때는 멋있어 보이는 구조보다 제어하기 쉬운 구조를 먼저 고르는 편이 좋다. 로봇은 움직이기 시작한 뒤부터 진짜 문제가 드러난다. 바퀴가 미끄러지고, 한쪽 모터가 더 빠르고, 배터리 전압이 떨어지면 속도가 변하고, 바닥의 작은 턱에 방향이 틀어진다. 단순한 구조일수록 이런 문제를 하나씩 이해하기 쉽다.

지도 작성 범위를 작게 나누기

이동 로봇 프로젝트에서 많은 사람이 SLAM, 즉 로봇이 이동하면서 지도를 만들고 동시에 자기 위치를 추정하는 기술에 끌린다. SLAM은 매우 흥미로운 주제지만, 처음부터 "완벽한 지도 작성"을 목표로 하면 부담이 커진다.

지도 작성에도 단계가 있다. 가장 단순한 단계는 지도를 만들지 않고 움직이는 것이다. 로봇은 앞에 장애물이 있으면 멈추고, 없으면 앞으로 간다. 그다음은 사람이 미리 정한 경로를 따라가는 방식이다. 예를 들어 직진 1m, 오른쪽 회전 90도, 직진 1m처럼 명령을 순서대로 실행한다. 이후에는 간단한 격자 지도를 만들고, 마지막으로 SLAM을 사용해 실제 환경의 지도를 생성할 수 있다.

처음 이동 로봇 프로젝트는 다음 순서로 확장해 보자.

  1. 수동 조종으로 로봇의 기본 이동을 확인한다.

  2. 엔코더를 이용해 일정 거리 직진과 일정 각도 회전을 시도한다.

  3. 앞 장애물을 감지하면 멈추는 안전 동작을 추가한다.

  4. 작은 공간에서 벽이나 장애물의 위치를 기록한다.

  5. 지도 위의 목표 지점까지 이동하는 기능을 붙인다.

  6. 반복 주행하면서 실패 지점을 기록하고 보정한다.

이 순서를 따르면 이동 로봇이 단순한 장난감에서 점점 로봇 시스템으로 바뀌는 과정을 볼 수 있다. 처음에는 모터 제어가 중심이고, 다음에는 센서와 위치 추정이 들어오며, 이후에는 경로 계획과 행동 계획이 붙는다. 로봇의 큰 그림이 실제 코드와 하드웨어 위에서 살아나기 시작한다.

이동 로봇 프로젝트 예시: 방 안 배달 로봇

예를 들어 "방 안 배달 로봇"을 만든다고 해 보자. 목표는 책상 옆 출발 지점에서 침대 옆 목표 지점까지 작은 상자를 옮기는 것이다. 이 프로젝트를 너무 크게 잡으면 음성 명령, 사람 회피, 자동 충전, 물체 적재까지 모두 필요해진다. 하지만 첫 버전에서는 훨씬 작게 자를 수 있다.

첫 버전의 목표는 "작은 상자를 싣고 2m 떨어진 목표 지점까지 충돌 없이 이동한다"로 충분하다. 환경은 평평한 방 안으로 제한한다. 장애물은 고정된 의자와 벽 정도로 둔다. 센서는 엔코더, IMU, 전방 거리 센서로 시작한다. 지도는 처음부터 자동으로 만들지 않고, 사람이 대략적인 목표 방향과 거리를 정해 준다.

성공 기준은 "10번 중 8번 이상 목표 지점 30cm 이내에 도착하고, 주행 중 장애물과 충돌하지 않는다"처럼 정할 수 있다. 실패 기록에는 "출발할 때 왼쪽으로 휜다", "배터리가 낮아지면 속도가 줄어든다", "의자 다리를 거리 센서가 놓친다" 같은 내용을 남긴다. 이 기록이 다음 개선의 출발점이 된다.

로봇팔 프로젝트 설계하기

로봇팔 프로젝트는 이동 로봇과 전혀 다른 재미가 있다. 이동 로봇이 공간을 돌아다니는 문제라면, 로봇팔은 공간 안에서 손끝을 정확히 움직이는 문제다. 관절 하나가 조금만 틀어져도 끝점 위치가 크게 달라질 수 있고, 물체를 집는 순간에는 힘과 마찰, 물체 모양까지 고려해야 한다.

처음 로봇팔을 만들거나 다룰 때는 "사람 팔처럼 자유롭게 움직이는 로봇"을 목표로 잡기 쉽다. 그러나 로봇팔 프로젝트의 핵심은 자유로움이 아니라 작업의 명확함이다. 로봇팔은 무엇을 집을 것인가. 어디에서 어디로 옮길 것인가. 물체를 어떻게 알아볼 것인가. 실패했을 때 어떻게 멈출 것인가.

자유도는 작업에 맞춰 정한다

자유도는 로봇이 독립적으로 움직일 수 있는 축의 수를 뜻한다. 로봇팔에서 자유도가 많으면 더 다양한 자세를 만들 수 있지만, 제어와 계획은 더 어려워진다. 2자유도 팔은 평면에서 간단한 위치 이동을 보여 주기 좋다. 3자유도나 4자유도 팔은 책상 위 물체를 집어 옮기는 입문 프로젝트에 적합하다. 6자유도 팔은 산업용 로봇처럼 위치뿐 아니라 손끝의 방향까지 세밀하게 다룰 수 있다.

처음부터 6자유도 팔을 목표로 삼을 필요는 없다. "책상 위의 물체를 집어 옆으로 옮기기"라면 4자유도 팔과 간단한 그리퍼만으로도 충분히 많은 것을 배울 수 있다. 팔의 자유도가 적으면 가능한 자세는 줄어들지만, 오히려 문제를 이해하기 쉬워진다. 어떤 위치에는 닿을 수 있고, 어떤 위치에는 닿을 수 없는지 직접 확인할 수 있기 때문이다.

자유도를 정할 때는 작업 공간을 함께 그려 보는 것이 좋다. 로봇팔의 베이스가 어디에 있고, 물체는 어느 범위에 놓이며, 목표 위치는 어디인지 종이에 표시해 보자. 팔이 닿아야 하는 범위가 작다면 굳이 큰 로봇팔이 필요 없다. 반대로 물체가 너무 멀리 있다면 소프트웨어를 아무리 잘 짜도 물리적으로 닿을 수 없다.

그리퍼는 손이 아니라 작업 도구다

로봇팔의 끝에는 엔드 이펙터가 달린다. 엔드 이펙터는 로봇이 세상과 직접 접촉하는 부분이다. 가장 흔한 형태는 두 손가락 그리퍼지만, 흡착 패드, 자석, 후크, 펜 홀더, 집게, 스푼 같은 도구도 엔드 이펙터가 될 수 있다.

입문자에게는 두 손가락 그리퍼가 가장 직관적이다. 물체를 양쪽에서 눌러 잡기 때문이다. 하지만 모든 물체에 적합하지는 않다. 종이처럼 얇은 물체는 집기 어렵고, 표면이 미끄러운 물체는 쉽게 빠진다. 평평하고 가벼운 물체라면 흡착 방식이 더 쉬울 수 있고, 금속 물체라면 자석이 단순한 해결책이 될 수 있다.

그리퍼를 정할 때는 물체를 먼저 정해야 한다. "무엇이든 집는 로봇손"은 매우 어려운 프로젝트다. 반대로 "지름 4cm의 플라스틱 공을 집는 그리퍼"는 설계할 수 있다. 물체가 정해지면 그리퍼의 폭, 힘, 접촉면, 재질을 판단할 수 있다.

좋은 첫 로봇팔 프로젝트는 물체를 제한한다. 예를 들어 같은 크기의 블록 세 개, 가벼운 스펀지 큐브, 종이컵, 탁구공처럼 모양과 무게가 일정한 물체를 고른다. 물체가 단순할수록 인식과 잡기 문제를 분리해서 배울 수 있다.

작업 물체와 인식 방식을 함께 설계하기

로봇팔이 물체를 집으려면 먼저 물체가 어디에 있는지 알아야 한다. 이때 가장 쉬운 방법은 환경을 인식하기 쉽게 만드는 것이다. 처음부터 복잡한 딥러닝 객체 인식을 붙이지 않아도 된다. 물체에 색을 입히거나, 배경을 단순하게 만들거나, 마커를 붙이는 것만으로도 프로젝트 난이도가 크게 내려간다.

인식 방식은 다음처럼 단계적으로 선택할 수 있다.

  • 고정 위치 방식: 물체가 항상 같은 위치에 있다고 가정하고 로봇팔을 움직인다.

  • 색 기반 인식: 특정 색의 물체를 카메라로 찾아 중심 위치를 추정한다.

  • 마커 기반 인식: ArUco 같은 시각 마커를 붙여 위치와 방향을 쉽게 찾는다.

  • 깊이 기반 인식: 깊이 카메라로 물체까지의 거리와 3차원 위치를 추정한다.

  • 학습 기반 인식: 딥러닝 모델로 여러 종류의 물체를 구분하고 위치를 찾는다.

처음에는 고정 위치 방식도 훌륭한 출발점이다. "인식도 하지 않는데 로봇팔 프로젝트라고 할 수 있나?"라고 생각할 수 있지만, 그렇지 않다. 고정 위치 방식만으로도 관절 제어, 좌표계, 말단 위치, 집기 순서, 안전 정지 같은 핵심을 배울 수 있다. 이후 색 인식이나 마커 인식을 붙이면 로봇팔이 조금씩 더 똑똑해진다.

중요한 것은 인식과 조작을 한꺼번에 어렵게 만들지 않는 것이다. 물체 인식이 불안정하면 로봇팔 제어가 잘못된 것처럼 보이고, 로봇팔 위치가 부정확하면 인식이 틀린 것처럼 보인다. 그래서 처음에는 물체 위치를 고정하고 팔의 움직임을 안정화한 뒤, 그다음 인식을 추가하는 편이 좋다.

안전 범위는 기능보다 먼저 정한다

로봇팔은 작아 보여도 위험할 수 있다. 관절이 갑자기 움직이면 손가락을 끼일 수 있고, 팔 끝이 물체를 치거나 카메라를 밀어 떨어뜨릴 수 있다. 특히 힘이 센 서보 모터나 금속 프레임을 사용할 때는 안전 범위를 반드시 정해야 한다.

안전 설계는 겁을 주기 위한 절차가 아니다. 프로젝트를 오래 지속하기 위한 기본 조건이다. 로봇팔은 정해진 범위 안에서만 움직이도록 제한해야 한다. 관절 각도 제한, 속도 제한, 토크 제한, 비상 정지 버튼, 사람 손이 들어오면 멈추는 규칙이 필요하다. 처음 테스트할 때는 전원을 바로 끌 수 있는 위치에 있어야 하고, 팔의 동작 범위 안에 얼굴을 가까이 대지 않아야 한다.

소프트웨어에서도 안전을 넣을 수 있다. 목표 위치가 작업 공간 밖이면 실행하지 않기, 너무 빠른 관절 명령은 거부하기, 그리퍼가 닫힐 때 일정 힘 이상이면 멈추기, 카메라 인식이 불확실하면 잡지 않기 같은 규칙이다. 로봇은 "할 수 있으면 한다"가 아니라 "안전하다고 판단될 때만 한다"로 설계해야 한다.

로봇팔 프로젝트 예시: 색 블록 집어 옮기기

첫 로봇팔 프로젝트로 "색 블록 집어 옮기기"를 생각해 보자. 목표는 책상 위의 빨간 블록을 찾아 집고, 오른쪽의 지정 구역에 내려놓는 것이다. 자유도는 4자유도면 충분할 수 있다. 그리퍼는 두 손가락 방식으로 정한다. 물체는 가벼운 플라스틱 블록 하나로 제한한다. 배경은 흰색 종이나 검은색 매트처럼 단순하게 만든다.

첫 단계에서는 카메라 없이 시작한다. 블록을 항상 같은 위치에 놓고, 로봇팔이 접근 위치, 잡기 위치, 들어 올리기 위치, 내려놓기 위치를 순서대로 따라가게 한다. 이 단계에서 관절 방향, 속도, 그리퍼 닫힘 정도, 물체가 밀리는 문제를 확인한다.

다음 단계에서는 카메라를 추가한다. 카메라는 빨간색 영역을 찾고, 그 중심을 책상 위 좌표로 바꾸어 로봇팔에 전달한다. 이때 좌표 변환이 정확하지 않으면 팔이 물체 옆을 집을 수 있다. 실패가 생기면 "카메라가 물체를 잘못 찾았는지", "좌표 변환이 틀렸는지", "팔 제어가 부정확한지"를 나누어 확인한다.

최종 성공 기준은 "정해진 영역 안의 빨간 블록을 10번 중 7번 이상 집어 목표 구역에 놓는다" 정도로 잡을 수 있다. 성공률이 낮아도 괜찮다. 실패 장면이 바로 다음 학습 자료다.

AI 에이전트 프로젝트 설계하기

AI 로봇 에이전트 프로젝트는 매우 매력적이다. 사람이 "책상 위 컵을 가져와"라고 말하면 로봇이 의미를 이해하고, 주변을 살피고, 필요한 행동을 계획하고, 실제로 움직인다. 이 장면은 로봇공학과 인공지능이 만나는 가장 흥미로운 순간이다.

그러나 AI 에이전트 프로젝트는 쉽게 커진다. 자연어 이해, 객체 인식, 행동 계획, 경로 계획, 조작, 실패 복구, 안전 판단이 모두 연결되기 때문이다. 그래서 반드시 단계를 나눠야 한다. 특히 자연어 명령을 바로 모터 명령으로 연결하면 위험하다. 자연어는 애매하고, 로봇의 실제 세계는 불확실하기 때문이다.

AI 에이전트는 크게 네 부분으로 나누어 설계하는 것이 좋다. 자연어 입력을 해석하는 부분, 로봇이 수행할 수 있는 행동 스킬 목록, 실행 전 검증하는 시뮬레이션 또는 안전 검사, 실제 로봇에 명령을 보내는 실행 부분이다.

자연어 입력은 제한된 명령부터 시작한다

처음부터 모든 문장을 이해하려고 하면 프로젝트가 끝나지 않는다. 자연어 입력도 범위를 정해야 한다. 예를 들어 첫 버전에서는 다음과 같은 명령만 받도록 제한할 수 있다.

  • "앞으로 가."

  • "문 앞까지 가."

  • "빨간 블록을 집어."

  • "컵을 찾아."

  • "원래 자리로 돌아와."

이 정도의 제한은 나쁜 것이 아니다. 오히려 로봇이 무엇을 할 수 있는지 분명하게 만든다. 사람의 말은 다양하지만, 로봇의 행동은 결국 정해진 스킬로 실행된다. "컵을 가져와"라는 말도 실제로는 컵 찾기, 컵 위치로 이동하기, 팔을 뻗기, 잡기, 들어 올리기, 사람에게 이동하기, 내려놓기 같은 스킬의 조합이다.

자연어 입력을 처리할 때는 로봇이 명령을 바로 실행하지 말고 중간 계획을 만들게 하는 편이 좋다. 예를 들어 사용자가 "빨간 블록을 오른쪽 상자에 넣어"라고 말하면 에이전트는 먼저 "빨간 블록을 찾는다 → 블록 위치로 팔을 이동한다 → 그리퍼를 닫는다 → 들어 올린다 → 오른쪽 상자로 이동한다 → 그리퍼를 연다"처럼 계획을 만든다. 그다음 각 단계가 가능한지 확인한다.

행동 스킬은 작은 동사로 만든다

AI 에이전트의 핵심은 거대한 지능 하나가 모든 것을 해결하는 것이 아니다. 로봇이 이미 할 수 있는 작은 행동들을 준비해 두고, AI가 그 조합을 선택하게 하는 것이다. 이 작은 행동을 스킬이라고 부를 수 있다.

좋은 스킬은 이름이 분명하고, 입력과 출력이 명확하며, 실패를 알려 줄 수 있어야 한다. 예를 들어 move_to(목표 위치)라는 스킬은 목표 위치로 이동하고, 성공하면 "도착", 실패하면 "장애물 때문에 실패" 또는 "목표 위치가 지도 밖" 같은 결과를 반환해야 한다. grasp(물체)라는 스킬은 물체를 잡고, 실패하면 "물체 위치 불확실", "그리퍼 접촉 실패", "물체가 너무 큼" 같은 이유를 알려 줄 수 있어야 한다.

입문 AI 로봇 프로젝트에서 사용할 수 있는 스킬은 다음과 같다.

  • 이동 스킬: 앞으로 가기, 회전하기, 목표 지점으로 이동하기, 출발 위치로 돌아오기

  • 인식 스킬: 물체 찾기, 사람 찾기, 마커 읽기, 장애물 확인하기

  • 조작 스킬: 팔을 준비 자세로 이동하기, 물체 잡기, 물체 놓기, 그리퍼 열고 닫기

  • 대화 스킬: 현재 상태 말하기, 사용자에게 확인 요청하기, 실패 이유 설명하기

  • 안전 스킬: 비상 정지, 속도 낮추기, 위험 구역 진입 거부하기

스킬 목록을 만들면 프로젝트가 현실적으로 바뀐다. "똑똑한 로봇을 만들자"가 아니라 "이 로봇은 현재 다섯 가지 스킬을 할 수 있고, 자연어 명령을 이 스킬들의 순서로 바꾼다"가 된다. 이것이 AI 에이전트 프로젝트의 출발점이다.

시뮬레이션 검증을 먼저 통과시킨다

AI가 만든 계획은 그럴듯해 보일 수 있다. 하지만 그럴듯함과 실행 가능성은 다르다. "컵을 집어 책장 위에 올려"라는 계획이 있어도 로봇팔이 책장 높이에 닿지 않을 수 있다. "문 앞으로 가"라는 명령도 지도에 문 위치가 없으면 실행할 수 없다. 그래서 실제 실행 전에 검증 단계가 필요하다.

시뮬레이션은 이때 매우 유용하다. 실제 로봇을 움직이기 전에 가상 환경에서 계획을 시험해 볼 수 있기 때문이다. 이동 로봇이라면 가상 지도에서 경로가 존재하는지 확인할 수 있고, 로봇팔이라면 목표 위치가 작업 공간 안에 있는지 확인할 수 있다. 시뮬레이션이 완벽하지는 않지만, 위험한 명령이나 말이 안 되는 계획을 걸러 내는 데 도움이 된다.

시뮬레이션 검증에는 복잡한 물리 엔진만 필요한 것이 아니다. 아주 단순한 규칙 검사도 훌륭한 검증이다. 목표 위치가 지도 안에 있는지, 장애물과 너무 가깝지 않은지, 로봇팔 관절 각도가 제한 범위 안인지, 물체 무게가 그리퍼가 들 수 있는 범위인지 확인하는 것만으로도 많은 사고를 줄일 수 있다.

AI 에이전트는 다음 순서로 실행하는 편이 안전하다.

  1. 사용자 명령을 받는다.

  2. 명령을 로봇의 스킬 목록에 맞는 계획으로 바꾼다.

  3. 계획의 각 단계가 가능한지 규칙과 시뮬레이션으로 확인한다.

  4. 위험하거나 불확실한 단계가 있으면 사용자에게 다시 묻는다.

  5. 안전한 단계부터 실제 로봇에서 실행한다.

  6. 실행 결과를 관찰하고 필요하면 계획을 수정한다.

이 구조에서는 AI가 명령을 이해하더라도 실행기는 별도로 존재한다. 자연어를 다루는 부분과 모터를 움직이는 부분을 분리하는 것이다. 이 분리는 로봇 안전에서 매우 중요하다.

실제 실행은 느리고 조심스럽게 연결한다

시뮬레이션에서 잘 되던 일이 실제 로봇에서 바로 잘 되지는 않는다. 실제 바퀴는 미끄러지고, 카메라는 흔들리고, 조명은 바뀌며, 모터는 이상적인 속도로 움직이지 않는다. 그래서 실제 실행 단계에서는 속도를 낮추고, 한 번에 하나의 스킬만 확인해야 한다.

예를 들어 자연어 명령으로 "빨간 블록을 집어"를 실행하는 프로젝트라면 처음에는 전체 명령을 한 번에 실행하지 않는다. 먼저 "빨간 블록을 찾기"만 테스트한다. 다음에는 "팔을 블록 위로 이동하기"만 테스트한다. 그다음 "그리퍼 닫기"를 테스트한다. 마지막에 이 스킬들을 연결한다.

실제 로봇에서 AI 에이전트를 테스트할 때는 로그가 중요하다. 사용자의 원래 명령, AI가 만든 계획, 각 스킬의 실행 결과, 센서가 본 값, 실패 이유를 남겨야 한다. 로그가 없으면 실패가 단순한 우연처럼 보인다. 로그가 있으면 실패가 패턴으로 보인다.

AI 로봇 에이전트의 첫 성공은 대단한 대화 능력이 아니라 안정적인 작은 행동이다. 사용자가 "앞으로 50cm 가"라고 말했을 때 로봇이 계획을 만들고, 안전 검사를 하고, 실제로 50cm 이동한 뒤 "도착했습니다"라고 말할 수 있다면 이미 훌륭한 시작이다.

AI 에이전트 프로젝트 예시: 말로 조종하는 책상 로봇

예를 들어 "말로 조종하는 책상 로봇"을 설계해 보자. 이 로봇은 작은 바퀴 플랫폼이며, 책상 위나 바닥의 작은 영역에서만 움직인다. 사용자는 "앞으로 가", "왼쪽으로 돌아", "멈춰", "빨간 물체를 찾아" 같은 제한된 명령을 입력한다.

첫 버전에서는 음성 인식 대신 텍스트 입력을 사용해도 된다. 자연어 명령을 받으면 에이전트는 이를 스킬로 바꾼다. "앞으로 조금 가"는 move_forward(0.2m)가 되고, "왼쪽으로 돌아"는 turn_left(30도)가 된다. 로봇은 실행 전 주변에 장애물이 가까운지 확인하고, 위험하면 움직이지 않는다.

두 번째 버전에서는 카메라를 붙여 빨간 물체를 찾는다. 세 번째 버전에서는 사용자가 "빨간 물체 앞으로 가"라고 말하면 로봇이 물체 방향을 추정하고 조금씩 접근한다. 이때도 전체 목표를 한 번에 해결하려 하지 않는다. 물체 찾기, 방향 맞추기, 조금 이동하기, 다시 보기, 멈추기를 반복한다.

이 프로젝트는 작지만 AI 로봇 에이전트의 핵심 구조를 모두 담고 있다. 자연어 입력, 스킬 변환, 센서 확인, 안전 검사, 실제 실행, 피드백이 하나의 흐름으로 연결된다.

콘텐츠 제작형 로봇 학습 프로젝트

로봇 프로젝트는 결과물만 남기는 활동이 아니다. 과정을 기록하면 훌륭한 학습 콘텐츠가 된다. 특히 로봇은 시각적으로 재미있다. 움직임이 보이고, 실패가 보이고, 개선이 보인다. 그래서 로봇을 배우는 사람은 자신이 만든 과정을 글, 영상, 강의, 블로그, 포트폴리오로 정리하기 좋다.

콘텐츠 제작형 프로젝트의 핵심은 "완성된 모습만 보여 주지 않는 것"이다. 로봇은 한 번에 잘 움직이지 않는다. 직진이 휘고, 센서가 튀고, 팔이 물체를 밀어 버리고, AI가 엉뚱한 계획을 만든다. 이런 실패 장면은 부끄러운 자료가 아니라 가장 좋은 설명 자료다. 실패가 있어야 로봇공학의 핵심 개념이 살아난다.

데모 장면을 먼저 설계한다

콘텐츠로 만들 프로젝트라면 데모 장면을 먼저 정하는 것이 좋다. 데모 장면은 "보는 사람이 10초 안에 무엇을 만들었는지 이해할 수 있는 장면"이다. 예를 들어 이동 로봇이라면 출발점에서 목표점까지 가다가 장애물 앞에서 멈추는 장면이 좋다. 로봇팔이라면 물체를 집어 상자에 넣는 장면이 좋다. AI 에이전트라면 사용자의 명령을 듣고 계획을 말한 뒤 행동하는 장면이 좋다.

데모 장면이 선명하면 프로젝트 범위도 선명해진다. "로봇이 똑똑해 보이게 만들자"는 모호하지만, "사용자가 '빨간 블록을 상자에 넣어'라고 입력하면 로봇팔이 빨간 블록을 찾아 집고 상자 안에 놓는다"는 구체적이다. 콘텐츠로 보여 줄 장면이 곧 프로젝트의 성공 기준이 된다.

데모 장면을 설계할 때는 다음을 함께 정하자.

  • 첫 화면: 로봇, 환경, 목표 물체가 한눈에 보이게 배치한다.

  • 사용자 명령: 말이나 자막으로 프로젝트 목표를 분명히 보여 준다.

  • 중간 과정: 센서 화면, 지도, 계획 결과, 좌표 변환 등 보이지 않는 판단을 시각화한다.

  • 성공 장면: 로봇이 목표 행동을 완료하는 순간을 짧고 분명하게 보여 준다.

  • 실패 장면: 흔한 실패를 숨기지 말고 원인과 개선을 함께 설명한다.

좋은 데모는 과장하지 않는다. 로봇이 할 수 있는 일을 정확히 보여 준다. 보는 사람은 완벽한 로봇보다 개선되는 로봇을 더 오래 기억한다.

설명 포인트는 하나의 개념에 집중한다

로봇 콘텐츠를 만들 때 흔한 실수는 모든 것을 한 번에 설명하려는 것이다. 센서도 설명하고, 모터도 설명하고, PID도 설명하고, SLAM도 설명하고, AI도 설명하다 보면 보는 사람은 길을 잃는다. 하나의 콘텐츠에는 하나의 중심 개념을 두는 편이 좋다.

예를 들어 이동 로봇 영상의 중심 개념은 "엔코더만 믿으면 왜 위치가 틀어지는가"가 될 수 있다. 로봇팔 영상의 중심 개념은 "좌표계가 맞지 않으면 왜 물체 옆을 집는가"가 될 수 있다. AI 에이전트 영상의 중심 개념은 "LLM이 만든 계획을 왜 바로 실행하면 안 되는가"가 될 수 있다.

설명은 로봇의 실제 실패와 연결될 때 가장 이해하기 쉽다. 로봇이 벽에 가까이 가서 멈추지 못했다면 거리 센서의 한계와 안전 정지를 설명할 수 있다. 로봇팔이 물체를 밀어 버렸다면 접근 높이, 그리퍼 위치, 말단 좌표계를 설명할 수 있다. AI가 "컵을 가져와"라는 명령을 받고 존재하지 않는 컵을 찾으려 했다면 인식 결과 확인과 사용자 재질문이 왜 필요한지 설명할 수 있다.

실패 사례를 기록하는 법

실패를 잘 기록하면 프로젝트가 빨리 성장한다. 실패 기록은 단순히 "안 됨"이라고 쓰는 것이 아니다. 어떤 조건에서, 어떤 명령을 내렸고, 로봇이 무엇을 보았으며, 실제로 어떻게 움직였는지를 남기는 것이다.

실패 기록에는 다음 항목을 넣으면 좋다.

  • 날짜와 실험 조건: 장소, 조명, 배터리 상태, 바닥 상태를 적는다.

  • 기대한 동작: 로봇이 무엇을 해야 했는지 한 문장으로 적는다.

  • 실제 동작: 로봇이 실제로 어떻게 움직였는지 관찰한 대로 적는다.

  • 센서 값 또는 화면: 카메라 이미지, 거리 값, 지도, 로그를 함께 저장한다.

  • 추정 원인: 모터, 센서, 좌표계, 제어, 계획 중 어디가 의심되는지 적는다.

  • 다음 실험: 무엇을 바꾸어 다시 테스트할지 정한다.

이렇게 기록하면 실패는 감정이 아니라 데이터가 된다. "로봇이 이상하다"가 아니라 "오른쪽 바퀴 속도가 왼쪽보다 낮아 직진이 왼쪽으로 휜다"가 된다. "AI가 멍청하다"가 아니라 "물체 인식 결과가 없는데도 계획 단계에서 grasp를 실행했다"가 된다. 원인이 구체적이면 개선도 구체적이다.

개선 과정을 콘텐츠로 엮기

로봇 프로젝트의 가장 좋은 이야기는 "처음에는 안 됐지만, 원인을 찾아 조금 나아졌다"이다. 완성 장면만 보여 주면 보는 사람은 감탄하고 지나간다. 하지만 실패와 개선을 함께 보여 주면 배울 수 있다.

예를 들어 이동 로봇 콘텐츠는 이렇게 구성할 수 있다. 처음에는 로봇이 직진하지 못하고 한쪽으로 휜다. 바퀴 속도를 측정해 보니 양쪽 모터 특성이 다르다. 속도 피드백을 넣자 직진이 나아진다. 하지만 긴 거리를 가면 여전히 위치가 틀어진다. 엔코더 오차가 누적된다는 사실을 설명하고, IMU나 외부 기준을 추가할 필요를 보여 준다.

로봇팔 콘텐츠도 비슷하다. 처음에는 팔이 물체를 정확히 집지 못한다. 카메라 좌표와 로봇팔 좌표가 맞지 않는다는 문제를 발견한다. 간단한 보정점을 찍어 좌표 변환을 개선한다. 이후에는 물체 중심은 맞지만 그리퍼가 너무 빨리 닫혀 물체를 밀어 버린다. 접근 속도와 잡는 순서를 조정한다. 이 과정 자체가 로봇팔 입문 강의가 된다.

AI 에이전트 콘텐츠에서는 계획과 실행의 분리를 보여 줄 수 있다. 처음에는 자연어 명령을 곧바로 실행해 위험하거나 엉뚱한 행동이 나온다. 그다음 스킬 목록을 만들고, 실행 전 안전 검사를 넣는다. 마지막에는 로봇이 불확실한 상황에서 "컵을 찾지 못했습니다. 다시 시도할까요?"라고 묻는다. 이 장면은 AI 로봇이 단순한 챗봇이 아니라 실제 세계와 상호작용하는 시스템임을 잘 보여 준다.

프로젝트를 단계로 쪼개는 방법

프로젝트가 실패하는 가장 큰 이유는 한 번에 너무 많은 것을 하려 하기 때문이다. 로봇은 하드웨어, 센서, 제어, 소프트웨어, 인공지능이 동시에 얽혀 있으므로 작은 단계로 나누지 않으면 디버깅이 불가능해진다.

좋은 단계 설계는 "항상 움직이는 작은 버전"을 유지하는 것이다. 전체 기능이 아직 없어도 로봇이 최소한 한 가지 행동은 안정적으로 해야 한다. 이동 로봇이라면 수동 조종이 항상 가능해야 한다. 로봇팔이라면 준비 자세로 돌아가는 동작이 항상 가능해야 한다. AI 에이전트라면 스킬 하나를 직접 실행하는 방법이 항상 남아 있어야 한다.

프로젝트는 다음 순서로 쪼개면 안정적이다.

  1. 하드웨어가 켜지고 안전하게 멈출 수 있는지 확인한다.

  2. 가장 단순한 수동 명령으로 로봇을 움직인다.

  3. 센서 값을 읽고 화면이나 로그로 확인한다.

  4. 하나의 자동 행동을 만든다.

  5. 실패 조건을 감지하고 멈추는 규칙을 넣는다.

  6. 여러 행동을 순서대로 연결한다.

  7. 사용자 입력이나 AI 계획을 마지막에 붙인다.

이 순서에서 중요한 점은 AI를 너무 빨리 붙이지 않는 것이다. 로봇이 기본 행동을 안정적으로 수행하지 못하는 상태에서 AI를 붙이면, 실패 원인을 찾기 어렵다. 명령 해석이 틀린 것인지, 센서가 틀린 것인지, 제어가 틀린 것인지 알 수 없어진다. 먼저 몸을 안정시키고, 그다음 지능을 얹는 편이 좋다.

4주 프로젝트 계획 예시

처음 프로젝트는 4주 정도로 잡아도 충분하다. 4주는 짧지만, 범위를 잘 줄이면 하나의 완성된 데모를 만들 수 있다. 중요한 것은 매주 눈에 보이는 결과를 만드는 것이다.

주차목표결과물
1주차프로젝트 범위와 하드웨어 구성 확정프로젝트 정의서, 부품 목록, 안전 규칙
2주차기본 동작 구현수동 조종, 관절 이동, 센서 값 확인
3주차자동 행동 하나 구현목표 지점 이동, 물체 집기, 명령-스킬 변환
4주차실패 보정과 데모 정리성공 기준 측정, 실패 기록, 시연 영상 또는 보고서

4주 계획에서는 중간에 목표를 크게 바꾸지 않는 것이 좋다. 새로운 센서나 새로운 AI 모델을 추가하고 싶어도, 일단 첫 데모를 완성한 뒤 다음 버전으로 넘기는 편이 안전하다. 프로젝트는 한 번에 완성되는 것이 아니라 버전이 쌓이면서 좋아진다.

프로젝트 선택 가이드

어떤 프로젝트를 고르면 좋을지 모르겠다면 자신의 관심사와 현재 수준을 기준으로 선택하면 된다. 하드웨어를 만지는 것이 좋다면 작은 이동 로봇이나 로봇팔이 좋다. 소프트웨어와 시뮬레이션이 좋다면 ROS2 기반 내비게이션이나 가상 로봇팔 제어가 좋다. AI에 관심이 많다면 자연어 명령을 스킬로 바꾸는 에이전트 프로젝트가 좋다. 콘텐츠를 만들고 싶다면 실패가 잘 보이는 프로젝트가 좋다.

관심사추천 프로젝트배울 수 있는 핵심
기초 하드웨어초음파 센서로 장애물 앞에서 멈추는 바퀴 로봇센서, 모터, 안전 정지
제어일정 거리 직진하고 제자리 회전하는 차동구동 로봇엔코더, 피드백, 오차 보정
로봇팔색 블록을 집어 상자에 넣는 로봇팔자유도, 좌표계, 그리퍼
SLAM작은 방의 지도를 만드는 이동 로봇위치 추정, 지도, 센서 융합
AI 비전카메라로 특정 물체를 찾아 접근하는 로봇객체 인식, 시각 피드백
LLM 에이전트자연어 명령을 로봇 스킬로 변환하는 시스템계획, 스킬, 안전 검사
콘텐츠 제작실패와 개선 과정을 보여 주는 미니 로봇 시리즈설명력, 기록, 데모 설계

가장 좋은 프로젝트는 "내가 끝까지 궁금해할 수 있는 문제"다. 로봇은 반드시 예상대로 움직이지 않는다. 그래서 단순히 유행하는 주제보다, 실패해도 다시 만져 보고 싶은 주제를 고르는 것이 중요하다.

완성보다 중요한 것은 반복이다

로봇 프로젝트에서 첫 번째 버전은 거의 항상 어설프다. 로봇은 삐뚤게 가고, 물체를 놓치고, 지도는 찌그러지고, AI는 엉뚱한 계획을 세운다. 하지만 이것은 실패가 아니라 로봇공학의 정상적인 출발점이다. 실제 세계는 복잡하고, 센서는 불완전하며, 제어는 계속 보정되어야 한다.

좋은 로봇 개발자는 한 번에 정답을 맞히는 사람이 아니다. 관찰하고, 기록하고, 원인을 나누고, 작은 수정을 반복하는 사람이다. 로봇이 왼쪽으로 휘면 바퀴 속도를 의심한다. 물체를 못 잡으면 좌표계와 그리퍼를 확인한다. 경로를 못 찾으면 지도와 장애물 표현을 본다. AI가 엉뚱한 행동을 하면 스킬 목록과 안전 검사를 점검한다.

이 반복 속에서 로봇은 점점 나아진다. 그리고 만드는 사람도 로봇을 보는 눈이 달라진다. 처음에는 로봇이 "움직이는 기계"처럼 보이지만, 어느 순간부터는 센서, 추정, 계획, 제어, 피드백이 맞물린 시스템으로 보인다. 바로 그때 로봇공학이 재미있어지기 시작한다.

나만의 첫 프로젝트를 정해 보자

이제 마지막으로 자신의 프로젝트를 한 문장으로 적어 보자. 너무 멋진 문장이 아니어도 된다. 작고 구체적이면 충분하다.

  • "내 방에서 장애물을 만나면 멈추는 작은 바퀴 로봇을 만든다."

  • "책상 위의 빨간 블록을 집어 오른쪽 상자에 넣는 로봇팔을 만든다."

  • "사용자의 텍스트 명령을 받아 이동 스킬을 실행하는 미니 로봇 에이전트를 만든다."

  • "로봇이 직진하지 못하는 이유를 실험하고 개선 과정을 영상으로 기록한다."

이 문장을 프로젝트 정의서의 첫 줄에 적고, 환경과 센서와 성공 기준을 채워 넣으면 된다. 그리고 가장 작은 행동부터 시작하자. 바퀴를 1초 동안 돌리는 것, 센서 값을 화면에 띄우는 것, 그리퍼를 열고 닫는 것, 자연어 명령을 하나의 스킬 이름으로 바꾸는 것. 그 작은 행동 하나가 프로젝트의 첫 번째 심장 박동이다.

로봇공학은 멀리서 보면 거대한 분야지만, 가까이서 보면 작은 순환의 반복이다. 보고, 생각하고, 움직이고, 다시 본다. 이 순환을 직접 설계하고 실행하는 순간, 로봇은 더 이상 책 속의 개념이 아니다. 당신의 책상 위에서, 방 안에서, 시뮬레이터 속에서, 그리고 언젠가 실제 세상 속에서 움직이는 하나의 시스템이 된다.

책 목록

처음 만나는 로봇공학: 로봇은 어떻게 보고, 생각하고, 움직이는가

전체 목차 보기

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

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

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

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

참여하기