Flight Control on an x86
#1
Posted 07 September 2011 - 04:53 PM
A colleague just suggested to me to look for a tablet with an nvidia Tegra chip. Apparently those are designed for embedded use and combine high graphic power for video operations with low size, weight and power consumption.
The idea is as follows:
GPS <- serial -> INS <-(spi?)-> OP PRO <-(USB)-> x86 embedded
OP PRO <- 2.4 GHz -> flight control TX
OP PRO <- serial telemetry -> <GCS>
and/or
x86 embedded <- WLAN/GPRS/UMTS -> <GCS>
- the INS would run sensor fusion as usual
- the OP pro would run stabilization and Guidance as well as actuator control (and possibly Telemetry)
- on the x86 would also run an instance of OpenPilot using a modified (and hardened) sim_posix and share all UAVObjects with the OP PRO (through UAVTalk, but not a regular telemetry connection but a special link that transfers each and every object "on change") (sim_posix running in a real_time thread on linux)
- the x86 would run additional modules that deal with
- camera control
- image recognition
- SLAM
- SLAM based navigation (object avoidance, etc)
- high level tasks ( swarm navigation, visual ground object tracking and following, ... )
such a solution would be powerful, and possibly still small enough to fit on a big quad and/or a medium sized fixed wing
I am searching for suggestions regarding the x86 platform (boards/cpu's/vendors)
#2
Posted 07 September 2011 - 05:58 PM
Their top secret new board (so secret that no one has seen it
best
Thomas
#3
Posted 07 September 2011 - 07:18 PM
#4
Posted 07 September 2011 - 07:43 PM
Corvus Corax, on 07 September 2011 - 07:18 PM, said:
Look at Gumstix. They are easy to add as an add on module and avoid most of those challenges. It's the same thing paparazzi does.
#5
Posted 07 September 2011 - 08:21 PM
#6
Posted 07 September 2011 - 08:23 PM
It runs on arm (more power efficient), the latest has the cortex A8.
It runs linux so your sim.posix will be easily portable.
I don't see the advantage of the Tegra here.
Gumstick are stackable too, so you can dedicate one for video processing, and another one for something else.
#7
Posted 07 September 2011 - 08:40 PM
Brian, on 07 September 2011 - 08:21 PM, said:
+1 for Pandaboard but maybe too big/heavy with tool many peripheral?
#8
Posted 07 September 2011 - 09:44 PM
Thing is I'd want to do a lot of real time video processing. I'd prefer some board with a graphics processor that can be used with OpenCV (which supports Nvidia's CUDA as well as some intel acceleration features. But I double checked - even the tegra doesnt support CUDA).
I looked at the specs of the Gumsticks, and it doesn't really look like it has the necessary power. It would have to do all in the CPU and its single core, we'd likely look at over a second processing time per frame.
At the speed and altitude our vehicles are flying it needs way faster processing than that. (About 20 times that fast)
Multiple Gumsticks might be an option but I think it gets very expensive very quickly that way.
#9
Posted 07 September 2011 - 09:54 PM
#10
Posted 07 September 2011 - 10:47 PM
Quote
Just use a separate SBEC, you can get them up to 5 amps cheaply for the larger Helis.
#11
Posted 07 September 2011 - 11:25 PM
dankers, on 07 September 2011 - 10:47 PM, said:
We run the Pandaboard off of a separate 2 amp SBEC, and it works fine. We also use OpenCV on it. It's not a speed deamon, but it gets the job done.
#12
Posted 08 September 2011 - 01:06 AM
Take a look at the OMAP5432, don't know of any comercial board using this SoC, but sure is a powerfull beast .
Regards,
PA
#13
Posted 08 September 2011 - 01:13 AM
StarRider, on 08 September 2011 - 01:06 AM, said:
Take a look at the OMAP5432, don't know of any comercial board using this SoC, but sure is a powerfull beast .
Regards,
PA
That's because it hasn't been released yet, AFAIK. The A15 processors aren't supposed to come out until later next year.
#15
Posted 08 September 2011 - 09:12 AM
#16
Posted 08 September 2011 - 10:51 AM
Corvus Corax, on 07 September 2011 - 04:53 PM, said:
- on the x86 would also run an instance of OpenPilot using a modified (and hardened) sim_posix and share all UAVObjects with the OP PRO (through UAVTalk, but not a regular telemetry connection but a special link that transfers each and every object "on change") (sim_posix running in a real_time thread on linux)
What would be the benefit of that? If OP already takes care of all the realtime stuff, wouldn't it be sufficiant to connect the higher level (navigation, path planning, image processing whatever) parts on the x86 via standard telemetry? That would be more modular, less complex and may still work well.
#19
Posted 11 September 2011 - 05:52 PM
It is a Broadcom BCM2835 SoC with an ARM1176 Processor.
Here are some links concerning this board:
http://www.raspberrypi.org/
http://mobile.osnews...ing_1080p_Video
http://www.broadcom....roducts/BCM2835
http://www.arm.com/p...m11/arm1176.php
#20
Posted 14 September 2011 - 01:05 PM
D-Lite, on 08 September 2011 - 10:51 AM, said:
The standard Telemetry is to be used for exactly that Telmetry - and will always connect OpenPilot to a GCS.
Update rates are supposed to "fit" on a radio link. And are controlled by the update rate fields of the metadata in each UAVObject.
An external component ON the UAV should not be limited to those update rates at all. It can fully utilize a high speed data connection without negative side effects on either. And it should be able to access UAVObjects independently of what update rates the user sees fir to transpher to/from the GCS.
Therefore - while using an UAVTalk instance and existing functionality to connect to the OP board, it would NOT use (and thus hog) the Telementry Module, but use its own Module to transpher exacly those modules it needs (similar to how AHRSConnection INSConnection module does)
Whether it makes sense to extend the metadata to make it configurable which objects to transpher and how often, or its better to mirror the entire object set and transpher every object "onChange" has to be seen. I would favor the latter because it doesn't need changes to the metadata of existing objects, but I don't know if the EventSystem / USB bandwidth can handle that.
The code to do so would be easy. If you look at the existing Telemetry Code, all it does is setup update queues based on each objects UpdateRate (either periodic or onChange), then calls its UAVTalk instance to format the object into a binary stream to be sent.
Thats a very straightforward approach and allows to do the same with a separate UAVTalk instance to do
- logging on disk (if extrenal storage is applicable) using the already existing flight logger metadata in the UAVobjects for control
- transpher UAVObjects to and fropm any separate components using UAVTalk and any available communication chanel.
thats much cleaner than raping the Telemetry module to do something its not meant to - while at the same time allowing regular Telemetry to still work.


Germany
United States
Canada
Australia
Portugal
Russian Federation









