Planet NG

Welcome to Planet NG!

This is an aggregation of all known UAVP Next Generation Blogs.

December 20, 2011

Amir Guindehi (amir)

UAVP-NG @ 28C3 - Chaos Communication Congress 2011

It's winter again and I did not update my blog for half a year. Evil me. Let's change this...

CCC Camp 2011

Let me start with this summer's CCC Camp, which was a great event and everybody who joined us in the UAVP-Village in Finowfurth had a lot of fun. If you head over here, then you will find some pictures of the event.

After the camp we had a nasty surprise, when we found out that our new hardware HW-0.22-mini-r2 of the Mini-NG had a non recoverable bug on the PCB. It was nobody's fault in special, we all should have take more care in checking the changes, which have been done. To make up to our users, who already got a revision 2 board, we replaced them for free with a HW-0.22-mini-r3 board, produced immediately after we found out about the bug.

The new HW-0.22-mini-r3 of the Mini-NG performs admirably and many of us are now flying these boards, which offer exactly the same features as the big HW-0.22 tower, except that it's only one board with 55x55mm.

In the meantime we also developed new features for NGOS. Having received my new ACT 2.4GHz Kit with Diversity on both sender and receiver side together with telemetry, we decided that it would be time to support the telemetry system from ACT (M-Bus) and Multiplex (M-Link). Both systems are essentially identical. The new NGOS supports up to 14 different on-board values to be transmited on the back channel to the sender. The user is free to define which of the 14 slots should transmit which on-board data. A ACT UDP or a Multiplex sender is able to show these slots on his display to the pilot. Documentation and configuration examples can be found here, in the extensive NGOS documentation.

Having completed my new Mini-NG with all sensors, including GPS and compass, I decided to give Position Hold, Coming Home and Waypoint flying a bit of priority.

Having already completed the new NGCTRL2 communication protocol in summer, I decided to give Qngctrl a update and visualize all the new navigation stuff using the new features of NGCTRL2.

NGCTRL2 is a framed packet based communication protocol, where each packet may contain an arbitrary amount of data-sets which in turn each contain a type and a payload. The packet content is encoded with the COBS (Constant Overhead Byte Stuffing) algorithm making sure we only use up 1 byte in 256 for byte stuffing (worst case) which in turn makes sure we can always detect our framing byte and also assures, that we may use all possible byte values inside the packet. The COBS encoded packet content then gets a XOR checksum and a framing byte at the end and is sent over the unsecured serial connection.

Each of the NGCTRL2 data-set packed into a packet contain a type value, describing the payload type and it's implicit length. libng, our PC client library for NGOS communication has a poll() API allowing client applications to easily receive and parse the NGCTRL2 packets. As each data-set contains a type field, a client can request arbitrary dump intervals for each data-set type. A NGOS is even able to send data-sets which were not even requested by a client, thus allowing NGOS to inform a client of events happening on the copter side.

I've implemented waypoint flying on the NGOS side by giving NGOS a new waypoint table, which describes the coordinates of the available waypoints. The table can be manipulated with the normal "show" and "set" commands in the NGOS shells. There is a new suite of shell commands starting which the keyword "nav", allowing the user to issue navigational commands like "nav position-hold" or "nav fly-waypoint-fdw". The amir-ng controller was changed to understands the concepts of target, waypoint and it's navigation algorithms were adapted to be able to fly with different behaviors. Each waypoint is defined by it's coordinates, a dwell time and a action and argument, which will allow for a lot of new cool features in the future. At the moment, we only know two actions called "reach, next" and "reach, dwell, next". More actions are to be expected.

On the client side I implemented a new GPS Map view, which visualizes all navigational information received from a NGOS and displays it's position, it's target, it's waypoints as well as all navigational data needed to calculate the curse, consisting of target deviation and target distance. A nice small navigational control shows the headings of the different target/waypoints/home positions and also shows the result of the navigation algorithm for debugging purposes.

This is the above mentioned GPS Map. At that moment it shows a NG flying in a simulated flight using real GPS data and currently doing waypoint flying forward with 5 waypoints currently heading towards the first of them:

Qngctrl

As you can see the GUI not only shows multiple waypoints and targets but also many of the on-board states like the battery voltage and the controller flight state. These get transmitted to the client whenever they change. Altitude Height controls are missing yet and will be implemented soon.

