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)

computerish 12-08-2012 16:22

Best board for vision processing (beagle/panda/beaglebone/etc?)
 
Our team is looking at doing some off-cRIO vision processing next year since the FIRST-provided vision API is so limited. We're looking at purchasing one of the ARM-based boards to do vision processing with OpenCV and send whatever data we need over to the cRIO.

I know at least a few teams have done this last year. What have you used or seen others using as far as hardware? Beagle boards? Pandaboards? Something else?

Thanks!

Gigakaiser 12-08-2012 20:43

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
987 used a Pandaboard. (documentation here) You may want to look at the Raspberry Pi - it was recently released and only costs $25.

The Pandaboard definitely has more documentation and a larger user base, so it may be easier to get started with it.

~Cory~ 12-08-2012 21:15

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
I just received my $35 model B Raspberry Pi and am doing some initial testing with it. Off-season robots could use the 3x more powerful gooseberry pi (only wifi is supported so competition is out of the question). I've been contemplating creating a simple board with a single Ethernet port and a dspic33, pic32 or DaVinci processor...

In the performance category, a beefy driver station laptop is going to be very difficult to beat.

EHaskins 13-08-2012 01:08

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
I've used the BeagleBoard-xM for vision processing on non-FRC robots. We were doing optical flow tracking and multiple shape detection at 10-20fps depending on other workloads.

My configuration was C# logic running on Mono using OpenCV through the EmguCV wrapper for .net.

jlmcmchl 18-08-2012 16:50

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

Originally Posted by Gigakaiser (Post 1181425)
You may want to look at the Raspberry Pi - it was recently released and only costs $25.

I would also have suggested the Raspberry Pi, the big issue is the time between ordering and receiving the board. I ordered one at the very end of June, and it's not coming in until October. Those things are seriously popular somewhere.

techhelpbb 29-08-2012 13:03

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

Originally Posted by jlmcmchl (Post 1182123)
I would also have suggested the Raspberry Pi, the big issue is the time between ordering and receiving the board. I ordered one at the very end of June, and it's not coming in until October. Those things are seriously popular somewhere.

I have had one on order exactly as long as you have. They only produce them in large quantity so that they drive down the costs with quantity.

People see the low costs and think it's fantastic because of the performance for that cost. Well, the trade off is that it's very...very...difficult to get them and usually you can get them one at a time.

protoserge 29-08-2012 14:03

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
From my limited discussion with some fellow mentors, The RoboBees (FRC 836) are experimenting with a PandaBoard for stereo vision.

FWIW, I think they are $169, which is still cheap.

I don't know much more than that since I'm just a mechanical mentor :P

mdrouillard 28-10-2012 08:38

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
We have a beagleboard XM rev C, with Ubuntu running on it. However we are having a real tough time getting OpenCV compiled and built for it. Currently stuck in the steps regarding ffmpeg as this portion refuses to compile. Does anyone have experience in getting this working that could assist me?

I have googled to the end (it seems) of the interwebs. I am currently following 2 recipes from http://www.ozbotz.org/opencv-installation/ and http://opencv.willowgarage.com/wiki/Ubuntu_Packages with limited success.

The ./configure line I used before the make is...

ubuntu@omap:~/OPCVtry2/ffmpeg-0.11.1$ ./configure --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-nonfree --enable-postproc --enable-version3 --enable-x11grab --enable-pthreads --enable-pic

