Image Processing

Would it be a good idea to use an arduino to do image processing on the robot to decrease the load on the crio and would it be legal

How would this be done i don’t know of any shields that can access ip Camara images or even process them

The CMU Cam4 is an arduino shield from SparkFun that has its own image processing chip, a propeller. It can also send data directly to the cRio. https://www.sparkfun.com/products/10032?

Don’t get me wrong i love sparkfun but I’m looking for something that would interface with the axis camera that we already use

As a rough comparison, the cRIO’s PPC can do about 780 MIPs where the ints are four bytes big. The Arduino can do 16MIPs where the ints are one byte. So the Arduino is capable of many things, but unless you get one heck of a shield, this isn’t contributing much CPU. Similarly, with just a few K of memory, it would be difficult to impossible to even perform the JPEG decoding. Even the Propellor Shield that was linked to as the CMUCam only mentions pretty basic image processing.

Teams have had some success with things like Pandas, Beagle’s, and Beagle Bones. You can also send the images to the DS laptop and do the processing in the dashboard application and send the results back. The Atom in the lowest end laptop is around 3000MIPs, by the way.

Greg McKaskle

How would you have it send data back and forth from the dashboard and how much would it slow down the connection

There are a couple well supported ways to get the images to the dashboard. The initial one was necessary because there was no switch on the robot. This meant that the cRIO asked the camera for the images on one enet port, and then duplicated the jpeg out the other port to the dashboard.

For a few years now, the bridge has included a switch. This means that the dashboard and camera can directly communicate. This is usually done by having the dashboard request an mjpg stream from the camera. The camera can serve up to five clients, so it is actually possible to have images go to the cRIO and dashboard independently.

To get processed results back to the robot from the dashboard is not quite as automatic. One option is to use the Network Tables – the underlying publish-and-subscribe protocol that SmartDashboard uses. This was relatively new last year, but is being enhanced and is what I’d recommend. It is also possible to do your own lower level protocol over TCP or UDP. Network tables operates over TCP by the way.

As for the speed of the connection, the robots use N-speed wifi, a high speed communication option. It will typically take just a few milliseconds for the information to be sent, and in most measurements we’ve seen, the robots are using less than 25% of the bandwidth available.

Greg McKaskle

Something like the Raspberry Pi, or several other single board computers might be a solution. Given the low cost of laptops, tablets, and even smartphones, you could probably rig up a way to run them legally… you’d have to pull their batteries… even a little lithium cell on the motherboard… which would be a hassle as you are not normally allowed an electrical power source other than the main battery.

I’m not saying I know what the software for this solution would look like, but I do know that I’ve seen some pretty impressive solutions.

Jason

The 2012 robot rules were slightly more permissive than in previous years. : “…Batteries integral to and part of a COTS computing device are also permitted (i.e. laptop batteries), provided they’re only used to power the COTS computing device.”

Ive never used a raspberry pi but how similar is it to an arduino and im still pondering the idea of processing it on the laptop with the driver station

What were the rules last year for using an alternate computer as the driver station

The Raspberry Pi is a bit like a Beagle or Panda with extra video, but for the price of an Arduino. It doesn’t have that much of a general CPU, but has very impressive video and audio abilities. I believe the Wikipedia article referred to it as combining the video of an XBox1 with the processing power of a Pentium II.

Greg McKaskle

Where can u buy a raspberry pi or panda they all seem to be sold out or bot sold anywhere