Commit Graph

196 Commits

Author SHA1 Message Date
Andrew Tridgell
5f3ffe4839 APM: switch to Randys new IMU rate control method
this drives the speed of the 50Hz loop by the number of samples
accumulated in the IMU. This should give much more consistent timing
in DCM.

Thanks to Randy for introducing this scheme in ArduCopter!
2012-09-11 16:39:36 +10:00
Andrew Tridgell
7e672628ea APM: removed the GPS_enabled flag
this fixes using GPS_PROTOCOL to specify a specific GPS with a GPS
that takes a few updates before it works (eg. needing baud rate
changes).

This makes it easier to use an APM1-1280 with more features enabled
2012-09-11 13:37:34 +10:00
Andrew Tridgell
cb88681914 APM: added support for MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN
this allows for remote reboot of APM
2012-09-10 11:42:30 +10:00
Andrew Tridgell
657dd5969f APM: preparing for 2.61 release 2012-09-08 18:36:17 +10:00
Andrew Tridgell
dec12c7370 APM: use ahrs.airspeed_estimate() in two more places
this applies the wind constraint
2012-09-08 11:37:11 +10:00
Andrew Tridgell
164c60d25f APM: added RUDDER_STEER option
when enabled, this uses only the rudder to steer during takeoff and
landing, using aileron only for levelling
2012-09-08 10:07:03 +10:00
Andrew Tridgell
68705fe7e6 APM: accumulate mag readings during spare cycles in ArduPlane
With this change we average over 100 mag readings per compass.read()
call, which means we are reading the compass at over 1kHz instead of
10Hz. The noise reduction is huge.
2012-09-08 10:05:58 +10:00
Andrew Tridgell
83153eebd4 APM: obey pitch limits in FBWA as well
this means pitch limits are constrained by LIM_PITCH_MIN and
LIM_PITCH_MAX
2012-08-30 20:15:42 +10:00
Andrew Tridgell
e2b8817a89 APM: added the ability to forcibly crash the plane on OBC failsafe breach
this allows a user to setup the OBC failsafe system to forcibly crash
the plane (surfaces at limits, zero throttle) when the failsafe system
triggers. This is to allow APM to be used in the Outback Challenge. In
the OBC an external failsafe board also does this using the heartbeat
control pin, so this is an extra safety mechanism.

To prevent users accidentially triggering a crash, this code only
activates if FS_TERM_ACTION is set to to the magic value 42.
2012-08-28 20:18:24 +10:00
Andrew Tridgell
fce01464b1 APM: added ALT_CTRL_ALG parameter
this allows you to select different altitude control algorithms. The
current choices are for the default (automatic based on if airspeed is
available), or to force a non-airspeed algorithm

The idea is to make it possible to use airspeed for some things (like
wind speed, speed scaling) but not for alt control
2012-08-28 20:18:24 +10:00
Andrew Tridgell
dcbd0fbd44 APM: cleanup throttle suppression code and don't use airspeed to unsupress
this removes the throttle suppression when any of the conditions are
met once, as otherwise flying slow below 10m could zero the throttle.

It also removes the use of airspeed for disabling throttle
supression. Otherwise a strong gust of wind can cause ArduPlane to
try to takeoff!
2012-08-28 20:18:23 +10:00
Andrew Tridgell
c730d9072e APM: prepare for ArduPlane 2.60 2012-08-22 16:28:38 +10:00
Andrew Tridgell
2d8f99433c APM: removed factor of 0.5 in non-airspeed takeoff pitch
this limited the pitch far below the specified target pitch
2012-08-22 16:28:38 +10:00
Andrew Tridgell
6ab2a861f7 APM: added RSSI to RC_CHANNELS_RAW as well
and prevent double read
2012-08-22 13:58:25 +10:00
Andrew Tridgell
c0c0b8c976 APM: added RECEIVER_RSSI_PIN option
this allows for the receiver RSSI to be sent over MAVLink

