<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>Amir Guindehi&apos;s Blog</title>
        <link>http://amir.ch/weblog/</link>
        <description>Bits and pieces of my digital life...</description>
        <language>en</language>
        <copyright>Copyright 2010</copyright>
        <lastBuildDate>Tue, 03 Aug 2010 11:10:07 +0100</lastBuildDate>
        <generator>http://www.sixapart.com/movabletype/</generator>
        <docs>http://www.rssboard.org/rss-specification</docs>
        
        <item>
            <title>UAVP-NG: HW Release, Shop, DCM, GPS &amp; Developer Meeting</title>
            <description><![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>]]></description>
            <link>http://amir.ch/weblog/2010/08/uavpng-dcm-gps-developer-meeting.html</link>
            <guid>http://amir.ch/weblog/2010/08/uavpng-dcm-gps-developer-meeting.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">UAVP-NG</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">DCM</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">GPS</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">HW-0.22</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Multikopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">NG</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">NGOS</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">PH</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">QuadCopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Quadrocopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">UAVP</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">UAVP-NG</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Wolferl-NG</category>
            
            <pubDate>Tue, 03 Aug 2010 11:10:07 +0100</pubDate>
        </item>
        
        <item>
            <title>UAVP-NG: Hardware 0.22 has arrived - Public HW release is imminent!</title>
            <description><![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>
]]></description>
            <link>http://amir.ch/weblog/2009/11/uavp-ng-hardware-0-22-has-arrived.html</link>
            <guid>http://amir.ch/weblog/2009/11/uavp-ng-hardware-0-22-has-arrived.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">UAVP-NG</category>
            
            
            <pubDate>Thu, 26 Nov 2009 19:05:28 +0100</pubDate>
        </item>
        
        <item>
            <title>Helengeli: Mantas, Sharks and Walesharks</title>
            <description><![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>]]></description>
            <link>http://amir.ch/weblog/2009/07/helengeli-mantas-sharks-and-walesharks.html</link>
            <guid>http://amir.ch/weblog/2009/07/helengeli-mantas-sharks-and-walesharks.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Diving</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">Helengeli</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">holiday</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Maldives</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Malediven</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">manta</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Scuba diving</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">shark</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">waleshark</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">white tip sharks</category>
            
            <pubDate>Wed, 29 Jul 2009 10:49:33 +0100</pubDate>
        </item>
        
        <item>
            <title>UAVP-NG: Hardware Abstraction Layer</title>
            <description><![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>
]]></description>
            <link>http://amir.ch/weblog/2009/06/uavpng-hardware-abstraction-layer.html</link>
            <guid>http://amir.ch/weblog/2009/06/uavpng-hardware-abstraction-layer.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">UAVP-NG</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">HAL</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">HW-0.21</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Multikopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">NG</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">NG-0.21</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">QuadCopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Quadrocopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">UAVP</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">UAVP-NG</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Wolferl-NG</category>
            
            <pubDate>Thu, 25 Jun 2009 17:29:29 +0100</pubDate>
        </item>
        
        <item>
            <title>UAVP-NG: Hardware 0.21 has arrived</title>
            <description><![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>]]></description>
            <link>http://amir.ch/weblog/2009/06/uavp-ng-hardware-0-21-has-arrived.html</link>
            <guid>http://amir.ch/weblog/2009/06/uavp-ng-hardware-0-21-has-arrived.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">UAVP-NG</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">HW-0.21</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Multicopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">NG</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">panel</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">QuadCopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Quadrocopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">UAVP</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">UAVP-NG</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Wolferl-NG</category>
            
            <pubDate>Thu, 25 Jun 2009 11:20:41 +0100</pubDate>
        </item>
        
        <item>
            <title>UAVP-NG @ 25c3: Axis decoupling, User/System/IRQ mode &amp; exception handlers</title>
            <description><![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>]]></description>
            <link>http://amir.ch/weblog/2009/01/uavp-ng25c3-axis-decoupling-system-mode-and-exceptions.html</link>
            <guid>http://amir.ch/weblog/2009/01/uavp-ng25c3-axis-decoupling-system-mode-and-exceptions.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">UAVP-NG</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">25c3</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">CCC</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Convention</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">HW-0.20</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">NG</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">NG-0.20</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">QuadCopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Quadrocopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">UAVP</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">UAVP-NG</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Wolferl-NG</category>
            
            <pubDate>Thu, 01 Jan 2009 12:50:47 +0100</pubDate>
        </item>
        
        <item>
            <title>UAVP-NG: HW-0.20 ready for take-off (updated)</title>
            <description><![CDATA[<p>In my <a href="/weblog/2008/11/uavp-ng-hw-020-alpha-arrived.html">last blog entry</a> I presented our new HW-0.20 boards. Today I would like to show you our finished HW-0.20 prototype boards.</p>

<p>As you all know we were busy porting the NGOS from HW-0.10 to HW-0.20. A lot of design changes and new peripherals need to be supported while still being downward compatible to HW-0.10. </p>

<p>Being downward compatible allows us to release one HEX file for all existing hardware platforms. This is important since the planed Mini-NG will have a similar design as the HW-0.10. You don't need air pressure and GPS for mini Quads and Funflyers, so we will downsize the new design later on to a one-board design for fun flying.</p>

<p>The port of the NGOS is working fine and starts to support the new devices and different hardware platforms.</p>

<p>Here you can see how the NGOS detects the hardware platform it's running on:</p>

<pre class="shell"># show version

Wolferl-NG, Version 0.42 pre-beta (non-public), Revision r2352

FC HW-ID:  FC-0.20
SB HW-ID:  SB-0.20
</pre>

<p>In the next section you can see how the NGOS probed for the available devices and then activated their associated drivers:</p>

<pre class="shell"># show devices

Detected devices:

  Addr  Bus     Description

  0x02  ADC16   ADXRS MEMS Gyroscope 16bit (nick)
  0x03  ADC16   ADXRS MEMS Gyroscope 16bit (roll)
  0x00  ADC16   ADXRS MEMS Gyroscope 16bit (yaw)
  0x01  ADC16   ADXRS MEMS Temperature 16bit
  0x00  SPI0    LIS3LV02DQ 3-Axis Accelerometer
  0x02  SPI0    ADS1255 24bit Analog Digital Converter
</pre>

<p>As you can see, most of the new hardware gets already detected and used. The 16bit ADC does not yet show up in the device table (difficult to probe) but it's already getting used to sample the gyros.</p>

<p>The peripheral CPUs do not yet show eighter. Some of our developers are working hard on their firmware and we hope to integrate the peripheral CPUs soon. But there is no need to hurry with that. We are fully downward compatible and so we are able to fly even without support for the RC-controller or GPS-controller.</p>

<p>The new hardware was fully assembled in the meantime and it's current state looks like this:</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/NG-0.20-ready3-small.html" onclick="window.open('http://amir.ch/weblog/images/NG-0.20-ready3-small.html','popup','width=225,height=300,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-0.20-ready3-small-thumb-200x266.jpg" width="200" height="266" alt="NG-0.20-ready3.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span> </p>

<p>Since most of the NGOS now is ported to the new hardware and the new peripherals are supported now, we started to build a full Quadcopter with the new HW-0.20.</p>

<p>The first fully assembled NG-0.20 looks like this:</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/NG-0.20-ready2.html" onclick="window.open('http://amir.ch/weblog/images/NG-0.20-ready2.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/NG-0.20-ready2-thumb-400x300.jpg" width="400" height="300" alt="NG-0.20-ready2.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p><strong>Update:</strong></p>

<p>Tonight we did the maiden flight of the new NG-0.20! Everything went according to plans and except for a small sign error which we fixed within minutes, it all worked very well!</p>

<p>But see for yourself:</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=2476349&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=2476349&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><br /><a href="http://vimeo.com/2476349">Wolferl-NG: HW-0.20 is airborne!</a> from <a href="http://vimeo.com/ng">Amir</a> on <a href="http://vimeo.com">Vimeo</a>. </p>

<p>We will continue our test flights in the next days!</p>
]]></description>
            <link>http://amir.ch/weblog/2008/12/uavpng-hw-0-20-ready-for-takeoff.html</link>
            <guid>http://amir.ch/weblog/2008/12/uavpng-hw-0-20-ready-for-takeoff.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">UAVP-NG</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">HW-0.20</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">NG</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">NG-0.20</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">QuadCopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Quadrocopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">UAVP</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">UAVP-NG</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Wolferl-NG</category>
            
            <pubDate>Tue, 09 Dec 2008 11:41:32 +0100</pubDate>
        </item>
        
        <item>
            <title>UAVP-NG: Hardware 0.20 (alpha) has arrived :)</title>
            <description><![CDATA[<p>In <a href="http://amir.ch/weblog/2008/10/uavpng-first-alpha-boards.html">my last article</a> I introduced the new NG hardware 0.20 and showed first Gerber files of it. In the meanwhile our board producer was busy creating the new boards.</p>

<p><strong>Today the first prototype boards have arrived!</strong> But see for yourself...</p>

<p>The panel packet:</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/NG-HW-0.20-04.html" onclick="window.open('http://amir.ch/weblog/images/NG-HW-0.20-04.html','popup','width=2592,height=1944,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-HW-0.20-04-thumb-400x300.jpg" width="400" height="300" alt="NG-HW-0.20-04.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>The topside of the panel:</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/NG-HW-0.20-09.html" onclick="window.open('http://amir.ch/weblog/images/NG-HW-0.20-09.html','popup','width=2463,height=1035,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-HW-0.20-09-thumb-400x168.jpg" width="400" height="168" alt="NG-HW-0.20-09.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>And the backside of the panel:</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/NG-HW-0.20-10.html" onclick="window.open('http://amir.ch/weblog/images/NG-HW-0.20-10.html','popup','width=2214,height=921,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-HW-0.20-10-thumb-400x166.jpg" width="400" height="166" alt="NG-HW-0.20-10.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>The boards look great!  The next days will show how they perform!</p>]]></description>
            <link>http://amir.ch/weblog/2008/11/uavp-ng-hw-020-alpha-arrived.html</link>
            <guid>http://amir.ch/weblog/2008/11/uavp-ng-hw-020-alpha-arrived.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">UAVP-NG</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">HW-0.20</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">NG</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">panel</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">QuadCopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Quadrocopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">UAVP</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">UAVP-NG</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Wolferl-NG</category>
            
            <pubDate>Mon, 03 Nov 2008 17:44:59 +0100</pubDate>
        </item>
        
        <item>
            <title>UAVP-NG: First alpha boards of the new hardware</title>
            <description><![CDATA[<p>You probably all wondered why there was so little news in the last weeks. One reason was that I was on holidays. I was off for a week <a href="http://amir.ch/weblog/2008/10/elphinstone-oceanic-white-tip-sharks.html">to the Red Sea for diving</a>. The second reason was that everyone was very busy in the last days and weeks.</p>

<p>Since there was a lot of progress, but no time to document it all, I will blog here about it, without going into too much detail.</p>

<p>Our hardware developers were busy all the time and fiddled with the last design changes of the new NG hardware. It includes numerous fixes and extensions! They did smashing work redesigning the hardware 0.20! </p>

<p>In essence it has become a <strong>3 processor system using the LPC2148 as the main processor running the closed-loop control and having a Atmel 644p and a Atmel 168 as peripherial processors for preprocessing and communication purposes.</strong>The main CPU no longer does any measurements itself. It uses peripherial processors or external ADCs for that.</p>

<p>Besides 16bit ADC and new filters for the gyros, we included an air pressure sensor and a compass sensor in the new design. We will support ADXR and MLX gyros. The new hardware has 4 (or even 5) UARTs on different processors and will support the ACT DSL protocol on several of them. This will allow arbitrary ACT receivers (SPCM, PPM, 2.4Ghz) to work with the NG. Furthermore the UARTs will support the NMEA GPS protocoll besides the normal shell access and will allow to attach all sorts of NMEA compatible GPS to them.</p>

<p>In the last weeks our hardware developers cleaned up the new design and fixed the last bugs. They generated Gerber files and panelized them with the help of our board producer. </p>

<p>This week we finally were able to start production of our first alpha boards of the new hardware 0.20. If all goes well, we will receive the first prototypes within the next two weeks!</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/uavp-ng-hw-0.20.html" onclick="window.open('http://amir.ch/weblog/images/uavp-ng-hw-0.20.html','popup','width=448,height=203,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.20-thumb-400x181.png" width="400" height="181" alt="uavp-ng-hw-0.20.png" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>The above shows parts of the Gerber files of the two layer panel for the new hardware 0.20. It consists of a flight control board, a sensor board and four breakout boards for MLX gyros.</p>

<p>When we receive the new boards, the huge work of porting the old 0.10 software and writing new software for the additional processors can start.<br />
</p>]]></description>
            <link>http://amir.ch/weblog/2008/10/uavpng-first-alpha-boards.html</link>
            <guid>http://amir.ch/weblog/2008/10/uavpng-first-alpha-boards.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">UAVP-NG</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">HW-0.20</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">NG</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">panel</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">QuadCopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Quadrocopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">UAVP</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">UAVP-NG</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Wolferl-NG</category>
            
            <pubDate>Sat, 25 Oct 2008 02:13:44 +0100</pubDate>
        </item>
        
        <item>
            <title>Elphinstone: Oceanic white tip sharks!</title>
            <description><![CDATA[<p>Hello everyone!</p>

<p>I'm back from holidays! My girlfriend and I went to Marsa Alam at the Red Sea for a week. Staying at the Oasis Hotel, we visited the <a href="http://sinaidivers.com/sd/english/basis/oasis/oasis_index.htm">Sinaidivers dive center</a> there and went diving for 5 days.</p>

<p>On the first day I've meet Tim, an old friend from <a href="http://sinaidivers.com/sd/english/basis/village/village_index.htm">Sinaidivers in Sharm el Shaik</a>. He was doing holidays in Marsa Alam before we arrived and afterward helped out in the dive center for the next three weeks.</p>

<p>In the last three days we went two times to Elphinstone, a famous dive cite near Marsa Alam. Elphinstone is a Shaab, meaning an offshore reef near the coast of Marsa Alam just east of the Oasis hotel. It's a difficult dive site with the sea going down to 200m at all sides.</p>

<center>
<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;t=h&amp;s=AARTsJqQNsfRUZsglVyL8zjYDfFet-8ajg&amp;msa=0&amp;msid=111836139072240301893.0004599b3b14a0ebac45a&amp;ll=25.328511,34.769325&amp;spn=0.054306,0.072956&amp;z=13&amp;output=embed"></iframe><br /><small><a href="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;t=h&amp;msa=0&amp;msid=111836139072240301893.0004599b3b14a0ebac45a&amp;ll=25.328511,34.769325&amp;spn=0.054306,0.072956&amp;z=13&amp;source=embed" style="color:#0000FF;text-align:left">View Larger Map</a></small>
</center>

<p>In summer you can find a lot of Tiger sharks there. We hoped to see them, but sadly the season was already over and they left the reef. But we were lucky: In autumn the Oceanic White Tip shark season just began! </p>

<p>We were able to dive two times at the Elphinstone reef, each time reaching the reef by zodiac. Both time we did a marvelous dive at the reef and tried to spot the sharks. The first time we did not find them while diving, but coming back to the zodiac the sharks suddenly showed up! </p>

<p>They like stuff swimming at 5m or even at the surface of the sea. They are very intelligent and they like to investigate stuff swimming in their district. Being already in the zodiac and jumping back into the water, I forgot to bring my cam with me. Luckily Tim had his own cam with him and was able to record a small movie of the shark!</p>

<p>But look for yourself:</p>

<center>
<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=2006374&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=2006374&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><br /><a href="http://vimeo.com/2006374?pg=embed&amp;sec=2006374">Oceanic White Tip shark at the Elphinstone reef</a> from <a href="http://vimeo.com/ng?pg=embed&amp;sec=2006374">Amir</a> on <a href="http://vimeo.com?pg=embed&amp;sec=2006374">Vimeo</a>.
</center>

<p>Two days later we visited Elphinstone a second time by zodiac. This time we brought 15L tanks with us, giving us approximatly 50bar air more. This allowed us to do a 1h 15min dive! </p>

<p>Since we did not find the sharks on the west side of the reef the first time, we decided to jump in at to north tip and do a drift dive on the whole east side of the reef. Having 15L tanks allowed us to dive the whole length of the reef... it's quite long. We even had enough air to let us drift out into the blue for 15 minutes at the end of the reef!</p>

<p>We did not find the sharks at the east side of the reef the second time either, but having enough air with us we just drifted out into the blue staying at 5m while putting up a surface marker buoy to make sure no zodiac drives over our dive site. </p>

<p>It did not take long and the Oceanic White Tips found us! </p>

<p>At first a big one showed up in front of us, quite far away. We saw it for half a minute or so until it disappeared again into the blue. At the same time Michael, one of the divers accompanying us, spotted a second shark behind our back! The second one was a bit smaller and it seemed to us as if the first, big one tried to sidetrack our attention so that the attack of the second one succeeds! The second one came  as near as 3m or so and I was able to shoot some very very nice pictures of him!</p>

<p>Here it comes behind our back:</p>

<table align="center">
<tr><td>
<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/oceanic-white-tip3-clean.html" onclick="window.open('http://amir.ch/weblog/images/oceanic-white-tip3-clean.html','popup','width=530,height=744,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/oceanic-white-tip3-clean-thumb-200x280.jpg" width="200" height="280" alt="oceanic-white-tip3-clean.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span>
</td>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td>
<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/oceanic-white-tip4-clean.html" onclick="window.open('http://amir.ch/weblog/images/oceanic-white-tip4-clean.html','popup','width=699,height=979,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/oceanic-white-tip4-clean-thumb-200x280.jpg" width="200" height="280" alt="oceanic-white-tip4-clean.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span>
</td></tr>
</table>

<p>... just turns at our side:</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/ozeanic-white-tip1-cleanup3.html" onclick="window.open('http://amir.ch/weblog/images/ozeanic-white-tip1-cleanup3.html','popup','width=1224,height=575,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/ozeanic-white-tip1-cleanup3-thumb-400x187.png" width="400" height="187" alt="ozeanic-white-tip1-clean.png" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>... decides that we are no lunch:</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/ozeanic-white-tip2-cleanup1.html" onclick="window.open('http://amir.ch/weblog/images/ozeanic-white-tip2-cleanup1.html','popup','width=822,height=528,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/ozeanic-white-tip2-cleanup1-thumb-400x256.png" width="400" height="256" alt="ozeanic-white-tip2-clean.png" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>... and leaves again:</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/oceanic-white-tip5-clean.html" onclick="window.open('http://amir.ch/weblog/images/oceanic-white-tip5-clean.html','popup','width=862,height=616,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/oceanic-white-tip5-clean-thumb-400x285.jpg" width="400" height="285" alt="oceanic-white-tip5-clean.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>Be sure to notice the Pilot fishes at his side! Both swim behind the fins of the shark! That way they can keep away from its mouth. They do that as soon as they notice that the shark is hungry, to make sure not to become lunch! Furthermore both bust fins are pointed downwards which gives the shark maximum maneuverability when attacking. </p>

<p>Looks like it thought we could be a fine lunch and then decided against it when he was near. We were 5 divers near together so probably we seemed to big to attack to him.</p>

<p>I heard that two weeks ago a girl was not so lucky and an Oceanic White Tip took a bite of her arm while she was trying to get onto the zodiac. That's the most dangerous moment, when the diver is not paying attention and the sharks sees the most perfect prey pattern he's used too: penguins trying to get into an ice floe. But normally nothing happens if the divers are paying attention. One just should keep an eye on them and bang them on the nose if they get uncomfortable near you.</p>

<p>All in all it was a wonderful dive!<br />
</p>]]></description>
            <link>http://amir.ch/weblog/2008/10/elphinstone-oceanic-white-tip-sharks.html</link>
            <guid>http://amir.ch/weblog/2008/10/elphinstone-oceanic-white-tip-sharks.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Diving</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">Elphinstone</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">holiday</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Marsa Alam</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Oceanic White Tip</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Scuba diving</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">sharks</category>
            
            <pubDate>Sat, 18 Oct 2008 00:44:23 +0100</pubDate>
        </item>
        
        <item>
            <title>UAVP-NG: ACT DSL, Diversity &amp; Teacher/Student</title>
            <description><![CDATA[<p>Hello everybody!</p>

<p>You probably already <a href="http://forum.uavp.ch/viewtopic.php?t=1978">read about it in the forums</a>, but I thought I should write a nice blog article about it as well. Not everybody is digging the forums as troughly as we do... :)</p>

<p>We are now able to understand the proprietary DSL protocol of the RC receivers from <a href="http://www.acteurope.de">ACT</a>. This allows us to <strong>connect any receiver with a DSL interface</strong> to the NG. ACT produces great cheap and expensive PPM, PCM, SPCM and 2.4GHz receivers and most of them have a DSL interface. We can use all of them now! I've already ordered a SPCM receiver for myself... :)</p>

<p>To be able to test out the stuff, I've upgraded my NG to 1x sum signal + 1x DSL receiver, an ACT DSL8 to be exact. </p>

<p>My NG now looks like this:</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://amir.ch/weblog/images/uavp-ng-ready4diversity.html" onclick="window.open('http://amir.ch/weblog/images/uavp-ng-ready4diversity.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/assets_c/2008/08/uavp-ng-ready4diversity-thumb-200x266.jpg" width="200" height="266" alt="uavp-ng-ready4diversity.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></p>

<p>Software support for DSL was added to the NG firmware and the NG is now able to use DSL receivers on any of it's UARTs. Being able to parse the DSL protocoll, we now have the possibility to connect serveral rc receivers at the same time to the NG. The current NG is able to use up to 3 rc receivers that way (2x DSL + 1x sum signal). </p>

<p>We implemented Diversity and Teacher/Student functionality! Teacher/Student was implemented in two different forms. We have the "ts-switch" mode which allows the user to switch between teacher and student mode using a behavior rule which is a able to check for arbitrary conditions eg. buttons, changes on sticks... essentially any behavior condition implemented. On the other hand we have the "ts-mix" mode, which will continiously mix the teacher and student signals.</p>

<p>We used the Teacher/Student mode for our first FPV tests and it performed perfectly.</p>

<p>Using the Diversity features seems a bit more troublesome. If you would like to do frequency diversity (as I do), then you have the problem to get two identical signals on two different frequencies into the air. It seems that there are not many possibilities to do that... </p>

<p>ACT offers a double sender module allowing Graupner MC24, MC22 and Futaba RCs to be extended. Sadly the module works with two quartz crystals and has no 	synthesizer. Since I extended my MC22 with a synthesizer, I don't really like the idea to go back to quartz crystals. </p>

<p>Another possibility would be to use two RC controls and link them using the teacher/student features of the RC. Since normaly only the teacher rc is sending a signal this will need some fiddeling in the remote controll to be able to have both rc send the same signal on two frequencies at the same time.</p>

<p>As you see, there's a lot room for further experiments!<br />
</p>]]></description>
            <link>http://amir.ch/weblog/2008/08/uavpng-dsl-diversity-teacherst.html</link>
            <guid>http://amir.ch/weblog/2008/08/uavpng-dsl-diversity-teacherst.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">UAVP-NG</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">NG</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">QuadCopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Quadrocopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">UAVP</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">UAVP-NG</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Wolferl-NG</category>
            
            <pubDate>Sun, 31 Aug 2008 11:24:00 +0100</pubDate>
        </item>
        
        <item>
            <title>UAVP-NG: Flying circles</title>
            <description><![CDATA[<p>As NG developer I normally don't get round to fly very often (except for silly test-flights where you learn nothing), so my fly hour count is not yet that high. But after a year of testing and flying these things, something finally seems to have registered in my brain and I'm able to fly circles in front of me and around myself.</p>

<p>I would not let you miss the fun, so here it is, my latest flight! Be sure to note the flown circles... :)</p>

<p align="left"><object width="500" height="377">	<param name="allowfullscreen" value="true" />	<param name="allowscriptaccess" value="always" />	<param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1389201&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" />	<embed src="http://www.vimeo.com/moogaloop.swf?clip_id=1389201&amp;server=www.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://www.vimeo.com/1389201?pg=embed&sec=1389201">Wolferl-NG: Amir flying circles outdoors with his 38cm NG</a> from <a href="http://www.vimeo.com/ng?pg=embed&sec=1389201">Amir</a> on <a href="http://vimeo.com?pg=embed&sec=1389201">Vimeo</a>.</p>

<p>The <a href="http://forum.uavp.ch/upload/data/amir-flight-2008-07-22.kml">KML File</a> of the flight following this one is available <a href="http://forum.uavp.ch/upload/data/amir-flight-2008-07-22.kml">here</a>.</p>

<p>Update: Three days later I tried it again. This time I decided to fly even more circles. It seems to me that I'm slowly getting the hang on it! It starts to be real fun:</p>

<p align="left"><object width="500" height="377">	<param name="allowfullscreen" value="true" />	<param name="allowscriptaccess" value="always" />	<param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1407708&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" />	<embed src="http://www.vimeo.com/moogaloop.swf?clip_id=1407708&amp;server=www.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://www.vimeo.com/1407708?pg=embed&sec=1389201">Wolferl-NG: Circles, circles, circles</a> from <a href="http://www.vimeo.com/ng?pg=embed&sec=1407708">Amir</a> on <a href="http://vimeo.com?pg=embed&sec=1389201">Vimeo</a>.</p>]]></description>
            <link>http://amir.ch/weblog/2008/07/uavpng-flying-circles.html</link>
            <guid>http://amir.ch/weblog/2008/07/uavpng-flying-circles.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">UAVP-NG</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">NG</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">QuadCopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Quadrocopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">UAVP</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">UAVP-NG</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Wolferl-NG</category>
            
            <pubDate>Wed, 23 Jul 2008 16:18:21 +0100</pubDate>
        </item>
        
        <item>
            <title>UAVP-NG: GPS Tracking and KML files</title>
            <description><![CDATA[<p>Hello everybody,</p>

<p>I would like to let you have the latest News: <strong>The NG is able to use the GPS for tracking!</strong> </p>

<p>After having implemented the GPS NMEA parser some while ago I left the GPS beside because to use GPS for controlling you need a working compass. Since the compass of the current hardware revision is not really useable for that sort of thing, I never got round to use the GPS for something sensible.</p>

<p>Last week I suddently realized that even trough it's not possible to use the GPS for controlling purposes without a compass it surly is possible to use it for tracking! So I started hacking on the GPS tracking feature. I store the GPS positions in RAM and for that I reduce the 3 double precision floats to 6 byte. That way it's easy possible to store 1000 points in the free RAM.</p>

<p>I also implemented a small XML generator which directly outputs KML standard files which can be directly loaded in <a href="http://earth.google.com/">Google Earth</a>. Furthermore I wrote a new behavior action named gps.track() which takes one parameter telling it to switch it on or off. </p>

<p>Writing a behavior rule to switch on GPS tracking when reachin flightstate FLYING and a second rule to stop GPS tracking when leaving flightstate FLYING took another minute and was a two-liner in the NG console.</p>

<p>The first GPS tracking flight was done on the 11.July. You can download the KML file <a href="http://forum.uavp.ch/upload/data/amir-flight-2008-07-10-new.kml">here</a>.<br />
A second GPS tracking flight was done 4 days later:</p>

<p align="left"><object width="500" height="377">	<param name="allowfullscreen" value="true" />	<param name="allowscriptaccess" value="always" />	<param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1347134&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" />	<embed src="http://www.vimeo.com/moogaloop.swf?clip_id=1347134&amp;server=www.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://www.vimeo.com/1347134?pg=embed&sec=1347134">Wolferl-NG: Amir's maiden flight of his 38cm NG</a> from <a href="http://www.vimeo.com/ng?pg=embed&sec=1347134">Amir</a> on <a href="http://vimeo.com?pg=embed&sec=1347134">Vimeo</a>.</p>

<p>The KML file of a third flight which was done a day later is available <a href="http://forum.uavp.ch/upload/data/amir-flight-2008-07-16.kml">here</a>.</p>]]></description>
            <link>http://amir.ch/weblog/2008/07/uavpng-gps-tracking-and-kml.html</link>
            <guid>http://amir.ch/weblog/2008/07/uavpng-gps-tracking-and-kml.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">UAVP-NG</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">NG</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">QuadCopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Quadrocopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">UAVP</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">UAVP-NG</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Wolferl-NG</category>
            
            <pubDate>Thu, 17 Jul 2008 22:12:36 +0100</pubDate>
        </item>
        
        <item>
            <title>Beware of MarcusUAV!</title>
            <description><![CDATA[<p>... or better "About Modern UAV Sales Managers".</p>

<p>Being head developer of the <strong><a href="http://ng.uavp.ch">UAVP-NG project</a></strong> I receive a lot of emails. Some of them are really nice to read, some of them are questions easy to answer and some of them are question better not asked, because they were explained in detail over and over in the forums. </p>

<p>Sometimes I also receive emails from commercial UAV enterprises.</p>

<p>Yesterday I received an email I would like to share with you all. The Sales Manager of MarcusUAV contacted me and asked if we would  promote his product on our pages please. </p>

<p>I answered that I do not understand why we should promote a commercial UAV of unknown quality as we are a direct competitor to their market.</p>

<p>Now read for yourself how the <strong>MarcusUAV Sales Representative</strong> reacted to my answer:</p>

<p><small><blockquote><br />
Subject: Marcus UAV Greetings<br />
From: sales@marcusuav.com<br />
Date: Tue, June 24, 2008 2:46 am<br />
To: Amir Guindehi</p>

<p><br />
> Hi Corey,<br />
><br />
>> Hello, I am Corey Zeimen, Sales Manager from Marcus UAV. We are a<br />
>> manufacturer of UAV's for the civilian market.<br />
> Nice to hear from you.</p>

<p><strong>Go fuck yourself you douche bag.</strong></p>

<p>>> We would like to offer you a wholesale discount if you were to promote<br />
>> our website on your homepage.<br />
> I don't understand why we should be interested in promoting your UAV?</p>

<p>So somebody that wants to slam out a business can have a UAV shipped to them.</p>

<p>> We are developing an Open Source UAV ourselfes and we are a direct<br />
> competitor to your product. Our product will be free for everyone.</p>

<p><strong>Oh yea? Send us one of your planes to sample</strong></p>

<p>>> This discount is very large, and you stand to make a substantial profit<br />
>> from even one UAV sale.<br />
> We are not interested in profit.</p>

<p><strong>Can I borrow $1000?</strong></p>

<p>>> A link exchange can also be made possible.<br />
>> We can discuss terms, as we are open to a variety of things.<br />
> I don't think we are interested. I can't see any gain in promoting a<br />
> commercial foreign UAV of unknown quality.</p>

<p><strong>Are you a professor?  I expect you to be</p>

<p>Suck My Balls,</p>

<p>Corey Zeimen<br />
Sales Manager</strong></blockquote></small></p>

<p><br />
I would like to warn you! As you can read the representatives from MarcusUAV are not up to the task. They seem not to know how regular business works and seem more than primitive in their language. I don't think a respectable business sales manager would talk to customers as seen above.</p>

<p>Everybody searching reliable and competent business partner for commercial UAVs should look into the direction of <strong><a href="http://asctec.de">AscTec Technologies</a></strong> for proven reliable UAVs or towards <strong><a href="http://datacore.ch">DataCore GmbH</a></strong> if you would like to have something custom made for your enterprise.</p>

<p>Please do yourself a favor and <u>ignore companies like MarcusUAV</u> who are not even up to the task to talk to customers. Guys laughing about the status of a professor will not have the needed professional knownledge and experience to build a successful commercial UAV anyway... </p>

<p>Last but not least according to <a href="http://gulfbusiness.tradeholding.com/default.cgi/action/viewcompanies/companyid/298711/">this page</a> Corey Zeimen seems to be the CEO of MarcusUAV as well.<br />
</p>]]></description>
            <link>http://amir.ch/weblog/2008/06/uavp-ng-beware-of-marcusuav.html</link>
            <guid>http://amir.ch/weblog/2008/06/uavp-ng-beware-of-marcusuav.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Talk</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">MarcusUAV</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">QuadCopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Quadrocopter</category>
            
            <pubDate>Wed, 25 Jun 2008 10:24:29 +0100</pubDate>
        </item>
        
        <item>
            <title>UAVP-NG: Conditions, Actions and Behaviors</title>
            <description><![CDATA[<p>Did you ever think of your UAV as an entity? </p>

<p>Now, you probably will think we have gone crazy, but think it trough! You put it on the floor and let it go. And after it's flying you hope it will do what you tell it to do. You tell it to turn right and it turns right. You tell it to raise and it raises. You told it to warn you when the battery reaches less that 10V and it warns you, when it's battery reaches 10V.</p>

<p>In essence every UAV has a known set of <strong>behaviors</strong> and you expect it to behave according to these!</p>

<p>Now imagine that these behaviors are not a fix set of rules, but imagine you could customize these behaviors according to your needs. Let's say a behavior rule consists of a behavior condition, which when it evaluated as true makes sure that an associated behavior action gets executed. If you think it trough you will see that every and all of the current UAV features can be mapped to behaviors! You need calibration on channel 5? You want your cam 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... and... and... and...</p>

<p>I think you got my point...<br />
... we can model every and all UAV features to one or more behavior rules.</p>

<p>We implemented the concept <a href="http://ng.uavp.ch">on the NG</a>. You can define arbitrary behavior rules. Each behavior rule consist of a behavior condition, which when it evaluates to true will trigger an associated behavior action. </p>

<p>Conditions and actions are arbitrary functions implemented seperate in the NG framework. The implemented console commands <strong>show behaviors</strong>, <strong>show conditions</strong> and <strong>show actions</strong> are 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 with the command <strong>add behavior ...</strong>. Each condition and action can receive user chosen parameters. These allow further customization.</p>

<p>In the <a href="http://ng.uavp.ch/moin/Features">newest NG firmware</a> 12 predefined standard behaviors implement the normal behaviors you are used from your UAVs. This includes sensor calibration, config- and controller-switching when not flying as well as motors on and off stick positions. Furthermore the in-flight actions like rc calibration, hover calibration, emergency landing and more are defined using behaviors. Further empty behavior rule slots allow users to add their own behavior rules.</p>

<p>In the future we will implement even more complex conditions and actions. We already introduced behavior variables and test conditions for them which will allow more complex behavior definitions. We will also implement more complex actions like a <strong>gps.come.home()</strong>, <strong>ctrl.do.hover()</strong>, <strong>comm.uav.near()</strong> or <strong>ctrl.do.emergency.landing()</strong>. </p>

<p>We expect to leverage the concept even further so that we will be able to implement complex inter-UAV behaviors using them. Eventually we will even move up to a byte code compiler and interpreter. <strong>This will allow very complex new behavior programms moving the whole concept to a fully new level</strong>.</p>

<p>The <a href="http://ng.uavp.ch">current NG implementation</a> allows all standard UAV behaviors you are used from normal UAVs like the MK or the UAVP. More complex behaviors will follow.<br />
</p>]]></description>
            <link>http://amir.ch/weblog/2008/06/uavpng-behaviors.html</link>
            <guid>http://amir.ch/weblog/2008/06/uavpng-behaviors.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">UAVP-NG</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">NG</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">QuadCopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Quadrocopter</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">UAVP</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">UAVP-NG</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Wolferl-NG</category>
            
            <pubDate>Wed, 18 Jun 2008 10:16:07 +0100</pubDate>
        </item>
        
    </channel>
</rss>
