Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Programming (http://www.chiefdelphi.com/forums/forumdisplay.php?f=51)
-   -   Best board for vision processing (beagle/panda/beaglebone/etc?) (http://www.chiefdelphi.com/forums/showthread.php?t=107767)

brian.axelrod 06-11-2012 00:58

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
Quote:

Originally Posted by daniel_dsouza (Post 1192252)
What would you think of this?

http://www.newegg.com/Product/ProductList.aspx?Submit=ENE&N=50002136%2040000003& IsNodeId=1&name=Barebone%20Systems

they seem to be good for the price...The only problem is a power supply. But if you were robot mounting a kinect, you would probably have enough experience to power this as well...

Team 846 ran with http://www.newegg.com/Product/Produc...82E16856119069 this offseason (replacing a beagleboard which we used during the season). It turned out to be a very convenient solution, small, light, inexpensive and powerful. We are booting ubuntu server off an SD card formatted to have both a windows readable FAT32 partition, and a linux partition. We are powering it with http://www.amazon.com/3-5-30V-4-0-30.../ref=pd_ybh_15, which worked. The peak power draw (only during the boot) is roughly 20 watts. Its easy to work being x86 , and we don't have to worry too much about performance. We're running two vision programs all the time (one for aligning the robot shooting yaw and distance, and one for tracking and picking up balls autonomously faster than a driver can :P), and we just leave both running at the same time. We don't even max out the CPU freerunning at over 30 FPS for both programs (admittedly with the same code that was originally optimized for the beagleboard).

In short, why we chose (and love) a solution like this:
  • Ease of use (x86)
  • Performance
  • Ease of powering
  • Low cost
  • Lots of IO (The beagleboard only has a single USB port whose bandwidth is shared with the usb to ethernet chip and the usb hub)
  • Ease of fetching video and logs from the computer using the flash card
  • Modularity, its a lot easier for someone to work on the vision code at home, making it easier to involve more programmers.

davidthefat 07-11-2012 01:33

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
Has anyone looked into using the Odroid X? It's by a South Korean company, so shipping might be expensive. It has a quad core CPU and GPU, and runs Android. It supports up to 4 cameras, for any teams wanting to do stereoscopic vision. It has a built in Hardware Accelerated JPEG Encoder/Decoder, so that is a plus. It does have GPIO, I2C and SPI interface for additional sensor inputs. I know that there was rules regarding the cRio being the sole board to actuate any mechanisms, but this has PWM/ADC output for your personal projects.

Great alternate for any board IMHO.

gnunes 08-11-2012 09:54

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
If your are running your Driver Station on a relatively new laptop, and not the Classmate, you have more than enough processing power available to do your image processing there. The image processing routines included with LabVIEW are impressively efficient and powerful. I actually use them in my professional life, and have found them to be among the fastest such routines available. You can then send whatever computed values you need back to the robot via a UDP connection.

tech2077 20-11-2012 10:13

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
Our team used a beaglebone during competition season and tested out a raspberry pi at two off season events. Both of them work well enough, having a low frame-rate but fast enough to get back accurate data. The main problem with these boards if you don't get a high end board is the lack of fast enough USB drivers to allow for large or fast frame-rates from usb webcams. Even though using the network camera can get around this, pyopencv uses ffmpeg for network streaming of video which has a very slow connection and is a major bottleneck, iirc C and C++ implementation can get around this by using their own image acquisition functions. Take your video source into account when picking the board. Of course your best option is offloading processing to a fast Driver Station.

wireties 03-12-2012 19:36

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
Has anyone used an off-board processor (beagle/bone/pi/arduino and others) with a directly connected camera (not using USB or Ethernet)?

For example, I think the beagle xm has a camera connector and modules one can buy. The pi has a 5MP camera module in design but looks like it will not go into production in time for FRC2013 use. Since it is December we need to buy something with a canned hardware/solution that requires only the poring of OpenCV (or equivalent) etc.

TIA

apples000 03-12-2012 20:06

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
Our team has used a simple but effective vision system on the cRIO, and during the off season I've tried using the driver station for vision processing. As far as I could tell,:the driver station (running the default LabView vision for 2012 modified to work on PC) could grab the image from the robot camera, process the image, find the target, and send back the coordinates to the crio with tcp. I'm not positive it was faster, but it was much smoother than running the LabView default vision code on the robot. Our DS laptop was an older Toshiba with a dual core 1.5 ghz processor and 2 gb ram, and the CPU and ram weren't very high. I haven't tried a beagle board, but I've seen my friend ry to use a kinect with a raspberry pi. The USB is so slow that we can't even get a good frame rate with a color 120x160 image. Also, I'm not sure at how fast the pi can actually filter/process an image. It seems to me that the easiest way to do vision is with the driver laptop. If you don't like LabView or vision assistant, you are free to use whatever you want like opencv. To me it seems like to much of a hassle to set up your own single board computer on the robot just to get vision.

JesseK 03-12-2012 20:18

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
This is a large risk to take so late in the offseason. Given that, mitigate the risks by going with as much of a known system as possible. (i.e. do the PandaBoard if you have enough budget). That way you'll spend less time pulling your hair out on non-vision stuff, and more time actually doing vision algorithm refinement. Plus you have to figure out how the vision calculations will play into the overall robot logic code.

Alan Anderson 03-12-2012 22:03

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
Quote:

Originally Posted by wireties (Post 1198417)
Has anyone used an off-board processor (beagle/bone/pi/arduino and others) with a directly connected camera (not using USB or Ethernet)?

The first few years of FRC robot vision used a CMUCam. It was an integrated camera and dedicated processor, communicating with the Robot Controller using a serial data connection. We had moderate success with the green plastic vision tetras in Triple Play, and great success with it finding the lit vision targets in the Rack & Roll and Aim High games (with great or little success, respectively, in having the robot do something useful once the target was located).

Thad House 24-12-2012 21:29

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
So over the past few days I have been working on converting 341's vision code over to python so I could do some testing on the raspberry pi for our purposes. Using their code just up to the morphology step took 1/3 of a second at 640x480 and 1/10 of a second at 320x240. This was pulling images directly from the sd card without any networking or other processing. I have the old 256 mb version, but I do not think that would be enough difference to make the raspberry pi worthwhile.

dellagd 24-12-2012 22:28

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
Quote:

Originally Posted by Tom Bottiglieri (Post 1192175)
I'd recommend doing some benchmarks on these platforms before making a recommendation. The Pi, while a cool board for the price, is pretty underpowered for this kind of task. I was only able to pull about 10 FPS off a Logitech webcam using the Pi using OpenCV without doing any image analysis. I was using the Python bindings so there is probably some performance to be claimed by nixing the interpreter and compiling some C, but I don't think it will be much.

Remember that since the raspberry pi is still very new, its drivers arnt perfect to say the least. Particularity the USB drivers are pretty bad, which is probably some of the issue you are having with the Pi (And with a kinect into the Pi it just doesnt work period)

Foster 25-12-2012 06:36

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
Memory can make a huge difference.

I have a 256Pi that I host my Java based wiki on. Pretty slow.
Move to 512Pi, and the speed improves by 20%, a little overclock to 900mhz and speed is 30% over original Pi

New cubieboard arrived, 1Gb mem, rate is now 50% faster than 256 PI. Board cost is up to $49. So memory will make a difference.

Remember too that the USB pins also drive the ethernet, so you may have a bottleneck there.

dellagd 27-12-2012 03:23

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
Quote:

Originally Posted by SuperS_5 (Post 1192997)
I have been keeping an eye on that kind of solution over the past few years, but still remain relativity expressive. If a windows machine is a requirement, upgrading the driver-station (or a second one) might be a better investment. Although it'll make using the Kinect easier to use the windows machine, I did find this with quick goofu, http://www.pansenti.com/wordpress/?page_id=1772
I've placed my order for a rPi, but is back-ordered. Some of the other arm based boards are also contenders, especially for robotics, despite the increased priced over the rPi.

Sent from my AT100 Using ForumTouch for Android

As of now, the Kinect isnt compatible with the Raspberry pi (unless youre interested in only moving the motor in the kinect around). The general consensus of the community (And my own trial) is that its USB drivers are too slow to allow for the image stream, but with better driver for the Pi always in the making, im sure at some point it will work.

Just a heads up, if you are attempting it, it will be quite difficult as no one has done it successfully yet.

Tom Bottiglieri 27-12-2012 08:22

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
Quote:

Originally Posted by dellagd (Post 1204831)
Particularity the USB drivers are pretty bad, which is probably some of the issue you are having with the Pi

What makes you say that? If I recall correctly, the SoC on the Pi uses a Synopsys USB core and is supported by the dwc_otg driver, which is pretty robust. (Although I have seen different vendors fork this driver and make a mess of it).

Michael Hill 27-12-2012 10:54

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
Quote:

Originally Posted by daniel_dsouza (Post 1192252)
What would you think of this?

http://www.newegg.com/Product/ProductList.aspx?Submit=ENE&N=50002136%2040000003& IsNodeId=1&name=Barebone%20Systems

they seem to be good for the price...The only problem is a power supply. But if you were robot mounting a kinect, you would probably have enough experience to power this as well...

Looks like this might be an interesting solution: http://www.mini-box.com/picoPSU-160-XT

Accepts a 12-volt DC input and drives the motherboard directly. Surely, you'd probably want some power conditioning to ensure a constant 12-volt input, but it's a step in the right direction. Just rip out the AC-DC power supply (and save weight while doing it!) and replace it with this.

dellagd 27-12-2012 13:51

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
Quote:

Originally Posted by Tom Bottiglieri (Post 1205152)
What makes you say that? If I recall correctly, the SoC on the Pi uses a Synopsys USB core and is supported by the dwc_otg driver, which is pretty robust. (Although I have seen different vendors fork this driver and make a mess of it).

Im just operating off of a what I've heard on the raspberry pi forums and within our own controls team.


All times are GMT -5. The time now is 16:19.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi