Andrew Tridgell
e4a245179c
AHRS: cope with copters with no compass
...
if a copter doesn't have a compass, we can't use the GPS for gyro
drift correction
2012-06-27 16:01:50 +10:00
Andrew Tridgell
f4faf941e2
GPS: test the more modern MTK16
2012-06-27 16:01:50 +10:00
Andrew Tridgell
27761737ce
SITL: fixed GPS heading in simulated UBlox
...
longitude scale does not apply to velocity->heading conversions
2012-06-27 16:01:50 +10:00
Andrew Tridgell
b811653800
SITL: changes UBlox simulation to 5Hz
...
this matches the real UBlox driver
2012-06-27 16:01:50 +10:00
Andrew Tridgell
e4d28b12e5
Compass: remove the need to call calculate() on the compass object
...
the new AHRS code doesn't use calculate() and the compass.heading
attribute. Instead it works on the raw magnetometer vector. This
change removes the internal calculate state from the compass object
and instead adds calculate_heading() for use by older code that
doesn't go via AHRS.
This significantly reduces the calculation involved in compass updates
The null offsets enable/disable code is also removed, as it is not
needed now that compass offsets are not linked to the AHRS state.
2012-06-27 16:01:50 +10:00
Andrew Tridgell
3a41ad8e7c
AHRS: normalize the ge vector in drift correction, and use barometer
...
The normalisation ensures the error term scales uniformly with
different accelerations.
The barometer is used for vertical acceleration estimation
2012-06-27 16:01:50 +10:00
Andrew Tridgell
c387edd74c
Baro: added get_altitude() and get_climb_rate() interfaces
...
this allows the barometer driver to calibrate and return altitude and
climb rate values. This will be used by the AHRS drift correction code
for vertical velocity
The climb rate uses a 5 point average filter
2012-06-27 16:01:50 +10:00
Andrew Tridgell
06c8763881
Filter: added 5 point average float filter
2012-06-27 16:01:50 +10:00
Jonathan Challinger
d230690b7b
AHRS: brought DCM more inline with Bill's implementation
...
omega_I applied continuously. _ki larger. Stop integrating when _omega.length()>20
The key change was the scaling of ge to ensure the error is not
quadratic
2012-06-27 16:01:49 +10:00
Andrew Tridgell
d4c8041c51
AHRS: first successful version of Bills new drift correction system
...
This makes 3 major changes:
1) fixes the scaling of the yaw drift correction term to fix the time
constant
2) don't integrate the mag vector over multiple readings
3) accumulate omega_I changes over 15 seconds before applying, to try
to prevent omega_I picking up short term responses
2012-06-27 16:01:49 +10:00
Andrew Tridgell
4d08f75292
AHRS: update for new _fly_forward flag
2012-06-27 16:01:49 +10:00
Andrew Tridgell
0f5c22bd8e
AHRS: implement Bills new drift correction algorithm
...
this is an initial implementation of this paper:
http://gentlenav.googlecode.com/files/RollPitchDriftCompensation.pdf
2012-06-27 16:01:49 +10:00
Andrew Tridgell
52d77407d4
AHRS: added GPS support to AHRS test
2012-06-27 16:01:49 +10:00
Andrew Tridgell
37db5247cd
GPS: added velocity and acceleration components
...
used by AHRS for acceleration correction
2012-06-27 16:01:49 +10:00
Andrew Tridgell
fe865bc1dc
Math: added comment
2012-06-27 16:01:49 +10:00
Andrew Tridgell
c30b0d85a3
Math: moved more template functions to the .cpp files
...
save a bit more code space for larger functions
2012-06-27 16:01:49 +10:00
rmackay9
068fe64b9b
ArduCopter HIL: changed calls to setHIL to send in time as a uint32_t (it was a float)
2012-06-26 22:50:17 +09:00
Jason Short
7b9583453b
Added a crude Lead Filter. Needs some fine tuning, lag specification, scaling. Works great on 4hz GPS such as Mtek.
2012-06-21 11:14:20 -07:00
Amilcar Lucas
78ccb9d37f
Add linebreaks to increase readability.
2012-06-21 00:36:10 +02:00
Amilcar Lucas
b072a59843
Improve parameters descriptive text
2012-06-21 00:20:37 +02:00
Amilcar Lucas
594cedd324
Documentation improvements, no functional changes (only comments)
2012-06-17 22:53:54 +02:00
Amilcar Lucas
f4e9587aca
Move local temp variables to the stack it saves 1952 bytes
...
Add function comments
Only use _ on class member variables
Only point to a 3D GPS point if GPS has a fix
Implement MAV_MOUNT_MODE_MAVLINK_TARGETING
2012-06-17 22:25:51 +02:00
Wingspinner
d09ac5899b
Added support for channel curves (and expo) to AP_RC_Channel class. Also updated AP_RC_Channel example/test to demonstrate and test new functionality
2012-06-15 08:40:14 +00:00
Wingspinner
b699c77323
Added support for channel curves (and expo) to AP_RC_Channel class. Also updated AP_RC_Channel example/test to demonstrate and test new functionality
2012-06-15 08:38:52 +00:00
Andrew Tridgell
a851c53de4
GPS: need pgmspace.h for _write_progstr_block()
2012-06-15 16:27:11 +10:00
Andrew Tridgell
70f18289c5
GPS: fixed auto-config of UBlox setup with no UBX messages
...
if a UBlox is configured for NMEA only, with no UBX messages at all
then it would never trigger the GPS_AUTO detection. This adds a UBX
config message to the init strings that enables the NAV_SOL message
2012-06-15 15:53:27 +10:00
Andrew Tridgell
1fe297ab63
FastSerial: added tx_pending() method
...
this allows the caller to wait for the tx buffer to drain
2012-06-15 15:53:27 +10:00
Amilcar Lucas
1906e06b69
Added camera trigger functionality
2012-06-13 21:00:20 +02:00
Amilcar Lucas
a32b7c200b
Add "3 axis camera stabilization" and "point camera to 3D point" functionality
...
Patch by Gregory Fletcher and reviewed by me
2012-06-13 20:55:19 +02:00
Amilcar Lucas
5ffd489d87
Spellcheck
2012-06-13 20:44:35 +02:00
rmackay9
1e38b0d535
AP_GPS_NMEA: fix from Roberto Navoni to improve NMEA accuracy
2012-06-12 20:27:50 +09:00
Andrew Tridgell
f9560ef093
GPS: use the new nav_setting in a couple of the sample sketches
2012-06-10 16:35:13 +10:00
Andrew Tridgell
33a2ad7e07
GPS: add stub settings for nav_setting in the other GPS drivers
...
only Ublox supports nav_setting so far
2012-06-10 16:34:53 +10:00
Andrew Tridgell
514be604a5
GPS: added auto-configuration of UBlox GPS
...
the Ublox will now auto-configure for 5Hz with just the messages we
want. It also supports setting the navigation engine type
2012-06-10 16:34:13 +10:00
Andrew Tridgell
9c1ce9e1c5
FastSerial: avoid buffer re-allocation on re-open if possible
...
we commonly re-open serial ports a lot in the AUTO GPS driver
2012-06-09 07:43:22 +10:00
Andrew Tridgell
cf4e56457b
SITL: map() is a C++ function, so needs to be in C++ part of the header
...
this fixes the ACM build
2012-06-08 17:09:23 +10:00
Andrew Tridgell
cbf477addd
GPS: added debug code to the main GPS class
2012-06-08 16:42:03 +10:00
Andrew Tridgell
a8bfc5d8e9
GPS: re-open the serial port with a 256 byte serial receive buffer
...
this ensures all GPS parsers have a 256 byte buffer available
2012-06-08 16:42:03 +10:00
Andrew Tridgell
296e651b30
GPS: fixed the UBLOX parser to handle unknown messages
...
the parser was broken in several ways:
1) when it received an unknown message it didn't update the ck_a and ck_b fields, so it
thought the message had a bad checksum, which meant it got out of protocol sync
2) the read() method would return false if the last message from the GPS was of an unknown type.
So we relied on the last msg always being one that we understand and want
3) the parser considered any valid UBLOX message to be 'new data', whereas we only actually get
a new fix when we get box a new position and velned message
4) the total message size per update is more than 128 bytes, but the serial port was opened
with only a 128 byte buffer, so we got corruption regularly
2012-06-08 16:42:02 +10:00
Andrew Tridgell
9c2ba2e814
GPS: tidy up the auto gps test
2012-06-08 16:42:02 +10:00
Robert Lefebvre
238a1ced2c
TradHeli adding ramp up time to Ch8 Throttle Pass-through.
2012-06-07 22:55:47 -04:00
Robert Lefebvre
df17ff3bc1
AP_MotorsHeli Syntax correction.
2012-06-04 15:53:07 -04:00
Andrew Tridgell
25c17a5425
re-enable the AP_Mount build
2012-06-04 19:32:11 +10:00
Andrew Tridgell
0f0cbce22f
GPS: fixed a race condition in the ublox driver
...
the status update comes as a separate message from the lat/lon
2012-06-04 14:47:58 +10:00
Andrew Tridgell
012fc35314
mavlink: fixed build with uart resend
2012-06-04 13:45:55 +10:00
Andrew Tridgell
b6467cb1fa
MAVLink: updates to mavlink headers to fix mavlink 1.0 issues
2012-06-04 13:34:07 +10:00
Andrew Tridgell
d8919731ee
Mavlink: fixed library build for MAVLink 1.0
2012-06-04 13:14:52 +10:00
Andrew Tridgell
ec1abbf987
SITL: fixed SITL build with mavlink10
2012-06-04 13:14:52 +10:00
Andrew Tridgell
60f8d09506
mavlink10: fixed MAV_VAR -> MAVLINK_TYPE
2012-06-04 13:14:51 +10:00
Andrew Tridgell
bccfb08c55
MAVLink: updated to latest upstream mavlink
...
this includes no significant changes
2012-06-04 13:14:51 +10:00
Jason Short
73e23aab2a
GPS time set to unsigned int32
2012-06-03 11:13:50 -07:00
rmackay9
5c9dc00ae2
AP_Baro: fixed comment to clarify that every-other call updates temperature or pressure
2012-06-03 17:31:17 +09:00
rmackay9
dcdeae412e
ArduCopter: Another attempt at fixing the lat/lon printing bug in which small negative lattitudes or longitudes were appearing as positives.
...
Fixed in both ArduCopter Log.pde and the GPS Auto test sketch
2012-06-03 16:58:19 +09:00
rmackay9
173ae33627
ArduCopter Desktop Build: added definition of "map" to wiring.h and included WMath.cpp to fix SITL build failures.
...
All real work on this issue done by Michael Oborne.
2012-06-02 17:46:00 +09:00
rmackay9
c82a403b88
AP_MotorsHeli: Added reference to "Arduino.h" to allow autotest builder to work.
...
Moved around initialisation of parmeters in AP_MotorHeli object to remove compiler warnings.
2012-06-02 16:13:23 +09:00
rmackay9
c3b1a79f6a
RC_Channel library: change all "int" types to "int16_t".
...
Fixes SITL compile error due to type mismatch of set_pwm between .h and .cpp file (this only occurs because on the SITL, "int" is actually "int32_t"
2012-06-02 14:20:58 +09:00
rmackay9
d9f124afbb
RC_Channel.pde: fixed compile errors so that it actually works!
2012-06-02 14:00:44 +09:00
rmackay9
2a216ce900
ArduCopter: fixed print_latlon bug in which it would print negative lat/lon numbers incorrectly (i.e. -1234567890 would be printed as -124.xxx).
2012-06-02 12:51:12 +09:00
Jason Short
c2d14a5cad
RC_Channel fix for throttle output.
...
throttle was outputting incorrectly and allowing the user to max out the throttle leaving nothing for attitude control
2012-05-31 14:59:03 -07:00
Jason Short
0adb5cb396
Issue 416: RC_Channel – Fix to make dead_zones still output 0
2012-05-31 12:05:47 -07:00
Jason Short
1c690b44de
removed never used filter, and fixed a constrain that could make range calcs go bad
2012-05-31 11:45:07 -07:00
Jason Short
862b374d19
Channel rage fix - low output was always 0 vs _low
2012-05-31 11:31:48 -07:00
Robert Lefebvre
5f058fb9b2
TradHeli: Incorporating Ext ESC Control
2012-05-30 21:50:25 -04:00
Robert Lefebvre
56335e81e4
Fix TradHeli Collective Yaw Effect bug.
2012-05-25 15:25:21 -04:00
Andrew Tridgell
ddfa06e857
SITL: fixed ChipErase()
...
the loop never completed
2012-05-23 21:15:45 +10:00
Andrew Tridgell
6e444f6b64
SITL: fixed build with new ChipErase() call
2012-05-23 17:33:33 +10:00
Andrew Tridgell
fc73fd6531
DataFlash: use ChipErase() instead of PageErase() on all pages
...
This makes the DataFlash erase much faster (about 6 seconds instead of
about 60 seconds).
We need to test and ensure the behaviour is equivalent apart from the
speed
2012-05-22 19:29:02 -07:00
Andrew Tridgell
f274df454a
DCM: fixed a bug when using GPS for yaw correction
...
When using GPS for yaw correction we need to apply the x and y omegaI
corrections from the _omega_I_sum in the period before we get to the
minimum ground speed for GPS yaw correction. Otherwise we get a large
sudden omega_I change on takeoff.
2012-05-21 12:15:06 +10:00
Andrew Tridgell
9d221b3625
AP_Common: fixed some duplicate product ID warnings
2012-05-17 23:37:32 +10:00
rmackay9
357d6c2d9b
ArduCopter: bug fix for reversing tri servo
...
Extended AP_MotorsTri class to take in pointer to rc_tail servo (rc_7) and we use this servo's REV parameter to determine whether to reverse the output to the tail servo or not
2012-05-13 12:36:46 +09:00
Craig Elder
69bf5700cd
IMU: expose IMU_PRODUCT_ID as EEPROM Variable
...
this will allow us to log the Product ID in tlogs
2012-05-09 18:30:36 -07:00
Craig Elder
4a1d8b0875
AP_InertialSensor: Return product ID from sensor initialization
...
this exposes the product ID to the IMU Layer
2012-05-09 18:30:36 -07:00
Craig Elder
4c46955612
PRODUCT: Define product IDs for all supported products
2012-05-09 18:30:36 -07:00
Craig Elder
ed99940bee
MPU6000: Fixed Scaling on Accelerometers Rev C vs Rev D
...
Rev C have non standard scaling factor that is 1/2 of the data sheet
Rev D chips conform to the specification
2012-05-09 18:30:35 -07:00
Chris Anderson
34f5923ef3
fixed typo ("minimum" should have been "maximum")
2012-05-06 15:50:19 -07:00
Andrew Tridgell
2dd655d87d
MPU6k: added suspend/resume on init
2012-05-01 12:06:54 +10:00
Andrew Tridgell
88b2139d91
Baro: added suspend/resume on init
2012-05-01 12:06:54 +10:00
Andrew Tridgell
d692a932ca
ADC: added suspend/resume on init
2012-05-01 12:06:54 +10:00
Andrew Tridgell
534aee17e9
TimerProcess: added suspend_timer()/resume_timer()
...
this will be used to avoid races in driver initialisation
2012-05-01 12:06:54 +10:00
rmackay9
6e1798b104
AP_AHRS: updated default AHRS_YAW_P to 0.2 (was 0.4)
...
This reduces the compass's default authority over the yaw direction by half
2012-04-30 17:29:45 +09:00
Andrew Tridgell
ca8bc34c98
MAVLink: re-generated with new pygen
...
this moves the enums to make them less order sensitive
2012-04-30 12:27:30 +10:00
Adam M Rivera
56d3fa1601
Parameters.pde/AP_MotorsHeli: Updated comments to leverage the new value aliases
2012-04-28 20:50:41 -05:00
Andrew Tridgell
4f90e6e844
build: cope with Arduino 1.0 in command line build
...
this should autodetect 1.0 versus older builds
2012-04-27 15:38:42 +10:00
Adam M Rivera
239323eaa4
Parameters.pde/AP_MotorsHeli.cpp: Added comments from Roberts clone.
2012-04-26 18:26:14 -05:00
Adam M Rivera
3309dec205
AP_AHRS_DCM.cpp: Added comments that follow the new parse structure
2012-04-25 12:00:42 -05:00
Andrew Tridgell
89041c6996
sitl: support MAVLink 1.0 builds
2012-04-24 22:24:58 +10:00
Andrew Tridgell
d11957718f
MAVLink: removed the cpp part of the library
...
this was preventing building MAVLink 1.0 with the arduino GUI as we
can't set cpp defines
2012-04-24 22:24:58 +10:00
Andrew Tridgell
eb5bc964d8
MAVLink: one more define for MAVLink 1.0 compat
2012-04-24 19:54:20 +10:00
Andrew Tridgell
0753782c49
MAVLink: re-add the XML message definitions
...
these are a very useful reference for the current headers in the code
2012-04-24 10:57:43 +10:00
Andrew Tridgell
5c067d5a03
MAVLink: imported new mavlink header updates
...
this fixes the camera control code which was broken by a previous
import
2012-04-24 10:57:43 +10:00
Andrew Tridgell
e8f8115a8f
APM_RC: added OutputCh_current() method
...
this allows logging of the actual servo output values. The radio_out
method previously used doesn't take account of the various override
mechanisms available via waypoints
2012-04-24 10:57:43 +10:00
Andrew Tridgell
2a3af369b6
DCM: buffer omega_I changes over 10 seconds
...
this buffers up _omega_I changes in _omega_I_sum over a period of 10
seconds, applying the slope limit only when _omega_I_sum is
transferred to _omega_I.
The result is a huge improvement in the ability of _omega_I to track
gyro drift over the long term.
2012-04-23 12:13:25 +10:00
Andrew Tridgell
f27d85cb8d
DCM: drop the 'drop z' method
...
the 'drop z' method reduced the impact of noise on omegaI, but it also
made us more sensitive to errors in accelerometer calibration and
scaling, as demonstated by the logs from Gabor here:
http://diydrones.com/xn/detail/705844:Comment:834373
Simulation testing shows that the other noise suppression methods
applied in the DCM code, in particular the slope limiting on omegaI
the removal of the weighting and the upcoming use of a _omega_I_sum
buffer have reduced the impact of noise enough that we can now safely
include z in the acceleration calculation.
2012-04-23 12:13:24 +10:00
rmackay9
11a384a7ff
AP_Motors - allow tail servo to be reversed. Closes ArduCopter issue #228
2012-04-21 23:07:57 +09:00
rmackay9
c45b124cbe
DataFlash_APM2 - moved CS_inactive call (which disables the dataflash) from the beginning to the end of all methods. This means the dataflash does not monopolize the SPI bus.
...
Also formatting changes to use tab instead of space. Sorry, should have done this as a separate check-in to the above changes.
2012-04-21 20:14:45 +09:00
rmackay9
f18ee75b5c
AP_OpticalFlow - updated test sketch to allow testing of APM2 version
2012-04-21 20:11:18 +09:00
rmackay9
3075a0c5bd
AP_OpticalFlow - added support for optical flow for APM2
2012-04-21 20:10:35 +09:00
rmackay9
7bda35dc28
AP_OpticalFlow - moved most pin definitions into .cpp file
2012-04-21 20:09:15 +09:00
James Goppert
20cdc3a0ac
MAVLink update to 1.0.7
2012-04-20 12:31:50 -04:00
Andrew Tridgell
7f8fe97889
GPS: u-center config file for 3DR Ublox
2012-04-20 22:05:30 +10:00
Andrew Tridgell
f170790fd8
GPS: fixed auto GPS test
2012-04-20 22:05:30 +10:00
Andrew Tridgell
711814085b
GPS: detect new style 3DR UBlox
2012-04-20 22:05:30 +10:00
Andrew Tridgell
08bc7f1a41
GPS: fixed the UBlox test code
2012-04-20 20:57:08 +10:00
James Goppert
ba89f39781
Updated MAVLink to 1.0.6 release.
2012-04-19 15:46:29 -04:00
Adam M Rivera
b500d9430f
AP_AHRS_HIL.h: Fixed HIL build by adding missing public property.
2012-04-16 10:26:14 -05:00
Andrew Tridgell
8e90aeea4e
AHRS: added AHRS_YAW_P parameter
...
this allows users to change the yaw gain in DCM
2012-04-16 20:55:13 +10:00
analoguedevices
28833ed1d6
added missing #include
2012-04-09 14:32:54 +00:00
rmackay9
c96dfb2108
AP_AHRS - changed parameter order to remove compiler warning
2012-04-09 17:37:11 +09:00
rmackay9
ef43da9b92
AP_Compass - changed parameter initialisation order to remove compiler warning
2012-04-09 17:37:02 +09:00
Andrew Tridgell
985c967bb9
MAVLink: imported new mavlink headers
...
this adds local and remote radio noise levels
2012-04-08 12:22:17 +10:00
rmackay9
53827f2e92
AP_MotorsMatrix - fixed stability patch issue in which it would not limit a motor's output unless an opposite motor had been defined. This would only have affected Y6 frames.
2012-04-07 12:16:12 +09:00
rmackay9
127a990509
AP_MotorsOcta - V Frame - test order fix spotted by David Wiens
2012-04-07 08:11:28 +09:00
rmackay9
f6e1509d05
AP_Motors - fixed last "shadowing" compiler warning caused by badly named parameter in auto_armed method.
2012-04-05 00:28:04 +09:00
rmackay9
1e20d7de88
AP_MotorsMatrix - fixed another compiler error regarding shadowing a variable. Fixed by removing those the angle and direction arrays which weren't even used
2012-04-05 00:24:56 +09:00
rmackay9
7a8973eaf0
AP_MotorsHeli - fixed compiler warning re move_swash function declared with int parameters in .h file but actually using int16_t in .cpp file. They're the same in arduino but perhaps the build checker is a little more strict that Arduino.
2012-04-05 00:06:33 +09:00
rmackay9
926211f0f0
AP_Motors - fix compiler warning re shadowing a variable caused by badly named parameter in armed function.
...
Another compiler warning fixed in AP_MotorsMatrix.cpp caused by declaring "i" twice.
2012-04-04 23:59:51 +09:00
rmackay9
b71877366e
ArduCopter - AP_Motors library - added new library which has few advantages over current code:
...
1. it's step towards rearchitecting the current code base ahead of a move to RTOS.
2. internally it uses a MatrixTable for the Quad, Octa, OctaQuad, Y6 frames.
3. it implements the missing stability patch for Octa and OctaQuads (still missing for Y6)
Later check-ins will incorporate into the main ArduCopter code.
2012-04-02 17:26:37 +09:00
Andrew Tridgell
1fd1a55fa6
MAVLink: import change to txbuf as a percentage
2012-04-02 11:18:53 +10:00
Andrew Tridgell
4ddeb82b26
MAVLink: imported new headers, with RADIO packet
2012-04-01 21:44:44 +10:00
Andrew Tridgell
0c445101ff
FastSerial: added set_blocking_writes() interface
...
this allows us to put a serial port into non-blocking mode, so that
writes that don't fit in the transmit buffer are dropped. This will be
used in flight to prevent stray printf() calls from causing large time
delays in the code
2012-03-30 17:46:20 +11:00
Andrew Tridgell
22ff8cb197
examples: fixed build of some examples with new AP_Declination code
2012-03-30 14:25:27 +11:00
Andrew Tridgell
504c53f746
Compass: added COMPASS_AUTODEC option
...
when this is 1 (which is the default), we will get the declination
automatically via the AP_Declination library
when it is 0 we will use the value configured by the user
2012-03-30 14:25:27 +11:00
Andrew Tridgell
927834106d
AP_Declination: save some more memory by putting the declination keys in progmem
...
there was a comment saying this was too slow, but it actually costs
about 30 usec extra, which is trivial given the full auto declination
call costs 680 usec and its only called once per boot
2012-03-30 14:25:27 +11:00
Andrew Tridgell
70d4280935
AP_Declination: added timing information to declination test
2012-03-30 14:25:27 +11:00
Andrew Tridgell
175352845c
AP_Declination: fixed build under SITL
2012-03-30 14:25:27 +11:00
Adam M Rivera
ca82350f17
AP_Declination_test: Updated test with better print messages.
2012-03-30 14:25:26 +11:00
Adam M Rivera
01b1e58f7d
AP_Declination: Update LUT based on the changes that I made in the LUT generation code. This LUT is the final version that has no truncation.
2012-03-30 14:25:26 +11:00
Adam M Rivera
23f6093f05
AP_Declination: Updated comments to reflect new LUT size.
2012-03-30 14:25:06 +11:00
Adam M Rivera
50791a8b0f
AP_Declination: Removed trailing zero deltas as they have no impact on the final value and only take up extra bytes.
2012-03-30 14:21:58 +11:00
Adam M Rivera
f35e447927
AP_Declination: Updated compressed lookup value table. Located 9 more failure points due to truncation on the packed LUT.
2012-03-30 14:21:58 +11:00
Adam M Rivera
72b70c394c
AP_Declination: Found 7 of the 22 failure points and fixed them. The issue with those 7 was the way I originally packed the value array. The last delta values on some rows were getting truncated. The new number of failures is down to 15 - WIP.
2012-03-30 14:21:58 +11:00
Adam M Rivera
076192db51
AP_Declination: Updated test to run in 5 degree increments. Changed to only print failures and also print total pass vs total fail.
2012-03-30 14:21:58 +11:00
Adam M Rivera
230ca1ddca
AP_Declination: Moved check for y index of zero to after the y index is properly transformed.
2012-03-30 14:21:58 +11:00
Adam M Rivera
e0fa053c79
AP_Declination: The exception signs unpacking logic was incorrect. I was shifting a 1 value left y%8 which would have needed a the signs to be packed right to left. My packed signs byte was packed left to right (left most being the 0 position) so I needed to reverse the shifting.
2012-03-30 14:21:58 +11:00
Adam M Rivera
f66c6e16e4
AP_Declination: In order for the bitwise & operation to work, negative signs need to be represented by 1s instead of 0s. Changed so that negative signs are represented by a 1 in the packed signs array. Updated lookup logic to reflect this change.
2012-03-30 14:21:58 +11:00
Adam M Rivera
d88b9e8ffc
AP_Declination: Updated packed exception signs array. I had the signs packed incorrectly.
2012-03-30 14:21:57 +11:00
Adam M Rivera
036da88174
AP_Declination: Changed test to run in increments of 10 degrees. 1 was too granular.
2012-03-30 14:21:57 +11:00
Adam M Rivera
580b274bde
AP_Declination: Added original array to test sketch. Added loop to validate new compressed array against original in 1 degree steps.
2012-03-30 14:21:57 +11:00
Adam M Rivera
efefc3e4f4
AP_Declination: Moved rows with large spikes in delta to their own unsigned exception rows. The signs are in a separate packed array.
2012-03-30 14:21:57 +11:00
Adam M Rivera
0dcc4e8307
AP_Declination: Implemented Delta Encoding and Run-Length Encoding. Added method to traverse the compressed array and return the lookup value based on the same lat_index/lon_index that was used before.
2012-03-30 14:21:57 +11:00
Adam M Rivera
3a849771bc
AP_Declination: Changed PROGMEM read function to pgm_read_word_far to support the int16_t datatype.
2012-03-30 14:21:57 +11:00
Adam M Rivera
370e56c00a
AP_Declination: Changed datatype to int16_t to support the -90 <-> 90 latitude range.
2012-03-30 14:21:57 +11:00
Adam M Rivera
ae257ad42b
AP_Declination: Reduced the size of the lookup table to support -75 <-> 70 latitude range. This allows the datatype to remain int8_t.
2012-03-30 14:21:57 +11:00
Andrew Tridgell
b549b88e5e
AHRS: fixed error_yaw reporting with 2 MAVLink connections
...
when a user first connects with USB, and later switches to the
telemetry port without restarting we were getting zero for error_yaw
in the logs, as AHRS.get_error_yaw() was being called twice.
This ensures we give the last value after the counter is reset
2012-03-29 12:39:53 +11:00
Andrew Tridgell
16deefce31
Compass: fixed a comment
2012-03-29 12:39:53 +11:00
Andrew Tridgell
17290836ef
Compass: added some more comments
...
explain the algorithm a bit more
2012-03-29 12:39:53 +11:00
rmackay9
2ce597642e
Filter - added FilterWithBuffer typedefs for int32t and uint32 for ease of use
2012-03-28 22:02:52 +09:00
rmackay9
90fcdeadfd
AP_OpticalFlow - small bug fix to ensure init attempts to read the product id 3 times before giving up
2012-03-28 22:00:57 +09:00
Andrew Tridgell
10c35e3769
SITL: add magnetic field noise to the simulated compass
2012-03-28 20:55:27 +11:00
Andrew Tridgell
f4c1b6a3c6
SITL: ensure we don't run the sitl timer twice
...
this caused problems with random()
2012-03-28 20:55:27 +11:00
Andrew Tridgell
b2d6db9479
Compass: implement noise resistant varient of offset learning
...
This adds a large amount of noise robustness to the compass offset
learning algorithm, at a cost of 120 bytes of memory. The changes are
based on a long discussion with Bill Premerlani.
2012-03-28 20:55:27 +11:00
Andrew Tridgell
9b95d2060a
ADC: minor fix to the ADC Ch6() code
...
we don't need to add count any more, as floating point maths doesn't
need to round up
2012-03-27 15:37:24 +11:00
Andrew Tridgell
a72d4b46b3
Compass: implement Bills new offset nulling algorithm
...
this seems to work much better than the old algorithm, converging
faster and more accurately. Even better, it has no linkage to DCM, so
no possibility of nasty feedback effects
2012-03-27 15:37:24 +11:00
rmackay9
b5dbdab81e
APM_RC - moved Force_Out0_Out1, Force_Out2_Out3 and Force_Out6_Out6 to APM_RC parent class because it's already implemented in the APM1 and APM2 child classes anyway
2012-03-25 21:13:31 +09:00
rmackay9
2b2dbf2a7f
Filter - added simple LowPassFilter (simple but it's possible to make errors with simple stuff too so might as well have one)
2012-03-25 16:15:25 +09:00
rmackay9
39fd24ed14
Filter - remove obsolete warning from comments re alloc/malloc dangers
2012-03-25 16:14:07 +09:00
rmackay9
2d65ec2874
AP_Baro - change data type size of temperature's average filter to int32_t (was int16_t)
2012-03-24 23:21:11 +09:00
rmackay9
d371862fd2
AP_OpticalFlow - resolved compile error in example sketch (it could not find DCM.h but it's not required anyway)
2012-03-24 14:47:21 +09:00
Andrew Tridgell
a6d66dc45b
Math: added mul_transpose() operation
...
this is equivalent to multiplying by m.transposed(), but is more
efficient
2012-03-23 16:48:52 +11:00
Andrew Tridgell
f4d1295a4b
AHRS: fixed build of AHRS example
2012-03-22 23:00:45 +11:00
Andrew Tridgell
fe55a76335
Math: moved matrix multiple operations to .cpp file
...
this means we only link this in once, rather than for every use of
matrix multiply, which saves us some flash space
We need to be careful not to put large pieces of code in template
headers, as if the operation is used a lot, it costs us a lot of code
space
2012-03-21 10:43:48 +11:00
Andrew Tridgell
17fbb8ea26
Math: fixed the build of the eulers test in SITL
2012-03-21 10:41:55 +11:00
Andrew Tridgell
90c3d230d9
SITL: improve the simulated compass
...
this implements a much more accurate model of a compass using matrix
rotations, instead of trying to calculate components directly
2012-03-21 10:41:55 +11:00
rmackay9
24a471ff8f
AC_PID - added more paranoid checking that imax is positive in constructor, operator() and load_gains methods
2012-03-20 11:51:15 +09:00
Andrew Tridgell
9f4becbacf
AHRS: added AHRS specific MAVLink headers
2012-03-19 17:35:20 +11:00
Andrew Tridgell
9e6c18cca4
AHRS: added missing AP_AHRS.h
2012-03-19 17:35:20 +11:00
Andrew Tridgell
4f82134a5e
DCM: use the new rotate() method from AP_Math
...
this allows us to use a tested and optimised rotation method
2012-03-19 17:29:02 +11:00
Andrew Tridgell
17f7292fe9
Math: added a test for the rotate() method
2012-03-19 17:29:02 +11:00
Andrew Tridgell
c16b353ea7
Math: added rotate() method to Matrix3f
...
this is the core method used to update the DCM matrix with a gyro
vector. Moving it to AP_Math allows us to have a test for it
2012-03-19 17:29:02 +11:00
Andrew Tridgell
31e566475b
Math: added zero() and identity() methods to Matrix3f
2012-03-19 17:29:02 +11:00
Andrew Tridgell
c53b320e00
Quaternion: change signs in AP_AHRS_Quaternion
...
thanks to Justin for the suggestion
2012-03-19 17:29:02 +11:00
Andrew Tridgell
d948a28e7c
Math: change signs in quaternion library
...
thanks to Justin for the suggestion
2012-03-19 17:29:02 +11:00
Andrew Tridgell
af9ce0cfc9
Math: allow eulers test to build with AP_Declination library
2012-03-19 17:29:02 +11:00
Andrew Tridgell
72a761170b
Math: fixed build of eulers test on SITL
2012-03-19 17:29:02 +11:00
Andrew Tridgell
58a68c89d9
Math: added a function to combine standard rotations
...
this will allow us to have an overall board rotation plus a per-sensor
rotation
2012-03-19 17:29:02 +11:00
Andrew Tridgell
8ae0ea7e37
AP_Mount: adapt library for AHRS framework
2012-03-19 17:29:02 +11:00
Andrew Tridgell
79b9be8b1a
AHRS: fixup the AHRS test suite for the new framework
2012-03-19 17:29:02 +11:00
Andrew Tridgell
f8087d3c67
AHRS: adapt the quaternion library to AHRS
2012-03-19 17:29:02 +11:00
Andrew Tridgell
8dcf82b433
AHRS: adapt the DCM_HIL library to AHRS
2012-03-19 17:29:02 +11:00
Andrew Tridgell
d4bb068d5b
AHRS: adapt the DCM library to the AHRS framework
2012-03-19 17:29:02 +11:00
Andrew Tridgell
9d75ffeba1
AHRS: rename DCM and Quaternion implementions ready for AHRS class
...
this is the first step to creating a general AHRS class for ArduPilot
2012-03-19 17:29:01 +11:00
Andrew Tridgell
55ed84526a
MAVLink: rename DCM message to AHRS
2012-03-19 17:29:01 +11:00
rmackay9
01cc5fe938
AP_Baro - removed unnecessary 2 element average filtering of pressure (there is a 4 or 5 element average filter in arducopter code itself, two places is messy)
...
- also removed unused _offset_press variable
2012-03-18 15:18:05 +09:00
rmackay9
7560242721
AP_Baro - added average filter for temperature to replace broken filter
...
- added average filter (for last two values) for raw pressure
- changed some "long" to int32_t and "unsigned long" to uint32_t
2012-03-18 01:06:02 +09:00
Michael Oborne
bae5f98666
sitl cygwin mods
2012-03-15 08:16:50 +08:00
Andrew Tridgell
00c1c6f108
Quaternion: credit Justin with the initial idea of using Madgwick
...
thanks Justin!
2012-03-13 13:27:45 +11:00
Andrew Tridgell
13dac4a93a
DCM: adjust yaw kp constant down to 0.4
...
this makes the time constant for compass errors closely match the
timing of the older releases - about 10 seconds for a 1 radian change
in heading
2012-03-12 17:49:26 +11:00
Andrew Tridgell
7daaadf776
Compass: fixed the order of rotations in the compass driver
...
this should fix the massive heading issues that people have been
reporting. Please test!
2012-03-12 17:33:15 +11:00
Andrew Tridgell
c08fd50542
AP_Declination: fixed build of test sketch
2012-03-12 17:33:15 +11:00
Amilcar Lucas
6e9ffb4249
correct small typos in comments
2012-03-11 21:30:09 +01:00
Andrew Tridgell
b337441ec5
SITL: added pgm_read_byte_far()
2012-03-11 20:59:47 +11:00
Andrew Tridgell
c1b945018b
AP_Declination: fixed usage of headers
2012-03-11 20:59:47 +11:00
Adam M Rivera
b9be6ed290
AP_Declination: Updated comment.
...
Signed-off-by: Andrew Tridgell <tridge@samba.org>
2012-03-11 20:59:47 +11:00
Adam M Rivera
fe8c896d69
AP_Declination: Added method set_initial_location
...
This will set the declination based on lat/lon if the user has
not yet saved one to the EEPROM, OR if they have specified via the
config parameter that they want it to overwrite the declination every
3D fix.
Signed-off-by: Andrew Tridgell <tridge@samba.org>
2012-03-11 20:59:47 +11:00
Adam M Rivera
e08b50ee91
AP_Declination: Increased range of supported latitude coordinates.
...
Fixed incorrect type usage to save stack space.
Signed-off-by: Andrew Tridgell <tridge@samba.org>
2012-03-11 20:59:47 +11:00
Adam M Rivera
e22da153ec
Added AP_Declination test sketch. I will be improving the test sketch soon.
...
Signed-off-by: Andrew Tridgell <tridge@samba.org>
2012-03-11 20:59:47 +11:00
Adam M Rivera
d2a07b1603
Added AP_Declination library. It contains the lookup table (lat/lng -> declination) as well as a method that performs the lookup.
...
Signed-off-by: Andrew Tridgell <tridge@samba.org>
2012-03-11 20:59:47 +11:00
Andrew Tridgell
d10c4b76ad
Compass: removed an incorrect comment
2012-03-11 20:07:38 +11:00
Andrew Tridgell
0da64e98f8
Compass: don't save the orientation to EEPROM
...
there is no point in saving this, the value is only configurable at
compile time for now, and is always set
2012-03-11 15:37:07 +11:00
Andrew Tridgell
0ec9857689
Math: any euler angle with pitch > 90 is invalid
...
both DCM and quaternion always return pitch in the range -90 to 90
2012-03-11 15:37:07 +11:00