Thanks to Burt Green for the suggestion
2012-08-22 13:33:12 +10:00
Andrew Tridgell
9e926eae51 APM: optional build with new controller libs 2012-08-22 12:39:07 +10:00
uncrustify
0e8a76ccdd uncrustify ArduPlane/ArduPlane.pde 2012-08-21 19:19:51 -07:00
Andrew Tridgell
343f7d2de0 APM: removed DMP support from ArduPlane
Without centripetal correction the DMP code will almost certainly
crash a plane
2012-08-22 11:46:35 +10:00
Andrew Tridgell
6d11940ada AHRS: removed Quaternion build support from APM/ACM/rover 2012-08-22 10:42:21 +10:00
rmackay9
6d489947cf ArduPlane: replaced many "int" with "int16_t", "long" with "int32_t" 2012-08-18 18:26:13 +09:00
Andrew Tridgell
5e690d5680 APM: added parameter FBWB_ELEV_REV
this fixes issue 343
2012-08-17 15:04:53 +10:00
Andrew Tridgell
df3c8a5bc0 APM: when land_complete is true, use land_pitch
this gives a flare on final landing
2012-08-15 12:39:35 +10:00
Andrew Tridgell
47be6d8ad1 AP_Airspeed: remove airspeed filter and run at 10Hz
this saves on the filter memory, and gives just as good a result
2012-08-15 12:39:35 +10:00
Andrew Tridgell
8cb55eb75a APM: keep the time of the last heartbeat message
this will be used for failsafe processing
2012-08-15 12:39:34 +10:00
Andrew Tridgell
2865434d02 APM: added 'OBC' failsafe module for ArduPlane
this adds FS_* parameters for setting up APM to follow the outback
challenge failsafe rules.

This includes:

 - manual pin
 - heartbeat pin
 - waypoint for heartbeat failure
 - waypoint for GPS failure
2012-08-15 12:39:34 +10:00
Andrew Tridgell
93f1d5645b APM: fixed LOITER_TIME and LOITER_TURNS
These now follow the mavlink spec. Loiter time is in seconds, and
loiter turns is now 32 bit angle, so can handle larger numbers of
turns.
2012-08-15 12:39:34 +10:00
Andrew Tridgell
d9b09d2c93 APM: allow for navigation by dead-reckoning
we now ask AHRS if we have a position estimate, and use that if
available
2012-08-11 12:01:08 +10:00
Amilcar Lucas
d34549f386 Add an optional second mount to ArduPlane and ArduCopter 2012-08-08 23:22:24 +02:00
Andrew Tridgell
dcc50b5705 AP_Airspeed: removed values passed to constructor 2012-08-08 16:38:39 +10:00
Andrew Tridgell
5bfd1200d6 APM: change variables to use _cm, _cd and _ms suffix for units
this makes it less likely that we mix up units
2012-08-08 12:12:30 +10:00
Andrew Tridgell
a823c9ceae APM: removed cli slider and dipswitch options
use mavlink/eeprom for all config
2012-08-08 12:12:29 +10:00
Andrew Tridgell
12cd6b68ff AP_Param: update ArduPlane core for new AP_Param interface 2012-08-08 12:11:57 +10:00
Amilcar Lucas
f14237126a Add me :) 2012-08-06 00:40:12 +02:00
Amilcar Lucas
b8c7b8a786 RC_Channel: Allow each channel to know who they are, this simplifies the enabling and output function calls. 2012-08-05 23:08:31 +02:00
Amilcar Lucas
4ba847c449 The mount type must be updated periodically 2012-08-04 18:44:08 +02:00
Andrew Tridgell
301ab00c5b APM: added control switch debouncer
this adds a switch debouncer, similar to the one used in
ArduCopter. I'm adding this after a flight on the weekend where noise
on the control mode channel caused a mode change away from auto.

To prevent this change adding excessive mode switch latency, it also
moves the reading of the control switch to the 10Hz loop, away from
the 3.3Hz loop. That gives us 0.2s delay in mode switch changes and
allows for spikes in the control mode for 0.1 seconds without changing
mode.
2012-08-01 13:59:37 +10:00
rmackay9
06e35820e5 ArduPlane: allow MPU6000's DMP to be used for attitude estimation.
Enable by adding this line to APM_Config.h:
#define DMP_ENABLED ENABLED
2012-07-28 19:50:40 +09:00
Andrew Tridgell
9eb05a2e1a APM: update version for 2.50 release 2012-07-26 11:36:17 +10:00
Andrew Tridgell
7e697e4abd APM: switch back to old nav_roll calculation
the old nav_roll will be used for the 2.50 release to prevent the need
for re-tuning. For the release after that we will use the new
calculation
2012-07-26 10:03:36 +10:00
Michael Oborne
39ad8b5eec AP fix sitl hil attitude mode. 2012-07-24 07:18:25 +08:00
Jeff Taylor
d02655ac56 APM: Fixed bug where landing_pitch wasnt initialized properly
this adds a new LAND_PITCH_CD parameter to control the landing pitch
when an airspeed sensor is not being used
2012-07-19 13:59:30 +10:00
Andrew Tridgell
d6e370886f APM: rename airspeed_cruise to airspeed_cruise_cm to make the units clearer
it is in cm/s, not m/s
2012-07-19 11:50:41 +10:00
Amilcar Lucas
610fdeacc1 Support up to 11 servos in APM2
Conflicts:

	ArduPlane/ArduPlane.pde
