2016년 2월 27일 토요일

MX-64 / MX-28 액추에이터 기반 센서 마운팅 용 로봇암

오늘은 이미지 스캔을 위한 마운팅 프레임과 결속된 MX-64와 MX-28의 ID설정 과정을 정리한다.

1. MX-64 설정
MX-64 스펙은 다음과 같다.

H/W Specification

  • MCU : ST CORTEX-M3 ( STM32F103C8 @ 72MHZ,32BIT)
  • POSITION SENSOR : Contactless absolute encoder (12BIT,360 DEGREE)
  • MOTOR : Maxon
  • BAUD RATE : 8000 bps ~ 4.5 Mbps
  • CONTROL ALGORITHM : PID CONTROL
  • Resolution : 0.088°
  • Running Degree
    • 0° ~ 360°
    • Endless Turn
  • Weight : 126g
  • Dimension : 40.2mm x 61.1mm x 41mm
  • Gear Reduction Ratio :  200 : 1
  • Stall Torque
    • 5.5N.m (at 11.1V, 3.9A),
    • 6.0N.m (at 12V, 4.1A)
    • 7.3N.m (at 14.8V, 5.2A)
  • No load speed
    • 58rpm (at 11.1V)
    • 63rpm (at 12V)
    • 78rpm (at 14.8V)
  • Running Temperature : -5℃ ~ +80℃
  • Voltage : 10  ~ 14.8V (Recommended Voltage 12V)
  • Command Signal : Digital Packet
  • Protocol Type
    • MX-64T (Half duplex Asynchronous Serial Communication (8bit,1stop, No Parity))
    • MX-64R (RS485 Asynchronous Serial Communication (8bit,1stop, No Parity))

MX-64도 이전 글과 마찬가지로 같은 방식으로 Dynamixel serial 과 전원을 연결하고, 다이나믹셀 위저드를 이용해 액추에이터 스캔을 해 보았다.

처음에는 57142 bps로 MX-64가 검출된다. 통신 속도가 마음에 들지 않아, 1000000 bps로 맞춰놓고, 적용을 해 보았다. 그리고는 다시 스캔...

근데 스캔이 안된다. 헐... 갑자기 밀려오는 후회와 짜증... 어쩔수 없이 구글링 삽질... 아래의 문서를 발견하였다.


mini DRC 참가할 때도 골탕먹었던 펌웨어 문제다. 답변에 언급된 펌웨어 복구 방법 설명 문서와 영상을 참고해 조심스럽게 MX-64 펌웨어를 업데이트해준다.


그리고 다시 스캔... 잘 된다.

다시 용기를 내어 1000000 bps로 적용 후 다시 스캔... 다음처럼 정상 검색된다. 기쁘다^^


2. 관절 목표 위치 테스트
이제 목표 위치를 변경해 볼까^^.... 모터 LED가 적색 점멸.. 깜빡 깜빡 blink ... Dynamixel Wizard의 ERROR 표시기에 5번 불이 켜져 있음.. 헐.. 동작 에러 아닌가.. 또 다시 구글링 삽질을 해 보니. 다음과 같은 에러 메시지 설명을 발견하였다.


과부하 에러? 그렇다면, 전압이... 다시 12V 전압을 줄 수 있는 배터리를 찾아 테스터기로 확인해 본 후, 전원 연결 케이블을 만들고, MX-64에 전원 인가해 보았다. 그리고 다시 시도... 잘 된다.^^


3. 관절 회전 각도 리미트 설정
관절에 해당하는 액추에이터는 0에서 360도로 회전하면, 프레임이나 모터 기어가 망가질 수 있다. 로보티즈 액추에이터는 이런 경우, 오버로드 에러가 발생하여, 기어 고장을 예방한다.

액추에이터에는 편리하게도 프로그램에서 제약된 각도 이상으로 동작하는 경우를 막는 파라메터터가 있다. 처음 아무 생각없이, 목표 위치를 설정하면, 최대치 속도로 한계 이상의 각도로 회전된 액추에이터때문에 놀랄 수 있다.

다음과 같이 시작 각도(CW 위치 제한)와 끝 각도(CCW 위치 제한)를 설정한다. 이 액추에이터에는 엔코더가 달려 있어, 현재 각도 위치를 '현재 위치'파라메터를 통해 알 수 있다. 이를 이용해 최대-최소 회전 가능한 각도를 알아낸다. 아울러, 너무 빠르게 회전하면, 동작이 불안해 지므로, 이동 속도 파라메터도 낮춘다. 본인의 경우에는 10 RPM 으로 하였다.


이제 테스트를 해보면, 10 RPM으로 회전 각도가 정해진 범위내에서만 변화되는 것을 알 수 있다.


나머지 액추에이터도 같은 방식으로 설정해 본다.

TTL케이블이 짧아 테스트해 보지 못했던 부분이 있다. 마운팅 부품들을 모두 결속하고, 케이블을 길게 연결 처리한 후 전원을 연결해 다시 테스트해 보았다. 다음과 같이 잘 동작한다.



마운팅할 센서는 ASUS RGBD센서이며, 차 후에 다른 센서 및 그립퍼 마운팅을 고려해서, 프레임을 좀 더 길게 처리했다. 이 부분은 차후 상황에 따라 조정하도록 한다.  
  • 작업 시 주의사항 - 속도, 토크 부하, 위치 최대/최소 리미트 설정에 매우 중의해야 한다. 너무 빠르게 회전해 예상치 못한 곳과 부딧힌다던지, 기구적으로 위치할 수 없는 부분까지 회전하면, 기구나 모터가 망가진다. 아울러, 케이블을 연결할 때도 다른 기구부와 간섭이 일어나지 않도록 주의하여 처리해야 한다. 그렇지 않으면, 기구가 동작할 때 간섭된 케이블이 끊어지거나, 모터의 케이블 연결 부분이 망가져 사용하기 어렵게 된다. 


4. 마무리
이동 속도 등은 전원을 다시 인가하고 확인해 보면 0(최대속도)로 초기화되는 문제가 있다. 이 파라메터는 RAM영역에 저장된다. 이런 파라메터들은 미리 테스트하여 코딩으로 설정해야 한다. 분홍색 영역의 파라메터만 EEPROM에 영구 저장된다.

좀 더 자세한 사항은 다음 메뉴얼을 참고한다.

이것으로 액추에이터에 대한 ID, 통신 속도, 회전 각도 리미트 설정 및 테스트를 끝마쳤다. 이 모든 과정은 처음 시도해보는 상황에서 충전된 배터리/전원 케이블 등이 미리 준비되어 있지 않다면 대략 2~3시간 정도 이상 걸린다. 익숙해 지면 30분에서 1시간 내에 가능하다.





댓글 없음:

댓글 쓰기