<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>robots.net blog for hudson</title>
    <link>http://robots.net/person/hudson/</link>
    <description>robots.net blog for hudson</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Sun, 26 May 2013 03:50:08 GMT</pubDate>
    <item>
      <pubDate>Sun, 13 Jul 2003 05:13:18 GMT</pubDate>
      <title>13 Jul 2003</title>
      <link>http://robots.net/person/hudson/diary.html?start=34</link>
      <guid>http://robots.net/person/hudson/diary.html?start=34</guid>
      <description>I've posted a
&lt;a
href="http://autopilot.sourceforge.net/movies/Observer.20030710.high.mov"&gt;high
res&lt;/a&gt; (5.9 MB) and &lt;a
href="http://autopilot.sourceforge.net/movies/Observer.20030710.low.mov"&gt;low
res&lt;/a&gt; (1.9 MB) QuickTime of the tuning process on our
&lt;a href="http://bergenrc.com/Observer.asp" &gt;Bergen
Observer&lt;/a&gt;.  We ran out of time to fully smooth out all
the oscillations and enable the collective control due to a
tropical storm that moved in over Charleston, SC.
&lt;p&gt;
On the Nova we have position tuned to +/- 30 cm and altitude
tuned to +/- 20 cm.  The Observer is a bit more "pitchy",
which is causing it to drift forwards and backwards.  I'm
hoping to get the CCPM code working with the JetCat
mechanics soon and try tuning it on a turbine.</description>
    </item>
    <item>
      <pubDate>Mon, 16 Jun 2003 14:20:05 GMT</pubDate>
      <title>16 Jun 2003</title>
      <link>http://robots.net/person/hudson/diary.html?start=33</link>
      <guid>http://robots.net/person/hudson/diary.html?start=33</guid>
      <description>The onboard systems hovered Dennis' Nova helicopter for
entire tanks of fuel yesterday!  We closed all the control
loops except altitude, so the throttle/collective were still
under manual control.  Despite a 20 degree magnetometer
error, the flight controller managed to keep the helicopter
within 1 m CEP during calm winds and 2 m CEP during gusts.

&lt;p&gt; &lt;p&gt;
Onboard the Nova was our &lt;a
href="http://www.rotomotion.com/prd_REV2.4.6DOFK.html"&gt;IMU /
Servo controller&lt;/a&gt;, our &lt;a
href="http://autopilot.sourceforge.net/rev2.4/magnetometer.top.jpg"&gt;
three axis mangetometer&lt;/a&gt;, a &lt;a
href="http://www.intrinsyc.com/products/cerfboard/"&gt;Cerfboard&lt;/a&gt;
with 802.11
CF, and our new &lt;a
href="http://autopilot.sourceforge.net/rev2.4/gps.top.jpg"&gt;u-blox
TIM-LP / IO board&lt;/a&gt;.

&lt;p&gt; &lt;p&gt;
We'll have movies and plots of the sensor data (plus
overhead maps) available from &lt;a
href="http://autopilot.sourceforge.net/"&gt;autopilot.sourceforge.net&lt;/a&gt;.
 And &lt;a href="http://www.rotomotion.com/" &gt;Rotomotion&lt;/a&gt; will be
selling IMU / INS kits and turnkey UAV systems based on the
designs, too.
</description>
    </item>
    <item>
      <pubDate>Sun, 27 Apr 2003 21:50:25 GMT</pubDate>
      <title>27 Apr 2003</title>
      <link>http://robots.net/person/hudson/diary.html?start=32</link>
      <guid>http://robots.net/person/hudson/diary.html?start=32</guid>
      <description>Fast on the heels of my
&lt;a
href="http://autopilot.sourceforge.net/cgi-bin/source?onboard/rev2/tilt.c"&gt;1-D
Kalman Filter&lt;/a&gt; for tracking gyro bias and determining
tilt angle in a balancing robot, I've checked in code for an
entire GPS aided inertial navigation system.  You can see
the full source code for the  17 state Kalman filter in
&lt;a
href="http://autopilot.sourceforge.net/cgi-bin/source?sim/src/imu-filter/gpsins.cpp"&gt;gpsins.cpp&lt;/a&gt;
and&lt;a
href="http://autopilot.sourceforge.net/cgi-bin/source?sim/src/imu-filter/gpsins.h"&gt;gpsins.h&lt;/a&gt;.