In the meantime our hardware developers were busy too and they redesigned the Mini-NG in HW-0.23-mini-r0. The new prototype will use the MPU6050 3D acc and gyro sensors and features an on-board GPS. First prototypes have been built and we hope to bring some of them to 28C3.

Last but not least work on our next-generation hardware platform HW-0.30 has begun. It will feature 2 STM32 CPUs with single precision FPU running at 168MHz combined with a dual-port RAM for fast direct memory communication. We hope to port NGOS to the STM32 architecture during summer 2012 and so support multiple architectures within one source code.

Currently everybody is preparing and packing for the 28C3, this years Chaos Communication Congress in Berlin where we will participate as every year.

Qngctrl

On the 28C3 we plan to work on the NGOS software for the upcoming HW-0.23-mini release. Also we plan to further develop HW-0.30. Everybody interested in our project is invited to visit us at 28C3.

Besides our new hardware revisions, some developers are currently working on new brushless-controllers, a controller for lights called NGlight and other fun projects. We're looking forward to discuss, improve upon and show prototypes of them on 28C3.

28C3, we're incoming... ;)

December 20, 2011 05:25 PM

July 23, 2011

Amir Guindehi (amir)

UAVP-NG @ Chaos Communication Camp 2011

The time is near... The Chaos Communication Camp 2011 will start the 10th August and continue until the 14th August in Finowfurt near Berlin, Germany Europe, Earth, Milkyway!

Chaos Communication Camp 2011 Trailer from elektropunk on Vimeo.

The Chaos Communication Camp 2011 is an international, five-day open-air event for hackers and associated life-forms. It provides a relaxed atmosphere for free exchange of technical, social, and political ideas. The Camp has everything you need: power, internet, food and fun. Bring your tent and participate!

Make sure to join us in the UAVP-NG Village at the Chaos Communication Camp 2011 in Finowfurt!

July 23, 2011 07:05 PM

July 09, 2011

Matthias Beckert (matze)

Pimp my wi232

Ahoi,
da das dauerhafte Adaptiere von Pegelwandler auf wi232 Modul auf Dauer doch etwas nervig ist am Rechner musste etwas neues her. Auf dem Weg zum LandKamp hat mir Marc (Stars112) dann seine Adapterplatine vorgestellt, auf welcher direkt ein FTDI Chip zur Anbindung via USB untergebracht ist und auch die normale UART Verbindung heraus geführt ist. Genauere Informationen dazu findet man hier.
Nachdem der Adapter dann bestückt war musste noch eine anständige Antenne her, welche an den R-SMA passte. Kurz in der Bastelkiste gekramt fand ich dann noch eine Linksys Antenne, welche bei der Arbeit mal zu Hauf übrig waren. Die Antenne war für WLAN gedacht und um dem Kunden eine höhere Leistung zu simulieren, war das Gehäuse natürlich “etwas” größer dimensioniert. Hier der direkte Vergleich:

Da nun in dem Linksys Gehäuse noch ordentlich Platz war, konnte der originale Strahler durch einen 8,6cm langen Strahler für 868 MHz ersetzt werden.

Und im Betrieb sieht das Ganze dann so aus :)

Reichweitentest folgt :)

Stay tuned
Matze

by Matze at July 09, 2011 05:05 PM

June 29, 2011

Amir Guindehi (amir)

UAVP-NG: Taarek's first pirouettes

Hi all!

As you probably know, neighter Taarek nor I ever flew anything before we found out about quadcopters. We were real noobs when we started with the stuff and trough having flown the old UAVP and the commercial MK we both never had a lot of pilot experience.

Switching to the UAVP-NG did not really help the issue. As a test pilot you are never sure if the fault was yours or if the software or hardware failed... ;)

Still after a while you get a bit of feeling for piloting and it seems that Taarek finally got the groove. Using a not so heavy NG probably helped too as we did this using our new Mini-NG, which you can see on the following picture:

amir-mini-ng-ready2.jpg

Using the above Mini-NG it has suddenly become quite easy to fly pirouttes and I did a small movies of Taarek's first stunts. Flying NG is fun... ;)

UAVP-NG - The OS Multicopter: Taarek's first pirouettes from Amir Guindehi on Vimeo.

These are Taarek's first pirouttes flown with my brand new Mini-NG

Best regards!
- Amir

June 29, 2011 06:40 PM

June 28, 2011

Amir Guindehi (amir)

UAVP-NG: Size comparision NG / Mini-NG

Hi all,

I would not let you miss the great photo Timo has shot showing the size differences between our normal size NG (HW-0.22) and the Mini-NG (HW-0.22-mini):

Mini-NG-size-comparision.jpg

Cheers!
- Amir

June 28, 2011 02:14 PM

UAVP-NG: The 5. NG Developer Meeting in Heidelberg

Hello everybody!

Finally I found the time to update my blog! End of last month we had the 5. NG Developer Meeting in Heidelberg. Ben and Volker organized the event and it was a lot of fun! Peoples from all over Europe showed up and we had 3 days of BBQ, discussions and flying.

Now, a month later some of the movies shot have been cut and posted to the net. Below you find Robert's and my moving pictures of the event.

UAVP-NG - The OS Multicopter: 5. Developer Meeting in Heidelberg from Amir Guindehi on Vimeo.

This is a summary movie of the 5. NG Developer Meeting in Heidelberg, which took place the 27./28./29. May 2011

NG UAVP Meeting Heidelberg from Rob Robot on Vimeo.

Short Movie of the NG UAVP Meeting in Heidelberg Germany from 27 to 29th May 2011

I would like to thank all visitors and special thanks goes to Volker and Ben for organizing the great event!

Best regards!
- Amir

June 28, 2011 11:08 AM

May 30, 2011

Amir Guindehi (amir)

UAVP-NG: A fully assembled UAVP Mini-NG

Hi guys,

Timo did some very nice shots of an fully assembled Mini-NG, which I could not let you miss:

mini-ng-fullyassembled-spida.jpg


Cheers!
- Amir

May 30, 2011 01:46 PM

April 20, 2011

Matthias Beckert (matze)

HelgaNG is Airborne

Ahoi,

nachdem es mir die alte FlightControl (FC) beim Heading Hold Fliegen zerlegt hatte war für mich klar, dass etwas Neues her musste. Diesmal sollte es aber etwas mit mehr Rechenpower für diverse Spielereien sein. Da ich mich auf dem 27C3 recht ausführlich mit Amir vom UAVP Developer Team unterhalten hatte (ja ich kann mich sogar noch an ein paar Sachen erinnern ^^) und dazu noch der erste Prototyp vom neuen Mini-NG gezeigt wurde, war für mich klar, so was will ich auch haben :) (Auch einfach mal aus dem Grund, dass ich so Out of the Box diverse Teile recyclen konnte)

Nachdem die ersten PCBs für die Betaphase bei Amir angekommen waren, ging es daran die Teile zu ordern. Leider hat die Lieferung von Digi Key ewig auf sich warten lassen, so dass ich erst letzten Freitag mit dem Löten anfangen konnte.

Da ich aktuell weder Klausuren noch Vorlesungen habe und darauf warte, dass mein Praktikum am 02.05.2011 losgeht, konnte ich die komplette Lötorgie an einem Tag durchziehen. Am nächsten Tag ging es auf Grund einer Whiskey Probe (man soll mir ja nicht nachsagen, dass ich ohne Grund eine Pause eingelegt habe ;) ) in die Heimat wo ich dann die Platine gesäubert habe und mit der Kamera meines Vaters ein paar Detailaufnahmen gemacht habe.

Nachdem ich mich dann mit dem NGOS vertraut gemacht hatte, konnte es an die Konfiguration gehen. Da ich als Linux User ein CLI gewöhnt bin, kam mir die integrierte Shell im NGOS doch sehr gelegen an dieser Stelle. Als dann alles eingestellt und Rahmen, Motoren, Regler usw. zusammen gebaut waren konnte ich gestern Abend in meinem Schlafzimmer schon die ersten Hüpfer machen. Leider waren die Akkus meiner Kamera leer, so dass ich den wirklichen Erstflug auf Heute verschoben habe. Die Einstellungen sind definitiv noch nicht perfekt, aber es fliegt und wie es scheint ist mein Mini-NG das Erste (nach den Prototypen vom 27C3) welches nun mit den “offiziellen” Platinen fliegt.

An dieser Stelle ein dickes fettes DANKE! an alle Developer und Beta Tester des UAVP NG Teams.

Weitere Artikel zur neuen HelgaNG werden definitiv folgen :)

Stay Tuned
Der Matze

by Matze at April 20, 2011 05:32 PM

March 22, 2011

Amir Guindehi (amir)

UAVP-NG: The new Mini-NG - a full NG on 5.5x5.5cm

Hello everybody!

It has been a while since my last post, again. In the meantime we survived winter and had a lot of fun at the 27c3, the yearly CCC Congress in Berlin.

Spring is coming - and as every year, we need something new to play with... ;)

The new Mini-NG hardware has arrived!

Over winter time Volker redesigned our original HW-0.22 into a HW-0.22-mini. The new hardware is fully feature compatible to the old one, is running the normal NGOS and was shrunk to a size of 5.5cm x 5.5cm on 4 layers!

The RC-Controller was moved to a small separate PCB so that only folks needing additional DSL channels or servo channels will have to use it. The functions of the SB-Controller are provided by the LPC itself.

Here are the first shots of the PCBs...

Top side:

HW-0.22-mini-top.JPG

And bottom side:

HW-0.22-mini-bottom.JPG

Next, we will test the new PCBs and should everything work out, we will make them available in the NG Shop. Please note that the boards need to have a LISL acceleromenter directly soldered to the board. This means you need hot air to solder it by youself.

Our first Mini-NG prototype was airborne in december 2010 at the 27c3 congress!

A fully assembled HW-0.22-mini (this is our prototype which was airborne at 27c3) looks like this (courtesy of KeyOz):

HW-0.22-mini-assembled.jpg

Volker did a great job and the new Mini-NG looks nice and cute (at least for my humble eyes)!

We hope to be able to provide Mini-NGs with pre-soldered LISL and eventually even with pre-soldered LISL and ADXRS620 gyros in limited numbers in the NG Shop.

Check the NG Forum for Project News on that.

Cheers!
- Amir

March 22, 2011 11:47 AM

January 07, 2011

Amir Guindehi (amir)

UAVP-NG: Source code release of NGOS - The NG Operating System

NG-badge.png

The Next Generation Multicopter team would like to announce the source code release of NGOS - The NG Operating System under a GPLv3 license after 3.5 years of intense development time.

Check out the UAVP-NG homepage for more informations!


Official binaries:

* http://ng.uavp.ch/moin/Download

Release source code repository:

* https://pub.uavp.ch/svn/releases

List of supported platforms:

  • NG HW-0.10
  • NG HW-0.20
  • NG HW-0.21
  • NG HW-0.22
  • NG HW-0.22-mini
For a complete list of changes refer to the Release Notes at http://ng.uavp.ch/moin/Download

uavp-ng-flang-clean-small-600.jpg

The Beginning

This project was started in summer 2007, half a year after the original UAVP, also a GPL project, was released. All over the world UAVPs started to get built. At that time, many of us started dreaming of bigger and more powerful processors, peripherals and sensors. The current projects available at that time seemed not to be able to scale according to our needs, so the idea of something new was born. In April 2008, about a year later, there were about 500 UAVPs airborne around the world.

Having flown most of the other open projects available at that time some of us decided that they did not offer the resources we wished to have on our copters. Especially when looking into the future it seemed that none of them had the scaling possibilities needed. Studying the available processors we realized that we needed to switch processor types to get the computing power we dreamed of. Neither PIC nor Atmel could provide what we needed.

In the end we decided to go for an ARM7 and started the Next Generation Multicopter Project.

Our Goal

The development of a free Open Source Multicopter software and hardware framework for further research based on a high performance 32bit ARM7 RISC CPU.

The Story

We started work in August 2007 as a small team which met on IRC. The first hardware (HW-0.10) went airborne in January 2008. The software has been extended with a lot of new features after that. We then worked on a new hardware revision (HW-0.20) in summer 2008 and the first prototypes were produced some weeks before the 25C3 congress. The new hardware got airborne in December 2008. After 25C3 we improved the flight control software immensely and started working on the peripheral controllers software support for the new hardware. Having tested and flown HW-0.20 a lot we decided to improve the hardware in summer 2009 and so we started work on the next hardware revision (HW-0.21). We finished that in June 2009 and produced enough boards for all beta testers and developers to thoroughly test the hard and software. The new hardware got airborne in August 2009. Discovering small problems and print issues we decided to produce one last hardware revision 0.22 fixing those before a final release. We hoped to produce this revision before 26C3 and have it ready for a first public release at 26C3. We succeeded and did a hardware release with HW-0.22 at the 26C3 Congress in Berlin.

