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.
Replies
it is better to use gumstix board small and light
http://pixhawk.ethz.ch/wiki/
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 ?
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.
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