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:faq [2013/04/03 22:20] xevel [Q: How to power the servos?] |
product:usb2ax:faq [2015/06/04 11:31] xevel |
||
---|---|---|---|
Line 25: | Line 25: | ||
==== Q: Dynamixel SDK: how do I use it with the USB2AX? ==== | ==== Q: Dynamixel SDK: how do I use it with the USB2AX? ==== | ||
- | R: The [[http://support.robotis.com/en/software/dynamixelsdk.htm|Dynamixel SDK]] provided by Robotis is a software library that makes it easy to control Dynamixel servos from a C++ application. While the Windows version should work out of the box, the Linux version does not: you have to replace the dxl_hal.c file with [[https://paranoidstudio.assembla.com/code/paranoidstudio/git/node/blob/master/usb2ax/soft/dxl_hal.c|this one]] before you compile the library. | + | R: The [[http://support.robotis.com/en/software/dynamixelsdk.htm|Dynamixel SDK]] provided by Robotis is a software library that makes it easy to control Dynamixel servos from a C++ application. A modified version adding support for sync_read and sync_write is available in the [[https://github.com/Xevel/usb2ax/tree/master/pc_software/usb2ax_DynamixelSDK/|GitHub Repository]]. |
+ | While the Windows version should work out of the box, the Linux version does not. | ||
- | If you need to switch back to the USB2Dynamixel, you will have to change back the file to the original one, and recompile the library, then your application. | + | Gotchas with the Dynamixel SDK for Linux: |
+ | * You have to replace the //dxl_hal.c// file with [[https://raw.github.com/Xevel/usb2ax/master/pc_software/usb2ax_DynamixelSDK/linux_compatibility/dxl_hal.c|this one]] before you compile the library. | ||
+ | * Your user account needs to be added to the **dialout** group for the serial port to be accessible. | ||
+ | * If you have frequent timeout errors, you might try to change l.154 of //dxl_hal.c// from ''gfRcvWaitTime = (float)(gfByteTransTime*(float)NumRcvByte + 5.0f);'' to ''gfRcvWaitTime = (float)(gfByteTransTime*(float)NumRcvByte + 34.0f);'' | ||
+ | * If you need to switch back to the USB2Dynamixel, you will have to **change back the file to the original one**, and recompile the library, then your application. | ||
**What's going on?** The Dynamixel SDK assumes the interface is FTDI-based, and thus searches a device named ttyUSBx, while the USB2AX uses the integrated CDC/ACM driver - which names the device ttyACMx. The second problem is that after opening the device, the Dynamixel SDK tries to set parameters which do not exist in the CDC/ACM driver. | **What's going on?** The Dynamixel SDK assumes the interface is FTDI-based, and thus searches a device named ttyUSBx, while the USB2AX uses the integrated CDC/ACM driver - which names the device ttyACMx. The second problem is that after opening the device, the Dynamixel SDK tries to set parameters which do not exist in the CDC/ACM driver. | ||
Line 42: | Line 47: | ||
**WARNING: check the [[http://support.robotis.com/en/product/dynamixel/dxl_ax_main.htm|pin assignment in the Dynamixel connector]] before anything else! Be extremely careful not to mess up the cables, otherwise you could damage your whole installation!!! We won't accept any liability.** | **WARNING: check the [[http://support.robotis.com/en/product/dynamixel/dxl_ax_main.htm|pin assignment in the Dynamixel connector]] before anything else! Be extremely careful not to mess up the cables, otherwise you could damage your whole installation!!! We won't accept any liability.** | ||
- | Simple Power cable (must be used at the end of the bus):\\ | + | //Simple Power cable// (must be used at the end of the bus):\\ |
- | Cut a Dynamixel cable and solder a battery connector or battery cable to the GND(-) and VDD(+) lines. Protect the solder joints with heat-shrink tubing or electrical tape. You can the DATA line altogether. | + | Cut a Dynamixel cable and solder a battery connector or battery cable to the GND(-) and VDD(+) lines. Protect the solder joints with heat-shrink tubing or electrical tape. You can forget or remove the DATA line altogether. |
- | Y power cable (can be used in place of any other cable):\\ | + | //Y power cable// (can be used in place of any other cable):\\ |
Cut the GND and VDD lines of a Dynamixel cable around the middle, be careful not to damage the DATA line. Solder both halves of each cable to your battery connector or cable, GND on - (black), and VDD, the middle one, on + (red). Protect the solder joints with heat-shrink tubing or electrical tape. | Cut the GND and VDD lines of a Dynamixel cable around the middle, be careful not to damage the DATA line. Solder both halves of each cable to your battery connector or cable, GND on - (black), and VDD, the middle one, on + (red). Protect the solder joints with heat-shrink tubing or electrical tape. | ||
Line 56: | Line 61: | ||
==== Q: My USB2AX stopped working! What do I do? ==== | ==== Q: My USB2AX stopped working! What do I do? ==== | ||
R: As you can see, the USB2AX is pretty small and uses components hard to service without specialized tools... You can try contact //support {at} xevelabs.com//, we're interested to know how it happened, and we'll see what we can do. :-/ | R: As you can see, the USB2AX is pretty small and uses components hard to service without specialized tools... You can try contact //support {at} xevelabs.com//, we're interested to know how it happened, and we'll see what we can do. :-/ | ||
- | |||
- |