ROS의 학습 43탄: Dynamixel

#프로그래밍 ROS<Dynamixel>


개시하다


ROS(Robot Operating System)를 더 파악하려는 목적이다.

컨디션


컴퓨터.
디바이스
raspberry pi 4B+
RAM 설치
4.00GB(7.89GB 사용)
OS
ubuntu-mate-20.04.1-desktop-amd64
ROS
Distribution
noetic
Dynamixel
제조사
ROBOTIS
시리즈
XM430-W350-R
사양 상세 설명
https://emanual.robotis.com/docs/en/dxl/x/xm430-w350/
로보트
제조사
ROBOTIS
시리즈
OpenMANUPILATOR-X
사양 상세 설명
https://emanual.robotis.com/docs/en/platform/openmanipulator_x/overview/

DynamixelSDK


Dynamixel 포장 처리

환경 구조


①단계: 작업공간으로 이동하는 src

~/catkin/src 

② 단계:git로 클론 만들기

git clone https://github.com/ROBOTIS-GIT/DynamixelSDK.git

③단계: 작업공간으로 이동

cd ..

④단계: DynamixelSDK를 ROS에 적용

catkin_make
여기까지의 작업이 끝나면dynamixelsdk와dynamixelsdk_examples와 관련된 프로그램 라이브러리를 사용할 수 있습니다. 또한 cpp와python 두 언어의 프로그램도 준비되어 있습니다. 그것들을 참고하여 사용 방법을 배울 수 있습니다.

dynamixel_sdk_examples 정보


dynamixel_sdk_examples에 세 가지 정보가 있어요.
  • SetPosition
  • uint8 id 
    int32 position 
    
  • SyncSetPosition
  • uint8 id1 
    uint8 id2 
    int32 position1 
    int32 position2 
    
  • BulkSetItem
  • uint8  id1 
    uint8  id2 
    string item1 
    string item2 
    int32  value1 
    int32  value2 
    

    dynamixel_sdk_examples 서비스


    dynamixel_sdk_examples는 세 가지 서비스가 있어요.
  • GetPosition
  • uint8 id 
    --- 
    int32 position  
    
  • SyncGetPosition
  • uint8 id1 
    uint8 id2 
    --- 
    int32 position1 
    int32 position2 
    
  • BulkGetItem
  • uint8  id1 
    uint8  id2 
    string item1 
    string item2 
    --- 
    int32  value1 
    int32  value2  
    

    견본

    dynamixel_sdk_examples의 샘플 프로그램을 실행해 보았습니다.
    rosrun dynamixel_sdk_examples read_write_node
    
  • 주의1
    이 프로그램은 c++로 작성되었습니다. 왜냐하면 그 프로그램 코드는 read_write_node~/catkin_ws/src/DynamixelSDK/ros/dynamixel_sdk_examples/src에 쓰여 있기 때문입니다. 필요하면 거기를 변경할 수 있습니다. read_write_node.cpp에서 catki_ws이번에 이 프로그램의 기본 ID는 1과 2이고 다이나믹스의 ID는 11~15이기 때문에 이 두 ID를 11, 12로 설정합니다.
  • 주의2
    실행할 때 포트를 식별해야 하기 때문에sudo666/dev/tty USB를 통해 접근 권한을 부여해야 합니다.
  • 실행 결과


    다음은 실행 결과와 다른 단말기 조작catkin_make의 상황을 나타낸다.


    /set_position에서 readwrite_노드 구독 id와position을 제공하여 다이나믹스를 시작할 수 있습니다.

    다이나믹스 가동


    아까 결과로 id와position을 먼저 발표하면 모터를 구동할 수 있습니다.

    출시 후 /set_position 다음 정보가 재생됩니다.

    이때 실제 로봇의 상황은 다음과 같다.


    가 성공적으로 작동했습니다. 다이나믹스가 모터를 가동할 때의 수치에 대해 다이나믹스의ControlTable를 확인해야 합니다.

    감상


    드디어 Dynamixel을 ROS로 구동할 수 있게 되었다. 환경에 대한 구축이 잘 되지 않아 계속 막혀 있었다. 하지만 그 어려움을 넘어서면 이해가 깊어진다. 어쨌든 지령선에서 시작했지만 모터 하나를 구동할 수 있었다. 여기까지 이해했다.이후 지난번 거북이를 움직인 것과 같다. 다시 말하면dynamixel이joy정보를 구독할 수 있는 프로그램을 만들면 컨트롤러의 제어도 가능해질 것으로 예상된다. 다음을 기대한다.

    참고 문헌


    ROBOTIS e-Manual DYNAMIXEL SDK

    ( https://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_sdk/overview/ ) 2021/6/3


    좋은 웹페이지 즐겨찾기