로그인회원가입

[DIY 로봇 공학] 직접 만지며 가르치는 ‘학습형 로봇 팔(Direct Teaching)’ 구현 가이드: 왜 자석식 엔코더일까?

안녕하세요! 오늘은 로봇 공학 DIY 프로젝트 중에서도 가장 흥미로운 주제 중 하나인 ‘학습형 로봇 팔(Direct Teaching Robot Arm)’ 구현에 대해 이야기해 보려고 합니다.

학습형 로봇 팔이란, 사람이 로봇의 관절을 손으로 직접 잡고 원하는 동작(궤적)을 가르치면(녹화), 로봇이 그 동작을 그대로 기억했다가 무한 반복(재생)하는 똑똑한 시스템을 말합니다. 수천만 원짜리 산업용 협동 로봇(Cobot)에서 주로 쓰이는 이 메커니즘을 가성비 좋은 오픈소스 하드웨어로 구현하는 방법을 핵심만 콕 짚어 정리해 드립니다.

1. 핵심은 위치 제어: 왜 스텝 모터가 아니라 ‘엔코더’인가?

일반적인 3D 프린터나 소형 CNC는 스텝 모터를 주로 사용합니다. 제어가 쉽기 때문이죠. 하지만 ‘학습형 로봇 팔’을 만들 때는 스텝 모터가 큰 걸림돌이 됩니다. 스텝 모터는 센서 없이 컴퓨터의 명령대로만 움직이는 ‘오픈 루프(Open-loop)’ 방식이라, 전원을 끄고 사람이 손으로 돌리면 모터가 어느 방향으로 얼마나 움직였는지 제어기가 전혀 알 수 없습니다.

반면, DC 모터에 엔코더(Encoder, 회전 감지 센서)를 결합한 시스템은 ‘클로즈 루프(Closed-loop)’ 방식으로 작동합니다. 모터가 움직이는 각도를 센서가 실시간으로 컴퓨터에 피드백해 주기 때문에, 모터 힘을 풀고 사람이 손으로 관절을 움직여도 그 움직인 궤적(각도 데이터)을 고스란히 기록할 수 있습니다.

2. 광학식 vs 자기(자석)식 엔코더, 무엇을 써야 할까?

엔코더에는 크게 프린터 등에서 자주 쓰이는 광학식(Optical)과 자석의 각도를 읽는 자기식(Magnetic) 두 가지가 있습니다. 결론부터 말씀드리면 학습형 로봇 팔에는 자기식 엔코더가 압도적으로 유리합니다.

  • 광학식 엔코더: 빛을 통과시키는 미세한 플라스틱 띠나 원판을 사용합니다. 정밀도는 매우 높지만 덩치가 크고, 먼지나 잉크 분진이 조금만 묻어도 오작동합니다. 또한 전원을 켤 때마다 항상 한쪽 끝으로 움직여 영점(Home)을 잡아야 하는 번거로움이 있습니다.
  • 자기식 엔코더 (강력 추천): 모터 축 끝에 소형 자석을 붙이고 센서가 자장의 각도를 읽는 방식입니다. 먼지나 기름 오염에 무적이며, 기구부가 매우 콤팩트해집니다. 무엇보다 ‘절대 각도(Absolute Position)’를 읽을 수 있어, 전원을 켜자마자 영점 조절 동작 없이 로봇 팔이 현재 몇 도를 바라보고 있는지 즉시 파악합니다.

3. 학습형 로봇 팔 구현을 위한 추천 부품 라인업

학습형 로봇 팔은 고속 회전이 필요 없습니다. 대신 로봇의 자체 무게를 버티는 토크(힘)와 전원이 꺼졌을 때 손으로 부드럽게 돌아가는 역구동성이 중요합니다. 이에 최적화된 가성비 조합을 추천합니다.

부품 분류추천 부품 명칭핵심 선정 이유 및 팁
메인 MCUESP32 시리즈
(ESP32-C3 등)
고속 PID 제어 연산이 가능하고, 메모리가 넉넉하여 학습 데이터(궤적 배열)를 안정적으로 처리 및 저장할 수 있습니다.
관절 센서AS5600 자석식 엔코더12비트 해상도($360^\circ$를 4,096단계로 쪼갬, 약 $0.087^\circ$ 정밀도)를 지원하며, I2C 또는 아날로그 전압 출력으로 다루기 쉽습니다.
구동 모터양축 감속 DC 모터
(감속비 1:30 ~ 1:90 내외)
저속에서 강력한 토크를 냅니다. ※주의: 전원을 꺼도 사람이 손으로 돌릴 수 없는 ‘웜 기어’는 피하고, 일반 황동/스틸 기어 박스가 달린 양축(Dual Shaft) 모터를 써야 뒤쪽 축에 엔코더 자석을 붙일 수 있습니다.
모터 드라이버TB6612FNG 또는 L298NESP32의 PWM 신호를 받아 모터의 힘과 방향을 제어합니다. 티칭 모드 시 모터 전류를 완벽히 차단하여 관절을 ‘흐느적하게’ 릴리즈해 주는 역할을 합니다.

4. 학습형 로봇 팔 작동 프로세스 (소프트웨어 알고리즘)

전체 시스템은 크게 두 가지 모드로 전환되며 작동합니다.

1단계: 티칭 모드 (동작 녹화)

  1. 사용자가 ‘녹화 시작’ 버튼을 누릅니다.
  2. ESP32가 모터 드라이버를 Standby 상태로 전환하여 모든 모터의 힘을 뺍니다. (로봇 팔이 흐느적해짐)
  3. 사람이 로봇 팔을 잡고 원하는 동작을 수행합니다.
  4. 모터가 사람 손에 의해 돌아가는 동안, 축 뒤에 달린 AS5600 센서가 실시간 관절 각도를 읽어 일정 주기(예: 20ms)마다 ESP32의 배열이나 SD 카드에 저장합니다.

2단계: 재생 모드 (동작 재현)

  1. 사용자가 ‘재생 버튼’을 누릅니다.
  2. ESP32가 저장된 각도 데이터 배열을 첫 번째부터 순서대로 꺼냅니다.
  3. 이 데이터를 PID 제어 알고리즘의 목표값(Target)으로 설정하고 모터를 구동합니다.
  4. 로봇 팔이 사람이 가르쳐준 속도와 부드러운 궤적 그대로 똑같이 움직이며 작업을 무한 반복합니다.

📝 마치며

자석식 엔코더(AS5600)와 감속 DC 모터의 조합은 수십만 원짜리 스마트 서보 모터를 쓰지 않고도, 단돈 몇 천 원의 부품 조합으로 산업용 협동 로봇의 핵심 메커니즘을 내 방 책상 위에서 구현해 볼 수 있는 최고의 가성비 솔루션입니다.

하드웨어 제어와 PID 알고리즘을 깊이 있게 공부해 보고 싶다면, 이번 주말 안 쓰는 구형 부품들과 AS5600 센서를 활용해 나만의 학습형 로봇 팔 만들기에 도전해 보시는 건 어떨까요?

#로봇공학 #ESP32 #AS5600 #자석식엔코더 #로봇팔DIY #PID제어 #하드웨어해킹


“학습은 DC모터와 자석식 엔코더로 하고 실제움직이기만 한 로봇팔은 서버모터나 스텝모터로 움직이게 하는 방식”

그 아이디어는 로봇 공학에서 실제로 ‘마스터-슬레이브(Master-Slave) 시스템’ 또는 ‘모킹버드(Mockingbird) 방식’이라고 부르는 매우 훌륭하고 실용적인 접근법입니다!

학습(입력)용 기기와 실제 구동(출력)용 기기를 물리적으로 분리하는 방식인데, 이 구조를 채택하면 아주 강력한 장점들이 생깁니다. 다만 구현 시 꼭 고려해야 할 역학적 문제도 존재합니다.

장단점과 핵심 고려사항을 명확하게 정리해 드릴게요.