&lt;p&gt; &lt;p&gt;
This filter uses the 3 axis, 6 dof IMU from
&lt;a href="http://www.rotomotion.com/" &gt;Rotomotion&lt;/a&gt;, a three
axis magnetometer from PNI and a
&lt;a href="http://www.u-blox.com/products/tim_lp.html" &gt;u-blox
TIM-LP&lt;/a&gt; GPS.  It computes position in a local tangent
frame for ease of use with the flight controller and tracks
both gyro and accelerometer biases.  We all know about the
gyro drift problems, but the ADXL units also have a slight
amount of temperature drift that can be tracked by the filter.

&lt;p&gt; &lt;p&gt;
I'm still doing static testing on the software and hardware.
 Hopefully within a few weeks I'll be able to flight test it
on my helicopter.  As far as I know, this is the only Free
Software GPS aided INS in existance.</description>
    </item>
    <item>
      <pubDate>Sun, 13 Apr 2003 19:40:38 GMT</pubDate>
      <title>13 Apr 2003</title>
      <link>http://robots.net/person/hudson/diary.html?start=31</link>
      <guid>http://robots.net/person/hudson/diary.html?start=31</guid>
      <description>For folks building balacing robots like Dave Anderson's
marvelous
&lt;a
href="http://www.geology.smu.edu/~dpa-www/robo/nbot/"&gt;nBot&lt;/a&gt;
or Larry Barello's
&lt;a
href="http://www.barello.net/Robots/gyrobot/index.htm"&gt;gyrobot&lt;/a&gt;,
I've written an extensively commented &lt;a
href="http://www.cs.unc.edu/~welch/kalman/"&gt;Kalman
Filter&lt;/a&gt; that uses a dual axis accelerometer and a single
axis angular rate gyro to accurately determine tilt angle,
angular rate and gyro bias.  The filter is able to be tuned
for different amounts of noise in the sensors and to place
varying trust in the different sensors.  It also
automatically tracks the gyro bias by comparing the
covariance of the state estimate with the state measurement.

&lt;p&gt; &lt;p&gt;
The full source code is in
&lt;a
href="http://autopilot.sourceforge.net/cgi-bin/source?onboard/rev2/tilt.c"&gt;tilt.c&lt;/a&gt;
and &lt;a
href="http://autopilot.sourceforge.net/cgi-bin/source?onboard/rev2/tilt.h"&gt;tilt.h&lt;/a&gt;.
It is available under the GPL for your use and education.</description>
    </item>
    <item>
      <pubDate>Sun, 23 Mar 2003 17:55:32 GMT</pubDate>
      <title>23 Mar 2003</title>
      <link>http://robots.net/person/hudson/diary.html?start=30</link>
      <guid>http://robots.net/person/hudson/diary.html?start=30</guid>
      <description>I've just added Futaba and JR high-speed digital servo
support to my autopilot control board.  The Futaba servos
use 275 Hz refresh rate, while the JR units use a 166 Hz
rate.  The data pulse is the same, between 1 and 2 ms long.
 This is a hardware upgrade that requires the new
&lt;a
href="http://www.rotomotion.com/prd_REV2.4.6DOFK.html"&gt;Rev
2.4 boards&lt;/a&gt;.

&lt;p&gt; I also wrote a page that details the &lt;a
href="http://autopilot.sourceforge.net/pcm.html"&gt;Futaba PCM
format&lt;/a&gt;.  We'll have a software-only upgrade to support
PCM transmitters / receivers soon.</description>
    </item>
    <item>
      <pubDate>Mon, 3 Feb 2003 05:36:07 GMT</pubDate>
      <title>3 Feb 2003</title>
      <link>http://robots.net/person/hudson/diary.html?start=29</link>
      <guid>http://robots.net/person/hudson/diary.html?start=29</guid>
      <description>PCM decoding is working!  I've managed to reverse engineer
most of the protocol used by Futaba PCM1024 equipment and am
now tackling the checksum and failsafe features.  My code is
able to accurately determine six of the nine channels fairly
reliably, although some timing issues still remain.
&lt;p&gt;
Speaking of which, why can't they just use a regular serial
protocol?  There is a full MCU inside the PCM receivers, so
it would be possible to include more useful features like
start and stop bits, Manchester waves, sync points and such.
 Tracking an unknown 150 usecond bit clock over 30 ms is
