무료 블록 소진에 따라 글로만 정리함

Dynamixel을 제어하기 위해 DynamixelSDK를 설치하였고, 이를 사용해 동시에 여러 Dynamixel을 제어하는 방법을 찾아야 했음.

DynamixelSDK의 ros/dynamixel_sdk_example/src/read_write_node.py 파일을 활용할 수 있었음.

read_write_node.py 파일은 Dynamixel EEPROM 영역에 데이터를 1Byte씩 전송할 수 있는 Port Handler와 Packet Handler를 정의하고 있었으며, 이를 종합적으로 사용할 수 있는 write1ByteRxTx() 함수가 있었음.

write1ByteRxTx() 함수는 EEPROM 영역과 해당 영역에 보낼 값이 있다면 실행 가능하고, 이를 위해서 EEPROM 영역의 ID와 입력 가능한 값을 아는 것이 필요했음.

따라서 Dynamixel 제조사인 ROBOTIS의 e-manual에 들어가 Dynamixel의 EEPROM 영역에 대한 컨트롤 테이블을 읽어보고 각 영역에 특정 값을 입력하여 Dynamixel에 어떠한 변화가 생기는지 알아봄.

Dynamixel EEPROM 비교 테스트에는 Dynamixel 제어 패널인 Dynamixel Wizard 2.0을 사용하였으며, 해당 프로그램은 EEPROM 영역의 값을 실시간으로 읽어오거나 쓸 수 있게 준비되어 있었음.

해당 기능을 사용해 필요한 EEPROM 영역의 값들을 미리 정하고, write1ByteRxTx() 함수를 통해 해당 영역에 필자가 의도한 값을 모두 전송하여 Dynamixel을 Time-Based Profile로 성공적으로 전환할 수 있었음.

Time-Based Profile은 작동 시간이 주어지면 자동으로 회전 속도를 제어하는 구동 방식으로, 가령 (2 sec, 135 degree)를 인자로 Dynamixel을 작동시키면 현재 위치에서 135 degree 지점까지 2초동안 이동하게 할 수 있음.