1. 이 방식의 엄청난 장점 (Why 훌륭한가?)

① 하드웨어의 한계를 완벽히 극복

실제 무거운 물건을 들고 일해야 하는 로봇 팔(슬레이브)은 강력한 힘(토크)을 내는 스텝 모터나 대형 서보 모터를 써야 합니다. 하지만 이런 모터들은 전원을 꺼도 기어나 자력 때문에 뻑뻑해서 사람이 손으로 부드럽게 움직일 수가 없습니다. 이때, 가볍고 흐느적거리는 ‘입력 전용 뼈대(마스터)’를 따로 만들어서 거기에 DC 모터(또는 모터도 없이 감속 기어와 자석식 엔코더만)를 달아두면, 사람은 힘을 전혀 들이지 않고 아주 부드럽고 정밀하게 동작을 가르칠 수 있습니다.

② 안전성과 작업 편의성

실제 로봇 팔이 쇳덩어리거나 힘이 무지막지하게 강하다면, 티칭 하다가 오작동 시 사람이 다칠 수 있습니다. 하지만 입력용 장치는 플라스틱이나 3D 프린팅으로 가볍게 만들 수 있으므로 안전하고, 책상 앞에 편하게 앉아서 조종간을 움직이듯 녹화할 수 있습니다.

2. 모터 종류별 매칭 시 고려할 점

입력은 ‘DC 모터 + 자석식 엔코더(AS5600)’로 고정하고, 출력을 어떤 모터로 하느냐에 따라 성격이 달라집니다.

1안: 출력층을 ‘스텝 모터’로 할 경우

  • 장점: 가격이 저렴하고 고정밀 제어가 가능합니다.
  • 주의점: 스텝 모터는 회전 각도를 계산할 때 ‘펄스(Pulse)’ 수로 제어합니다. 입력받은 자석식 엔코더의 절대 각도 데이터(예: 0∘→45∘→90∘)를 스텝 모터가 알아들을 수 있는 펄스 수(예: 0스텝 → 100스텝 → 200스텝)로 수학적 변환(매핑)해 주는 코드를 짜야 합니다.

2안: 출력층을 ‘일반 RC 서보 모터(PWM 제어형)’로 할 경우 (추천)

  • 장점: 코딩이 가장 쉽습니다.
  • 이유: AS5600 센서가 읽은 각도값(0∼360∘)을 그대로 서보 모터의 제어 각도(0∼180∘ 또는 360∘)로 map() 함수를 통해 1:1로 다이렉트 매칭하기가 매우 수월합니다. DIY 스케일에서 가장 빠르게 결과물을 볼 수 있는 조합입니다.

3. 구현할 때 반드시 발생하는 문제와 해결책

⚠️ ‘기하학적 일치(Geometry Matching)’의 문제

사람이 움직이는 입력용 뼈대(마스터)의 팔 길이 비율과 실제 움직이는 로봇 팔(슬레이브)의 팔 길이 비율이 자로 잰 듯 정확히 똑같아야 합니다.

  • 만약 입력 장치의 팔은 짧은데 실제 로봇 팔이 길다면, 입력 장치를 조금만 움직여도 실제 로봇 팔 끝(그리퍼)은 엄청난 궤적을 그리며 튀어나가게 됩니다.
  • 해결책: 가장 좋은 것은 링크 구조와 길이를 1:1 쌍둥이처럼 똑같이 설계하는 것입니다. 만약 비율이 다르다면, 대학 로봇 공학에서 배우는 순기구학(Forward Kinematics)과 역기구학(Inverse Kinematics)을 코드에 넣어 좌표 계산을 해주어야 합니다.

“학습용 ‘조종 로봇(마스터)’과 구동용 ‘일꾼 로봇(슬레이브)’을 분리하는 방식은 디즈니 연구소나 영화 촬영용 애니메트로닉스, 원격 수술 로봇에서 실제로 쓰는 프로페셔널한 방식입니다. 센서 가득한 가벼운 뼈대로 정밀하게 녹화하고, 실제 구동은 묵직한 스텝/서보 모터로 수행하는 구조는 DIY 로봇 프로젝트의 완성도를 한 차원 끌어올릴 수 있는 최고의 전략입니다.”