just asking for jitter and skew.
&lt;p&gt;
Full code is available from the CVS tree; a more details
writeup will be posted on &lt;a
href="http://autopilot.sourceforge.net/"&gt;http://autopilot.sourceforge.net/&lt;/a&gt;
soon.</description>
    </item>
    <item>
      <pubDate>Tue, 28 Jan 2003 15:28:45 GMT</pubDate>
      <title>28 Jan 2003</title>
      <link>http://robots.net/person/hudson/diary.html?start=28</link>
      <guid>http://robots.net/person/hudson/diary.html?start=28</guid>
      <description>I've redesigned my &lt;a
href="http://autopilot.sourceforge.net/rev2.2.html"&gt;controller
boards&lt;/a&gt; to be more modular and fit in less space. 
Several folks wanted the inertial sensors to be separate
from the microcontroller and servo interface, so I've put
them on their own boards.  You can see the &lt;a
href="http://autopilot.sourceforge.net/rev2.4/"&gt;preliminary
files and images&lt;/a&gt;, although some changes do need to be made.
&lt;p&gt;
I have also been hard at work decoding the Futaba PCM radio
protocol.  It is far more complex than the PWM pulse train
that is PPM and will require a software uart to decode.  The
important bits are that it uses a 150 usecond bit clock, a
2.7 msec sync pulse and two 120 bit frames.
&lt;p&gt;
These frames are then transmitted inverted, including the
sync pulses.  I suppose if there are any errors the frame is
to be discarded.  You can see this clearly in
&lt;a href="http://autopilot.sourceforge.net/images/pcm.png" &gt;an
image of the PCM frames&lt;/a&gt;.  Each raster line is the four
frames.  The source code for generating this is in
&lt;a
href="http://autopilot.sourceforge.net/cgi-bin/source?downlink/bin/plotpcm"&gt;plotpcm&lt;/a&gt;,
which uses the output of the microcontroller running
&lt;a
href="http://autopilot.sourceforge.net/cgi-bin/source?onboard/rev2/pcm.c"&gt;onboard/rev2/pcm.c&lt;/a&gt;.</description>
    </item>
    <item>
      <pubDate>Sat, 19 Oct 2002 20:50:01 GMT</pubDate>
      <title>19 Oct 2002</title>
      <link>http://robots.net/person/hudson/diary.html?start=27</link>
      <guid>http://robots.net/person/hudson/diary.html?start=27</guid>
      <description>I've spent last night and this morning hacking on my
&lt;a href="http://www.cs.unc.edu/~welch/kalman/" &gt;Kalman
filter&lt;/a&gt; &lt;a
href="http://autopilot.sourceforge.net/cgi-bin/source?sim/src/mat/Kalman.h"&gt;code&lt;/a&gt;
to process inertial measurements from my
&lt;a
href="http://autopilot.sourceforge.net/rev2.2.html"&gt;board's&lt;/a&gt;
gyros and accelerometers.

&lt;p&gt; &lt;p&gt;
We had several successful autonomous flights running the
filter on my Linux iPAQ.  I optimized the
&lt;a
href="http://autopilot.sourceforge.net/cgi-bin/source?sim/src/imu-filter/AHRS.cpp"&gt;C++
AHRS&lt;/a&gt; code to produce a
&lt;a
href="http://autopilot.sourceforge.net/cgi-bin/source?onboard/rev2/ahrs.c"&gt;lean,
fast version&lt;/a&gt; that will run on an 8 bit microcontroller.
 Right now it can sample the sensors at 60 Hz and produces
an attitude estimate every 20 Hz.  That should be good
enough for jerky autonomous flight.

&lt;p&gt; &lt;p&gt;
I'm amazed at how much extra speed there was to wring out of
the code.  The iPAQ has a 206 Mhz StrongARM SA-1110, while
the 2.2 board has an 8 Mhz ATmega163, yet the speed
difference between the C++ code and the C code is only a
factor of five.  Wowza!  I guess the very clean templated
Matrix math code is easier to read and write, but sure does
add some speed penalties.

