Let's Make Robots! | RobotShop

Trying to get Torobot USB servo controller to work with BeagleBoard


I have a Torobot (24 I think) USB servo controller which takes text commands and converts them to servo controlls.

I am using a Beagleboard XM (not the Bone) with an Angstrom distribution on it.  I am having a hard time accessing the board programmatically and have tried several approaches.  The board itself is fine, I'm just trying to send it commands.  The Python API seemed to be the most straight forward, but, of course, there are a lot of depencies I'm fighting with.

I am trying to get the usb.find command to work properly in a python script I'm writing on Angstrom for the Beagleboard.

Here is my code:

    #!/usr/bin/env python
    import usb.core
    import usb.util
    import usb.backend.libusb01 as libusb

    PYUSB_DEBUG_LEVEL = 'debug'
    # find our device
    # Bus 002 Device 006: ID 1208:0815
    #  idVendor           0x1208
    #  idProduct          0x0815
    # dev = usb.core.find(idVendor=0xfffe, idProduct=0x0001)
    # iManufacturer           1 TOROBOT.com
    dev = usb.core.find(idVendor=0x1208, idProduct=0x0815,
    backend=libusb.get_backend() )

I don't know what's missing, but here is what I do know.
When I don't specify the backend, no backend is found.  When I do specify the backend "usb.backend.libusb01" I get the following error:

    root@beagleboard:~/servo# ./pyServo.py
    Traceback (most recent call last):
      File "./pyServo.py", line 17, in <module>
        dev = usb.core.find(idVendor=0x1208, idProduct=0x0815, backend=libusb.get_backend() )
      File "/usr/lib/python2.6/site-packages/usb/core.py", line 854, in find
        return _interop._next(device_iter(k, v))
      File "/usr/lib/python2.6/site-packages/usb/_interop.py", line 60, in _next
        return next(iter)
      File "/usr/lib/python2.6/site-packages/usb/core.py", line 821, in device_iter
        for dev in backend.enumerate_devices():
      File "/usr/lib/python2.6/site-packages/usb/backend/libusb01.py", line 390, in enumerate_devices
      File "/usr/lib/python2.6/ctypes/__init__.py", line 366, in __getattr__
        func = self.__getitem__(name)
      File "/usr/lib/python2.6/ctypes/__init__.py", line 371, in __getitem__
        func = self._FuncPtr((name_or_ordinal, self))
    AttributeError: python: undefined symbol: usb_find_busses

What am I missing so that this will work properly?

Thank you.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

The actual device is immaterial.  It's the Angstrom/Python/USB setup that is in question.  But to satisify the curious, here is the PDF for the board.




Thanks for your help.


I found that the Torobot USB board could be communicated with an Arduino serial driver. Conveniently this is available through opkg:

opkg install kernel-module-cdc-acm

When the board is plugged in, it comes up as


From here you can simply echo commands to the device.

echo "#8P1500T100" > /dev/ttyACM0

This basically says "set servo 8 to position 1500 with speed 100"