Warning #1: an issue has been found with Tower's Pause button which can cause the vehicle to fly to an old position if the vehicle has not sent a position update to Tower in some time.
Warning #2: Copter-3.3.2 fixes a bug found in Copter-3.3.1's desired climb rate initialisation which could lead to a sudden momentary drop when switching from Stabilize or Acro to AltHold, Loiter or PosHold.
Warning #3: Copter-3.3.2 fixes an issue found in Copter-3.3.1 which could lead to hard landings in RTL or AUTO if the WPNAV_SPEED_DN was set too high (i.e. >400 or 4m/s) and/or the WPNAV_ACCEL_Z was set too low (i.e. <100 or 1m/s/s).
Warning #4: a bug was found in Copter-3.3 which could cause a sudden crash if you abort a Take-off initiated from a ground station. Video description is here. The bug is fixed in Copter-3.3.1 so we recommend upgrading.
Note #1: AC3.3-rc8 corrected a long standing bug in the HDOP reporting. HDOP values will appear about 40% lower than previously but this does not actually mean the GPS position is better than before.
Note #2: if upgrading from AC3.2.1 the vehicle's accelerometer calibration needs to be done again.
Note #3: set SERIAL2_PROTOCOL to "3" and reboot the board to enable FrSky telemetry like in previous versions.
Note #4: the wiki will be updated over the next few weeks to explain how to use the new features
Copter-3.3.1 is available through the mission planner. The full list of changes vs AC3.2.1 can be see in the ReleaseNotes and below are the most recent changes since AC3.3.
Sadly this version (and all future versions) will not run on the APM2.x boards due to CPU speed, flash and RAM restrictions.
Changes from 3.3:
1) Bug fix to prevent potential crash if Follow-Me is used after an aborted takeoff
2) compiler upgraded to 4.9.3 (runs slightly faster than 4.7.2 which was used previously)
Changes from 3.3-rc11:
1) EKF recovers from pre-arm "Compass variance" failure if compasses are consistent
Changes from 3.3-rc10:
1) PreArm "Need 3D Fix" message replaced with detailed reason from EKF
Changes from 3.3-rc9
1) EKF improvements:
a) simpler optical flow takeoff check
2) Bug Fixes/Minor enhancements:
a) fix INS3_USE parameter eeprom location
b) fix SToRM32 serial protocol driver to work with recent versions
c) increase motor pwm->thrust conversion (aka MOT_THST_EXPO) to 0.65 (was 0.50)
d) Firmware version sent to GCS in AUTOPILOT_VERSION message
3) Safety:
a) pre-arm check of compass variance if arming in Loiter, PosHold, Guided
b) always check GPS before arming in Loiter (previously could be disabled if ARMING_CHECK=0)
c) sanity check locations received from GCS for follow-me, do-set-home, do-set-ROI
d) fix optical flow failsafe (was not always triggering LAND when optical flow failed)
e) failsafe RTL vs LAND decision based on hardcoded 5m from home check (previously used WPNAV_RADIUS parameter)
Thanks for your testing!
Replies
Randy,
I have a concern about the rc10 change mentioned in item 3e of your updated OP. 5 meters seems high for a fixed value. I frequently launch from my back yard where I have trees, shrubs, and house on 4 sides with a 5 or 6 meter square open region. I generally set the final return to launch altitude to a safe height above the trees in case the GPS error is higher than normal. Then I can command the land when I am ready to control it for safety. I'm usually able to guide the landing and I usually fly with telemetry so I should be aware if it decides to land where it shouldn't, but if I'm not paying close attention, a failsafe landing 5 meters from home will cause a crash. I believe I have WPNAV_RADIUS set to 2 meters (Is that the default?) but I really don't want it to land at all, even if the failsafe is triggered directly above home. At the very least, I need less than 5 meters offset.
Would it be better to use the smaller of WPNAV_RADIUS and the hard coded number rather than just the hard coded number? It would also be great to have the option of not choosing land at all as the action! Especially if the final altitude is not 0.
In fact, isn't the goal of this cut-off radius just to avoid the climb to RTL altitude and the extra risk that involves? Wouldn't it be best then to just implement it that way? If within the WPNAV_RADIUS, just skip the climb and perform the rest of the normal failsafe RTL action?
Thoughts?
--Brad
There are a number of parameters listed on the RTL flight mode wiki page that may help. So for example, to stop the vehicle from descending during the land phase of RTL, set RTL_ALT_FINAL to a number > 0. like 10m and it will stay up there.
I think everyone understands, but just in case, the failsafe radius of 5m is only used to make the decision whether the vehicle should RTL (as the failsafe parameter specifies) or whether it should instead LAND. So if the vehicle is within 5m of home when the failsafe happens, it will trigger a LAND instead of an RTL. If an RTL happens, it will still attempt to land at the takeoff location.
The feedback I've received on the previous 2m radius (from a few people) was that it was too small. There's some discussion of a more complicated decision involving altitude and distance from home but sadly that will need to wait for Copter-3.4.
I think 5m (or 15feet) is really quite a short distance but I must admit when Luis and I discussed it I thought to myself it was perhaps too large. How about 3m or 4m? I'm not keen on using WPNAV_RADIUS because I think most people will not expect this parameter to affect the failsafe behaviour so I'd prefer a hardcoded distance if we can agree on one.
Use of WPNAV_RADIUS does make sense to me, especially since the other WPNAV_ parameters control the return speed, etc. But I think the more important issue is *why* is land being performed at all if RTL is the selected failsafe action? As you mention, land may not even be configured as a part of RTL if RTL_ALT_FINAL is not 0. So if it's not zero, why land just because the failsafe happened to occur within a 5m radius of home? Shouldn't we be going to RTL_ALT_FINAL instead?
I'm guessing the motivation for land if inside WPNAV_RADIUS was just an easy way to avoid wasting power climbing to RTL_ALT only to decend and land again later (in the default case where RTL_ALT_FINAL=0)
I see this as a safty issue. If RTL_ALT_FINAL is greater than 0, it may be because it's pilot control is the only safe way to land. If so, failsafe should not land, no matter where it happens to be when failsafe kicks in.
--Brad
Hi Brad,
I was discussing this issue of the radius with Randy, and the 2m seems somewhat "short" because of the errors associated with positioning, read "GPS positioning radius", which would result in never being "inside" that circle.
With a larger fixed diameter the possibility of being inside the radius increases, and you have the ability of repositioning the vehicle while it is landing (LAND_REPOSITION=1).
Other option would be to use the GPS horizontal error as a factor, but that would vary too much to be reliable.
Even yesterday with RC9 I had one of these events happen to me, while I had the quad in front of me at arm length, and at head height, when the RTL from the battery failsafe kicked in and the quad shot to the sky (15m), although it had been armed from aprox. the same position I was flying, but the GPS error had it outside the 2m radius...And believe me that an overpowered 330 quad can scare you if it jumps right in front of you from head height to 15m....
Isn't the WPNAV_RADIUS parameter expected to be used for exactly this purpose? To avoid wasting time hunting for an exact position? I assume that's why it used to be the cut-off between the two behaviors. The problem was caused when someone had that parameter set very high and a landing was performed in an unsafe area. It seemed very reasonable to me to use that parameter for this purpose.
I don't think a 2 meter radius would result in never being inside the circle unless the EKF position estimate is drifting around very quickly!
But as I said, I may not want unguided landings at all. I'd rather that LAND is not even a possible failsafe action if I have configured RTL. (except, perhaps when there is no longer enough voltage/throttle headroom to fly reliably). I've already specified the failsafe action as RTL without a full landing by specifying a non-zero final altitude.
It seems to me that instead of land, we just want to avoid the climb to RTL altitude when we are already home. And it seems to me that already home may as well be specified the same way as all the other waypoints with WPNAV_RADIUS.
--Brad
I just upgraded from -rc9 to -rc10 and noticed that my motors no longer spun up when armed. I had to change the MOT_SPIN_ARMED parameter to 75 from the default 70 to get them to spin as they did before. I hope this is the correct method.
Did you try doing a esc calibration after the update and before you changed you mot_spin?
Mike,
Thanks for the report. I'll bet that's caused by the slight change in the shape of the pwm->thrust curve. If you'd like to confirm (I'd kinda like to know actually) you could try changing MOT_THST_EXPO from 0.65 back to 0.50.
I changed MOT_THST_EXPO from .65 to .50 as requested. The motors would not spin until MOT_SPIN_ARMED was at 75 so that change didn't have any effect. Fortunately I was using a GCS at the time this first happened and appreciated that the craft was armed even though the props were still.
I tried to look at the log file for this session but it is 178mb and crashes Mission Planner (or overstresses my PC) whenever I attempt to load it.
I also accidentally powered up the copter and armed it without a SD card installed with no warnings from Mission Planner. I feel sure I got a warning last time I did that.
Edit. I just changed another copter from -rc9 to -rc10 and the motors spin when armed without adjusting any parameters.