2012-07-18 22:01:19 +02:00
Andrew Tridgell
de3c9ce56d Airspeed: change APM to use new AP_Airspeed library
the next step is AHRS dead reckoning
2012-07-16 11:21:50 +10:00
Andrew Tridgell
c80a88766f APM: added credit for FBW altitude limit code
thanks Yuri!
2012-07-10 08:36:50 +10:00
Andrew Tridgell
f6d7d1bc59 APM: changed PID library to do automatic deltat calculation
this fixes a problem with the HDNG2RLL PID, which was using the wrong
time base and prevents similar bugs from happening in the future
2012-07-06 19:59:18 +10:00
Andrew Tridgell
58fd91165f APM: fixed some build warnings and type errors 2012-07-06 19:59:18 +10:00
Andrew Tridgell
6ee9f1ae97 APM: use new location functions 2012-07-04 12:42:46 +10:00
Andrew Tridgell
99b11e4f19 Mount: enable mount control via eeprom parameters
this enables MNT_* parameter control of the camera mount code. It also
fixes the conversion of calculated angles between degrees and
integers, and fixes stabilised mount control when yaw control is not
available.
2012-07-03 10:21:01 +10:00
Andrew Tridgell
55092c25a6 SITL: enable the SIM_* parameters in ArduCopter and ArduPlane 2012-06-29 15:10:52 +10:00
Andrew Tridgell
3a2594fa1a APM: ArduPlane updates for new compass interface 2012-06-27 16:01:50 +10:00
Andrew Tridgell
6639294c72 APM: update for new barometer interface
the barometer can now calibrate and return altitude values.

A 0.3 low pass filter is used on altitude to match the previous code
2012-06-27 16:01:50 +10:00
Andrew Tridgell
4a50686c3e APM: prepare for 2.40 release 2012-06-16 10:11:26 +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
Jason Short
c804860243 Cosmetic changes only. 2012-06-10 13:10:07 -07:00
Andrew Tridgell
99b39aef93 APM: ready for 2.40-beta 2012-06-08 18:03:21 +10:00
Andrew Tridgell
25c17a5425 re-enable the AP_Mount build 2012-06-04 19:32:11 +10:00
Andrew Tridgell
3af29bd84e AP_Mount: disable AP_Mount until it works with MAVLINK10 2012-06-04 13:14:51 +10:00
Andrew Tridgell
b3aa704c49 AirSpeed: added parameter ARSPD_USE
setting ARSPD_ENABLE to 1 and ARSPD_USE to 0 allows the airspeed
sensor to be initialised and logged without it being used for flight
control. This is very useful when initially testing an airspeed sensor
in a new plane. It also makes it possible to enable/disable the use of
the airspeed sensor during a flight at any time.
2012-05-22 20:02:23 +10:00
Andrew Tridgell
3ae1c6f9e0 APM: prepare for 2.34 2012-05-14 14:29:59 +10:00
Andrew Tridgell
f43f5900bc Telemetry: make it possible to use UART2 on APM2
building with TELEMETRY_UART2=ENABLED allows you to use the solder
bridge on the APM2 to enable telemetry on UART2. This allows both USB
telemetry and a radio at the same time.
2012-05-04 10:39:44 +10:00
Andrew Tridgell
b6a475f6a5 MAVLink: make APM build with MAVLink 1.0 possible with arduino GUI 2012-04-24 22:24:58 +10:00
Andrew Tridgell
85ba978a65 ready for 2.33 release 2012-04-09 18:16:49 +10:00
Andrew Tridgell
7b50724f60 MAVLink: allow for find grained stream rate control
streams can now be requested at any multiple of 20ms. So if you ask
for a stream at 7Hz then you will get it at close to 7Hz.
2012-04-02 11:18:53 +10:00
Andrew Tridgell
86cc7a5e1d APM: enable AP_Declination by default 2012-03-30 14:25:27 +11:00
Andrew Tridgell
9d193f06c9 APM: Change version to 2.32 2012-03-29 12:50:12 +11:00
Andrew Tridgell
1c934dc7ef APM: increase ArduPlane version to 2.31 2012-03-27 16:13:29 +11:00
Andrew Tridgell
989304fb47 APM: enable the new offset nulling in APM 2012-03-27 15:37:24 +11:00
Andrew Tridgell
8afd196907 APM: adapt ArduPlane for AHRS framework 2012-03-19 17:29:02 +11:00
Michael Oborne
3944c1e665 update AP version to 2.30 2012-03-18 10:27:49 +08:00
Andrew Tridgell
2a03a0584f AP_Declination: disable library when AUTOMATIC_DECLINATION is not ENABLED
unfortunately this library was causing avrdude to fail to load the hex
to my APM2. Until we work out why, it's disabled.
2012-03-11 21:46:41 +11:00
Adam M Rivera
d3667faef4 AP_Declination: Added call to compass.set_initial_location if the compass is enabled when the 3D fix is obtained.
Signed-off-by: Andrew Tridgell <tridge@samba.org>
2012-03-11 20:59:47 +11:00
Andrew Tridgell
371677610d APM: avoid fetching the DCM matrix twice
also no special case for quaternions
2012-03-10 10:34:32 +11:00
Andrew Tridgell
e39c3cb9d2 APM: make it possible to build ArduPlane with quaternion support 2012-03-10 10:34:29 +11:00
rmackay9
02cf07bb6b ArduPlane - updated to use new filter library 2012-02-28 21:03:04 +09:00
rmackay9
e1114bf7f7 ArduPlane - added Filter.h to unbreak the build! 2012-02-26 17:05:56 +09:00
rmackay9
21d7a77009 ArduPlane - switch sonar to use new mode filter from filter library 2012-02-26 15:35:42 +09:00
Andrew Tridgell
0248b48d30 allow MAG_ENABLE to be changed in flight
this disables the compass in DCM if MAG_ENABLE is changed in
flight. Without this we would use a fixed yaw once the compass is
disabled

