Decal applied.Ground station packed in. Battery sensor calibrated.This design did not achieve horizontal control. The pitch oscillationfrom not having enough balance beam inertia offset any horizontal force.This redesign did achieve 2 horizontal changes of direction using onlythrottle modulation. Unfortunately she threw a propeller &disintegrated upon crashing.Marcy-1 was already very prone to throwing propellers, her 5300kV motorseemingly at the limit of Chinese plastic. We have a 4' monocopterplanned for extremely long duration hovers with normal RPM.There it is. XYZ positioning using only throttle on the Marcy 1 vehicle.Unfortunately not enough authority to move upwind, so we only gotcrosswind translations & a slower downwind drift than if cyclic wasneutral.As Mike Bakula recommended, used raw magnetometer output & detected whenthe halfway point in the waveform was crossed. Much better than usingderivatives like MIT since the derivatives are very noisy.Very important to have the balance beam loaded as much as humanlypossible to prevent pitch oscillation. Having the motor & battery onthe balance beam is the easiest way to load it. She did indeed bank inthe direction of the translation from throttle alone.An aileron servo would do better against the wind but it would be heavy,expensive, & wear out fast. No way a servo would cycle 6x a second forvery long. If you're gonna use 2 PWM, there's no point in a monocopteranyways but it's probably unavoidable for any long duration, outdoorvehicle.PROPELLER TERRORISMFinally got a flight in no wind & drizzle & she was easily controllableusing only 1 PWM. She was very sensitive to breezes.1 problem was power level changes when applying cyclic which we actuallylearned to handle. Greatest horizontal thrust comes from gliding herwhen applying cyclic. You can stall the motor this way so she justapplies thrust in 1 direction yet stays in the air. Greatest verticalthrust comes from releasing cyclic. Power management on a monocopter isa new artform.The mane problem was broken propellers after 6 minutes. That's right.The GWS 3x2's are just not strong enough to provide hovering power.Marcy 1 is perfect in every way but dead without a stronger propeller.Ideas range from griding them down to 2.5x2 & using 3x3 if the weatherever improves.3x2 ground into a 2.5x2SONAR REVIVALGetting sonar working on a new flight computer & new radio is nevereasy. The mane problem is actually the microcontrollers & tools. Everynew microcontroller has a different register set. If you want SPI,magnetometer, & 3k of RAM that means capture compare & analog need to berewritten.Also, the MRF49XA takes so much more CPU time to service than the XBee,sonar had to go on a dedicated USB device, making it more expensive touse 8 bit PICs than 32 bit ARMs.3 years ago ARMs were $10 & really tough to solder. Now they're $2 &easily soldered. PICs are only still around because of code reusethough ARMs need a lot more pins for programming.Building a 100Mhz computer from scratch using an ARM has always beenalluring, but the only motivation now would be going back to embeddedautopilots or a huge price advantage with ARMs.SONAR THEORYThe trick with sonar is to synchronize the clocks on the ground station& aircraft. Vika 2 did it by sending 1 beacon to the ground station &aircraft simultaneously. Marcy 1 doesn't have sonar on the same USBport so there's a significant rewrite already.The complete Marcy 1 sonar guided kit, applying all the sonar knowledgegained from Vika 2.The standalone sonar board is the simplest possible.Now more views of the machine with 3x2's & loaded balance beam.Sonar installed, magnetometer in the stock & this thing which tellstime. Wow that sounds neat.Making the sonar crash resistant is going to require a new fuselage.Aren't you glad you didn't need to solder this. This is standard forChinese toys though not Air Force grade except for the name.Balancing act.Final look before crashing.
Nowadays the HMC5843 is the one to get. That degausses itself. Calibrating magnetic heading on VicaCopter was a long & hard process. This is what the README has.
The IMU must be calibrated and giving the proper roll & pitch before the
magnetometer is calibrated.
In settings.conf, set X_MAG, Y_MAG, Z_MAG to 0, 1, 2. Set DUMP_MAG to
1. Set DECLINATION to 0. Set X_MAG_SIGN, Y_MAG_SIGN, Z_MAG_SIGN to 1.
Run the autopilot on the airframe with the magnetometer & everything
mounted in its final position. Rotate the airframe on the X, Y, & Z
axes and note which axis corresponds to which column of mag output.
Change the X_MAG, Y_MAG, & Z_MAG indices to match the dumped columns.
Now the X, Y, & Z axes will be dumped in order & it's time to calibrate
the ranges.
Rotate on the X, Y, & Z axes and note which direction North is from the
printout. If you're on the northern hemisphere, north points into the
ground. On the southern hemisphere north points into the sky. Set the
_MAG_SIGN variables all to 1. Point the nose at North. If Y_MAG is
negative, set Y_MAG_SIGN to -1. Point the starboard side at North. If
X_MAG is negative, set X_MAG_SIGN to -1. Point the skids at North. If
Z_MAG is POSITIVE, set Z_MAG_SIGN to -1.
Restart arm_copter.
Point each axis of the magnetometer towards & away from North and copy
the max & min values from each column to the MAG_MIN and MAG_MAX values
in settings.conf. When the nose points toward north, Y mag is
positive. When starboard points toward north, X mag is positive. When
the rotor head points toward north, Z mag is positive.
Next, set DUMP_MAG to 0 and DUMP_THETA to 1. Restart arm_copter.
Rotate the airframe on the yaw axis. The printed heading should be
North: 0, East: 90, South -179/179, West: -90. If the heading increases
when it should decrease, reverse COMPASS_SIGN in settings.conf. If the
heading is always offset by a certain amount, change COMPASS_OFFSET in
settings.conf to correct the offset.
Finally, you need to set DECLINATION to the magnetic declination for
your area. If magnetic north is 14' East of true north, set DECLINATION
to 14. Also, use DECLINATION to correct any rotation error in the
hardware mounting.
With the autopilot running, rotate on the yaw & pitch axes to verify the
compass reading is mostly independant of the tilt.
Set RAD_TO_GYRO_Z so the integrated heading matches the magnetic
heading.
CORRECTING INDUCTION EFFECTS
You must now correct for the effect of current running through power
lines to the motors. Set DUMP_THETA to 0 & DUMP_MAG to 1. Strap the
airframe down to run the motors at full power.
Run the "script" command to capture the debugging output. Run the
motors at full throttle & at 0 throttle to capture the full range. Type
"exit" to save the output. Plot it in OpenOffice & note the change
between full power & 0 power in the levels. Enter this change in the
MAG_OFFSETX, MAG_OFFSETY, MAG_OFFSETZ settings.
Set DUMP_THETA to 1 & DUMP_MAG to 0. Do another full power test to see
if the heading at full power is the proper heading. Currently the
offset is added for all power levels.
I like your data link system elegant design minimal components high speed, you could add a decent antenna to get longer range. I want to add magnetic compass to ArduPilot based on same sensor your have on Marcy1, can you recommend a good calibration algorithm, do you re-cal during flight?
No rocket motors yet ?? I cut down a black EP4040 prop for my Pocket Combat wing. I use a GWS prop adaptor with rubber insert to clamp shaft. I land hard all the time and have only broke 2 props so far, see nicks in blades
Comments
The IMU must be calibrated and giving the proper roll & pitch before the
magnetometer is calibrated.
In settings.conf, set X_MAG, Y_MAG, Z_MAG to 0, 1, 2. Set DUMP_MAG to
1. Set DECLINATION to 0. Set X_MAG_SIGN, Y_MAG_SIGN, Z_MAG_SIGN to 1.
Run the autopilot on the airframe with the magnetometer & everything
mounted in its final position. Rotate the airframe on the X, Y, & Z
axes and note which axis corresponds to which column of mag output.
Change the X_MAG, Y_MAG, & Z_MAG indices to match the dumped columns.
Now the X, Y, & Z axes will be dumped in order & it's time to calibrate
the ranges.
Rotate on the X, Y, & Z axes and note which direction North is from the
printout. If you're on the northern hemisphere, north points into the
ground. On the southern hemisphere north points into the sky. Set the
_MAG_SIGN variables all to 1. Point the nose at North. If Y_MAG is
negative, set Y_MAG_SIGN to -1. Point the starboard side at North. If
X_MAG is negative, set X_MAG_SIGN to -1. Point the skids at North. If
Z_MAG is POSITIVE, set Z_MAG_SIGN to -1.
Restart arm_copter.
Point each axis of the magnetometer towards & away from North and copy
the max & min values from each column to the MAG_MIN and MAG_MAX values
in settings.conf. When the nose points toward north, Y mag is
positive. When starboard points toward north, X mag is positive. When
the rotor head points toward north, Z mag is positive.
Next, set DUMP_MAG to 0 and DUMP_THETA to 1. Restart arm_copter.
Rotate the airframe on the yaw axis. The printed heading should be
North: 0, East: 90, South -179/179, West: -90. If the heading increases
when it should decrease, reverse COMPASS_SIGN in settings.conf. If the
heading is always offset by a certain amount, change COMPASS_OFFSET in
settings.conf to correct the offset.
Finally, you need to set DECLINATION to the magnetic declination for
your area. If magnetic north is 14' East of true north, set DECLINATION
to 14. Also, use DECLINATION to correct any rotation error in the
hardware mounting.
With the autopilot running, rotate on the yaw & pitch axes to verify the
compass reading is mostly independant of the tilt.
Set RAD_TO_GYRO_Z so the integrated heading matches the magnetic
heading.
CORRECTING INDUCTION EFFECTS
You must now correct for the effect of current running through power
lines to the motors. Set DUMP_THETA to 0 & DUMP_MAG to 1. Strap the
airframe down to run the motors at full power.
Run the "script" command to capture the debugging output. Run the
motors at full throttle & at 0 throttle to capture the full range. Type
"exit" to save the output. Plot it in OpenOffice & note the change
between full power & 0 power in the levels. Enter this change in the
MAG_OFFSETX, MAG_OFFSETY, MAG_OFFSETZ settings.
Set DUMP_THETA to 1 & DUMP_MAG to 0. Do another full power test to see
if the heading at full power is the proper heading. Currently the
offset is added for all power levels.