<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Amir Guindehi&apos;s Blog</title>
    <link rel="alternate" type="text/html" href="http://amir.ch/weblog/" />
    <link rel="self" type="application/atom+xml" href="http://amir.ch/weblog/atom.xml" />
    <id>tag:amir.ch,2008-05-22:/weblog/3</id>
    <updated>2012-11-15T12:35:05Z</updated>
    <subtitle>Bits and pieces of my digital life...</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Open Source 4.1</generator>

<entry>
    <title>UAVP-NG: Mini-NG with 3D sensors, GPS on-board and NGblc-4mini </title>
    <link rel="alternate" type="text/html" href="http://amir.ch/weblog/2012/11/uavpng-the-new-mini-ng-with-3d-sensors-and-gps.html" />
    <id>tag:amir.ch,2012:/weblog//3.171</id>

    <published>2012-11-13T12:45:10Z</published>
    <updated>2012-11-15T12:35:05Z</updated>

    <summary>And again it&apos;s getting winter and I&apos;ve not updated my blog for too long. ;) Let&apos;s change that... At last year&apos;s 28c3 Chaos Communication Congress the UAVP-NG developer team succeeded to get (our back then brand new hardware) HW-0.23-mini-r0 airborne....</summary>
    <author>
        <name>Amir</name>
        <uri>http://amir.ch</uri>
    </author>
    
        <category term="UAVP-NG" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="29c3" label="29C3" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ccc" label="CCC" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ccccongress" label="CCC Congress" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="chaoscommunicationcongress" label="Chaos Communication Congress" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="hw023mini" label="HW-0.23-mini" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="hw024mini" label="HW-0.24-mini" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mining" label="Mini-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="multicopter" label="Multicopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="multikopter" label="Multikopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ng" label="NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ngblc" label="NGblc" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ngblc4mini" label="NGblc-4mini" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ngos" label="NGOS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadcopter" label="QuadCopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadrocopter" label="Quadrocopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavp" label="UAVP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavpng" label="UAVP-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="wolferlng" label="Wolferl-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://amir.ch/weblog/">
        <![CDATA[<p>And again it's getting winter and I've not updated my blog for too long. ;)<br />
Let's change that...</p>

<p>At last year's <a href="https://events.ccc.de/congress/2011/wiki/UAVP-NG">28c3 Chaos Communication Congress</a> the UAVP-NG developer team succeeded to get (our back then brand new hardware) HW-0.23-mini-r0 airborne. </p>

<p>The new hardware - designed by Volker and Ben, two of our NG developers - no longer contains analog sensor technology but instad uses modern 3D digital sensor chips. This gave enough room to include the GPS sensor on-board. We also designed a GPS antenna perfectly suited to be mounted on top of the flight control.</p>

<p><img src="http://amir.ch/weblog/extra/hw-0.23-mini-r0-200.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></p>

<p>In spring 2012 the 7. UAVP-NG Developer Meeting took place in Heidelberg. It was a great event - we were very lucky with the weather - and lot's of folks showed up. We all had a lot of fun and had great 4 days. Thanks to Volker & Ben again for making that great location available to us!</p>

<p><img src="http://amir.ch/weblog/extra/ng-dev-meeting7-gruppenbild1-400.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></p>

<center><embed type="application/x-shockwave-flash" src="https://picasaweb.google.com/s/c/bin/slideshow.swf" width="400" height="267" flashvars="host=picasaweb.google.com&hl=en_US&feat=flashalbum&RGB=0x000000&feed=https%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2F107670661178134463553%2Falbumid%2F5749780110221742257%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></center><br/>

<p>After <a href="https://events.ccc.de/congress/2011/wiki/UAVP-NG">28c3</a> Ralf, one of our NG developers, started designing the new NGblc-4mini-r0, a quad-BLC for small Mini-NGs. His first design was airborne in spring 2012. After testing serveral smaller design changes were done and a NGblc-4mini-r1 was produced and tested successfully.</p>

<p><img src="http://amir.ch/weblog/extra/NGblc-4mini-r0-400.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></p>

<p>Small changes in print and a footprint error resulted in a NGblc-4mini-r2 design which we will produce now and hope to have ready for the <a href="https://events.ccc.de/congress/2012/wiki/UAVP-NG">29c3</a> congress at the end of this year.</p>

<p>Besides that we started testing the new HW-0.23-mini-r0 in spring 2012 and we had to find out that the combined gyro/accelerometer called MPU6000 has a shortcoming: It only contains one filter set for both, the gyro and the accelerometer. As both sensor have opposing filter requirements in our application, we concluded that it would be nicer to have an additional accelerometer. </p>

<p>In our new hardware design HW-0.24-mini-r0 which we designed over summer 2012 we include a secondary additional footprint for a second (optional) accelerometer. We choose the proven accelerometer we used in previous designs. Furthermore we added a antenna PCB allowing everyone to build flight control sized GPS antennas perfectly suited to be mounted on top of the flight control.</p>

<p>HW-0.24-mini-r0 got airborne some weeks ago. Except for small textual fixes which we will incoperate in HW-0.24-mini-r1 everything worked out fine! We hope to have HW-0.24-mini-r1 with us for <a href="https://events.ccc.de/congress/2012/wiki/UAVP-NG">29c3</a>.</p>

<p><img src="http://amir.ch/weblog/extra/hw-0.24-mini-r0-300.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></p>

<p>As you can see the new HW-0.24-mini-r0 includes the flight control PCB, a GPS antenna PCB with the same size as the flight control, the Cam/RC controller PCB, an external compass PCB, a JTAG connector PCB and two push button PCB.</p>

<p>Besides all the above some of our developers took the time to design <a href="http://ng.uavp.ch/moin/Documentation/NGlight">NGlight</a>, a small I2C peripherial devices to the flight controll allowing control of 16 PWM LED channels for control of RGB leds. It allows you to control different colors of 5 RGB LEDs while choosing the color in a range of 0.255 for each of the 5x 3 RGB channels.</p>

<p>Last but not least I should mention our UAVP-NG assembly at the <a href="https://events.ccc.de/congress/2012/wiki/UAVP-NG">29c3 Chaos Communication Congress 2012</a> in Hamburg. If you live near Hamburg feel free to visit us from 26.12.2012 to 30.12.2012 at the congress!<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>UAVP-NG @ 28C3 - Chaos Communication Congress 2011</title>
    <link rel="alternate" type="text/html" href="http://amir.ch/weblog/2011/12/uavp-ng-at-28c3-chaos-communication-congress-2011.html" />
    <id>tag:amir.ch,2011:/weblog//3.170</id>

    <published>2011-12-20T17:25:20Z</published>
    <updated>2011-12-23T21:30:25Z</updated>

    <summary>It&apos;s winter again and I did not update my blog for half a year. Evil me. Let&apos;s change this... Let me start with this summer&apos;s CCC Camp, which was a great event and everybody who joined us in the UAVP-Village...</summary>
    <author>
        <name>Amir</name>
        <uri>http://amir.ch</uri>
    </author>
    
        <category term="UAVP-NG" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="28c3" label="28C3" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ccc" label="CCC" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ccccongress" label="CCC Congress" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="chaoscommunicationcongress" label="Chaos Communication Congress" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="hw022mini" label="HW-0.22-mini" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="hw023mini" label="HW-0.23-mini" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mining" label="Mini-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="multicopter" label="Multicopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="multikopter" label="Multikopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ng" label="NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ngos" label="NGOS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadcopter" label="QuadCopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadrocopter" label="Quadrocopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavp" label="UAVP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavpng" label="UAVP-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="wolferlng" label="Wolferl-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://amir.ch/weblog/">
        <![CDATA[<p>It's winter again and I did not update my blog for half a year. Evil me. Let's change this...</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/ccc-camp-banner-600.html" onclick="window.open('http://amir.ch/weblog/images/ccc-camp-banner-600.html','popup','width=828,height=621,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/ccc-camp-banner-600.png" width="600" height="78" alt="CCC Camp 2011" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>Let me start with <strong><a href="http://events.ccc.de/camp/2011/wiki/UAVP-NG-Village">this summer's CCC Camp</a></strong>, 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 <strong><a href="https://plus.google.com/photos/107670661178134463553/albums/5642682580363724945">here</a></strong>, then you will find some pictures of the event.</p>

<p>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.</p>

<p>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.</p>

<p>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 <strong><a href="http://ng.uavp.ch/moin/Documentation/DSL#How_to_use_ACT_M-Bus_Telemetry">here</a></strong>, in the extensive NGOS documentation.</p>

<p>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. </p>

<p>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. </p>

<p><strong><a href="http://ng.uavp.ch/moin/Development/Protocol/NGCTRL2">NGCTRL2</a></strong> 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.</p>

<p>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.</p>

<p>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.</p>

<p>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.</p>

<p>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:</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/qngctrl-map24.html" onclick="window.open('http://amir.ch/weblog/images/qngctrl-map24.html','popup','width=828,height=621,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/qngctrl-map24-small.png" width="400" height="418" alt="Qngctrl" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>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.</p>

<p>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.</p>

<p>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.</p>

<p>Currently everybody is preparing and packing for the <strong><a href="http://events.ccc.de/congress/2011/wiki/UAVP-NG">28C3, this years Chaos Communication Congress in Berlin</a></strong> where we will participate as every year.</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/ng-uavp-28c3-behind-enemy-lines-banner.html" onclick="window.open('http://amir.ch/weblog/images/ng-uavp-28c3-behind-enemy-lines-banner.html','popup','width=828,height=621,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/ng-uavp-28c3-behind-enemy-lines-banner-500.png" width="500" height="86" alt="Qngctrl" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>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.</p>

<p>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. </p>

<p>28C3, we're incoming... ;)<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>UAVP-NG @ Chaos Communication Camp 2011</title>
    <link rel="alternate" type="text/html" href="http://amir.ch/weblog/2011/07/uavp-ng-at-chaos-communication-camp-2011.html" />
    <id>tag:amir.ch,2011:/weblog//3.169</id>

    <published>2011-07-23T18:05:19Z</published>
    <updated>2011-07-23T19:38:13Z</updated>

    <summary>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...</summary>
    <author>
        <name>Amir</name>
        <uri>http://amir.ch</uri>
    </author>
    
        <category term="UAVP-NG" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="ccc" label="CCC" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ccccamp" label="CCC Camp" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="chaoscommunicationcamp" label="Chaos Communication Camp" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="hw022mini" label="HW-0.22-mini" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mining" label="Mini-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="multicopter" label="Multicopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="multikopter" label="Multikopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ng" label="NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ngos" label="NGOS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadcopter" label="QuadCopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadrocopter" label="Quadrocopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavp" label="UAVP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavpng" label="UAVP-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="wolferlng" label="Wolferl-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://amir.ch/weblog/">
        <![CDATA[<p>The time is near... <strong><a href="http://events.ccc.de/camp/2011/">The Chaos Communication Camp 2011</a></strong> will start the 10th August and continue until the 14th August in Finowfurt near Berlin, Germany Europe, Earth, Milkyway!</p>

<blockquote>
<object width="500" height="281"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=26738592&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=26738592&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="281"></embed></object>
<p><a href="http://vimeo.com/26738592">Chaos Communication Camp 2011 Trailer</a> from <a href="http://vimeo.com/epunk">elektropunk</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
</blockquote>

<p> <strong><a href="http://events.ccc.de/camp/2011/">The Chaos Communication Camp 2011</a></strong> 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!</p>

<p>Make sure to join us in the <b><a href="http://events.ccc.de/camp/2011/wiki/UAVP-NG-Village">UAVP-NG Village</a></b> at the Chaos Communication Camp 2011 in Finowfurt!<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>UAVP-NG: Taarek&apos;s first pirouettes</title>
    <link rel="alternate" type="text/html" href="http://amir.ch/weblog/2011/06/uavpng-taareks-first-pirouette.html" />
    <id>tag:amir.ch,2011:/weblog//3.168</id>

    <published>2011-06-29T17:40:16Z</published>
    <updated>2011-06-29T18:08:02Z</updated>

    <summary>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...</summary>
    <author>
        <name>Amir</name>
        <uri>http://amir.ch</uri>
    </author>
    
        <category term="UAVP-NG" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="hw022mini" label="HW-0.22-mini" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mining" label="Mini-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="multicopter" label="Multicopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="multikopter" label="Multikopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ng" label="NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ngos" label="NGOS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadcopter" label="QuadCopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadrocopter" label="Quadrocopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavp" label="UAVP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavpng" label="UAVP-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="wolferlng" label="Wolferl-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://amir.ch/weblog/">
        <![CDATA[<p>Hi all!</p>

<p>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. </p>

<p>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... ;)</p>

<p>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:</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/amir-mini-ng-ready2.html" onclick="window.open('http://amir.ch/weblog/images/amir-mini-ng-ready2.html','popup','width=1936,height=1968,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/amir-mini-ng-ready2-thumb-400x406.jpg" width="400" height="406" alt="amir-mini-ng-ready2.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>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... ;)</p>

<blockquote>
<object width="500" height="375"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=25713790&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=25713790&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="375"></embed></object><p><a href="http://vimeo.com/25713790">UAVP-NG - The OS Multicopter: Taarek's first pirouettes</a> from <a href="http://vimeo.com/ng">Amir Guindehi</a> on <a href="http://vimeo.com">Vimeo</a>.</p><p>These are Taarek's first pirouttes flown with my brand new Mini-NG</p></blockquote>

<p>Best regards!<br />
- Amir</p>]]>
        
    </content>
</entry>

<entry>
    <title>UAVP-NG: Size comparision NG / Mini-NG</title>
    <link rel="alternate" type="text/html" href="http://amir.ch/weblog/2011/06/uavp-ng-size-comparision-ng-mini-ng.html" />
    <id>tag:amir.ch,2011:/weblog//3.167</id>

    <published>2011-06-28T13:14:32Z</published>
    <updated>2011-06-28T13:19:24Z</updated>

    <summary>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): Cheers! - Amir...</summary>
    <author>
        <name>Amir</name>
        <uri>http://amir.ch</uri>
    </author>
    
        <category term="UAVP-NG" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="hw022mini" label="HW-0.22-mini" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mining" label="Mini-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="multicopter" label="Multicopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="multikopter" label="Multikopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ng" label="NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ngos" label="NGOS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadcopter" label="QuadCopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadrocopter" label="Quadrocopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavp" label="UAVP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavpng" label="UAVP-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="wolferlng" label="Wolferl-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://amir.ch/weblog/">
        <![CDATA[<p>Hi all,</p>

<p>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):</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/Mini-NG-size-comparision.html" onclick="window.open('http://amir.ch/weblog/images/Mini-NG-size-comparision.html','popup','width=828,height=621,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/Mini-NG-size-comparision-thumb-400x300.jpg" width="400" height="300" alt="Mini-NG-size-comparision.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>Cheers!<br />
- Amir<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>UAVP-NG: The 5. NG Developer Meeting in Heidelberg</title>
    <link rel="alternate" type="text/html" href="http://amir.ch/weblog/2011/06/uavpng-the-5-ng-developer-meet.html" />
    <id>tag:amir.ch,2011:/weblog//3.166</id>

    <published>2011-06-28T10:08:30Z</published>
    <updated>2011-06-29T18:06:31Z</updated>

    <summary>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...</summary>
    <author>
        <name>Amir</name>
        <uri>http://amir.ch</uri>
    </author>
    
        <category term="UAVP-NG" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="heidelberg" label="Heidelberg" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="hw022mini" label="HW-0.22-mini" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mining" label="Mini-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="multicopter" label="Multicopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="multikopter" label="Multikopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ng" label="NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ngmeeting" label="NG Meeting" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ngos" label="NGOS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadcopter" label="QuadCopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadrocopter" label="Quadrocopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavp" label="UAVP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavpng" label="UAVP-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="wolferlng" label="Wolferl-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://amir.ch/weblog/">
        <![CDATA[<p>Hello everybody!</p>

<p>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.</p>

<p>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.</p>

<blockquote>
<object width="500" height="375"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=24543336&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=24543336&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="375"></embed></object><p><a href="http://vimeo.com/24543336">UAVP-NG - The OS Multicopter: 5. Developer Meeting in Heidelberg</a> from <a href="http://vimeo.com/ng">Amir Guindehi</a> on <a href="http://vimeo.com">Vimeo</a>.</p><p>This is a summary movie of the 5. NG Developer Meeting in Heidelberg, which took place the 27./28./29. May 2011</p>
</blockquote>

<blockquote>
<object width="500" height="281"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=25349892&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=25349892&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="281"></embed></object><p><a href="http://vimeo.com/25349892">NG UAVP Meeting Heidelberg</a> from <a href="http://vimeo.com/robo1">Rob Robot</a> on <a href="http://vimeo.com">Vimeo</a>.</p><p>Short Movie of the NG UAVP Meeting in Heidelberg Germany from 27 to 29th May 2011</p>
</blockquote>

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

<p>Best regards!<br />
- Amir<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>UAVP-NG: A fully assembled UAVP Mini-NG</title>
    <link rel="alternate" type="text/html" href="http://amir.ch/weblog/2011/05/uavpng-a-fully-assembled-uavp.html" />
    <id>tag:amir.ch,2011:/weblog//3.165</id>

    <published>2011-05-30T12:46:32Z</published>
    <updated>2011-05-30T13:09:06Z</updated>

    <summary>Hi guys, Timo did some very nice shots of an fully assembled Mini-NG, which I could not let you miss: Cheers! - Amir...</summary>
    <author>
        <name>Amir</name>
        <uri>http://amir.ch</uri>
    </author>
    
        <category term="UAVP-NG" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="hw022mini" label="HW-0.22-mini" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="multikopter" label="Multikopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ng" label="NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ngos" label="NGOS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadcopter" label="QuadCopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadrocopter" label="Quadrocopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavp" label="UAVP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavpng" label="UAVP-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="wolferlng" label="Wolferl-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://amir.ch/weblog/">
        <![CDATA[<p>Hi guys,</p>

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

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/mini-ng-fullyassembled-spida.html" onclick="window.open('http://amir.ch/weblog/images/mini-ng-fullyassembled-spida.html','popup','width=1100,height=986,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/mini-ng-fullyassembled-spida-thumb-400x358.jpg" width="400" height="358" alt="mini-ng-fullyassembled-spida.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p><br />
Cheers!<br />
- Amir<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>UAVP-NG: The new Mini-NG - a full NG on 5.5x5.5cm</title>
    <link rel="alternate" type="text/html" href="http://amir.ch/weblog/2011/03/uavpng-the-new-mini-ng.html" />
    <id>tag:amir.ch,2011:/weblog//3.164</id>

    <published>2011-03-22T11:47:39Z</published>
    <updated>2011-05-30T13:07:13Z</updated>

    <summary>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...</summary>
    <author>
        <name>Amir</name>
        <uri>http://amir.ch</uri>
    </author>
    
        <category term="UAVP-NG" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="hw022mini" label="HW-0.22-mini" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="multikopter" label="Multikopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ng" label="NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ngos" label="NGOS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadcopter" label="QuadCopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadrocopter" label="Quadrocopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavp" label="UAVP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavpng" label="UAVP-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="wolferlng" label="Wolferl-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://amir.ch/weblog/">
        <![CDATA[<p>Hello everybody!</p>

<p>It has been a while since my last post, again. In the meantime we survived winter and had a lot of fun at the <a href="http://events.ccc.de/congress/2010/wiki/index.php/UAVP-NG">27c3, the yearly CCC Congress in Berlin</a>. </p>

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

<p><strong>The new Mini-NG hardware has arrived!</strong></p>

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

<p>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.</p>

<p>Here are the first shots of the PCBs...</p>

<p>Top side:</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMGP2097-cropped.html" onclick="window.open('http://amir.ch/weblog/images/IMGP2097-cropped.html','popup','width=2171,height=1185,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMGP2097-cropped-thumb-400x218.jpg" width="400" height="218" alt="HW-0.22-mini-top.JPG" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>And bottom side:</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMGP2101-cropped.html" onclick="window.open('http://amir.ch/weblog/images/IMGP2101-cropped.html','popup','width=1992,height=1114,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMGP2101-cropped-thumb-400x223.jpg" width="400" height="223" alt="HW-0.22-mini-bottom.JPG" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>Next, we will test the new PCBs and should everything work out, we will make them available in the <a href="http://ng.uavp.ch/shop">NG Shop</a>. 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. </p>

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

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

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/HW-0.22-mini-assembled.html" onclick="window.open('http://amir.ch/weblog/images/HW-0.22-mini-assembled.html','popup','width=1050,height=789,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/HW-0.22-mini-assembled-thumb-400x300.jpg" width="400" height="300" alt="HW-0.22-mini-assembled.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

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

<p>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 <a href="http://ng.uavp.ch/shop">NG Shop</a>. </p>

<p>Check the <a href="http://ng.uavp.ch/forum">NG Forum</a> for Project News on that.</p>

<p>Cheers!<br />
- Amir<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>UAVP-NG:  Source code release of NGOS - The NG Operating System</title>
    <link rel="alternate" type="text/html" href="http://amir.ch/weblog/2011/01/uavp-ng-source-code-release-of-ngos.html" />
    <id>tag:amir.ch,2011:/weblog//3.163</id>

    <published>2011-01-07T04:02:15Z</published>
    <updated>2011-02-08T10:29:06Z</updated>

    <summary> 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!...</summary>
    <author>
        <name>Amir</name>
        <uri>http://amir.ch</uri>
    </author>
    
        <category term="UAVP-NG" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="multikopter" label="Multikopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ng" label="NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ngos" label="NGOS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadcopter" label="QuadCopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadrocopter" label="Quadrocopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="release" label="Release" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="sourcecode" label="Source Code" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavp" label="UAVP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavpng" label="UAVP-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="wolferlng" label="Wolferl-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://amir.ch/weblog/">
        <![CDATA[<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="NG-badge.png" src="http://amir.ch/weblog/images/NG-UAVP-badge.png" width="96" height="96" class="mt-image-left" style="float: left; margin: 0 20px 20px 0;" /></span></p>

<p><big><em>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.</em></big></p>

<p>Check out the UAVP-NG homepage for more informations!</p>

<p><br/><strong>Official binaries: </strong><br />
               <br />
 * http://ng.uavp.ch/moin/Download</p>

<p><strong>Release source code repository:</strong></p>

<p> * https://pub.uavp.ch/svn/releases</p>

<p><strong>List of supported platforms:</strong></p>

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

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/uavp-ng-flang-clean-small-6001.html" onclick="window.open('http://amir.ch/weblog/uavp-ng-flang-clean-small-6001.html','popup','width=600,height=540,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/uavp-ng-flang-clean-small-600-thumb-400x360.jpg" width="400" height="360" alt="uavp-ng-flang-clean-small-600.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p><strong>The Beginning</strong></p>

<p>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.</p>

<p>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.</p>

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

<p><strong>Our Goal</strong></p>

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

<p><strong>The Story</strong></p>

<p>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.</p>

<p>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.</p>

<p>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...  ;) </p>

<p><strong>The Design Principles</strong></p>

<p>The design principles of the NG project are simple:</p>

<p>  "Complexity, modularity and encapsulation where performance allows it, simplicity and directness where performance requires it."</p>

<p>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. </p>

<p><strong>The Key Features</strong></p>

<p>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.</p>

<p>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. </p>

<p>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... ;)</p>

<p>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.</p>

<p>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.</p>

<p>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.</p>

<p>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.</p>

<p>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.</p>

<p><strong>The NGOS</strong></p>

<p>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.</p>

<p><strong>The Developers and Users</strong></p>

<p>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.</p>

<p>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.</p>

<p><strong>The Catch ;) </strong></p>

<p>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.</p>

<p>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... ;)</p>

<p><strong>Your Contribution</strong></p>

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

<p><strong>Thanks</strong></p>

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

<ul>
	<li>Markus Bechtold <markusbec@dev.uavp.ch></li>
	<li>Michael Buhr <mbuhr@dev.uavp.ch></li>
	<li>Axel Burri <axel@dev.uavp.ch></li>
	<li>Patrick Schmid <patrick@dev.uavp.ch></li>
	<li>Nabil Sayegh <nabil@dev.uavp.ch></li>
	<li>Ralf Hager <ralf@dev.uavp.ch></li>
	<li>Stefan Agner <stefan@dev.uavp.ch></li>
	<li>Tim Pambor <tim@dev.uavp.ch></li>
	<li>Nabil Sayegh <nabil@dev.uavp.ch></li>
</ul>

<p>Also special thanks goes to Wolfgang Mahringer <wolfgang@dev.uavp.ch> who built the original UAVP and infected many of us with the multicopter virus and to Bernd Richter <bernd@dev.uavp.ch> who infected us with a lot of new ideas and who was a great source of information and knowledge to us.</p>

<p><strong>The Spirit</strong></p>

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

<p>Best regards!<br />
- Amir Guindehi <amir@datacore.ch> & The NG Team <headdevs@ng.uavp.ch><br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>UAVP-NG: HW Release, Shop, DCM, GPS &amp; Developer Meeting</title>
    <link rel="alternate" type="text/html" href="http://amir.ch/weblog/2010/08/uavpng-dcm-gps-developer-meeting.html" />
    <id>tag:amir.ch,2010:/weblog//3.162</id>

    <published>2010-08-03T09:10:07Z</published>
    <updated>2010-08-16T16:54:28Z</updated>

    <summary> 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...</summary>
    <author>
        <name>Amir</name>
        <uri>http://amir.ch</uri>
    </author>
    
        <category term="UAVP-NG" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="dcm" label="DCM" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gps" label="GPS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="hw022" label="HW-0.22" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="multikopter" label="Multikopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ng" label="NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ngos" label="NGOS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ph" label="PH" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadcopter" label="QuadCopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadrocopter" label="Quadrocopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavp" label="UAVP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavpng" label="UAVP-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="wolferlng" label="Wolferl-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://amir.ch/weblog/">
        <![CDATA[<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="NG-badge.png" src="http://amir.ch/weblog/images/NG-UAVP-badge.png" width="96" height="96" class="mt-image-left" style="float: left; margin: 0 20px 20px 0;" /></span></p>

<p>Hi everyone,</p>

<p>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.</p>

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

<p>On the 26. December of 2009, the first day of the <a href="http://events.ccc.de/congress/2009/wiki/index.php/UAVP-NG">26c3 - The 26. Chaos Computer Club Congress</a> - we opened up the project's non-profit <a href="http://ng.uavp.ch/shop">UAVP-NG shop</a> 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. </p>

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

<p>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 <a href="http://www.acteurope.de/">ACT</a> which Ralf and I implemented in spring.</p>

<p>In the meantime I pondered some new papers I've read on the <strong>DCM - The Direction Cosine Matrix</strong> 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. </p>

<p>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. </p>

<p>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.  </p>

<p>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.</p>

<p>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.</p>

<p>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...</p>

<p>As you probably know a linear Kalman filter is a optimal solution if, and <strong>only if</strong>, 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).</p>

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

<p>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. </p>

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

<p>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:</p>

<p><object width="500" height="375"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=12610445&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=12610445&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="375"></embed></object><p><a href="http://vimeo.com/12610445">UAVP-NG - The OS Multicopter: DCM Maidenflight</a> from <a href="http://vimeo.com/ng">Amir Guindehi</a> on <a href="http://vimeo.com">Vimeo</a>.</p></p>

<p>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. </p>

<p>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...</p>

<p>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:</p>

<p><object width="500" height="375"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=12839234&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=12839234&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="375"></embed></object><p><a href="http://vimeo.com/12839234">UAVP-NG - The OS Multicopter: First GPS Position Hold Flight</a> from <a href="http://vimeo.com/ng">Amir Guindehi</a> on <a href="http://vimeo.com">Vimeo</a>.</p> </p>

<p>Again we use 3 linear Kalman filters to fuse acc accelerations and GPS position. </p>

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

<p>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... :)</p>

<p><embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="600" height="400" flashvars="host=picasaweb.google.com&hl=en_US&feat=flashalbum&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fguindehi%2Falbumid%2F5493911797199126865%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed><br />
<p><a href="http://picasaweb.google.com/guindehi/UAVPNG3NGDeveloperMeetingInZurich?feat=flashalbum#slideshow/5493911838872643970">UAVP-NG - 3. Developer Meeting in Zuerich on the 9/10/11. July 2010</a> on Picasa</p></p>

<p>Rob's movie:</p>

<p><object width="500" height="281"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=13249563&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=13249563&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="281"></embed></object><p><a href="http://vimeo.com/13249563">3. NG Developer Treffen</a> from <a href="http://vimeo.com/robo1">Rob Robot</a> on <a href="http://vimeo.com">Vimeo</a>.</p></p>

<p>And Ygramul's movie:</p>

<p><object width="500" height="281"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=13279719&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=13279719&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="281"></embed></object><p><a href="http://vimeo.com/13279719">NG Treff 2010 in ZÃ¼rich</a> from <a href="http://vimeo.com/ygramul">Ygramul</a> on <a href="http://vimeo.com">Vimeo</a>.</p></p>

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

<p>So, I hope I got all the News out... ;) </p>

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

<p>Cheers!<br />
- Amir<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>UAVP-NG: Hardware 0.22 has arrived - Public HW release is imminent!</title>
    <link rel="alternate" type="text/html" href="http://amir.ch/weblog/2009/11/uavp-ng-hardware-0-22-has-arrived.html" />
    <id>tag:amir.ch,2009:/weblog//3.161</id>

    <published>2009-11-26T18:05:28Z</published>
    <updated>2011-03-22T12:04:28Z</updated>

    <summary> Hi everyone, It seems I only find time to blog about the NG when new hardware arrives! You will find more about the new hardware below. At first, I would like to tell your what happened since my last...</summary>
    <author>
        <name>Amir</name>
        <uri>http://amir.ch</uri>
    </author>
    
        <category term="UAVP-NG" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="hw022" label="HW-0.22" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="multikopter" label="Multikopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ngos" label="NGOS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadcopter" label="QuadCopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadrocopter" label="Quadrocopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavp" label="UAVP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavpng" label="UAVP-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="wolferlng" label="Wolferl-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://amir.ch/weblog/">
        <![CDATA[<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="NG-badge.png" src="http://amir.ch/weblog/images/NG-UAVP-badge.png" width="96" height="96" class="mt-image-left" style="float: left; margin: 0 20px 20px 0;" /></span></p>

<p>Hi everyone,</p>

<p>It seems I only find time to blog about the NG when new hardware arrives!
You will find more about the new hardware below.</p>

<p>At first, I would like to tell your what happened since my last post from mid sommer! We were busy developing the NGOS further and we succeeded in supporting most parts of the hardware!</p>

<p>This means our RC-Controller now has control over the two DSL inputs and the sum-signal input. This also means we are now fully supporting up to 4 DSL receivers and two times sum-signal input for RC control. This will allow all forms of diversity, teacher/student as well as channel extension up to 4 times the number of channels you normally may have.</p>

<p>Furthermore the new RC-Controller firmware receives attitude data from the Flight Control's Kalman filters and uses it to do <strong>Servo Attitude Compensation</strong> for Pitch and Roll. </p>

<p>We implemented two servo operation modes, one where servo attitude compensation is done on servo 1+2 and servos 3-5 are available for other things, and another where the Flight Control has full control over all 5 servo channels. This will allow us to implement different Hardware Abstraction Layers (HALs) which not only use I2C actors but also those needing servo control like airplanes and helicopters. </p>

<p>Our SB-Controller firmware was completed as well. It now supports the MicroMag3 3-axis magnetic compass. To do that, it receives regularly attitude data from the Flight Control, uses it to do compass attitude compensation and then delivers the result to the Flight Control.</p>

<p>Looking at the device table on the Flight Control we now see this:</p>

<pre class="shell">
# show devices

Detected devices:

  Addr  Bus     Description

  0x16  I2C0    Atmel 644P RC/Comm Controller
  0x18  I2C0    Atmel 328P SB Controller
  0x02  ADC12   ADXR/MLX MEMS Gyroscope 12bit (nick)
  0x01  ADC12   ADXR/MLX MEMS Gyroscope 12bit (roll)
  0x00  ADC12   ADXR/MLX MEMS Gyroscope 12bit (yaw)
  0x00  SPI0    LIS3LV02DQ 3-Axis Accelerometer
  0x02  SPI0    ADS1255 24bit Analog Digital Converter
  0x03  SPI0    AD7924 12bit Analog Digital Converter
  0x00  SBCTRL  MicroMag 3 Magnetic Compass
  0x01  RCCTRL  ACT DSL Receiver 0
  0x02  RCCTRL  ACT DSL Receiver 1
</pre>

<p>As you can see all our newly supported devices pop up, even those attached to peripherial CPUs. I had no actors attached, so it's normal that they do not show up.</p>

<p>These peripherial CPUs implement a new protocol called <strong>NGPP - The NG Peripherial Protocol</strong>. </p>

<p>NGPP represents a register based store/load framework allowing direct memory access on the slave devices. It's possible to implement it on most physical character based interfaces, which allowed us to implement it on top of I2C and which will allow us to use it on other serial devices like the UART. Those of you knowing the MODBUS protocol will recognize a lot of similarities.</p>

<p>NGPP is able to issue several read/write requests within one cycle. It's also able to read or write multiple sequential registers in one request allowing for a very efficient data transfer between slave device and host. Currently the NGPP implementation is built on top of our I2C physical layer, which by itself is a task based framework able to run several "state machine tasks" sequentially allowing NGPP to queue requests and get notified when the finish.</p>

<p>The RC-Controller as well as the SB-Controller both use the NGPP a lot to transfer data between slave and host devices several times per cycle.</p>

<p>Current RC- and SB-Controller NGPP statistics look like this:</p>

<pre class="shell">
    NGPP RCctrl read:      16 ticks/100 cycle   (max:   17, ngpp overrun 0)
    NGPP RCctrl write:      5 ticks/100 cycle   (max:    6, ngpp overrun 0)
    NGPP RCctrl read:      66 bytes/100 cycle   (max:   76)
    NGPP RCctrl write:     41 bytes/100 cycle   (max:   45)
</pre>

<pre class="shell">
    NGPP SBctrl read:       6 ticks/100 cycle   (max:    7, ngpp overrun 0)
    NGPP SBctrl write:      5 ticks/100 cycle   (max:    6, ngpp overrun 0)
    NGPP SBctrl read:      11 bytes/100 cycle   (max:   13)
    NGPP SBctrl write:     31 bytes/100 cycle   (max:   36)
</pre>

<p>As you can read from the above statistics data, we have no problems in transfering the needed amount of data. Since NGPP requests can be issued during the whole closed-loop cycle as well as from any user space context (meaning the shells and their associated processes) we are free to model our code according to our needs. </p>

<p>We can access the registers directly from any Flight Control shell:</p>

<pre class="shell">
# show ngpp sbctrl

NGPP sb-ctrl registers:

  sb.devices          1
  sb.nick            57
  sb.roll           -35
  sb.mag.x          -67
  sb.mag.y           21
  sb.mag.z          335
  sb.heading       3164
  sb.test1           42
  sb.test2           43
</pre>

<p>And set them directly if they have a read-write flag:</p>

<pre class="shell">
# set sb.test1 44

NGPP: wrote sb-ctrl register 7 value:     44
</pre>

<p>To demonstrate the cooperation of the three CPUs in our distributed system, I made a small movie showing Servo Attitude Compensation:</p>

<p><object width="500" height="375"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7684982&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=7684982&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="375"></embed></object><p><a href="http://vimeo.com/7684982">UAVP NG - The OS Multicopter: Servo Attitude Compensation</a> from <a href="http://vimeo.com/ng">Amir Guindehi</a> on <a href="http://vimeo.com">Vimeo</a>.</p></p>

<p>After having implemented support for most hardware devices on the new NG, our hardware developers also produced a new revision of the NG PCB boards. </p>

<p>The newest revision is called HW-0.22 and is a pure bug fix revision as all 0.2x versions were. The next feature revision will be HW-0.30 on which brainstorming and work already has begun.</p>

<p><strong>We received the new boards today!</strong></p>

<p>Here are the first pictures of the new HW-0.22:</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/uavp-ng-hw-0.22-packet.html" onclick="window.open('http://amir.ch/weblog/images/uavp-ng-hw-0.22-packet.html','popup','width=2304,height=3072,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/uavp-ng-hw-0.22-packet-thumb-188x250.jpg" width="188" height="250" alt="uavp-ng-hw-0.22-packet.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>Opening the packet and looking inside it seems that the boards look fine:</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/uavp-ng-hw-0.22-top.html" onclick="window.open('http://amir.ch/weblog/images/uavp-ng-hw-0.22-top.html','popup','width=3072,height=2304,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/uavp-ng-hw-0.22-top-thumb-400x300.jpg" width="400" height="300" alt="uavp-ng-hw-0.22-top.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/uavp-ng-hw-0.22-bottom.html" onclick="window.open('http://amir.ch/weblog/images/uavp-ng-hw-0.22-bottom.html','popup','width=3072,height=2304,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/uavp-ng-hw-0.22-bottom-thumb-400x300.jpg" width="400" height="300" alt="uavp-ng-hw-0.22-bottom.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>We also received a separate panel containing the 7 breakout boards which we will include with each HW-0.22 board!</p>

<p>We now have six accompanying MLX and ADXR610 gyro breakout boards (three of each) as well as a LISL breakout board:</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/uavp-ng-hw-0.22-breakout-top.html" onclick="window.open('http://amir.ch/weblog/images/uavp-ng-hw-0.22-breakout-top.html','popup','width=3072,height=2304,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/uavp-ng-hw-0.22-breakout-top-thumb-400x300.jpg" width="400" height="300" alt="uavp-ng-hw-0.22-breakout-top.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>A set of these 7 breakout boards will be included with each FC+SB PCB set.</p>

<p>We will start to investigate the new hardware and should everything be in order, we will release them to the broad public. Be sure to check our homepage in the next days.</p>

<p><strong>We will open up the new UAVP-NG Shop soon!</strong></p>

<p>Stay tuned!</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Helengeli: Mantas, Sharks and Walesharks</title>
    <link rel="alternate" type="text/html" href="http://amir.ch/weblog/2009/07/helengeli-mantas-sharks-and-walesharks.html" />
    <id>tag:amir.ch,2009:/weblog//3.160</id>

    <published>2009-07-29T08:49:33Z</published>
    <updated>2009-07-29T23:20:42Z</updated>

    <summary>Hello everyone! I&apos;m once again back from hollidays! My girlfrend and I went to Helengeli, that&apos;s a small island on the Maldives in the North-Male atoll. To give you a small impression of the island... this is how Helengeli looks...</summary>
    <author>
        <name>Amir</name>
        <uri>http://amir.ch</uri>
    </author>
    
        <category term="Diving" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="helengeli" label="Helengeli" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="holiday" label="holiday" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="maldives" label="Maldives" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="malediven" label="Malediven" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="manta" label="manta" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="scubadiving" label="Scuba diving" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="shark" label="shark" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="waleshark" label="waleshark" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="whitetipsharks" label="white tip sharks" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://amir.ch/weblog/">
        <![CDATA[<p>Hello everyone!</p>

<p>I'm once again back from hollidays! My girlfrend and I went to Helengeli, that's a small island on the Maldives in the North-Male atoll. </p>

<p>To give you a small impression of the island... this is how Helengeli looks from above:</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/helengeli06-023.html" onclick="window.open('http://amir.ch/weblog/images/helengeli06-023.html','popup','width=600,height=400,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/helengeli06-023-thumb-400x266.jpg" width="400" height="266" alt="Helengeli.from.top.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>Helengeli really is a nice place to stay. It's a wonderfull marvel of a classical Maldivian island with a lot of trees and bushes and wonderfull clear beach with white sand and blue water.</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/helengeli06-003.html" onclick="window.open('http://amir.ch/weblog/images/helengeli06-003.html','popup','width=998,height=500,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/helengeli06-003-thumb-400x200.jpg" width="400" height="200" alt="Helengeli-Beach.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/helengeli06-036.html" onclick="window.open('http://amir.ch/weblog/images/helengeli06-036.html','popup','width=998,height=450,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/helengeli06-036-thumb-400x180.jpg" width="400" height="180" alt="Helengeli-Sand.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>This is a small plan of the Helengeli island itself:</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/helengeli-map.html" onclick="window.open('http://amir.ch/weblog/images/helengeli-map.html','popup','width=798,height=525,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/helengeli-map-thumb-400x263.png" width="400" height="263" alt="Helengeli-Map.png" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>My brother already visited the island some years ago and he told me that it's a nice place for diving! Staying in the hotel managed by Manta Reisen, we visited the <a href="http://www.oceanpro-diveteam.com/german/helengeli.html">Ocean Pro Dive Center</a> there and went diving for 12 days. </p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/helengeli06-006.html" onclick="window.open('http://amir.ch/weblog/images/helengeli06-006.html','popup','width=998,height=450,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/helengeli06-006-thumb-400x180.jpg" width="400" height="180" alt="Helengeli-OceanPro.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>The dive center manager is called Uwe. He's a very experienced diver who knows the place and the sea very well and he was able to show us really nice places!</p>

<p>I should not forget to mention Line, Manja and Gio, all dive guides of the Ocean Pro dive center, who organized the dive excursions besides Uwe. Line was with us when we all saw our first waleshark...<br />
... but let's start at the beginning.</p>

<p>When we arrived we were quite tilt. Neighter Kathrin nor I could really sleep in the plane and so we were up for 30 hours or so. First thing we did was to check in everywhere and then drop dead to bed. </p>

<p>The next day and the following two days we did some refresher dives where we did not see a lot of stuff. I have to mention that I had a new dive computer with me, an UWATEC Gallileo, which i wanted to test during the hollidays. It lit up like a christmas tree under water... ;) </p>

<p>Luckily I had my old dive computer with me as well and so I was able to dive as always using my old one while exploring the new and shiny one which shows so much more information under water that you're simply confused at first... :D </p>

<p>Anyway, after some dives I had found out that I needed to activate Profile Dependend Intermediate Stops but change the air integration to accept 30 bar as reserve for the Remaining Bottom Time calculation instad of calculating with a 80 bar reserve, which I anyway don't have and don't want. Having changed that, it suddenly was quite a lot of fun to have beats per minutes of your own heart, remaining bottom time approximation, microbubble protection and profile dependant intermediate stops. It also plots very nice profile graphs overlayed with bpm or temperature at which you can look live under water. It would even support multi-gas features like adaptive microbubble predictive multi-gas algorithms but that's nothing I can use atm. since you need to have multiple tanks with different gases for that.</p>

<p>Here's a small map of the dive spots around Helengeli (the upper right part):</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/oceanprodivemap.html" onclick="window.open('http://amir.ch/weblog/images/oceanprodivemap.html','popup','width=775,height=630,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/oceanprodivemap-thumb-400x325.jpg" width="400" height="325" alt="OceanPro-divemap.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>Anyway... having mastered the new computer and having made some easy dives we started off for Bodu Thila, a dive place near Helengeli where some current has to be expected. Now, to be true... it was a lot more than some current and having never experienced that much current under water, using up my air in exorbitant rate, I aborted the dive and Kathrin and I came up after 19min, which probably is our shortest dive ever... :) </p>

<p>Needless to say that my girlfriend performed more than great and was not half as stressed as I was... *hide* Kathrin is starting to become a really experienced diver!</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMG2758-kathrin-small.html" onclick="window.open('http://amir.ch/weblog/images/IMG2758-kathrin-small.html','popup','width=1280,height=960,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMG2758-kathrin-small-thumb-400x300.jpg" width="400" height="300" alt="IMG2758-kathrin-small.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>After that crazy dive at Bodu Thila, everything started to normalize. And from then on we had wonderful dives! Check out these nice corals:</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMG2719-corals-small.html" onclick="window.open('http://amir.ch/weblog/images/IMG2719-corals-small.html','popup','width=1280,height=960,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMG2719-corals-small-thumb-400x300.jpg" width="400" height="300" alt="IMG2719-corals-small.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>Sometime in the first week we finally visited Farytale. That's a place where Mantas can be found often in this time of the year. And we were lucky! More than 6 animals came by in the time we digged us in on the ground and we had wonderful 74 minutes under water!</p>

<p>I made as many pictures as possible...<br />
... at first we only saw them from afar...</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMG2777-manta1-small.html" onclick="window.open('http://amir.ch/weblog/images/IMG2777-manta1-small.html','popup','width=1280,height=960,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMG2777-manta1-small-thumb-400x300.jpg" width="400" height="300" alt="IMG2777-manta1-small.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span> </p>

<p>Then more near...</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMG2781-manta2-small.html" onclick="window.open('http://amir.ch/weblog/images/IMG2781-manta2-small.html','popup','width=1280,height=960,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMG2781-manta2-small-thumb-400x300.jpg" width="400" height="300" alt="IMG2781-manta2-small.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>But then the next ones flew directly over our heads...</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMG2782-manta3-small.html" onclick="window.open('http://amir.ch/weblog/images/IMG2782-manta3-small.html','popup','width=1280,height=960,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMG2782-manta3-small-thumb-400x300.jpg" width="400" height="300" alt="IMG2782-manta3-small.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>And you won't belive it, there came more and more of the huge animals...</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMG2783-manta4-small.html" onclick="window.open('http://amir.ch/weblog/images/IMG2783-manta4-small.html','popup','width=1280,height=960,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMG2783-manta4-small-thumb-400x300.jpg" width="400" height="300" alt="IMG2783-manta4-small.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>And they did not shy in any form... </p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMG2784-manta5-small.html" onclick="window.open('http://amir.ch/weblog/images/IMG2784-manta5-small.html','popup','width=768,height=1024,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMG2784-manta5-small-thumb-400x533.jpg" width="400" height="533" alt="IMG2784-manta5-small.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>But behaved, as if they own the sky, the land and the sea... </p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMG2785-manta6-small.html" onclick="window.open('http://amir.ch/weblog/images/IMG2785-manta6-small.html','popup','width=1280,height=960,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMG2785-manta6-small-thumb-400x300.jpg" width="400" height="300" alt="IMG2785-manta6-small.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>... and nothing on earth could ever change that!</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMG2788-manta7-small.html" onclick="window.open('http://amir.ch/weblog/images/IMG2788-manta7-small.html','popup','width=1280,height=960,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMG2788-manta7-small-thumb-400x300.jpg" width="400" height="300" alt="IMG2788-manta7-small.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMG2789-manta8-small.html" onclick="window.open('http://amir.ch/weblog/images/IMG2789-manta8-small.html','popup','width=1280,height=960,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMG2789-manta8-small-thumb-400x300.jpg" width="400" height="300" alt="IMG2789-manta8-small.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMG2790-manta9-small.html" onclick="window.open('http://amir.ch/weblog/images/IMG2790-manta9-small.html','popup','width=1280,height=960,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMG2790-manta9-small-thumb-400x300.jpg" width="400" height="300" alt="IMG2790-manta9-small.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMG2791-manta10-small.html" onclick="window.open('http://amir.ch/weblog/images/IMG2791-manta10-small.html','popup','width=1280,height=960,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMG2791-manta10-small-thumb-400x300.jpg" width="400" height="300" alt="IMG2791-manta10-small.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>It was great! Can't say more... simply great, great, great... ;)</p>

<p>When we visited the place a second time, two days later, we did not find the mantas again. On the other hand we swam into a pack of White Tip Sharks hunting on the reeftop we were drifting over. The pack consisted of 6 very active hunting White Tip Sharks, which swam around us for more than a minute! </p>

<p>Some days later we visited the Trix Caves. Another famous dive spot, where big open caves are carved into the 40m deep dropoff at the outer reef. Here's a picture where I look from the Trix Caves out into the blue, where we saw a Waleshark some minutes after I made this picture!</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMG2843-trixcave1-small.html" onclick="window.open('http://amir.ch/weblog/images/IMG2843-trixcave1-small.html','popup','width=1280,height=960,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMG2843-trixcave1-small-thumb-400x300.jpg" width="400" height="300" alt="IMG2843-trixcave1-small.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>Directly out of the blue you see in the above picture a gigant 7-8m long waleshark appeared, swam parallel to us for some seconds and then disappeared again into the blue again! You can't belive how shocked we all were, suddenly seeing such a huge monster (it looks very shark-like!) appear out of the blue!</p>

<p>Our guide - it was Line on this day - did not yet have seen a waleshark near Helengeli eigther and was very happy when it suddenly happed! This is how she looked afterwards... do you see how exhilarated she was? ;) We all looked similar...</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMG2857-line-small.html" onclick="window.open('http://amir.ch/weblog/images/IMG2857-line-small.html','popup','width=1280,height=960,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMG2857-line-small-thumb-400x300.jpg" width="400" height="300" alt="IMG2857-line-small.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>And I should not forget to mention that we saw two Spotted Eagle ray immediately after the waleshark... we could not belive our luck!</p>

<p>Kathrin had loaned a lamp in the dive center and had a lot of fun exploring the Trix Caves with it! There are so many colors down there, if you only have light to show them! It's like Alice's wonderland... you just have to open it up with a light-thrower... ;)</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMG2861-trixcave2-small.html" onclick="window.open('http://amir.ch/weblog/images/IMG2861-trixcave2-small.html','popup','width=1280,height=960,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMG2861-trixcave2-small-thumb-400x300.jpg" width="400" height="300" alt="IMG2861-trixcave2-small.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>Kathrin also found her first slug by herself! And I even was able to make a picture of the second one she found! It's a Wart Slug becoming up to 7cm in size!</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMG2892-cropped.html" onclick="window.open('http://amir.ch/weblog/images/IMG2892-cropped.html','popup','width=1286,height=964,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMG2892-cropped-thumb-400x299.jpg" width="400" height="299" alt="IMG2892-cropped.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>Some days later we finally were able to visit Bodu Thila a second time! This time the current was very easy and we saw several white tip sharks near the Thila...</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMG2930-shark1-small.html" onclick="window.open('http://amir.ch/weblog/images/IMG2930-shark1-small.html','popup','width=1280,height=960,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMG2930-shark1-small-thumb-400x300.jpg" width="400" height="300" alt="IMG2930-shark1-small.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>On the same dive we also saw a Yellow Spotted Burrfish, which looks very strange and nearly alien!</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMG2921-small.html" onclick="window.open('http://amir.ch/weblog/images/IMG2921-small.html','popup','width=1280,height=960,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMG2921-small-thumb-400x300.jpg" width="400" height="300" alt="IMG2921-small.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>On the third to last day we did another dive at Bodu Thila. This time we had a bit more current, but it was still easy going. No comparision to the first dive we did there. This time we found some more sharks...</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMG2923-shark2-small.html" onclick="window.open('http://amir.ch/weblog/images/IMG2923-shark2-small.html','popup','width=1280,height=960,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMG2923-shark2-small-thumb-400x300.jpg" width="400" height="300" alt="IMG2923-shark2-small.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span> </p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMG2925-shark3-small.html" onclick="window.open('http://amir.ch/weblog/images/IMG2925-shark3-small.html','popup','width=1280,height=960,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMG2925-shark3-small-thumb-400x300.jpg" width="400" height="300" alt="IMG2925-shark3-small.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMG2930-shark4-small.html" onclick="window.open('http://amir.ch/weblog/images/IMG2930-shark4-small.html','popup','width=1146,height=1531,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMG2930-shark4-small-thumb-400x534.jpg" width="400" height="534" alt="IMG2930-shark4-small.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>All in all it were wonderful hollidays and we had a lot of fun! We saw nearly everything we wanted to see and some of it even in abundance! </p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMG2938-goatfish-small.html" onclick="window.open('http://amir.ch/weblog/images/IMG2938-goatfish-small.html','popup','width=1280,height=960,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMG2938-goatfish-small-thumb-400x300.jpg" width="400" height="300" alt="IMG2938-goatfish-small.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>The new dive computer also performed very well and if it would not be so expensive (it costs EUR2000 with all sensors) I probably would buy one for myself. Let's see if I can simply loan it, next time I go diving...</p>

<p>Let's hope it does not take long until we find the time for the next dive hollidays! <br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>UAVP-NG: Hardware Abstraction Layer</title>
    <link rel="alternate" type="text/html" href="http://amir.ch/weblog/2009/06/uavpng-hardware-abstraction-layer.html" />
    <id>tag:amir.ch,2009:/weblog//3.159</id>

    <published>2009-06-25T15:29:29Z</published>
    <updated>2009-06-27T16:30:46Z</updated>

    <summary> I should blog about our new Hardware Abstraction Layer for a long time now and having written an article about the new HW-0.21 just before, I decided not to stop and to describe our new feature just now. As...</summary>
    <author>
        <name>Amir</name>
        <uri>http://amir.ch</uri>
    </author>
    
        <category term="UAVP-NG" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="hal" label="HAL" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="hw021" label="HW-0.21" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="multikopter" label="Multikopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ng" label="NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ng021" label="NG-0.21" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadcopter" label="QuadCopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadrocopter" label="Quadrocopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavp" label="UAVP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavpng" label="UAVP-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="wolferlng" label="Wolferl-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://amir.ch/weblog/">
        <![CDATA[<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="NG-badge.png" src="http://amir.ch/weblog/images/NG-UAVP-badge.png" width="96" height="96" class="mt-image-left" style="float: left; margin: 0 20px 20px 0;" /></span></p>

<p>I should blog about our new Hardware Abstraction Layer for a long time now and having written an article about the new HW-0.21 just before, I decided not to stop and to describe our new feature just now.</p>

<p>As you all know, Multikopter get built in all different forms and sizes. Trough one problem remains: As soon as you change the motor / propeller geometry, you have to change the closed-loop control to incooperate the new dimensions and positions of your motors and propellers.</p>

<p><strong>This is about to change!</strong></p>

<p>The new NGOS essentially partitions closed-loop control and physical motor / propeller geometry. That means that the output of the controller code in the NGOS no longer contains direct motor actor values but only corrections on pitch, roll and yaw axes. A new API layer called HAL (hardware abstraction layer) encapsulates the physical motor / propeller configuration. The API layer is kept very simple and essentially implements how a correction on a corresponding axis has to be executed by the motors. </p>

<p>The current NGOS implements HAL as abstract modules separate for the controller code. So essentially all controllers can be flown with all HALs. </p>

<p>We currently have implemented the following HALs:</p>

<ul>
<li><b>Quadcopter HAL</b><br/>Essentially the good old quadcopter you all know and love</li>
<li><b>QuadcopterX HAL</b><br/>The good old quadcopter turned by 45 degrees to fly in X-Mode</li>
<li><b>QuadcopterR HAL</b><br/> The normal quadcopter HAL, just in reverse</li>
<li><b>Y6 HAL</b><br/>The Y6 HAL to fly Tri-Coaxial multicopters</li>
</ul> 

<p>Arbitrary new HALs can be implemented by adding a simple HAL module containg two simple functions to the source code.</p>

<p>On the NGOS side of things this looks like this:</p>

<pre class="shell">
# show hal

Current HAL: quadcopter

    HAL Id:                    1
    HAL Description:           The classical 4 rotor QuadCopter HAL
    HAL Quality:               proven

    Needed number of actors:   4
    Detected number of actors: 4

    Motor 1: front
    Motor 2: back
    Motor 3: right
    Motor 4: left

Description:

This is the classical 4 rotor (non-cross) QuadCopter HAL. It allows
to fly a classical QuadCopter with a front, back, left and right motor.

Current HAL configuration:

  HW.HAL     quadcopter          HW abstraction layer
</pre>

<p>Switching to a Y6-HAL is as simple as entering the command "set HW.HAL Y6", which I did for this demonstration.
This results in the following output on inspection:</p>

<pre class="shell">
# show hal

Current HAL: Y6

    HAL Id:                    4
    HAL Description:           The Y6 Hexakopter HAL
    HAL Quality:               flying

    Needed number of actors:   6
    Detected number of actors: 4

    Motor 1: front-left_up
    Motor 2: front-right-up
    Motor 3: back-up
    Motor 4: front-left-down
    Motor 5: front-right-down
    Motor 6: back-down

Description:

This is the new Y6 HAL in normal mode. It allows to fly a Y6 hexacopter.
You need to attach front-left up/down, front-right up/down and back up/down motors.

Current HAL configuration:

  HW.HAL              Y6                  HW abstraction layer

  HAL.fact.top        1.00000000          Throttle factor for top layer
  HAL.fact.bottom     1.10000000          Throttle factor for bottom layer
</pre>

<p>As you can see, every HAL describes how their actors how to be mounted, what the actor addesses are, how many of them there have to be and how many of them have been detected. The NGOS won't let you start the actors if there have not been detected enough actors for the current HAL. Every HAL can have HAL-dependant parameters. As you can see above the Y6-HAL defines two parameters which allow the user to define the throttle factors for the lower and upper prop-layer.</p>

<p>I think I forgot to mention till now that we can switch between different HALs in-flight? Yes, it's true! Since the HALs are totaly independant from the closed-loop controllers, we are able to change them using behavior rules whenever we like.</p>

<p>You don't belive me? Then check out the following small movies...</p>

<p>In this first movie, I switch between the normal Quadcopter-HAL and the QuacopterX-HAL (x-mode) while flying:</p>

<p><object width="500" height="375"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4032110&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=4032110&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="375"></embed></object><p><a href="http://vimeo.com/4032110">UAVP-NG - The OS Multicopter: In-Flight switch between +-Mode and x-Mode</a> from <a href="http://vimeo.com/ng">Amir Guindehi</a> on <a href="http://vimeo.com">Vimeo</a>.</p></p>

<p>In the next movie I switch between the normal Quadcopter-HAL and the QuadcopterR-HAL (reverse-mode) while flying:</p>

<p><object width="500" height="375"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4081653&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=4081653&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="375"></embed></object><p><a href="http://vimeo.com/4081653">UAVP-NG - The OS Multicopter: In-Flight switch between +-Mode and Reverse-Mode</a> from <a href="http://vimeo.com/ng">Amir Guindehi</a> on <a href="http://vimeo.com">Vimeo</a>.</p></p>

<p>In this last movie Markus, a friend of mine, demonstrates his new Y6-NG flying using the Y6-HAL he implemented (and I have to mention: He's no programmer himself!):</p>

<p><object width="500" height="375"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4887314&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=4887314&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="375"></embed></object><p><a href="http://vimeo.com/4887314">MY new NG.Y6</a> from <a href="http://vimeo.com/user1821745">MarkusBec</a> on <a href="http://vimeo.com">Vimeo</a>.</p></p>

<p>As you can see the new HAL concept performs very well and seems capable of implementing very different HALs. I imagine we could have a Helicopter-HAL or even a Robot-HAL! Current HALs are able to use up to 16 actors.</p>

<p>I will tell you more about other features in my next blog entry...</p>
]]>
        

    </content>
</entry>

<entry>
    <title>UAVP-NG: Hardware 0.21 has arrived</title>
    <link rel="alternate" type="text/html" href="http://amir.ch/weblog/2009/06/uavp-ng-hardware-0-21-has-arrived.html" />
    <id>tag:amir.ch,2009:/weblog//3.158</id>

    <published>2009-06-25T09:20:41Z</published>
    <updated>2009-06-25T17:15:39Z</updated>

    <summary> Sorry guys, I never found the time to update my blog with the newest developments! Hopefully this will change again... It&apos;s time to revive this blog! There was a lot of stuff going on behind the scenes. Our hardware...</summary>
    <author>
        <name>Amir</name>
        <uri>http://amir.ch</uri>
    </author>
    
        <category term="UAVP-NG" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="hw021" label="HW-0.21" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="multicopter" label="Multicopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ng" label="NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="panel" label="panel" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadcopter" label="QuadCopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadrocopter" label="Quadrocopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavp" label="UAVP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavpng" label="UAVP-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="wolferlng" label="Wolferl-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://amir.ch/weblog/">
        <![CDATA[<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="NG-badge.png" src="http://amir.ch/weblog/images/NG-UAVP-badge.png" width="96" height="96" class="mt-image-left" style="float: left; margin: 0 20px 20px 0;" /></span></p>

<p>Sorry guys, I never found the time to update my blog with the newest developments! </p>

<p>Hopefully this will change again...</p>

<p>It's time to revive this blog!</p>

<p><br/><br />
There was a lot of stuff going on behind the scenes. Our hardware developers designed the next hardware revision 0.21. And our software developers extended the NGOS in the meantime with a lot of new features like a Hardware Abstraction Layer (HAL) to support arbitrary propeller configurations and up to 16 motors, PT1 compensation, a new framework for our peripherial processors, the NG Peripherial Protocol (NGPP) and more. I will write separate blog entries in the near future describing them...</p>

<p>Anyway... today's News is: <strong>The new hardware 0.21 has arrived!</strong> </p>

<p>These hopefully will be the final prototypes which - when everything checks out - will then be produced for the masses.</p>

<p>Here are some first pictures of the packet I received today...</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMGP0944.html" onclick="window.open('http://amir.ch/weblog/images/IMGP0944.html','popup','width=3072,height=2304,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMGP0944-thumb-400x300.jpg" width="400" height="300" alt="FedEx-0.21.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMGP0948.html" onclick="window.open('http://amir.ch/weblog/images/IMGP0948.html','popup','width=3072,height=2304,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMGP0948-thumb-400x300.jpg" width="400" height="300" alt="hw-0.21-pack.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/IMGP0953.html" onclick="window.open('http://amir.ch/weblog/images/IMGP0953.html','popup','width=3072,height=2304,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/IMGP0953-thumb-400x300.jpg" width="400" height="300" alt="hw-0.21.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>The boards look great!</p>

<p>We will test them out ASAP and order more if they perform to our expectations...<br />
... expect the new hardware available to the public within several weeks!<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>UAVP-NG @ 25c3: Axis decoupling, User/System/IRQ mode &amp; exception handlers</title>
    <link rel="alternate" type="text/html" href="http://amir.ch/weblog/2009/01/uavp-ng25c3-axis-decoupling-system-mode-and-exceptions.html" />
    <id>tag:amir.ch,2009:/weblog//3.157</id>

    <published>2009-01-01T11:50:47Z</published>
    <updated>2009-01-05T14:44:17Z</updated>

    <summary>We are back from the 25c3 - The 25. Chaos Computer Club Congress in Berlin. This years CCC Congress took place in Berlin at the BCC Congress Center from december 27 to 30. Some of the NG developers joined the...</summary>
    <author>
        <name>Amir</name>
        <uri>http://amir.ch</uri>
    </author>
    
        <category term="UAVP-NG" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="25c3" label="25c3" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ccc" label="CCC" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="convention" label="Convention" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="hw020" label="HW-0.20" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ng" label="NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ng020" label="NG-0.20" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadcopter" label="QuadCopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="quadrocopter" label="Quadrocopter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavp" label="UAVP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uavpng" label="UAVP-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="wolferlng" label="Wolferl-NG" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://amir.ch/weblog/">
        <![CDATA[<p>We are back from the <a href="http://events.ccc.de/congress/2008/wiki/Main_Page">25c3</a> - The 25. Chaos Computer Club Congress in Berlin. </p>

<p>This years <a href="http://ccc.de/">CCC Congress</a> took place in Berlin at the BCC Congress Center from december 27 to 30. Some of the NG developers <a href="http://events.ccc.de/congress/2008/wiki/UAVP-NG">joined the congress</a> to present our project's work and to meet in person for a developer meeting with a  lot of hacking, talk and fun. </p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/imgp0747-small.html" onclick="window.open('http://amir.ch/weblog/images/imgp0747-small.html','popup','width=800,height=600,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://amir.ch/weblog/images/imgp0747-small-thumb-500x375.jpg" width="500" height="375" alt="NG@25c3.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>Besides the NG project folks from the <a href="http://events.ccc.de/congress/2008/wiki/Mikrokopter">MK project</a> as well as folks from <a href="http://events.ccc.de/congress/2008/wiki/Motodrone">Motodrone</a> were at the congress. I will tell you more about this further on.</p>

<p><strong>Axis de-coupling</strong></p>

<p>In the last days before the congress we finally found the time to look into axis decoupling.</p>

<p>Having had a big discussion with Tensor, a bright guy also hacking on IMU algorithms, who confirmed that my formulas were correct and who even showed me a new way to calculate them without hitting the poles of the formulas, I implemented the no-poles solution as well as the solution with poles in my NG controller. Short test flights in my living room showed no degradation in normal hoovering flight and further tests showed the big improvements the formulas brought with them.</p>

<p>Taarek and I did three small movies to demonstrate the new behavior!</p>

<p>The test is quite simple: Taarek shakes the NG around multiple axises at the same time and he does this using large angles. This makes sure that the integration without axis de-coupling will misbehave and the NG suddenly does no longer know where it's horizontal position is. After a while of forceful shaking Taarek let's the NG free so that it can take the position it thinks is horizontal. That's the moment one is able to see very good what the NG thinks to be horizontal.</p>

<p>In the first test, without axis de-coupling activated you  see the error very well. Furthermore you see how the Kalman filter corrects the quite heavy error within some seconds. That's one of the reasons we fix this so late...</p>

<p><object width="500" height="377"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2611228&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=2611228&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="377"></embed></object><br /><a href="http://vimeo.com/2611228">Wolferl-NG: HW-0.20 with NO axis decoupling</a> from <a href="http://vimeo.com/ng">Amir</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>In the following second and third test, we switched the axis de-coupling on. As you can see there is no visible error anymore.</p>

<p><object width="500" height="377"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2611348&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=2611348&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="377"></embed></object><br /><a href="http://vimeo.com/2611348">Wolferl-NG: HW-0.20 with ACTIVATED axis decoupling - part I</a> from <a href="http://vimeo.com/ng">Amir</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>In the following third test Taarek shakes the NG a while longer.</p>

<p><object width="500" height="377"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2611417&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=2611417&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="377"></embed></object><br /><a href="http://vimeo.com/2611417">Wolferl-NG: HW-0.20 with ACTIVATED axis decoupling - part II</a> from <a href="http://vimeo.com/ng">Amir</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>As you can see, this works out very well!</p>

<p><strong>25c3 flights</strong></p>

<p>We did several test flights in the living room (outside it's simply to cold) and it all performed well, so we did our flights at the <a href="http://events.ccc.de/congress/2008/wiki/Main_Page">25c3</a> all with activated axis de-coupling.</p>

<p>He's one of them, where I test our new kernel concept we implemented:</p>

<p><object width="549" height="309"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2684730&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=2684730&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="549" height="309"></embed></object><br /><a href="http://vimeo.com/2684730">UAVP-NG: 25c3 - CCC Congress in Berlin - OS Multicopter</a> from <a href="http://vimeo.com/ng">Amir</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>Here's another <a href="http://events.ccc.de/congress/2008/wiki/Main_Page">25c3</a> movie showing some flights our friends of the MK team did. I wouldn't let you miss those flights! Some of the MK pilots are very good and show off in the big conference room. The movie was created by Ingo (der_oschni) who seems to have missed everything pointing to the NG project. Can you spot us? ;)</p>

<p><object width="549" height="309"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2688706&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=2688706&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="549" height="309"></embed></object><br /><a href="http://vimeo.com/2688706">25C3 - CCC Mikrokopter in Berlin</a> from <a href="http://vimeo.com/oooschni">der oschni</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>All in all it was a very cool congress (as every year) with a lot of progress, talk and networking. Besides testing the new axis de-coupling one of our developers started digging the deeper magic of the ARM RISC CPU. </p>

<p><strong>User, System and IRQ mode: We have a real kernel now!</strong></p>

<p>Axel, as every year searching for a topic he can solve at the <a href="http://events.ccc.de/congress/2008/wiki/Main_Page">25c3</a> investigated our sensor and actor busses using his logic analyzer. In the progress of that, he discovered something which we were all aware of, but which started to bitch us as soon as we saw it printed on the screen!</p>

<p>Up to then our closed-loop control worked inside a  timer interrupt. Because that and because we do not do nested interrupts, all other operations cease to function until the closed-loop step has finished. This is not the best behavior in a system where Input/Output is only lightly coupled with processing. We specially want to use the ability to continue acquiring sensor data and to output actor control commands while we calculate the next step of the closed-loop control. </p>

<p>One of the solutions to that would be to use nested interrupts. Digging the internals of the ARM RISC CPU deeper, we remembered the different operating modes the ARM CPU can use! The ARM CPU has user, system as well as IRQ contexts. Privileged opcodes can't be used in user mode, which makes sure a user process will never switch uncontrolled to one of the other operating modes.</p>

<p>Having remembered these features we immediately saw the <strong>prefect</strong> solution: We move our non real time tasks into the user mode and let the timer interrupt, which executed our closed-loop control step until now, switch from IRQ to system context, enable nested interrupt and then execute the closed-loop control step. <strong>That way all interrupts are still able to interrupt the closed-loop control step!</strong> User context processes like our shells have to use system calls to get into the system context to use privileged opcodes.</p>

<p>Axel did great work and rewrote our NGOS through the <a href="http://events.ccc.de/congress/2008/wiki/Main_Page">25c3</a> according to these ideas. We now have all the above implemented and looking at the sensor and actor busses it all works now a lot smother! Actors and sensors get accessed while the closed-loop control step takes place and so our output/input/process closed-loop control can operate lightly coupled together with the IO drivers.</p>

<p>As you can see in the above movie, the NG flew wonderful using these changes, through no immediate differences in flight behavior were visible... as expected it did not change much, to handle the 1ms tick smother since 1000Hz are enough anyway for the closed-loop control.</p>

<p><strong>Exception handlers & crash logs</strong></p>

<p>Being hacking all this low-level stuff Axel implemented exception handlers for all exceptions. We now store the exception data in non-resettable memory and do a reset. That way we are able to log into the NG and check the crash-data should there ever be a exception! This works wonderful as well.</p>

<p><strong>Hardware Abstraction Layer</strong></p>

<p>Since this blog article starts to get very long, I will elaborate in my next article on our new Hardware Abstraction Layer (HAL) which allows us to use up to 16 motors in arbitrary physical configurations.<br />
</p>]]>
        
    </content>
</entry>

</feed>
