openRB-150을 활용한 Dynamixel 모터 제어

진흙·2025년 2월 25일
0
post-thumbnail

소개

아무래도 연구실 분야가 HCI이다보니 모터를 만질 일이 많다.
사실 그냥 코드만 꼽으면 알아서 잘 돌아가는건 줄 알았는데 안그렇더라.
그래서 소개할 모터가 Robotis의 dynamixel이다.
이는 고정밀도의 로봇 모터로, 로봇이나 자동화 시스템에서 자주 사용된다고 한다.
이 모터는 다양한 제어 기능을 제공하는데, 특히 속도, 위치, 토크 등의 제어가 가능하다. 그래서 코드만 꼽아서는 안되는거임

Arduino Uno + Dynamixel Shield로의 첫 시도

처음에는 Arduino Uno 보드와 Dynamixel Shield를 이용해 모터를 제어하려 했다.
그동안 아두이노 보드도 좀 만져봤겠다 그냥 shield 만 위에 끼우면 된다길래 시도해봤다.
Arduino IDE 에서 또 DynamixelShield 보드 라이브러리를 가져와서 example code 돌려본 결과 잘 움직였다.
근데 여기서 내가 원했던 거는 실시간으로 모터를 제어하는 것인데...
Arduino Uno 보드는 기본적으로 하나의 시리얼 포트만 제공하므로 보드-모터 통신만 되고 사용자-보드 통신이 불가능 했다.

문제 상황

Arduino UnoDynamixel Shield를 이용해 dynamixel 모터를 제어하려 했다.
Arduino Uno는 serial port 가 한개이고, 이로 인해 실시간으로 모터의 상태를 모니터링하거나, 제어하는건 어려웠다.
아두이노에는 사실 SoftwareSerial 이라는 시리얼 포트가 부족할때 사용할 수 있는 라이브러리가 있다. 근데 써봤는데 통신 방식이 지원이 안되는건지 여전히 작동되지 않았다.

해결 방법 : openRB-150

openRB의 소개

그래서 찾은 해결책은 바로 openRB-150 보드였다. openRB-150은 Arduino 호환 보드로, 여러 I/O 포트를 제공하며, 다양한 센서 및 액추에이터와 쉽게 연결할 수 있도록 설계되어 있다. 무엇보다도 이 보드의 가장 큰 장점은 다수의 시리얼 포트를 지원한다는 점이다. 그래서 Dynamixel 모터와의 통신뿐만 아니라, 동시에 다른 장치와의 통신도 가능하다.

openRB로 Dynamixel XL-M077t 모터 제어하기

openRB-150을 사용하면 아두이노 Uno에서 겪었던 시리얼 포트 문제를 해결할 수 있다. 보드에는 여러 개의 시리얼 포트가 있기 때문에, 하나는 모터 제어용, 다른 하나는 사용자와의 통신을 위한 포트로 자유롭게 사용할 수 있다.
마찬가지로 이번에 Dynamixel2Arduino 라이브러리를 불러와서 example code 를 시행해 보면 모터가 움직이는 동시에 serial monitor 또한 사용 가능한 것을 확인할 수 있다.
여기서 한가지 추가하자면 위 모델의 모터는 5V에서 작동하기 때문에 추가적인 외부 전원이 필요 없지만 다른 고전압이나 여러모터를 구동하고 싶으면 따로 전원을 인가해 줘야 한다. 이 부분은 openRB-150 페이지를 확인해 보면 된다.

결론

오늘도 랩실에서 알게 된 잡기술 하나를 소개해줬다.
자세한 내용은
https://emanual.robotis.com/docs/kr/parts/controller/openrb-150/
여기에서 확인해주세요.

profile
반가워요

0개의 댓글