Is it feasible: ArduCopter + BeagleBoard with Camera + Optical Flow sensor

I'd like to create a platform to be able to test various visual based VTOL UAV control techniques for indoor environments. I've got some theoretical background in this field already and would like to move on to building a real flying platform. Yet I'd like to ask you guys to take a critical look at what I'm planning to do in terms of interface compatibility and feasibility in general.

I was planing to buy an ArduCopter Kit, a BeagleBoard-xM, a simple USB web camera to work with the BeagleBoard and an Optical Flow sensor board (either CYE8, ArPrMi or ADNS2620). I'm not planning to use a GPS or magnetometer in the first place, but if possible I wouldn't like to deny the possibility of doing so in the future. I need telemetry, so XBee is essential, as I'd like to use the ArduCopter's Ground Station.

All of the above OF sensors have an I2C interface (so they could go with the APM instead of magnetometer I suppose, but if there is another way I'd like to keep the magneto), those from Embedded Eye have SPI as well. There is an SPI interface on the BeagleBoard along with USB, UART and Ethernet. I'm not sure however how to interchange data between the BeagleBoard and the APM - would it be possible? I'd like to use the APM as the autopilot.

 

Any suggestions welcome.

 

Tags: ArduCopter, indoor, quadrotor, uav

Views: 2693

Reply to This

Replies to This Discussion

the APM has 4 UART, 1 is used for GPS, 1 for USB and 1 for telemetry, the 4th is not used now

you can interfece more than one sensor to I2C (up to 256 i think) so you will allways be able to use magneto

 

you can interchange data between beagle board and apm through an UART (the 4th) or through USB

you have to modify the APM software to make it react on data comming from the beagle board

 

you should use a bigger frame than default arducopter frame, you can't fit the beagle board in this one

Thanks a lot Sebastian.

Tom, I've also been playing with the ADNS2620 recently and talk about in this recent post how to interface with the APM using the telemetry port (although this would leave you with one less Serial port than you need for everything).  You can't use the I2C with the ADNS2620 because it's not a pure I2C - it doesn't include the slave address so the slave address listens to all commands and will likely not play well with the magnetometer.

 

So if it were me....as Sebastian says, I'd use a serial port to send messages between the APM and Beagle board.  And I'd use an optical flow sensor with an SPI interface.  Actually I'm planning to try out the big brother of the ADNS2620 soon, the ADNS3080 which also has an SPI interface.

Nice thing you've done there Randy. Also thanks for the tips regarding mouse sensors. I was planing to try doing some image processing with the web-camera on BB-xM alone for the begining, so I'll wait and see what you've achieved. By the time I got something working, will probably be doing aerial stunts with ADNS3080 already :).

 

Cheers and good luck.

I have been interested in using cameras to do image processing for navigation with a ARM linux SoC as well. First BeagleBoard-xM is a OMAP3 and for only 20-30 bucks more you can get a OMAP4 SoC with the new dev board project www.pandaboard.org this board has Dual 1GHz ARM Cortex A9 CPU with a much better GPU that can do full 1080p!!! Also both the BeagleBoard and the PandaBoard have camera inputs directly on the board. That input might be better for IO than using a USB camera.

For image processing a good library is OpenCV (http://opencv.willowgarage.com/wiki/) and for managing flight paths is ROS (ros.org). Now the APM can handle most low level stabilization and flight control but for indoor image processing or 3D mapping via SLAM using ROS is a much more suited to control flight navigation. One cool project that can be used  to send data back and forth between the ARM board and the APM is avr_bridge (http://www.ros.org/wiki/avr_bridge).

Also if you choose to use OpenCV there is a DSP acceleration library for the OMAP3 DSP: http://code.google.com/p/opencv-dsp-acceleration/

As for connecting to the ARM board a USB cable would be the best, hopefully with the new ArduPilot Mega 2560 and the Atmega8U2 controller for USB can bring faster serial communication between the AVR and ARM boards.

That's a lot of useful information pontiuspilatepdx, thank you. I have already ordered BB-xM unfortunately, don't know how could I have missed pandaboard. Hope BB-xM can do it's work well enough.

 

I haven't got any experience with ROS yet, but was hoping to get it running on BB. I know there is an Ubuntu's arm port for BB and Panda - does it mean one can seamlessly use ROS on both, or must there be a ported ROS version as well? This issue actually confuses me a little.

 

I'm considering two uses of APM + BB at the moment, both assuming using BB for indoor navigation and APM for attitude stabilization. Either, as mentioned in the original post, I'd use CMOS camera images for feature detection or I'd try to reproduce this one, which assumes having ROS installed. Naturally, both can turn out to be to hard for me...

The Beagleboard project has been around for several years and have alot of pre compiled installers for XBMC, ROS, and other popular projects. It will make your life easier because of its community. The Pandaboard is brand spanking new and is gaining community members. Ubuntu (officially supported linux distro for ROS) is supported on both the BB and PB but a prebuilt binary is only available on BB and is based on Ubuntu 9.10 (http://people.mech.kuleuven.be/~kbuys/embsensor.html).

Personally when my PB arrives I am going to load 10.10 and compile ROS by hand. More than likely I will post a tarball of the entire build when complete.

 

It should be noted that OpenCV was originally programmed for x86 and still requires lots of optimizations for the ARM CPU. That is the only nice thing about using the Atom SoC is that it is x86 based, on the other side an optimized OpenCV library for a Cortex-A9 SoC will outperform an Atom at price, power, weight and size.

 

As for 3D mapping (SLAM) the Kinect is the hottest thing in robotic right now but it might be better to get the dev kit from the manufacture (http://www.primesense.com/dev_com.asp). That can easily be used on a BB via USB for SLAM but for image detection a HiRes Camera would be best for OpenCV. BB cameras can be found here (https://www.leopardimaging.com/Beagle_Board_xM_Camera.html).

 

 

Does the PrimeSense Developers Kit 5.0 use the exact same interface/protocol as Microsoft Kinect and can be used with ROS interchangeably? I'm having problems contacting PrimeSense at the moment. Is there a shop where you can buy those PrimeSense sensors?

Please post tarball when u do so, my Pandaboard arrived this week, got Ubuntu on it, very cool platform for $179!

I agree with the comments about letting the APM do low level flight and stablisation and use the Pandaboard to do the higher level stuff.

If you mean the tarball with prebuilt ROS images for Panda, I really think that's not necessary. Depending on which ROS packages you need, you can easily compile ros natively on PB. This shouldn't take too long, a standard mobile version of ROS should build in about 2 hours on the PB, so why bother cross-compiling. Go to answers.ros.org or ros.org for more details (here my post related to this issue: http://answers.ros.org/question/134/how-to-install-ros-on-beagleboa..., don't forget to vote up :) ).

Hi, I'm almost doing the same thing :)

I'm planning to purchaise a new quadcopter (Ardupilot) and apply computer vision stuff on it , but the ardupilot has just few MHZ of processing ( 16MHz Atmega) so i have decided to let it for flight control and port all my vision stuff to some evaluation board (Beagle Board) and make BB control the navigation of the UAV so for example if quadcopter is tracking a green ball for example,so capturing frames and compute the appropriate direction from BB and then feed the conclusion ( the direction) to Ardupilot to navigate the Quadrotor. 

But i have a problem , what is the best interfacing way that i may use to connect the two boards together ? is it USART ? or USB ? or something else ? and if i know the best way of interfacing, what do i need to edit in ardupilot code to make it accept commands from BB ?

 

is there any progress in this point ?

USB is just converted to UART by the FTDI chip, so it doesn't really matter

RSS

Social Networking

Contests

Season Two of the Trust Time Trial (T3) Contest has now begun. The fourth round is an accuracy round for multicopters, which requires contestants to fly a cube. The deadline is April 14th.

A list of all T3 contests is here

Groups

Advertisement

© 2013   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service