Finally having a stable hardware platform out in the green, we started working on the source code immediately after returning from the 26C3. Cleaning out the source, commenting and polishing while still implementing new bells and whistles took the time from then until today.

Be aware that this still is work in progress. We decided that it's time to let everybody play with it, now that the hardware has reached a stable state but this is still a very livid project and new hardware revisions and software changes have to be expected any day... ;)

The Design Principles

The design principles of the NG project are simple:

"Complexity, modularity and encapsulation where performance allows it, simplicity and directness where performance requires it."

This has led to a quite complex framework which we started calling the NG Operating System. The system uses abstraction and complex pointer tables where necessity requires it and performance allows it. It uses global variables and breaks encapsulation where performance requires it. We use classic Open Source tools like the autotools suite, gcc and gnu make. We adhere to common C design rules. And we try to provide a user friendly interface with features like help for commands and verbose error messages.

The Key Features

The NGOS has a design rather different from most available flight control software. Instad of building a fully synchronous system as most did, we built a fully asynchronous system which only synchronizes when needed. This allows for a much more modular design and also allowed us to implement modern operating system like features.

A Multicopter only flies as good as its algorithms allow. Since the model is inherently unstable the closed-loop control algorithm is most critical for flying. People tend to have different ideas about the right algorithms. In order to allow different developers to implement different algorithms and to help compare them we designed the NG controller framework.

Our NGOS uses a modular, pluggable extension framework for closed-loop control algorithms, called controllers, and allows for several of them to be implemented at the same time using a simple abstract programming interface. This enables simple extensions to the system's closed-loop control algorithms by people not used to firmware and system programming. The modular controller framework is coupled with a modular configuration framework, allowing each Controller to have a different set of parameters in different configurations. Several controllers have been implemented. We have a good flying heading hold controller, a Kalman filter based integral controller with a lot of features like PT1-compensation and more and last but not least a port of the old Wolferl-controller from the old UAVP, which, BTW, flies very good with a closed-loop running at 1kHz... ;)

The system allows multiple interactive command shells and their spawned commands to be used concurrently on the different physical i/o devices. This means you can log in to your NG several times through one of the two UARTs or the USB port. Other available character devices could be supported as well. The shell command interface is also very modular and allows developers to add new commands quickly for debugging and testing purposes. A command can "take over its controlling tty", which allows an implemented shell command to put the shell to sleep, take over the physical i/o device and start doing with it what it likes. This allows for implementing new communication protocols (for ground station communication or similar) side by side with older and/or different protocols without having side effects or worse.

Controllers and configurations can be manipulated online using one of mentioned shells above. The controllers output the results of their calculations to a physical hardware abstraction layer called HAL which uses a similar modular framework as the controllers. Different multicopter models (eg. QuadCopter, OktoCopter et al.) can be implemented and flown using different HALs. Different flight styles can be implemented this way as well (X-mode, Reverse-Mode). It's even possible to mix different actors (eg. i2c bl-controllers, pwm-servos and i2c-servos) to control models different from the common multicopters. We already support a whole bunch of HALs (quad, quadX, quadR, Y6, X8, X8X) and new ones are implemented easily.

The above is tightly coupled with a behavior system which allows the user to configure arbitrary behavior rules using simple behavior conditions and behavior actions. Users can customize these behavior rules according to their needs. A behavior rule is defined by a behavior condition (which can have arguments) which, when triggered, executes a defined behavior action (which can have arguments too). Conditions and actions are arbitrary functions implemented separately in the NG framework. The implemented console commands can be used to inspect the currently defined behaviors as well as the predefined conditions and actions. Users are able to define custom new behaviors using the predefined conditions and actions. As each condition and action can receive user chosen parameters these allow further customization by the user.

If you ponder the above behavior concept you will see that every and all of the current UAV features can be mapped to behavior rules. You need calibration on channel 5? You want your camera to make a photo when channel 8 goes to 100%? You would like to turn on the lights, when you have reached 10m or more... it's all possible.