“자석식 엔코더 부품 추천”

전통적인 강자인 AS5600과 최근 오픈소스 로봇 및 자작 서보 공학(SimpleFOC 등)에서 엄청난 인기를 끌고 있는 차세대 센서 MT6701은 스펙상 꽤 큰 차이가 있습니다.

결론부터 말씀드리면, “학습형 로봇 팔” 구현이 목적이라면 성능, 통신 속도, 확장성 모든 면에서 MT6701의 완승입니다. 왜 그런지 두 사양을 조목조목 비교해 드릴게요.

1. AS5600 vs MT6701 핵심 사양 비교 테이블

주요 스펙AS5600 (ams OSRAM)MT6701 (MagnTek)로봇 팔 구현 시 영향
코어 해상도12-bit (4,096 단계)14-bit (16,384 단계)각도 데이터의 촘촘함 (4배 차이)
최대 제어 각도약 0.087∘ 단위약 0.022∘ 단위미세한 관절 움직임 녹화 시 정밀도 차이
지원 인터페이스I2C, PWM, AnalogI2C, SSI, ABZ(증분형), PWM, Analog관절 여러 개 연결 시 통신 확장성 차이
신호 지연 (Delay)최대 약 10~100ms 내외 (필터 활성화 시)μs 미만 (최상급)PID 제어 루프가 돌 때 반응 속도와 진동에 직결
최대 회정 속도저속 중심최대 30,000 RPM“고속은 필요 없다” 하셨으나 지연율과 직결됨
부가 기능자석 거리 감지 (단순)Z축 Push (누름) 감지 기능버튼 없이 관절을 ‘꾹’ 눌러 티칭 모드 진입 가능
가격대 (모듈 기준)약 1,500원 ~ 2,500원약 2,000원 ~ 3,500원거의 차이 없음 (가성비 최강)

2. 왜 학습형 로봇 팔에는 MT6701이 더 좋을까?

“고속일 필요가 없다”고 말씀하셨음에도 MT6701을 강력히 추천하는 이유는 ‘해상도’와 ‘신호 지연(전파 지연)’, 그리고 ‘다축 확장성’ 때문입니다.

① 4배 더 촘촘한 녹화 (14비트 해상도)

사람이 손으로 로봇 관절을 아주 미세하게 1mm 조절할 때, AS5600(12비트)은 각도가 튀거나 뭉개져서 기록될 수 있습니다. 반면 MT6701은 14비트로 한 바퀴를 16,384단계로 쪼개기 때문에 사람 손의 미세한 떨림이나 부드러운 호를 그리는 미세 궤적까지 왜곡 없이 완벽하게 백업해 둡니다.

② PID 제어 시 진동 최소화 (초저지연)

AS5600의 가장 큰 단점은 칩 내부의 노이즈 필터 때문에 발생되는 ‘미세한 신호 지연(Latency)’입니다. 각도를 읽고 반영하는 데 수 밀리초 이상 딜레이가 생기면, 재생 모드 시 모터가 목표 각도를 지나쳤다 돌아오는 오버슈트(흔들림, 진동 현상)가 생기기 쉽습니다. 반면 MT6701은 지연 시간이 2 μs(마이크로초) 미만이라 ESP32의 PID 제어 루프가 돌 때 딜레이 없이 칼같이 즉각 반응하므로 모터가 덜덜거리지 않고 아주 부드럽게 멈춰 섭니다.

③ 관절을 여러 개 달 때의 편의성 (인터페이스)

