6
$\begingroup$

I'm building a motion detection and object recognition camera with feedback control for a hexy robot. Fortunately most of the servo control is handled by the analog servo controls and the high-level logic can be implemented in python on a raspberry pi. What's the right combination of python modules to implement:

  1. a daemon/service to trigger and execute image capture and processing
  2. a daemon/service to regularly update the hexy with the latest motion plan and servo setpoints
  3. the image processing for recognition and tracking of objects from the webcam

I'm currently using python-daemon for the services and comparing the various pypi opencv libraries to see if any of them look promising. Anyone have experience with these on a raspberry pi or ARM processor in a robotics application?

  • remotecv - remotecv is an OpenCV server for face recognition
  • ctypes-opencv - ctypes-opencv - A Python wrapper for OpenCV using ctypes
  • pyopencv - PyOpenCV - Boost.Python and NumPy
  • opencv-cython - An alternative OpenCV wrapper
  • CVtypes - Python OpenCV wrapper using ctypes
  • Tippy - another Toolbox for Image Processing, based on OpenCV

These each depend on a deep list of low-level libraries and/or compilers like Boost->numpy->gfortran or cython->gcc or ctypes. I'm concerned about compatibility and performance of these lowlevel libraries on Raspbian and an ARM processor.

Anyone with a known working architecture for image processing and real-time control in python on an ARM processor will get their answer upvoted and/or accepted.

$\endgroup$
2
  • 2
    $\begingroup$ Are you asking whether such libraries exist, or do you have specific problems with openCV (in terms of performance, or otherwise)? $\endgroup$
    – Ian
    Mar 19, 2013 at 20:40
  • $\begingroup$ I'm concerned about the libraries that support the various openCV python modules (cython, jython) and their suitability for an ARM processor. Will list them in Q above. $\endgroup$
    – hobs
    Mar 19, 2013 at 20:50

1 Answer 1

1
$\begingroup$

You could just install OpenCV on a Raspberry Pi board and run your own performance tests. What counts as "real-time control" and image processing will depend on your specific application, so if OpenCV can't handle it then you should post another question with more concrete performance requirements.

A colleague of mine says that:

OpenCV runs fine [on a Raspberry Pi], and is easy to install (sudo apt-get install libopencv-dev). I found the board quite capable and not far behind performance of the Beagle Board. As an example, Apriltags (http://people.csail.mit.edu/kaess/apriltags/) runs at 3.5fps at 320x240 from a USB camera

$\endgroup$
1
  • $\begingroup$ Yes, the compiled OpenCV lib is likely as efficient as I can hope for. But I'm still holding out hope that someone has used one of the python modules I mentioned (on an ARM processor) and can vouch for it, or tell me I'm barking up the wrong tree with this architecture. $\endgroup$
    – hobs
    Mar 21, 2013 at 18:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.