본문 바로가기

Robot/Robot Module

Turtlebot3의 OpenCR 보드를 통해 아두이노에서 XL430 모터 다루기

Turtlebot3를 손에 쥔지 꽤 되었는데[바로가기] 겨우, ROS에서 rosserial을 사용해서 OpenCR 보드의 IMU 센서를 한 번 사용했구요[바로가기], LDS 모듈도 한 번 테스트[바로가기]를 했네요^^ 그리고 나서 다시 subscribe과 publish를 공부하는 마음으로 간단한 예제를 한번 했네요[바로가기] 그리고 나서... 잠시 또 다른 세계에 빠져 있다가... 드디어.. 다시.. Turtlebot3로 돌아왔는데요. 오늘은 ROS가 아니라 아두이노에서 모터를 직접 만지는 걸 튜토리얼로 볼려고 합니다.^^

이렇게 보니 Turtlebot도 뭔가 느낌있죠^^... 여러 연결을 좀 편하게 할려고 그 위의 보드를 잠시 빼놓았습니다.

아두이노를 열고, [바로가기]에 있는데로 URL을 보드 매니저에 추가합니다. 위 연결 URL이 변경될 수도 있으므로 로보티즈의 매뉴얼 페이지를 링크거는거죠^^

그리고~ 보드 매니저에서 OpenCR 보드를 Install 해 줍니다.

그리고, 보드를 OpenCR로 선택하구요^^

먼저. 예제 중에서 t_Find_Dynamixel을 선택해서

업로드합니다^^

그리고 시리얼 모니터를 키면~ 저렇게 나타납니다. OK~ OpenCR보드와 다이나믹셀의 연결 속도는 1Mbps이고, id는 각각 1, 2로 지정되어 있네요^^

이제 테스트 프로그램을 살짝 만듭니다. 뭐 너무 간단한 내용인데요.

/*
 * Simaple Dynamixel Test
 * by PinkWink
 * http://pinkwink.kr/
 */

#include <DynamixelWorkbench.h>

#define BAUDRATE            57600
#define BAUDRATE_TO_DXL     1000000
#define LEFT_ID             1
#define RIGHT_ID            2
 
DynamixelWorkbench dxl_wb;

void setup() {
    // put your setup code here, to run once:
    Serial.begin(BAUDRATE);
    while(!Serial); // Open a Serial Monitor

    dxl_wb.begin("", BAUDRATE_TO_DXL);
    dxl_wb.ping(LEFT_ID);
    dxl_wb.ping(RIGHT_ID);

    dxl_wb.jointMode(LEFT_ID);
    dxl_wb.jointMode(RIGHT_ID);
}

void loop() {
    // put your main code here, to run repeatedly:
    dxl_wb.goalPosition(LEFT_ID, 0);
    dxl_wb.goalPosition(RIGHT_ID, 0);
    delay(2000);
    dxl_wb.goalPosition(LEFT_ID, 2000);
    dxl_wb.goalPosition(RIGHT_ID, 2000);
    delay(2000);
}

입니다. BAUDRATE은 PC와 OpenCR의 연결 속도, BAUDRATE_TO_DXL은 OpenCR과 다이나믹셀 모터의 연결 속도입니다. 아까 찾은데로 1Mbps로~~~ 그리고 LEFT모터와 RIGHT 모터의 ID도 각각 1,2로 넣습니다. 그리고 나면 뭐 사실.. 나머진 예제대로 따라하는 거죠. ping을 날려서 setup 단계에서 모터 연결을 확인하고, wheelMode로 해야하는데 (지금 발견했네요^^) 그냥 jointMode로 지정해 두었고, loop()에서는 앞으로 뒤로를 2초 간격으로^^

그냥.. 가면 서운하니 별거 아니지만... 슬쩍.. 동영상도 남깁니다.^^

반응형