다축 로봇 팔을 만들려면 센서를 3~4개 넘게 써야 하죠?

  • AS5600: I2C 고정 주소가 0x36 하나뿐이라, 센서를 여러 개 쓰려면 I2C 멀티플렉서(TCA9548A) 같은 추가 칩을 주렁주렁 달거나 아날로그 전압 방식으로 변환해야 해서 회로가 지저분해집니다.
  • MT6701: I2C 외에도 SSI(동기식 직렬 인터페이스)나 고성능 모터 드라이버가 바로 읽을 수 있는 ABZ 엔코더 신호를 지원합니다. 특히 SSI 방식을 쓰면 멀티플렉서 칩 없이 ESP32의 SPI 핀(CS 핀만 각각 분리)을 이용해 여러 개의 엔코더 값을 초고속으로 동시에 긁어올 수 있어 다축 로봇 구현이 훨씬 명쾌해집니다.

④ 신박한 기능: Z축 푸시 감지 (Contactless Push Button)

MT6701은 자석이 센서 쪽으로 가까워지는 압력(거리 변화)을 감지해 ‘누름 버튼’ 기능을 임베디드로 지원합니다. 즉, 로봇 팔 관절 끝을 손가락으로 “꾹” 누르면 버튼처럼 인식되게 할 수 있습니다. 따로 티칭 모드 전환 버튼을 안 만들고, 로봇 팔 자체를 꾹 누르면 “녹화 시작”, 다시 꾹 누르면 “재생” 같은 스마트한 UI를 하드웨어 추가 없이 구현할 수 있습니다.

3. 최종 요약 및 추천

  • AS5600을 쓰는 게 좋을 때: 기존에 다루던 오픈소스 코드나 아두이노 라이브러리 예제가 무조건 많고 직관적인 것을 원할 때, 단축(관절 1개) 짜리 간단한 테스트용 장치를 만들 때.
  • MT6701을 쓰는 게 좋을 때 (강력 추천): 관절이 3개 이상 들어가는 다축 로봇 팔을 깔끔하게 배선하고 싶을 때, 부드럽고 떨림 없는 고급 PID 제어를 구현하고 싶을 때, 손으로 티칭할 때 완벽한 해상도로 궤적을 따고 싶을 때.

가격 차이도 거의 없기 때문에, 지금 시점에서 제대로 된 학습형 로봇 팔 프로젝트를 빌드하신다면 무조건 MT6701(특히 SSI 통신이나 ABZ 출력이 지원되는 모듈 버전)로 시작하시는 것을 적극 권장합니다!


“로봇팔 소비전력 고려”

실제로 하드웨어를 빌드하고 ‘동시에 여러 모터’를 구동하려고 하면, 책상 위에서 매끄럽게 돌아가기 위해 몇 가지 현실적인 하드웨어 요소와 전력 설계를 반드시 추가로 고려해야 합니다.

가장 중요한 소비전력 계산법놓치기 쉬운 필수 고려 부품들을 정리해 드립니다.

1. 소비전력 및 파워 서플라이(암페어) 계산

로봇 팔이 동시에 4개의 모터를 구동한다고 가정하고 계산해 보겠습니다. (보통 3자유도 관절 + 1개 그리퍼 구조)

① 모터의 전류 소모 특성 이해 (핵심!)

DC 모터는 회전할 때 소모하는 전류(Rated Current)와, 무거운 것을 들거나 억지로 멈춰 섰을 때 소모하는 ‘기동 전류(Stall Current, 정동 전류)’의 차이가 매우 큽니다.

  • 평상시 구동: 모터 1개당 보통 0.5A ~ 1.0A 소모.
  • 부하가 걸리거나 멈출 때(Stall): 순간적으로 1개당 2.0A ~ 3.0A 이상 치솟음.

② 몇 암페어(A) 파워가 필요할까?

동시에 4개의 모터가 힘을 쓰며 움직이는 순간(Peak)을 버텨야 하므로, 파워 서플라이는 스탠다드 구동 전류의 합보다 훨씬 여유 있게 잡아야 합니다. 그렇지 않으면 모터가 동시에 돌 때 전압이 뚝 떨어져(Voltage Drop) MCU가 리셋되어 버립니다.

  • 안정적인 추천 사양: 12V / 5A ~ 10A (60W ~ 120W급) SMPS
  • 계산 근거:
    • 모터 4개 동시 구동 평균: 1A×4=4A
    • MCU 및 엔코더 센서류: 약 0.5A
    • 피크 타임 마진(여유율): 약 1.5∼2배