which gets me to
ffmpeg-0.11.1/libavcodec/libx264.c:478: undefined reference to `x264_encoder_open_124'
collect2: ld returned 1 exit status
make: *** [ffmpeg_g] Error 1

Any ideas folks?

Many thanks.

Foster 30-10-2012 12:35

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
Recent production increase of the Raspberry PI and a memory increase to 512 makes this a better choice as a co-processor. Delivery times are now ~14 days, so ordering now is a must.

Still love the Beagle Bone for the IO farm it has, but for a small vision processor the PI has moved to the front.

I still think that computer vision isn't possible this year. Too much color differences between shops (crappy incandescent), practice field (florescent) and game fields (mercury and sodium). St Louis has the new SuperLux lamps to make color and brightness on TV work well. But I think the improvements in processors will let the vision sent back to the player station be a huge bonus.

billbo911 30-10-2012 13:12

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
Foster, I have to agree with you on one point here, and respectfully disagree on another.

Quote:

Originally Posted by Foster (Post 1192150)
Recent production increase of the Raspberry PI and a memory increase to 512 makes this a better choice as a co-processor. Delivery times are now ~14 days, so ordering now is a must.

Still love the Beagle Bone for the IO farm it has, but for a small vision processor the PI has moved to the front.

I think the PI has good potential to be an outboard video processor and am hoping to give it a try.

Quote:

Originally Posted by Foster (Post 1192150)
I still think that computer vision isn't possible this year. Too much color differences between shops (crappy incandescent), practice field (florescent) and game fields (mercury and sodium). St Louis has the new SuperLux lamps to make color and brightness on TV work well. But I think the improvements in processors will let the vision sent back to the player station be a huge bonus.

Lighting variations between your shop and the playing field should have little or no affect on your performance.
If careful White Balance and Brightness calibrations are performed in your shop, and then again on the competition field, you should have very similar, if not identical outcomes.
By no means should you allow either of these values to run in Auto mode, especially the White Balance.

We have successfully used cRio vision processing for the last few years with solid results because we made sure we performed these calibrations in both locations.

roystur44 30-10-2012 13:20

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
2012 we used a FitPC2 coupled to a custom circuit board( gyro, power regulator, multiple high speed encoder inputs)

http://www.fit-pc.com/web/fit-pc/

Tom Bottiglieri 30-10-2012 15:19

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
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.

daniel_dsouza 30-10-2012 22:42

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
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...

mdrouillard 02-11-2012 06:49

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
Hello all, some more information from my earlier post.

I was running Ubuntu 11.04 on the beagleboard which ofcourse is an ARM processor. As it turns out, ubuntu removed support in the kernel for some of the features that I was trying to link against, and there really is no way of gettng this package to compile under 11.04 on arm. So, I did discover that OpenCV can be built into the kernel under Angstrom using the narcissus image building tool so that is what I am off to attempt now.

As a positive side effect of this, the beagle board now is clocking at 1Ghtz, rather than the 650 that ubuntu was running at, since the angstrom image is better optimized for this hardware.

SuperS_5 05-11-2012 23:12

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

Originally Posted by daniel_dsouza (Post 1192252)
What would you think of this?
<br />
<br />
<a href="http://www.newegg.com/Product/ProductList.aspx?Submit=ENE&amp;N=50002136%2040000 003&amp;IsNodeId=1&amp;name=Barebone%20Systems" target="_blank">http://www.newegg.com/Product/Produc...0000 003&amp; IsNodeId=1&amp;name=Barebone%20Systems</a>
<br />
<br /> 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...

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

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.

Levansic 28-12-2012 03:54

Re: Best board for vision processing (beagle/panda/beaglebone/etc?)
 
Like many here, I've been wondering if any of the solutions here are worth pursuing. The attraction of doing vision processing on the robot is clearly understandable, but the cost, complexity, and unclear benefit really put a damper on my enthusiasm.

What is the difference in latency between doing image processing on the driver station, versus a hard wired image processor? If your onboard image processor only has one NIC and a wimpy processor, then it may have no advantage over a powerful driver station laptop.

Do you plan on hope? Many of the mini-ITX boards and the various ARM boards have really bad drivers, and spotty support. As mentioned earlier, the LabView vision processing routines are very fast and efficient. Most open-source vision stuff is not in the same league.

Just to put a finer point on this, I offer a comparison of apples to brussel sprouts. For the last few years, you can go to a Best Buy, and pick up. $99 Apple TV. The current one uses the ARM-based A5 processor that was in the iPad 2 and a few other models. This processor, while fast for an ARM chip, is not very powerful when compared to most intel chips produced over the last five years. In the Apple TV, this chip pushes out flawless 1080p video to any connected TV, as it reads a stream of data over a wireless network.

Now on to the brussel sprouts. Most of the mini-ITX systems are sold to do exactly the same thing, but they run Linux or Windows. Even running free Linux, they cost more than twice as much (not counting labor here). With much more substantial processors, RAM, and hard drives, these boxes struggle and often fail to deliver smooth 1080p video. Why?

I know I am comparing a specialized device to a general device that the users attempted to specialize. The point I'm trying to make, is that a lot of energy went in to making the $99 video device "just work", while the cobbled solution is relying on lots of disparate hardware and software to not screw things up too terribly. Any one non-optimal part, soft or hard, can compromise the function of the system beyond the ability of the rest of the parts to compensate. Do you have the time to find the limiting bottlenecks in code that you didn't write, or time to write drivers for hardware with no available documentation?

For my team, it comes down to the fact that another computer on the robot takes money and weight away from the component cost and weight budgets that all FRC teams have to deal with. Vision processing on the driver's station is free of weight or cost issues. Certainly there is a small latency issue, but it is still faster and more convenient for debugging than a robot-mounted solution. Perhaps if we mounted the Kinect on the robot (cost and weight) to get some amazing edge, then we would probably change course. Right now, my team just doesn't have the programming bandwidth to consider this. That could all change on Jan. 5th. :rolleyes:

I'm hoping for magical advances for onboard vision. Perhaps a few here will make them and I will tip my hat in appreciation and acknowledgement. Certainly the state of the art will not advance without teams pushing the boundaries. At the same time, we should all remember that good engineering requires objective analysis of value for all associated costs.

PaulDavis1968 01-02-2013 00:49

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

Originally Posted by davidthefat (Post 1193142)
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.

Checking vision code Friday. It is 30 dollar shipping.


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