<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" 
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:admin="http://webns.net/mvcb/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">
	<channel>
<title>dev6.com</title><link>http://www.dev6.com/index.html</link><description>Random bits and code</description><dc:language>en</dc:language><dc:creator>fcv@dev6.com</dc:creator><dc:rights>Copyright 2006 Filipe Varela</dc:rights><dc:date>2007-09-04T17:54:19+01:00</dc:date><admin:generatorAgent rdf:resource="http://www.realmacsoftware.com/" />
<admin:errorReportsTo rdf:resource="mailto:fcv@dev6.com" /><sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>
<lastBuildDate>Thu, 18 Oct 2007 11:46:48 +0100</lastBuildDate><item><title>New hardware info available</title><description></description><dc:creator>fcv@dev6.com</dc:creator><dc:subject>Blog</dc:subject><dc:date>2007-09-04T17:54:19+01:00</dc:date><link>http://www.dev6.com/blog/index.html#unique-entry-id-15</link><guid isPermaLink="true">http://www.dev6.com/blog/index.html#unique-entry-id-15</guid><content:encoded><![CDATA[Check out the project page and hardware subsection]]></content:encoded></item><item><title>Been busy for a while</title><description></description><dc:creator>fcv@dev6.com</dc:creator><dc:subject>Blog</dc:subject><dc:date>2007-09-04T15:43:56+01:00</dc:date><link>http://www.dev6.com/blog/index.html#unique-entry-id-14</link><guid isPermaLink="true">http://www.dev6.com/blog/index.html#unique-entry-id-14</guid><content:encoded><![CDATA[I'm back at work. Not that i had stopped working on the project, but because i didn't have have the time to work on the site.<br />So, will be updating some stuff in the next few days. This blog will serve as a simple update notification center and the project pages will be used for new stuff.]]></content:encoded></item><item><title>Release 1</title><description></description><dc:creator>fcv@dev6.com</dc:creator><dc:subject>Blog</dc:subject><dc:date>2007-03-11T16:20:37+00:00</dc:date><link>http://www.dev6.com/blog/index.html#unique-entry-id-13</link><guid isPermaLink="true">http://www.dev6.com/blog/index.html#unique-entry-id-13</guid><content:encoded><![CDATA[As promised, but one day late, here's the first release.<br /><br />The file consists of 3 zip archives. A serialdaemon ( to relay serial data into flightdirector via udp and back to telemetry serial if you wish ), a flightdirector configured to read a robostix board (easily customizable for other input sources) and a Mac OS X Universal Binary Groundstation application. If you want to use a gamepad to set autopilot values, use the top index finger buttons. Try it out.<br /><br />Quaternions are temporarily disabled as i haven't had the time to fully expand the kalman filter to work with them. No point in using complex rotation representations if the filtering code requires euler values... This is easily changed. As soon as i have the time i'll do it and expand the filter with a few more states.<br /><br />Contributions are most welcome. Please do send 'em in.<br /><br />Download the release <a href="index_assets/package1.zip" rel="self">here</a>.]]></content:encoded></item><item><title>Latest build source</title><description></description><dc:creator>fcv@dev6.com</dc:creator><dc:subject>Blog</dc:subject><dc:date>2007-03-06T21:15:34+00:00</dc:date><link>http://www.dev6.com/blog/index.html#unique-entry-id-12</link><guid isPermaLink="true">http://www.dev6.com/blog/index.html#unique-entry-id-12</guid><content:encoded><![CDATA[NEWS<br />quaternion angle estimator<br />dumped temperature compensation on gyros for now (too cpu intensive, low correction factor)<br />figured what was causing slow updates. although the code used the gyro input, it was being ignored inside the filter because the associated variables were float and trig operations produced values that cannot be represented with enough accuracy on that var size. So the result was that the angle estimate from the accelerometers was caniblizing the other estimates. Moved these specific vars to double precision, still evaluating results.<br /><br />Currently considering moving all filtering to a separate library that takes gyro and accel inputs and produces output. I'm guessing this would be pretty useful for a lot of people...<br /><br />This is a response to the latest requests for source code. I'm releasing it this weekend. I've had some problems with the pserver so i had to move to subversion and reconfigure the whole deal.<br /><br />The repositories will be named flightdirector, groundstation and serialdaemon<br /><br />flightdirector: data acquisition (x-plane in simulated mode), filtering, navigation, telemetry, control and actuation (x-plane in simulated mode)<br /><br />groundstation: graphic mode mission editor, gamepad control relay (for real-time non assisted mode), gamepad status relay (for single channel autopilot assisted mode - buttons set altitude, speed, heading), telemetry opengl context with video source as background texture.<br /><br />serialdaemon: both groundstation and flightdirector were written as network only. no serial considerations at all. This means a third element is needed (on flightdirector side, arm cpu) to relay udp to the radio modem and from the radio modem to udp. That's what serialdaemon is all about. Based on code from flockbots i think.<br /><br />So, please hold your pants on till saturday and please please do send some feedback once you try it out.<br /><br />BEWARE: the groundstation is Mac OS X (ppc & i386 binary, 10.4 min) only. Let me know if you know a cross-platform development environment and apis to create apps that deal with realtime video, opengl, networking, HID input and are NOT based on GLUT. I've got battery considerations to look out for :) Anyone got any luck with Qt and sequence grabbers on Windows and Linux?]]></content:encoded></item><item><title>Full setup demonstration</title><description></description><dc:creator>fcv@dev6.com</dc:creator><dc:subject>Blog</dc:subject><dc:date>2007-02-12T14:08:25+00:00</dc:date><link>http://www.dev6.com/blog/index.html#unique-entry-id-11</link><guid isPermaLink="true">http://www.dev6.com/blog/index.html#unique-entry-id-11</guid><content:encoded><![CDATA[This is a video. It demonstrates using the "single channel autopilot" modes for autonomous flight with no waypoints. You just set desired heading, altitude and airspeed using gamepad +/- keys and send the control packet to the "flightdirector" module using the gamepad defined "xmit" key. It also shows the moving map display with autopilot heading clues (red is autopilot, yellow is route or telemetry) and the OpenGL HUD overlay. The video feed is just the MacBook cam. You can select a different video source (video in from airborne cam receiver) in the video preferences.<br /> <br />Check it out: [ <a href="index_assets/urubudemo.mp4" rel="external">click here to view/download</a>&nbsp;]]]></content:encoded></item><item><title>Simulator setup</title><description></description><dc:creator>fcv@dev6.com</dc:creator><dc:subject>Blog</dc:subject><dc:date>2007-01-18T22:42:55+00:00</dc:date><link>http://www.dev6.com/blog/index.html#unique-entry-id-10</link><guid isPermaLink="true">http://www.dev6.com/blog/index.html#unique-entry-id-10</guid><content:encoded><![CDATA[After some major tweaks, code segregation and extensive testing, i've got a full implementation of the simulator setup defined inside the main flight controller code. Take a peek at what it looks like!<br /><br /><img class="imageStyle" alt="simsetup" width="640" height="480" src="http://www.dev6.com/blog/index_files//page4_blog_entry10_1.jpg"/><br /><br />X-Plane (old version 7. gotta get me an update) running on iMac 20" and groundstation (Cocoa) + flightcontroller (unix process) running on MacBook. The MacBook is flying the Cessna by itself using the same navigation code that flies real aircraft. Pretty cool! Telemetry is simulated in a UDP stream (and will remain so). Final version will relay udp-serial-udp in separate module. Notice the OpenGL HUD next to the mission planner window. Can u see a green dot next to the mission waypoint connectors? That's a live aircraft tracking marker.]]></content:encoded></item><item><title>Flight Controller development version</title><description></description><dc:creator>fcv@dev6.com</dc:creator><dc:subject>Blog</dc:subject><dc:date>2006-12-21T16:14:48+00:00</dc:date><link>http://www.dev6.com/blog/index.html#unique-entry-id-9</link><guid isPermaLink="true">http://www.dev6.com/blog/index.html#unique-entry-id-9</guid><content:encoded><![CDATA[Good news. Integrated filtering algorythms into flight controller. The controller now has a separate AHRS module which does filtering on data from a SENSOR module. The sensor module can either be fed by a real sensor array (imu+compass+dual pressure+gps+ultrasound alt) serial feed (bridged into UDP by a separate module) or get simulated sensor data from X-Plane UDP packets.<br /><br />This allows me to test AHRS performance (especially on position estimation) and also eases development of the groundstation software.<br />The groundstation can now track the URUBU in real-time (real or simulated by X-Plane) and also feed user controls into either the real URUBU or to X-Plane joystick/throttle deflections.<br /><br />All source code will be CVS'd shortly after i close some bugs.<br /><br />Feedbadk is appreciated especially from people who can get linear velocites in body-frame coordinates out of X-Plane (accelerations would be great, but velocities will do because they can be differentiated).<br /><br /><a href="index_assets/Picture 2.png" rel="external">Here's a screenshot</a> of the groundstation tracking a simulated URUBU in X-Plane.<br /><br />]]></content:encoded></item><item><title>Download the filter</title><description></description><dc:creator>fcv@dev6.com</dc:creator><dc:subject>Blog</dc:subject><dc:date>2006-11-20T00:11:00+00:00</dc:date><link>http://www.dev6.com/blog/index.html#unique-entry-id-8</link><guid isPermaLink="true">http://www.dev6.com/blog/index.html#unique-entry-id-8</guid><content:encoded><![CDATA[I somehow forgot to update the homepage with the download link after posting it on sparkfun, so here it goes. Got questions? fcv@dev6.com or IM me same address MSN.<br /><br /><a href="index_assets/kalman.c" rel="external">Download link</a>]]></content:encoded></item><item><title>Eureka moment - Stable driftless filter ready</title><description></description><dc:creator>fcv@dev6.com</dc:creator><dc:subject>Blog</dc:subject><dc:date>2006-09-06T22:39:22+01:00</dc:date><link>http://www.dev6.com/blog/index.html#unique-entry-id-7</link><guid isPermaLink="true">http://www.dev6.com/blog/index.html#unique-entry-id-7</guid><content:encoded><![CDATA[To all humanity out there or just us uav geeks:<br /><br />Thy filter is ready! It works, it's accurate, it doesn't drift and it's free. I'll post it here as soon as i tweak it and optimize some internal stuff but you can count on it. Just add it to your project and compile away. Join 3 gyros, 3 accels and you're ready for some AHRS fun!<br /><br />I'm attaching a small movie of the thing working. Never mind the lousy image, it's a cell phone cam.<br /><br />Download <a href="index_assets/06-09-06_2155.3gp.zip" rel="self">here</a>.]]></content:encoded></item><item><title>Groundstation developer release</title><description></description><dc:creator>fcv@dev6.com</dc:creator><dc:subject>Blog</dc:subject><dc:date>2006-08-28T14:51:01+01:00</dc:date><link>http://www.dev6.com/blog/index.html#unique-entry-id-6</link><guid isPermaLink="true">http://www.dev6.com/blog/index.html#unique-entry-id-6</guid><content:encoded><![CDATA[Thought i could post the current version of the groundstation. Mail me some feedback.<br /><br /><a href="index_assets/testbed2.app.zip" rel="external">Application download</a><br /><br />Developer release: artificial horizon needs udp broadcast with attitude data. For now, it's provided by the ahrs ansi-c program that i'm developing. If you want to test with a simulator such as X-Plane, just send the packets to any interface on the local machine.<br /><br />Packet structure is (in development)<br />Header byte 'A'<br />Roll float <br />Pitch float<br />Yaw float<br />Footer byte 'Z'<br /><br />Floats are supposed to be streamed in network/big endian byte order.]]></content:encoded></item><item><title>Progressing fast</title><description></description><dc:creator>fcv@dev6.com</dc:creator><dc:subject>Blog</dc:subject><dc:date>2006-08-23T16:17:57+01:00</dc:date><link>http://www.dev6.com/blog/index.html#unique-entry-id-5</link><guid isPermaLink="true">http://www.dev6.com/blog/index.html#unique-entry-id-5</guid><content:encoded><![CDATA[Before i get a chance to update the hardware pages, i'll outline the new stuff.<br /><br />The IMU now has custom firmware (thanks Sparkfun for the 16f88 bootloader) and spits 34 byte packets at 60Hz. Rate is configurable using simple commands.<br /><br />The ATmega128 now uses one 57600 UART to get data from the IMU, one 115200 to communicate with the flight computer and a third software UART written using one external interrupt and timer2 running at 4800 to get GPS packets (NMEA or TSIP).<br /><br />So here's the list of stuff connected to the ATmega128:<br />UART-Gumstix (flight computer)<br />UART-IMU (6dof sparkfun)<br />SWUART-GPS<br />I2C-Compass<br />ADC-Ultrasonic ranger<br />ADC-Absolute pressure<br />ADC-Dynamic pressure<br />PWM-3 servos and one ESC<br /><br />Plus i've decided to go with Maxstream Xbees (pro version) for communications on the first prototype. I figure i'll find a future use for the modules at which time i can move comms to the final 900Mhz version for longer range.<br /><br />As for the software prototype, i now have a groundstation with route planning and artificial horizon superimposed on a video feed. The overlay includes a full virtual cockpit like in any simulator with heading, airspeed, groundspeed, vertical speed, throttle, engine rpm, voltage, eta to next waypoint, distance to next waypoint, etc.<br /><br />So far all IMU filtering is done on the groundstation. Basically it reads the serial stream from the atmega and processes data with a complete kalman filter. I can achieve driftless accurate attitude estimations for about two hours. Still needs improvements.<br />The low level estimator code is fully ANSI-C compliant so it cross-compiles to the gumstix where it will reside on the prototype. The gumstix will then stream status packets using the xbee back to the groundstation where all visualization and tracking code is already running as well as pass control packets to the atmega which then translates them into PWM for servos and ESC.]]></content:encoded></item><item><title>Glass cockpit</title><description></description><dc:creator>fcv@dev6.com</dc:creator><dc:subject>Blog</dc:subject><dc:date>2006-04-30T14:31:59+01:00</dc:date><link>http://www.dev6.com/blog/index.html#unique-entry-id-4</link><guid isPermaLink="true">http://www.dev6.com/blog/index.html#unique-entry-id-4</guid><content:encoded><![CDATA[Howdy. Sourceforge hasn't approved the project yet, so i just figured i could improve the code i already have instead of just waiting. So i patched in a quick hack for future support for quaternion to euler transforms.<br /><br />For those who understand the problem with traditional matrix processing of rates into angles by integration, the quaternion process is a lot nicer. It is computationally more efficient and has no tangent singularity problems at &pi;/2 + K&pi;.<br /><br />Then i decided to improve the glass cockpit HUD. I still haven't got my pressure sensors PCB mount nor the digital compass but i implemented the values in the cockpit anyway. I also improved performance and reliability of the drawn angles.The code is now mature enough to merge into the mission planning/telemetry downlink app with live map. I'm working on a simple overlay of artificial horizon and readings into the live video from onboard camera to save some space. Plus is helps seeing the REAL horizon on the video.<br /><br /><a href="index_assets/cockpit.mp4" rel="external">Here's a video</a> of the setup (complete with IMU startup, etc). I hope Ambrosia Software will forgive the use of an unregistered product (<a href="http://www.ambrosiasw.com/" rel="self">Snapz Pro X</a>) for screen movies, but hey, at least they get free visibility!]]></content:encoded></item><item><title>IMU Trial Runs</title><description></description><dc:creator>fcv@dev6.com</dc:creator><dc:subject>Blog</dc:subject><dc:date>2006-04-23T22:53:18+01:00</dc:date><link>http://www.dev6.com/blog/index.html#unique-entry-id-3</link><guid isPermaLink="true">http://www.dev6.com/blog/index.html#unique-entry-id-3</guid><content:encoded><![CDATA[While i wait for the sourceforge project approval, i decided to quick-code an artificial horizon to test the IMU ouput. It's written in Cocoa (Objective-C). The idea is to make one computer interface the unit using the UART to serial adapter (RS232 my MAX233 wire soldered heheh) and broadcast a telemetry UDP stream. This helps me prototype the telemetry messaging structures before i have a fully funcional AHRS. The other computer receives the UDP stream on a secondary thread and posts attitude update requests to the main thread, which in turn runs a HUD update timer at 10Hz (which is enough for smooth refreshing and has nothing to do with the internal IMU update rate).<br /><br />I'm posting a video of the setup (low quality grab from Nokia phone). Check it out <em><a href="index_assets/imu.3gp" rel="external">here</a></em>.]]></content:encoded></item><item><title>Great new stuff</title><description></description><dc:creator>fcv@dev6.com</dc:creator><dc:subject>Blog</dc:subject><dc:date>2006-04-22T02:57:20+01:00</dc:date><link>http://www.dev6.com/blog/index.html#unique-entry-id-2</link><guid isPermaLink="true">http://www.dev6.com/blog/index.html#unique-entry-id-2</guid><content:encoded><![CDATA[I've managed to integrate both pressure sensors (Urubu project. MPX4115A & MPX5050) into a single compact tiny board (1inch x 1inch) and placed an order for manufacture in China. It should take a while for me to get the PCBs but i'll post the schematics as soon as i figure out how i'm gonna solder the SMDs (pancake hot plate comin' up) for the opamp and supply decoupling.<br /><br />Another great thing is the sourceforge project i just submitted (waiting for approval). It's a prototype of an AHRS (no gps yet) for the IMU unit i'm using (sparkfun imu v1 - 23.5 Hz with 3 gyros and 3 accelerometers). As of now, i have ADC pooling, 3 point temperature calibration and supply voltage drift compensation. I'm also experimenting with matrix attitude estimation (reading "The Global Positioning System & Inertial Navigation") but it's too raw. I'm figuring out how to alias my output and perform dynamic Kalman error gain estimation. This will take quite some time, i'm sure. That's why i opened the code on sourceforge. I'm sure lots of sparkfun imu users will participate with ideas.]]></content:encoded></item><item><title>All development and posting on halt for exam season</title><description></description><dc:creator>fcv@dev6.com</dc:creator><dc:subject>Blog</dc:subject><dc:date>2006-02-03T14:41:42+00:00</dc:date><link>http://www.dev6.com/blog/index.html#unique-entry-id-1</link><guid isPermaLink="true">http://www.dev6.com/blog/index.html#unique-entry-id-1</guid><content:encoded><![CDATA[Exam season has started. I'll post back in a couple of weeks when things chill.]]></content:encoded></item><item><title>Welcome </title><description></description><dc:creator>fcv@dev6.com</dc:creator><dc:subject>Blog</dc:subject><dc:date>2006-02-03T14:39:27+00:00</dc:date><link>http://www.dev6.com/blog/index.html#unique-entry-id-0</link><guid isPermaLink="true">http://www.dev6.com/blog/index.html#unique-entry-id-0</guid><content:encoded><![CDATA[This is my project, idea and all-things-development repository. Feel free to poke around.]]></content:encoded></item></channel>
</rss>