&lt;p&gt; &lt;p&gt;
There is an &lt;a
href="http://horta.ncc.com/perl/ads.pl?ad=RNnew_micros.gif"&gt;banner
ad &lt;/a&gt; encouraging me to try the ISOPOD.  40 MIPS is five
times faster than the 8 MIPS I have now; it might be worth a
try...</description>
    </item>
    <item>
      <pubDate>Wed, 25 Sep 2002 00:33:25 GMT</pubDate>
      <title>25 Sep 2002</title>
      <link>http://robots.net/person/hudson/diary.html?start=26</link>
      <guid>http://robots.net/person/hudson/diary.html?start=26</guid>
      <description>IT ACTUALLY WORKS!  This weekend, Aaron Kahn and I flew the
&lt;a href="http://autopilot.sourceforge.net/rev2.2.html" &gt;Rev
2.2&lt;/a&gt; board on my Concept 60 helicopter.  Unlike the past
few weekends of sensor calibration and data collection, we
turned on the autopilot software and it actually flew the
helicopter.

&lt;p&gt; &lt;p&gt;
The first day we spent tuning the control loops to remove
oscillation in the pitch axis and slowly expanded the
control authority that the software had.  We destroyed a CF
802.11 card due to vibration and had to stop for the day. 
But it flew!

&lt;p&gt; &lt;p&gt;
The second day we came back with new software that I wrote
the night before.  This allowed Aaron to give attitude
commands to the autopilot rather than flight commands to the
servos.  The standard helicopter is flown by directly
commanding the cyclic and collective (and throttle and
anti-torque and ...).  If you hold forward cyclic, the
helicopter will nose over and do a loop or two before crashing.

&lt;p&gt; &lt;p&gt;With our software and hardware, he was able to instead
provide attitude commands with his joystick.  If he holds
the stick full forward, it instead commanded the software to
maintain 8 degrees nose down.  If he released the stick, it
would level out.  Suddenly, it became a very flyable
aircraft, rather than an unimaginable nightmare to fly.

&lt;p&gt; &lt;p&gt;
Next weekend we'll have the compass and GPS hooked up, which
should provide even better control.  The GPS aided INS won't
be running, but we will have a working heading hold.

&lt;p&gt; &lt;p&gt;
I've curated &lt;a
href="http://autopilot.sourceforge.net/kahn.20020922/"&gt;flight
data from Sunday&lt;/a&gt; and we have movies, too:

&lt;p&gt; &lt;ul&gt;
&lt;li&gt;&lt;a
href="http://autopilot.sourceforge.net/movies/the_rig.mov"&gt;Starting
the helicopter&lt;/a&gt;
&lt;li&gt;&lt;a
href="http://autopilot.sourceforge.net/movies/flight1.mov"&gt;One
autonomous flight in pitch and roll&lt;/a&gt;
&lt;li&gt;&lt;a
href="http://autopilot.sourceforge.net/movies/flight2.mov"&gt;Another
autonomous flight&lt;/a&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <pubDate>Thu, 12 Sep 2002 01:44:23 GMT</pubDate>
      <title>12 Sep 2002</title>
      <link>http://robots.net/person/hudson/diary.html?start=25</link>
      <guid>http://robots.net/person/hudson/diary.html?start=25</guid>
      <description>The &lt;a
href="http://autopilot.sourceforge.net/rev2.2.html"&gt;Rev 2.2
IMU boards&lt;/a&gt;
are being assembled by lots of folks and many of them have
reported successful assemblies.  I'm glad to hear that
everyone has had such good luck so far.
&lt;p&gt;
Aaron Kahn wrote a six state Kalman filter AHRS that tracks
gyro bias.  We've found that the Toking CG-16D gyros have
significant drift and temperature sensitivity, so this extra
state is required.  Full source code is available in
&lt;a
href="http://autopilot.sourceforge.net/cgi-bin/source?sim/src/imu-filter/ahrs.cpp"&gt;sim/src/imu-filter/ahrs.cpp&lt;/a&gt;.
&lt;p&gt;
The code works great and tracked twelve hours of data with
no problems.  It runs at 62 KHz on my P4 and 70 Hz on my
iPAQ.  We'll be running with the iPAQ on the helicopter, so
this is fast enough for realtime sensing.  There is no FPU
in the SA1110, so it is an enormous difference in speed
between it and a desktop CPU.</description>
    </item>
  </channel>
</rss>