The NGOS supports several different types of RC receivers. It supports the normal sum-signal input as well as the faster sum-signal from the ACT 4+2XS 2.4GHz sum-signal receiver. Furthermore it supports the proprietary serial DSL protocol from ACT which allows us to attach any ACT DSL receiver to the NG. ACT produces great cheap and expensive PPM, PCM, SPCM and 2.4GHz receivers and most of them have a DSL interface. The NGOS contains an rc-mixer which allows to mix several rc input signals in different ways. Currently a primary and a secondary device are supported which can be mixed as teacher/student or for diversity. As the DSL protocol contains the signal quality received the diversity mixer can mix the two signals accordingly. If in teacher/student mode, the mode can be switched using arbitrary behavior rules defined by the above user configurable behavior system.

The NGOS

Do you wonder why we call the firmware an Operating System? Now, we all agree, it _is_ a firmware, but it has become a firmware with many, many operating system like features. The NGOS does hardware probing on startup and activates hardware dependent interrupt handlers. It outputs bootup messages while starting. It is split into user, system and irq context, the closed-loop controller is running on the system level, the user mode shells have to use system calls to use privileged opcode. Furthermore it has a timer scheduler and a task scheduler with a process table, it has a device table and it has tools to inspect all of them. The NGOS's device-probing dependent interrupt handlers could be called drivers. The started consoles implemented as cooperative shell tasks in user context (which are able to fork off commands) executed by a round-robin scheduler conclude the operating system like features.

The Developers and Users

Essentially the NGOS provides a simple API for controllers, configurations, HALs and behaviors programming for developers while giving users of the system very broad possibilities to customize their multicopter and the available features. This way the whole system will be interesting to users and developers with its unique options and possibilities.

The firmware is built modular and enables different closed-loop control algorithms to run side by side to allow different developers to share and compare their algorithms and designs. The abstract closed-loop controller framework allows non-programmers like mathematicians, closed-loop engineers and similar minded folks to implement new closed-loop control algorithms without having to understand more than input and output structures of their algorithms.

The Catch ;)

Please be aware that much of this source code was written by a single person - me. I am an EE engineer specialised in computer sience, system programming, network protocols, high-availability, clustering and security. I'm in no way a specialist for closed-loop controls, embedded system programming and aeronautics. Please be aware of this when studying the chosen solutions and implementations in these fields. I'm sure many experts out there could contribute a lot better solutions.

This all was - and still is - a very interesting experience and a lot of fun for me and I learned more about embedded programming and closed-loop control than I ever imagined I would... ;)

Your Contribution

If you would like to contribute to the project make sure to check the development page in the NG wiki.
It can be found at http://ng.uavp.ch/moin/Development

Thanks

I would like to mentions some great guys who joined our team and contributed to improve hardware and software to where we stand:

  • Markus Bechtold
  • Michael Buhr
  • Axel Burri
  • Patrick Schmid
  • Nabil Sayegh
  • Ralf Hager
  • Stefan Agner
  • Tim Pambor
  • Nabil Sayegh

Also special thanks goes to Wolfgang Mahringer who built the original UAVP and infected many of us with the multicopter virus and to Bernd Richter who infected us with a lot of new ideas and who was a great source of information and knowledge to us.

The Spirit

We hope to be able to provide a platform for experiments, new ideas and research for all Multicopter fans out there!

Best regards!
- Amir Guindehi & The NG Team

January 07, 2011 04:02 AM

October 06, 2010

Stefan Agner (stefan)

Flight at a sunny fall evening

Some time went by since my last post! In between I fixed the problems with my new quadrocopter, in the end I had problems with my altered brushless controllers. I had to resolder some soldering joints. But now it is flying quite nice, but see yourself:


Flight at a sunny fall evening



Headplay EyevisorMy next goal is flying with first persion view (FPV). For that purpose I bought a Headplay Eyewear and started soldering on a 5.8 GHz NGvideo. Therefor I also started flying in X-Mode (instead of + mode, which I did until now). With X-Mode you have a free view between two arms of the quadrocopter, its easier to place the camera that way. Expect more about this soon!
There is also another quadrocopter meeting at Amir’s place in the mid of october. Don’t miss it! :-)

by stefan at October 06, 2010 09:38 PM

August 03, 2010

Amir Guindehi (amir)

