Commit Graph

7891 Commits

Author SHA1 Message Date
Andrew Tridgell
55f7d18979 Plane: avoid copying the DCM matrix 2013-05-05 21:51:09 +10:00
Andrew Tridgell
703a1ba438 Copter: avoid copying the DCM matrix 2013-05-05 21:51:09 +10:00
Andrew Tridgell
23d9c31b0a APM_Control: fixed build and merge errors 2013-05-05 21:51:08 +10:00
Paul Riseborough
10ecffce01 APM_Control: ROLL and PITCH controllers
These changes reduce height variation in turns and improve
robustness. the specific changes are:

1) Linked roll and pitch integrator protection to the final output
value so that if final output is on upper limit, the integrator is
prevented from increasing and vice-versa. This improves wind-up
protection.

2) Modified rate feedback in roll and pitch controllers to use body
rates rather than Euler or earth rates.

3) Changed the roll to pitch compensation to use measured roll angle
and estimated airspeed to calculate the component of turn rate
(assuming a level coordinated turn) around the pitch axis. This a
mathematically correct calculation and will work over a range of bank
angles and aircraft with minimal (if any) tuning required.

4) The integrator in the roll and pitch loop is clamped when the
estimated speed is below the minimum FBW speed

5) The noise filter in the pitch and roll loop has been changed to use
a FOH discretisation. This gives improved noise rejection and less
phase loss when compared to the previous filter that used a ZOH or
equivalent discretisation.

This has been flown on the rascal in the SITL and on a X-8 with
limited flight testing. Initial results have been encouraging with
reduced height variation in turns.  Compare to standard PIDS, the
revised pitch and roll controllers allow the use of rate feedback
(effectively the same as the old D term) without beating the servos to
death.  The bank angle compensation in the pitch loop works
effectively over a much larger range of bank angles and requires
minimal tuning compared to the old calculation.

YAW CONTROLLER

Currently testing the a 3-loop acceleration autopilot topology for the
yaw loop with feed forward yaw rate for turn compensation. This 3-loop
topology is commonly used in tactical skid to to turn missiles and is
easy to tune. The following block diagram shows the general signal
flow

Note that the acceleration measurement has to pass through an
integrator before it gets to the actuator. This is a important feature
as it eliminates problems of high frequency noise and potential
coupling with structural modes associated with direct feedback of
measured acceleration to actuator.

The high pass filter has been inserted to compensate for airspeed and
bank angle measurement errors which will cause steady state errors in
the calculation of the turn yaw rate.

The yaw controller flies SITL well, but hasn't been flight tested
yet. It can be configured either as a simple yaw damper, or the
acceleration and integral term can be turned on to allow feedback
control of lateral acceleration/sideslip.

TO DO:

Need to reduce number of tuning parameters and provide consistent
naming Need to provide guidance on tuning these loops with definitions
for all the gain terms.  Need to check signs and units into and out of
lateral loops.

DESIGN DECISIONS PENDING:

1) Can we remove the noise filters? Provided the mpu6k noise filter is
running they are of limited benefit given the 25Hz Nyquist frequency

2) If we do remove them and rely on the mpu6k noise filter, what is
the apprporiate default cutoff frequency for plane use. 20Hz is
probably OK for most setups, but some noisy/high vibration setups
would require as low as 10Hz

3) The inverted flight logic looks like a crash waiting to
happen. It's problematic to test and even if implemented correctly
would still crash a plane with poor inverted flight capability. We
should either implement it properly and fully tested or delete it.
2013-05-05 21:51:08 +10:00
priseborough
3663426550 Plane: Fixed bug in groundspeed_undershoot that could cause a fly-away in windy conditions.
Use the component of velocity in the forward direction rather than the magnitude
2013-05-05 21:51:08 +10:00
Paul Riseborough
663951d9a7 Plane: rename APM_Control parameters
this groups the parameters more logically
2013-05-05 21:51:08 +10:00
Paul Riseborough
8c5b603848 Plane: use new APM_Control API 2013-05-05 21:51:08 +10:00
priseborough
205397d030 APM_Control: Modified calculation of bank compensation rate offset to prevent climb if speed > max fbw speed
The previous calculation constrained the speed used to calculate the
bank compensation rate offset between the min and max fbw speeds. This
would result in an unwanted climb if flown above the max fbw speed
(this could happen in fbw-a mode)
2013-05-05 21:51:08 +10:00
priseborough
e7736ed4e0 APM_Control: APM tuning guide.txt - Updated tuning instructions with numerical values for alternate method 2013-05-05 21:51:08 +10:00
Paul Riseborough
3034a9fab2 APM_Control: Added alternate tuning method for roll and pitch loops
The alternate tuning method for roll and pitch will give a better
results, but comes with more risk as it will result in a larger rate
feedback gain
2013-05-05 21:51:08 +10:00
priseborough
2c29186b03 APM_Control: APM tuning guide.txt - Minor editorial corrections 2013-05-05 21:51:08 +10:00
priseborough
d159d39037 APM_Control: APM tuning guide.txt - Added step by step tuning description. 2013-05-05 21:51:08 +10:00
priseborough
99f0fb6bd2 APM_Control : Removed 20Hz low-pass filters on rate gyro inputs.
These are not required due to MPU 6000 filtering.
2013-05-05 21:51:08 +10:00
priseborough
317b75f4cd APM_Control: Added tuning guide readme 2013-05-05 21:51:08 +10:00
Andrew Tridgell
9654546b5a AP_L1_Control: Cleaned up calculation of damping to reduce computations
also removed _cross2D, using math library instead
2013-05-05 21:51:08 +10:00
Randy Mackay
372ebb602c Copter: disable centrifugal force correction when disarmed 2013-05-05 16:55:06 +09:00
Randy Mackay
30faf87715 InertialNav: use AP_Math's longitude_scale 2013-05-05 14:32:25 +09:00
Randy Mackay
7c9d9b9800 AP_Math: use DEG_TO_RAD in longitude_scale
Also increased accuracy of RadiansToCentiDegrees although it is like the
compiler will throw away the extra digits anyway.
2013-05-05 14:31:24 +09:00
Randy Mackay
ae2ad8e819 Copter: remove unused radius_of_earth constant 2013-05-05 13:13:48 +09:00
Andrew Tridgell
38fc0e61c6 AP_AHRS: optimise yaw drift correction
use new vector2 cross product, and factor out the z component of a dcm
mul_transpose() to reduce the number of floating point operations for
a yaw drift correction cycle
2013-05-05 13:51:45 +10:00
Andrew Tridgell
737f0305ef AP_Math: implement vector2 cross product
useful in DCM for faster yaw correction
2013-05-05 13:47:51 +10:00
Andrew Tridgell
f4189e083b AP_Math: added mulXY() for matrix3 and vector3
returns the XY components of the product
2013-05-05 13:47:23 +10:00
Randy Mackay
ee2daf25b6 AHRS: perf improvement by caching declination vector 2013-05-05 12:58:43 +10:00
Andrew Tridgell
943a1d8c8d AP_AHRS: added AHRS_GPS_MINSATS option
if the number of visible satellites is below AHRS_GPS_MINSATS then
don't use the GPS for acceleration correction for attitude
2013-05-05 12:48:01 +10:00
Randy Mackay
6836964e3c Copter: resolve compiler warning re fence 2013-05-04 23:18:16 +09:00
Randy Mackay
c20eac7a70 AP_InertialNav: use standard LATLON_TO_CM, DEG_TO_RAD constants 2013-05-04 15:04:55 +09:00
Randy Mackay
7d8822dde1 AutoTest: remove lower loiter PID overrides
SITL issues resolved now so default PIDs ok again
2013-05-04 15:03:36 +09:00
Andrew Tridgell
99d21854f9 SITL: fixed drift rate limit in simulator 2013-05-04 15:16:35 +10:00
Andrew Tridgell
53ebcfeba5 SITL: fixed compass vector to be based on yaw not GPS heading
Many thanks to Randy for noticing this, and apologies for the wasted time!
2013-05-04 14:28:08 +10:00
MikkoSaarisalo
2dc5078c83 Added .vagrant to .gitignore
Relates to pull request #183 (Automated dev environment distribution) and leaves vagrant instance specific configs outside git control.
2013-05-03 23:29:07 +09:00
Randy Mackay
1cfd5900a8 Copter: add support for H-quad frame
H-quads are like X quads but the motors spin in the opposite direction.
Having the motors reversed seems to help with yaw authority because of
the slight flex in bodies
2013-05-03 23:13:40 +09:00
Randy Mackay
647a93e78e Copter: remove jerk when entering RTL or AUTO
Loiter target position was not being initialised properly.
Add a few more comments
2013-05-03 16:58:00 +09:00
Randy Mackay
bd75de6a22 AC_Fence: reduce to 150m radius and 100m high
100m high,
2013-05-03 14:57:37 +09:00
Randy Mackay
9e01dea95b AutoTest: reduce copters terminal vel to 15m/s 2013-05-03 14:52:16 +09:00
Randy Mackay
73ea5aab5c AutoTest: override default Loiter PIDs
Although not a permanent solution this temporarily gets the auto tester
to work again because loiter will stop spiralling
2013-05-03 14:51:54 +09:00
Randy Mackay
cca05ee8ae Copter: start dataflash logging when arming
Stop nearly empty logs from being produced.
Removed redundant armed bit from ap state.
2013-05-03 14:49:55 +09:00
Andrew Tridgell
58d5fab412 autotest: copy .tlog files to history 2013-05-03 14:38:32 +10:00
Andrew Tridgell
b43712e4d2 Plane: fixed APM1-1280 build 2013-05-03 12:40:43 +10:00
Randy Mackay
ba472b9749 AutoTest: remove unused missions 2013-05-03 11:22:27 +09:00
Randy Mackay
f14284e7a0 AutoTest: reorganise copter tests 2013-05-03 11:22:15 +09:00
Randy Mackay
44b0c790f3 AutoTest: turn off compass learning in virtual copter 2013-05-03 11:21:00 +09:00
Randy Mackay
68279a138f AutoTest: reduce power of virtual copter 2013-05-03 11:20:26 +09:00
Andrew Tridgell
9f0a4dd553 Plane: log GCS text messages to flash log
useful for seeing more complex actions
2013-05-03 11:16:50 +10:00
Andrew Tridgell
6cc9939891 AP_ADC: added dummy stop_pin and settle_time calls 2013-05-03 11:11:40 +10:00
Andrew Tridgell
0e66bac70b AP_RangeFinder: removed special case for APM1
the airspeed port doesn't have enough power for the sonar anyway
2013-05-03 10:09:54 +10:00
Andrew Tridgell
244a10aeb6 HAL_SMACCM: fixed build for new AnalogIn API 2013-05-03 10:09:14 +10:00
Andrew Tridgell
9bc48c9894 HAL_PX4: fixed build with new AnalogIn API
pin settle times not actually implemented on PX4 yet
2013-05-03 10:09:02 +10:00
Andrew Tridgell
5ac493908c SITL: fixed build with new AnalogIn API 2013-05-03 10:08:39 +10:00
Andrew Tridgell
ef4198bcb4 Rover: don't do failsafe if throttle is below failsafe level 2013-05-03 09:45:19 +10:00
Andrew Tridgell
09ca9d4283 AP_Rangefinder_analog: implement settle time and stop_pin 2013-05-03 09:45:19 +10:00