This also makes sure we don't pass the compass to DCM till we have
done a read. This ensures we have a good compass fix for the initial
DCM heading
2012-02-25 14:51:09 +11:00
Andrew Tridgell
330ff5dc8b APM: added some comments related to hold_course
hold_course is either -1 (for disabled) or a course to hold for
takeoff/landing. This makes the code a bit clearer.

It also resets hold_course in all non-auto modes, to ensure it isn't
used
2012-02-15 08:50:45 +11:00
Andrew Tridgell
bc0ed62aa9 adapt mainline APM code to AP_Param 2012-02-13 16:22:51 +11:00
Michael Oborne
9ca6668c1b fix SITL attitude hil 2012-01-20 16:04:49 +08:00
analoguedevices
418f5ea31e Increment version number in anticipation of a firmware hex push. 2012-01-16 22:48:46 +00:00
Doug Weibel
797e0e27a9 Additional commenting on global variables
First pass done.
2012-01-16 10:28:03 -07:00
Doug Weibel
b4e58b50ee Additional commenting on global variables 2012-01-16 09:45:42 -07:00
Doug Weibel
0306bf97a0 Just a little more commenting work on global variables 2012-01-15 16:11:02 -07:00
Doug Weibel
69c7598db2 Update battery monitoring code for ArduPlane
Fixes compatibility for APM2.  Also a significant update to the battery monitoring code:  We previously had monitoring modes for individual cell voltages for 3 and 4 cell lipos.  These have been removed as they were never really supported (the cell voltages were computed but were not reported or recorded anywhere).  Also, some clean-up/prep work was done for supporting monitoring 2 separate battery packs.  The CLI battery and current monitoring tests were consolidated into 1 test.
2012-01-15 16:10:28 -07:00
Doug Weibel
892f24ac5c Adding comments for global variables 2012-01-11 12:37:43 -07:00
Doug Weibel
4de2155845 Tweak to FBW min altitude
Patch from Yury
2011-12-31 15:44:40 -07:00
Andrew Tridgell
cd3729d993 APM: added error checking on barometer read
if the barometer is dead and the GPS has a fix, use the GPS for
altitude
2011-12-28 20:41:53 +11:00
Andrew Tridgell
98353b7ba8 APM: added error checking on compass read 2011-12-28 20:41:53 +11:00
Andrew Tridgell
3cb96fb8af APM: convert to new I2C library 2011-12-28 20:41:53 +11:00
analoguedevices
b8917b58bd Added contributor names, removed "alpha" from firmware name 2011-12-26 17:13:37 +00:00
Andrew Tridgell
e687ce9b3d mainloop_count should be uint16_t 2011-12-21 23:31:38 +11:00
Andrew Tridgell
89561d49d0 always declare a timer_scheduler
we should always run this code
2011-12-21 23:31:38 +11:00
Andrew Tridgell
df094ce463 fixed airspeed sensor for ArduPlane on APM2
we were trying to use a non-existant ADC chip!
2011-12-17 07:29:09 +11:00
Andrew Tridgell
f6f808357c removed AperiodicProcess code
this code was never being used, and was more complex than it was
worth.
2011-12-17 07:29:09 +11:00
Andrew Tridgell
fc495ce6a7 geofence: added fence status reporting and faster altitude check 2011-12-16 20:11:51 +11:00
Andrew Tridgell
3b148c87d5 geofence: main geo-fence code
this implements the primary logic of geo-fencing
2011-12-16 20:11:51 +11:00