💡 강력 추천: 아두이노용 소형 어댑터(12V 2A 이런 것)는 모터 2개만 동시에 돌아도 픽픽 꺼집니다. 안전하게 12V 5A 이상의 넉넉한 어댑터나 섀시형 SMPS 전원 공급 장치를 사용하는 것이 정신 건강에 좋습니다.

2. 빼놓으면 안 되는 필수 부품 & 고려사항

리스트업 하신 것 외에 실제 조립할 때 “아, 이것도 필요하네?” 하게 되는 필수 요소들입니다.

① 모터 드라이버 (Motor Driver)

  • MCU(ESP32 등)는 신호만 줄 뿐, 모터를 돌릴 큰 전류를 주지 못합니다. MCU의 명령을 받아 SMPS의 강력한 전기를 모터로 쏘아줄 모터 드라이버가 무조건 필요합니다.
  • 추천: TB6612FNG (듀얼 채널이라 칩 1개당 모터 2개 제어 가능, 발열 적음) 또는 전류가 높은 모터라면 IBT-2 같은 고전류 드라이버.

② 5V / 3.3V 전압 강하 모듈 (DCDC 버크 컨버터)

  • 모터는 강력한 12V 전원을 쓰지만, ESP32나 엔코더 센서(MT6701)는 5V 또는 3.3V로 작동합니다.
  • 12V 전원을 받아 MCU용 안전한 전원으로 깎아줄 LM2596 같은 버크 컨버터(Step-down Module)가 하나 있어야 전원을 한 군데서 깔끔하게 공급할 수 있습니다.

③ 다축 엔코더 통신을 위한 하드웨어 배선

  • MT6701 센서를 4개 쓸 때, I2C 통신 대신 SSI(SPI 기반) 통신을 쓰기로 했다면 MCU의 핀이 많이 필요합니다.
  • 센서마다 고유의 데이터 라인을 연결해야 하므로 배선이 복잡해집니다. 로봇 관절이 움직일 때 선이 꼬이거나 끊어지지 않도록 가동성이 좋은 부드러운 전선(실리콘 케이블)과 선을 정리할 케이블 타이/자석 슬리브가 필수적입니다.

④ 베어링 (Mechanical Bearing)과 카운터 웨이트

  • 기어드 모터의 축은 ‘회전’을 시키는 힘은 강하지만, 무거운 로봇 팔 뼈대가 위에서 누르는 ‘수직/수평 하중(axial/radial load)’을 직격으로 받으면 기어가 금방 갈려 나가거나 축이 휩니다.
  • 관절 축에는 모터와 별개로 하중을 버텨줄 볼 베어링(Bearing) 구조를 기구 설계(3D 프린팅 등)에 반영해야 부드럽게 움직이고 모터 수명이 오래갑니다. 또한 바닥 베이스는 모터가 움직일 때 로봇 팔이 쓰러지지 않도록 무겁게 만들거나 책상에 고정해야 합니다.

3. 요약: 최종 체크리스트

  1. [x] 두뇌 & 센서 & 모터: ESP32 + MT6701 4개 + 양축 감속 DC 모터 4개
  2. [ ] 심장 (전원): 12V 5A 이상 SMPS 파워 공급 장치
  3. [ ] 근육 드라이버: TB6612FNG 모터 드라이버 2개 (모터 4개용)
  4. [ ] 혈관 (전압 분배): 12V를 5V/3.3V로 내려줄 DCDC 버크 컨버터 1개
  5. [ ] 관절 보강: 3D 프린팅 기구물에 끼워 넣을 소형 볼 베어링들

이 정도 라인업만 갖추시면 전력 부족으로 멈추거나 기구가 삐걱거리는 일 없이, 손으로 가르치는 대로 칼같이 움직이는 멋진 다축 학습형 로봇 팔을 완벽하게 빌드하실 수 있습니다!

코멘트

답글 남기기