UAVP-NG: HW Release, Shop, DCM, GPS & Developer Meeting

NG-badge.png

Hi everyone,

Having been quite busy with work in the last few months I finally found time to write a new blog article about the latest developments in the UAVP-NG project.

In my last blog entry I announced that we will open the UAVP-NG shop soon, and so we did.

On the 26. December of 2009, the first day of the 26c3 - The 26. Chaos Computer Club Congress - we opened up the project's non-profit UAVP-NG shop to the public. We did not anticipate such a high demand and so we were sold out on the 13. January this year for two weeks... ;) We learned our lesson and increased our stock accordingly.

Having rolled out our hardware to the public we finally found time for some source code cleanup and further development.

End of January 2010 we released NGOS-0.55 with support for the VDRIVE2 and the new X8 and X8X coax HAL and the ng-tools source. End of March NGOS-0.56 which included a new test HAL called 'blc' to allow users to test single BLCs. In April NGOS-0.57 and NGOS-0.58 followed with rc-mode support, yaw stability improvements and a yaw filter. And finally, in June we released NGOS-0.59 which introduced the new native S3D 2.4Ghz support for the S3D receivers from ACT which Ralf and I implemented in spring.

In the meantime I pondered some new papers I've read on the DCM - The Direction Cosine Matrix and it's applications for UAVs. Several very smart folks wrote some heavy papers about the stuff and having read a lot about it in the last months I decided to try to implement a new DCM based controller, which I called amir-ng.

The basic idea of a DCM controller is to remember the attitude and orientation not by using 3 euler angles, but by using a DCM - a direction cosine matrix.

It's one of the 3 often used methods to remember attitude and orientation. Besides Euler angles and a DCM there are Quaternions to do the same. Mathematically a DCM and Quaternions can be shown to be identical except for the number of storage needed and some differences in mathematical complexity. Quaternions use 4 variables to describe the state, a DCM uses 9 variables, of which 4 are free.

The DCM essentially consists of the 3 axis vectors of the two involved coordinate systems, seen from each other. It will store the attitude and orientation, but needs to be corrected for mathematical deformation and for drift effects happening by the gyro integration and errors introduced.

This drift correction of a DCM can be done in different ways, similar to the Euler case, where you can use different Kalman filters or complementary filters to do the job of fusing acc and gyro information.

Contrary to Euler angles the DCM's state space resides in the SO(3) Manifold - the special orthogonal group of rotation - and there, the rotation problem is linear! This has several important implications...

As you probably know a linear Kalman filter is a optimal solution if, and only if, the problem is linear. Otherwise you have to resort to an extended Kalman, which tries to linearise the curve at the point of interest by using a first order Taylor approximation or similar solutions which essentially work, but also inherently fail to be optimal, by their way of working (eg. a first order Taylor approximation simply no longer is optimal).

So essentially you can't get a optimal solution using Euler angles. And the Euler angles singularities always will irritate you... *g*

Now guess what happens if we look at the problem in SO(3). As a rotation is a linear operation here, we can apply a simple linear Kalman filter to the problem and get an optimal solution. This is very helpful as a linear Kalman filter is implemented much more easily than an extended one.

So using three single linear Kalman filters to guess the drift compensation in SO(3) results in an optimal solution and I tried to implement this in the amir-ng controller.

The result seems to come out quite satisfying! Take a look for yourself on the following short movie showing the maidenflight of the DCM controller with Kalman drift compensation:

UAVP-NG - The OS Multicopter: DCM Maidenflight from Amir Guindehi on Vimeo.

Parallel to my work on the new controller, Stefan finished cleaning up the compass support on the SBCTRL side. While he was working on implementing compass and GPS support in the older amir controller, I decided to implement GPS and compass support in the amir-ng controller. This made sense as the application of the compass heading for drift compensation is different in the two controllers. Instad of using a heading over ground derrived from GPS measurements as used in many DCM implementations, we use the attitude compensated compass measurement for yaw drift compensation in the amir-ng controller.

Having implemented yaw drift compensation using a compass, GPS navigation suddenly was very easy to archive. As a DCM contains the coordinate axes of the two involed coordinate systems, it's very easy to compute heading deviations and courses. It's simply vector geometry...

Realizing that, a simple GPS Position Hold algorithm was hammered together and tested out, some weeks ago! This was the first successful test on the 24. June of 2010:

UAVP-NG - The OS Multicopter: First GPS Position Hold Flight from Amir Guindehi on Vimeo.

Again we use 3 linear Kalman filters to fuse acc accelerations and GPS position.

Having realized a first PH flight, we started preparations for the 3. UAVP-NG Multicopter and Developer Meeting here in Zurich, Switzerland.

It took place on the 9. - 11. July of 2010. Here's some footage on the event... I think we never had so many different NG flight controls in one place... :)


UAVP-NG - 3. Developer Meeting in Zuerich on the 9/10/11. July 2010 on Picasa

Rob's movie:

3. NG Developer Treffen from Rob Robot on Vimeo.

And Ygramul's movie:

NG Treff 2010 in Zürich from Ygramul on Vimeo.

I would like to thank all visitors for coming by! It was a lot of fun, as always!

So, I hope I got all the News out... ;)

Last but not least I was 2 weeks on diving holidays, but I will write another blog entry about that... :D

Cheers!
- Amir

August 03, 2010 10:10 AM

August 01, 2010

Stefan Agner (stefan)

My second NG is airborne

The last days I worked a lot on my second NG UAVP quadrocopter. I had many of the parts ready since weeks. But I decided to do some things different than planned. But in between, all things were done and it was time to get my new aircraft airborne. And it flew! Unfortunately I had some interferences, but look yourself!


Maiden flight of my second NG UAVP quadrocopter

The second quadrocopter is a lot easier to build. The whole world of quadrocopter and radio controlled model making in general was very new to me. I made wrong decisions or just didn’t know how I want to have it in the end… Here is a small lists of improvements I made on my second quadrocopter. It might help other beginners to do it better in first place :-)

Battery connectors

XT60 plugs

XT60 plugs

On my first copter I bought the same connectors for the quadrocopter which the batteries had: 4mm Bullet connectors. But connecting them was dreadfully: My connectors were a little bit to big, so I had to deform the plastic of the connectors a little bit. The plastic on the front was battered. Connecting them was very tough, in the end I didn’t connected them fully, it simply wasn’t possible anymore. So it was time to switch. I decided to use the XT60 connectors from Hobbyking (an alternative to the popular Deans connector system). They are cheap and you can also buy batteries with this connectors. The connection holds strong but you can connect and disconnect them without problem. No more half connected plugs in the air.

Power distribution

Power distribution

Power distribution


Using a board to distribute the power is definitely more comfortable, especially if want to connect something new or disconnect something. I used a two-sided 70µm copper bare board. Don’t forget to remove the coat before soldering if it has one. You also should have a soldering iron with enough power doing this. My 40W soldering iron was definitely a bit too feeble. Another good tip is to use silicon cable whenever possible. Its easier to solder them because the cable coating doesn’t melt.
New landers: Claws

New landers: Claws


Landers and centerplate

Having good landers from start is also very convenient. Starting from grass is no problem, calibrating the acceleration sensor is easier too. I already wrote about my new centerplates. They look good and are very strong.

LED’s

Its easier to distinguish the front of the quadrocopter with colored LED’s. I planned to add LED’s to my first copter already, but because the power distribution was inflexible I desisted installing them. On my second copter I bought 3mm plugs to connect them, and also added a cable to the power distribution system.

by stefan at August 01, 2010 12:19 AM

July 25, 2010

Stefan Agner (stefan)

My first onboard Video

Recently I bought the nice GoPro HD digital camera. This week I mounted it the first time on my quadrocopter and flew around with it. But with the last battery the motor dissolved itself from its basement. Luckily my quadrocopter and the camera survived the crash without serious damage.


Onboard Video


By the way, I made this video using PiTiVi, which seems to evolve to a very easy to use video editor. The features are a bit limited at the moment, but there is much effort in the community improve this drawback.
I’m still working on my second quadrocopter. I decided to solve the current distribution better than I did at my first quadrocopter. I going to use a blank board with 70µm copper on each side. Each side has one pole and its mounted directly above the center plate.
There is also lot going on in the whole community: Two weeks ago the third NG UAVP Meeting took place in Zurich. We worked a lot on the new DCM based controller. Watch this footage from Robert. Also ludiwawa did the maiden flight of his Klappa Hexacopter.

by stefan at July 25, 2010 09:43 PM