This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
product:usb2ax:advanced_instructions [2013/04/02 05:48] xevel [SYNC_READ] |
product:usb2ax:advanced_instructions [2014/02/25 00:47] xevel |
||
---|---|---|---|
Line 1: | Line 1: | ||
===== USB2AX: Advanced instructions ===== | ===== USB2AX: Advanced instructions ===== | ||
- | The USB2AX can react to some specific commands as if it were a Dynamixel device. | + | The USB2AX can react to some specific commands as if it were a Dynamixel device, and much more. |
---- | ---- | ||
Line 54: | Line 54: | ||
SYNC_READ is used for reading data from multiple Dynamixel actuators with one command. | SYNC_READ is used for reading data from multiple Dynamixel actuators with one command. | ||
This allows for a significant performance boost when reading the same values in a lot of devices. | This allows for a significant performance boost when reading the same values in a lot of devices. | ||
+ | |||
+ | An implementation in the DynamxelSDK library is availalbe in the [[https://github.com/Xevel/usb2ax/tree/master/pc_software/usb2ax_DynamixelSDK|GitHub repository]] | ||
**Warning: Various implementations of custom Dynamixel multiple-read commands named SYNC_READ can be found over the Internet, this one is based on the one found in the arbotix_python ROS package by Michael Ferguson. | **Warning: Various implementations of custom Dynamixel multiple-read commands named SYNC_READ can be found over the Internet, this one is based on the one found in the arbotix_python ROS package by Michael Ferguson. | ||
Line 80: | Line 82: | ||
Param N+2 : The ID of the Nth Dynamixel actuator | Param N+2 : The ID of the Nth Dynamixel actuator | ||
Checksum : The usual checksum of Dynamixel packets | Checksum : The usual checksum of Dynamixel packets | ||
+ | |||
+ | |||
+ | **WARNING** Some choices of implementation of the Dynamixel SDK make it impossible to simply send this packet and expect a valid response. A modified version of the SDK will be availalbe to fix this problem. | ||
+ | |||
Line 106: | Line 112: | ||
0XFF 0XFF 0XFD 0X12 0X00 **0X50 0X01 0XFF 0X01** //0X20 0X00 0X00 0X02// __0X10 0X00 0X10 0X02__ ''0X00 0X00 0XFE 0X01'' 0X5C | 0XFF 0XFF 0XFD 0X12 0X00 **0X50 0X01 0XFF 0X01** //0X20 0X00 0X00 0X02// __0X10 0X00 0X10 0X02__ ''0X00 0X00 0XFE 0X01'' 0X5C | ||
+ | ** Performances ** | ||
+ | |||
+ | On tests performed with the reference implementation (see above), reading the present positions (2 bytes) of 8 servos took around 2.7ms, on a Win7 64 bits desktop plateform. Each additional servos will add betwee 0.21 and 0.34ms. | ||
---- | ---- | ||
//Based on documentation by Richard "iBot" Ibbotson// | //Based on documentation by Richard "iBot" Ibbotson// |