Commit Graph

532 Commits

Author SHA1 Message Date
Andrew Tridgell
fb66899414 APM: changed test for having completed a waypoint
the new test is that we have passed a "finish line" perpendicular to
the track between the last waypoint and the current waypoint.

The previous tests are also still used, so if we circle a waypoint or
get within the waypoint radius we also consider it completed
2012-07-04 12:42:46 +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
Michael Oborne
b2d73d8f68 fixup sitl attribute group for planner. - causing invalid advanced/standard views 2012-07-01 21:43:32 +08:00
Andrew Tridgell
82ede937e7 AnalogSource: convert analogRead() calls to the new API
this should give us much better analog values, plus save a bunch of
CPU time
2012-07-01 15:01:05 +10:00
Andrew Tridgell
55092c25a6 SITL: enable the SIM_* parameters in ArduCopter and ArduPlane 2012-06-29 15:10:52 +10:00
Andrew Tridgell
5bccfbd94c Barometer: fixed airstart for APM
we need to re-load the ground pressure and temperature from eeprom on
and airstart
2012-06-27 16:01:50 +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
2934b4173b APM: set_centripetal() is now set_fly_forward()
this controls more than just centripetal correction
2012-06-27 16:01:49 +10:00
rmackay9
621e020dac ArduPlane HIL: fixed bug so g_gps->setHil calls send time as a uint32_t (was sending a float but was cast back to an uint32_t resulting in a meaningless time that never changed). 2012-06-26 22:59:24 +09:00
Amilcar Lucas
b072a59843 Improve parameters descriptive text 2012-06-21 00:20:37 +02:00
Andrew Tridgell
4a50686c3e APM: prepare for 2.40 release 2012-06-16 10:11:26 +10:00
Andrew Tridgell
58379b928f MAVLink: make usage of MAVLink defines more consistent 2012-06-15 16:27:11 +10:00
Andrew Tridgell
619bcc00d9 APM: parameter enums should not be conditionally compiled 2012-06-15 11:57:00 +10:00
Andrew Tridgell
0900751bcd APM: added longer comment on k_format_version 2012-06-15 11:55:09 +10:00
Amilcar Lucas
6d2ac62006 Let's keep the same format version until CAMERA is activated by default 2012-06-13 21:28:13 +02:00
Amilcar Lucas
07a18904fc With CLI and MOUNT active, the linker says: region `text' overflowed by 3858 bytes
So disable CLI when MOUNT is active. Sorry I did not detect it before, but the APM_Camera branch worked in a different way.
2012-06-13 21:08:09 +02: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
448e4d8728 Added CLI level command 2012-06-11 23:01:25 -07:00
Jason Short
c804860243 Cosmetic changes only. 2012-06-10 13:10:07 -07:00
Jason Short
4e50db2f6e Added missing Manual_level config 2012-06-10 13:08:48 -07:00
Jason Short
37d8f86d33 Added missing Manual Level initializer 2012-06-10 13:08:22 -07:00
Andrew Tridgell
940d994efb GPS: Use appropiate GPS_ENGINE settings in APM, ACM and rover 2012-06-10 16:36:18 +10:00
Andrew Tridgell
99b39aef93 APM: ready for 2.40-beta 2012-06-08 18:03:21 +10:00
Andrew Tridgell
a684bddbda GPS: open the GPS serial port with a 256 byte buffer
the UBLOX needs more than 128 bytes for reliable parsing
2012-06-08 16:42:03 +10:00
Andrew Tridgell
25c17a5425 re-enable the AP_Mount build 2012-06-04 19:32:11 +10:00
Andrew Tridgell
e7cf643386 added mavlink09 targets
allows easier building with mavlink0.9
2012-06-04 13:14:52 +10:00
Andrew Tridgell
3af29bd84e AP_Mount: disable AP_Mount until it works with MAVLINK10 2012-06-04 13:14:51 +10:00
Michael Oborne
a71ed6c5ce enable mavlink10 by default 2012-06-04 08:02:08 +08:00
Michael Oborne
b4a1b03fd3 AP: add fake satellite count for hil. 2012-06-02 16:38:20 +08:00
Pat Hickey
5766afa6c8 ArduPlane: Increment format number in Parameters.h
* Force all users to reconfigure to take advantage of elevon patch
  ( 669e6867 )
2012-05-28 20:51:12 -07:00
Pat Hickey
1c00d1ffe3 ArduPlane: Fix effect of ELEVON_REVERSE
* Previously, the ELEVON_REVERSE parameter was equivelant in function to the
  ELEVON_CH1_REVERSE parameter. These parameter values are found in
  g.reverse_elevons and g.reverse_ch1_elevon, and used to map to the radio_out
  channels in ArduPlane/Attitude.pde
* It seems the author's intent was for ELEVON_REVERSE to change the sign for
  the combination of pitch & roll into ch1 & ch2, as there are already
  parameters which change just the sign of ch1 and just the sign of ch2.
* Discovered this bug because I happened to build an elevon airframe which was
  not possible to setup with the existing ELEVON_ and RCn_REV parameters.
* This will break existing elevon setups if the user used ELEVON_REVERSE
  instead of ELEVON_CH1_REVERSE, since they were previously interchangable.
2012-05-27 22:15:08 -07:00
Michael Oborne
c307b69515 increase resolution on params 0.1 > 0.01 2012-05-24 06:22:57 +08:00
Andrew Tridgell
d9457ecc38 MAVLink: send time of GPS fix accurately
when we send a GPS_RAW message, set the usec field to the time we got
the fix from the GPS, not the current time. This makes it possible for
aerial photo processing to be more accurate, as the usec field with
more accurately reflect the planes position/time pair
2012-05-23 17:33:33 +10:00
Andrew Tridgell
66544a5db2 Log: don't print '+' while erasing logs
we no longer do page based erase, so printing a + every 128 pages
makes no sense
2012-05-22 20:10:29 -07: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
8e01bc3593 MAVlink: update ArduPlane for param fetch during DataFlash erase
same changes as for ArduCopter
2012-05-22 16:13:35 +10:00
Andrew Tridgell
251fe26875 GPS: added ublox build target
useful for 1280 APM1s
2012-05-18 22:31:50 +10:00
Andrew Tridgell
3ae1c6f9e0 APM: prepare for 2.34 2012-05-14 14:29:59 +10:00
Michael Oborne
218e70cd8b AP - fix attitude level hil mavlink 1.0 issue 2012-05-06 11:05:35 +08: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
Michael Oborne
75f091cd9c more arduplane param info 2012-04-30 20:39:41 +08:00
Michael Oborne
c1115d83c7 update some arduplane config items 2012-04-30 18:44:20 +08:00
Andrew Tridgell
8fab91e063 APM-nav: set NAV I value defaults to 0.1
a small I value is good on most planes, so I think this is a better
default than 0. Thanks to Chris for asking about this.
2012-04-30 12:27:30 +10:00
Andrew Tridgell
67afdc7485 autotest: fixes for MAVLink 1.0 in autotest 2012-04-27 15:15:53 +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
95be2c5922 APM: updates for MAVLink 1.0 2012-04-24 19:54:20 +10:00
Andrew Tridgell
615defdc37 use build_all.sh to ensure we don't break the mount code 2012-04-24 10:57:43 +10:00
Andrew Tridgell
8e6fdb8981 APM: use OutputCh_current() in MAVLink servo logging
this gives a more accurate picture of what is actually happening with
the servos
2012-04-24 10:57:43 +10:00
Michael Oborne
8d797fec3c fix potential null pointer 2012-04-20 17:57:06 +08:00
Andrew Tridgell
1cc7adbac0 sitl: allow sitl build with MAVLink 1.0 2012-04-20 10:09:21 +10:00
James Goppert
5390467f3d Worked on ArduCopter cmake options. 2012-04-19 16:05:08 -04:00
James Goppert
6fae800dc2 Working on ArduPlane options. 2012-04-19 02:23:54 -04:00
James Goppert
53c143a575 Improved cmake options. 2012-04-18 23:15:29 -04:00
James Goppert
0f90164f03 Changed default cmake port for ArduPlane. 2012-04-18 21:31:46 -04:00
James Goppert
0e7e77760a Updated ArduPlane/ArduCopter cmake options. 2012-04-18 15:16:02 -04:00
James Goppert
a9f0bd24d7 Switched to project specific cmake lists.
This is better since each project has very different options.
2012-04-17 23:07:20 -04:00
James Goppert
fb07cddd6f Making cmake local to projects. 2012-04-17 21:31:10 -04:00
Andrew Tridgell
d07b77237e AHRS: enable AHRS_ group in ArduPlane 2012-04-16 20:55:13 +10:00
Andrew Tridgell
85ba978a65 ready for 2.33 release 2012-04-09 18:16:49 +10:00
Andrew Tridgell
e1270401bf MAVLink: make parameter send use adaptive stream rate
this makes it possible to fetch parameters with very low air data
rates
2012-04-02 11:18:53 +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
e0bb7e2777 MAVLink: don't waste 100 bytes of bandwidth sending 1 byte of information
the GPS_STATUS message is a massive waste of bandwidth, but it is the
only message that tells us the number of visible satellites. So only
send it if that information changes.

This makes MAVLink work better at low baud rates
2012-03-30 17:46:20 +11:00
Andrew Tridgell
87ed39ea46 APM: use set_blocking_writes(false) when we have done ground start 2012-03-30 17:46:20 +11:00
Andrew Tridgell
b4107d35e8 MAVLink: raise the serial transmit buffer size to 256 bytes
the 128 byte serial transmit buffer was causing significant problems
with queueing of mavlink messages. With 256 bytes we can fit a lot
more messages out in each pass of the code, which makes telemetry more
efficient

As we discussed on the dev call, we now have enough free ram for this
to be worthwhile
2012-03-30 17:46:20 +11:00
Andrew Tridgell
86cc7a5e1d APM: enable AP_Declination by default 2012-03-30 14:25:27 +11:00
Andrew Tridgell
168c45ab12 AP_Declination: enabled auto declination by default in APM 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
4c4c38f69a APM: Added MANUAL_LEVEL option
when MANUAL_LEVEL is set to 1, we don't do accelerometer levelling at
startup, and instead used the values saved in the EEPROM. This makes
it easier to do levelling on the bench, or once for a series of
flights for the day
2012-03-29 12:39:53 +11:00
Andrew Tridgell
1c934dc7ef APM: increase ArduPlane version to 2.31 2012-03-27 16:13:29 +11:00
Andrew Tridgell
34506b170f Mavlink: fixed warnings about limits on int32 values 2012-03-27 15:37:25 +11:00
Andrew Tridgell
989304fb47 APM: enable the new offset nulling in APM 2012-03-27 15:37:24 +11:00
Andrew Tridgell
458d55e5bc MAVLink: constrain variable changes to the datatype range
if someone tries to set a AP_Int16 to a value of 300000, they now get
32767 instead of -27678
2012-03-19 17:29:02 +11:00
Andrew Tridgell
8afd196907 APM: adapt ArduPlane for AHRS framework 2012-03-19 17:29:02 +11:00
Andrew Tridgell
e81060a1a6 APM: removed some config file cruft
these options are now settable via MAVLink
2012-03-18 13:34:40 +11:00
Michael Oborne
3944c1e665 update AP version to 2.30 2012-03-18 10:27:49 +08:00
Amilcar Lucas
6e9ffb4249 correct small typos in comments 2012-03-11 21:30:09 +01: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
Adam M Rivera
2524f9c8df AP_Declination: Added new config value to allow the user to have the declination overwritten on every 3D fix.
Signed-off-by: Andrew Tridgell <tridge@samba.org>
2012-03-11 20:59:47 +11:00
Andrew Tridgell
d75e883fe8 GCS: get_integrator() is now get_gyro_drift() in DCM 2012-03-10 10:34:33 +11:00
Andrew Tridgell
9a06d35772 make 'ENABLE' and 'ENABLED' mean the same things
users get this wrong far too often!
2012-03-10 10:34:33 +11:00
Andrew Tridgell
13d5839778 APM: removed quaternion special cases 2012-03-10 10:34:32 +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
7a9b3d3388 Quaternion: show "Quaternion test" on startup if enabled 2012-03-10 10:34:29 +11:00
Andrew Tridgell
e39c3cb9d2 APM: make it possible to build ArduPlane with quaternion support 2012-03-10 10:34:29 +11:00
Andrew Tridgell
367947fd33 HWSTATUS: if we don't know the voltage, report it as zero
this will tell us if board_voltage() is really working
2012-03-10 10:34:28 +11:00
Andrew Tridgell
511f65e2ef APM: fixed reset of control switch when short_fs_action is disabled
When FS_SHORT_ACTN is 0, we should not re-read the control switch
unless we changed mode on the initial short fs action
2012-03-10 10:34:28 +11:00
Andrew Tridgell
b455443e2c APM: added logging of DCM, HWSTATUS and SIMSTATE 2012-03-10 10:34:27 +11:00
Andrew Tridgell
b20084af7d APM: added board_voltage() function 2012-03-02 15:48:27 +11:00
Pat Hickey
ff0fc26484 Cleanup: rename files with spaces in their names, replace with underscores
* Skipped /Tools/ArdupilotMegaPlanner/Resources/new...
  and /archive/Configurator/Source/Utilities/TDMS/G...
  because I don't want to mess with that.
2012-02-28 16:14:31 -08: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
690dc9052a GCS: force scalar type in copy_name()
this enables access to compass offsets over MAVLink
2012-02-25 11:37:20 +11:00
Andrew Tridgell
95ef9206dc DCM: renorm_sqrt_count is now called renorm_range_count 2012-02-23 08:16:08 +11:00
Andrew Tridgell
df8a557630 AP_Param: update users of AP_Param for ParamToken 2012-02-19 17:05:28 +11:00
Andrew Tridgell
16009777d9 APM: expanded parameter area to match ACM
this ensures waypoints and basic eeprom layout remain in sync
2012-02-18 10:51:57 +11:00
Andrew Tridgell
718a5b70e3 AP_Param: fixed saving of sensor calibration
this fixes the saving of the accel and gyro calibration to EEPROM,
which was initially broken by the AP_Param conversion
2012-02-18 10:51:57 +11:00
Andrew Tridgell
78babd37fa APM: use set_and_save_ifchanged() for GCS stream rates
this avoids a lot of EEPROM scan operations when the groundstation
updates the stream rates
2012-02-18 10:51:57 +11:00
Phil
9242c157ee APM: Fix rudder in elevon mode.
elevon planes can have rudders too
2012-02-16 14:43:24 +11:00
Andrew Tridgell
c14097ffa1 APM: changed hold_course for landing to be based on yaw_sensor
when we are in the final stages of a landing (less than 2 seconds from
landing waypoint, or less than 3m above landing altitude) we switch
the navigation to use a fixed course. The code previously used the
crosstrack_bearing for this, but this can lead to a large nav_roll in
this final stage of the approach, which can put a wing into the
runway. In autotest we were seeing a nav_roll value of -45 degrees as
we crossed the transition point for the landing, which often led to a
crash.

This changes the code to use the current yaw_sensor value instead,
which is much less likely to lead to large rolls in the final landing
stages.
2012-02-15 08:50:45 +11:00
Andrew Tridgell
c662140a2b APM: report the nav_bearing as hold_course when enabled
this gives a more accurate view of the navigation code, as when
hold_course is not -1 it overrides nav_bearing
2012-02-15 08:50:45 +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
11835508a7 when setting airspeed and groundspeed in a mission, don't save to EEPROM
If you include airspeed, throttle or groundspeed changes in a mission
then those should not be saved to EEPROM, as otherwise if you restart
and re-fly the mission you will be starting with different parameters
to the ones you used for the first flight.

This is particularly important for setting the target airspeed when
coming in for a landing. You typically set a low target, but if you
fly again the next day I think it would be a real surprise to find
that your loiter airspeed has then changed to the value from the
landing part of your last mission.

This one can be argued either way, but I think that not saving these
changes is the more conservative choice, and better fits the
'principal of least surprise'
2012-02-14 15:20:44 +11:00
Andrew Tridgell
c042ef1298 APM: fixed some build warnings 2012-02-14 08:58:56 +11:00
Andrew Tridgell
8d1729b3ba Mavlink: report the corrected pitch via MAVLink
this subtracts the TRIM_PITCH_CD from the pitch reported via
MAVLink. That gives a better indication of the true pitch in the tlog
2012-02-14 08:58:56 +11:00
Andrew Tridgell
cdf296d8f6 fixed some printf casts 2012-02-14 08:34:10 +11:00
Andrew Tridgell
35badbb97d APM: the CLI fits nicely on the 1280 again now
I find the CLI very useful for testing, so enable it by default on the
1280. Logging is still off by default.
2012-02-14 08:33:49 +11:00
Andrew Tridgell
ecdbfd257a token is 16 bits now 2012-02-13 16:22:53 +11:00
Andrew Tridgell
d55a0c3a71 added AP_Param::show_all()
this moves the logic into common code
2012-02-13 16:22:52 +11:00
Andrew Tridgell
0f9adbdae0 token size for first()/next() is now 16 bits 2012-02-13 16:22:52 +11:00
Andrew Tridgell
617082769a go back to 1024 bytes for variables in EEPROM 2012-02-13 16:22:52 +11:00
Andrew Tridgell
0b3e3ec5c8 added group indexes to GCS_MAVLINK class 2012-02-13 16:22:52 +11:00
Andrew Tridgell
e85da68fe6 expand parameter area for ArduPlane
this ensures all parameters can be saved without overflow
2012-02-13 16:22:52 +11:00
Andrew Tridgell
983192c5d5 tidy up a comment 2012-02-13 16:22:52 +11:00
Andrew Tridgell
2c3ec5de99 fixed two parameter names 2012-02-13 16:22:51 +11:00
Andrew Tridgell
676ca03977 expose mavlink stream rates as parameters 2012-02-13 16:22:51 +11:00
Andrew Tridgell
f22988163e imported new Parameters code to APM 2012-02-13 16:22:51 +11:00
Andrew Tridgell
e7174bc649 import new Parameters.h for AP_Param to APM 2012-02-13 16:22:51 +11:00
Andrew Tridgell
3d598c8caa implement dump of all vars in CLI using AP_Param 2012-02-13 16:22:51 +11:00
Andrew Tridgell
bc0ed62aa9 adapt mainline APM code to AP_Param 2012-02-13 16:22:51 +11:00
Sandro Benigno
3200781f56 Battery monitor type 3 cannot calculate battery remaining properly, due it uses only voltage reading. This path set battery_remaining to a value out-of-band for that type of monitoring. It informs to external devices to not show that info. 2012-02-11 21:01:13 -02:00
Andrew Tridgell
1a861b3de5 allow for lower serial baud rates
not many people will use less than 9600 baud, except for those wanting
to test extreme range radios, which is what I'm trying to do :-)
2012-02-04 19:07:18 +11:00
Pat Hickey
dfece8e3ff ArduPlane: Call APM_RC.enable_out for all channels in init_rc_out. 2012-01-22 12:03:11 -08:00
Michael Oborne
6b949511ca change rc norm_output to scale evenly across the entire range 2012-01-20 16:24:55 +08: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
ed9f7cb1b6 Update battery monitoring code for ArduCopter
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.
changed
2012-01-15 17:10:02 -07:00
Doug Weibel
762a5550de Remove a debugging print 2012-01-15 16:37:07 -07:00
Doug Weibel
4b24d865bf Stashing some battery monitoring ratio values in the comments for future use. 2012-01-15 16:35:46 -07:00
Doug Weibel
e22a83eec0 Add a CLI setup action to reset the magnetometer offsets
Since the magnetometer offsets are not available through the MAVLink parameter interface (since they are an AP_Var vector) this little feature allows them to be reset from the CLI.  Useful if you somehow get bad offsets or if you change magnetometer.  If you have a bad set of large offset values I have seen issues with the nulling algorithm have trouble converging to the proper values.  I have never seen it have trouble converging from 0/0/0, so this could be a useful feature from time to time.
2012-01-15 16:15:08 -07:00
Doug Weibel
6e8ac99ed6 Fix airspeed sensor support for APM2.
Airspeed sensor should be attached to Analog input 0
2012-01-15 16:12:08 -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
9846822748 Bug fix for compass.
This is a fix for an interesting bug when a DCM matrix reset was added to the ground start.  This bug only showed up if (A) a ground start were performed after an air start or due to use of the "Calibrate Gryo" action, (B) if the current orientation were sufficiently different from 0/0/0, and (C.) if the particular magnetometer had sufficiently large offsets.  Why did resetting the DCM matrix to 0/0/0 pitch/roll/yaw at ground start cause a bug?  The magnetometer offset nulling determines the proper offsets for the magnetometer by comparing the observed change in the magnetic field vector with the expected change due to rotation as calculated from the rotation in the DCM matrix.  This comparison is made at 10Hz, and then filtered with a weight based on the amount of rotation to estimate the offsets. Normally it would take considerable time at normal in-flight rotation rates for the offset estimate to converge. 

If a DCM matrix reset occurs when the offset nulling algorithm is up and running, the algorithm sees the DCM reset as a instantaneous rotation, however the magnetic field vector did not change at all.  Under certain conditions the algorithm would interpret this as indicating that the offset(s) should be very large.  Since the "rotation" could also have been large the filter weighting would be large and it was possible for a large erroneous estimate of the offset(s) to be made based on this single (bad) data point.

To fix this bug methods were added to the compass object to start and stop the offset nulling algorithm.  Further, when the algorithm is started, it is set up to get fresh samples.  The DCM matrix reset method now calls these new methods to stop the offset nulling before resetting the matrix, and resume after the matrix has been reset.
2012-01-12 14:44:24 -07:00
Doug Weibel
892f24ac5c Adding comments for global variables 2012-01-11 12:37:43 -07:00
analoguedevices
ee18748565 Put in commented-out APM2 # defines, to save people the trouble of having to type them in themselves. 2012-01-09 02:00:46 +00:00
Doug Weibel
44c66c2e8e Bug fix for issue 438.
The rate in a change alt command does not need to be signed.  The code will determine if the rate needs to be positive or negative
2012-01-08 18:24:55 -07:00
Michael Oborne
e1a544cc78 fix relay on apm 1 AP 2012-01-05 07:51:01 +08:00
Andrew Tridgell
cdd5589498 I2c: default to 5ms timeout, and faster bus speed
we will slow down the speed when we get a failure
2012-01-04 16:36:47 +11:00
Doug Weibel
4de2155845 Tweak to FBW min altitude
Patch from Yury
2011-12-31 15:44:40 -07:00
Jason Short
a6c09b3ea5 Small issue with newline formatting 2011-12-29 23:02:02 -08:00
Michael Oborne
cd145fd7a9 add circle to output modes 2011-12-29 18:21:32 +08: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
Andrew Tridgell
a6920d603d geofence: re-breach if user changes mode outside the fence
if the user changes mode while outside the fence, and fencing is still
enabled, then declare a new breach
2011-12-28 17:28:35 +11:00
Andrew Tridgell
8d87aa41b9 APM: Update for DataFlash changes 2011-12-28 16:00:49 +11:00
analoguedevices
b8917b58bd Added contributor names, removed "alpha" from firmware name 2011-12-26 17:13:37 +00:00
Andrew Tridgell
f5a3eed1a7 APM: fixed some unsigned/signed warnings 2011-12-26 19:17:11 +11:00
Andrew Tridgell
d81dc21dfe APM-log: fixed reading of GPS logs 2011-12-26 19:17:11 +11:00
Andrew Tridgell
3f9f3f3416 APM-log: changed to use df_NumPages
this copes with different data flash sizes on APM1 and APM2
2011-12-26 19:17:11 +11:00
Doug Weibel
8e17b8d6d4 Correct a bug in throttle failsafe feature 2011-12-24 15:34:31 -07:00
Doug Weibel
a5df59eba3 Remove old debug print 2011-12-24 14:26:35 -07:00
Doug Weibel
7879efb8ae Fix scaling on "turn coordination" yaw PID so that P gain values fall in "usual" range 0.1 to 10. 2011-12-24 14:26:35 -07:00
Andrew Tridgell
5e347854c3 setup the main loop failsafe after RC library is setup 2011-12-23 11:13:01 +11:00
Andrew Tridgell
5bda871d60 added comment on using GPS ground course 2011-12-23 11:13:01 +11:00
Andrew Tridgell
d0245b206a APM2: default magnetometer to enabled
all APM2s have a MAG at the moment

thanks to Chris for the suggestion
2011-12-22 17:51:14 +11:00
Andrew Tridgell
c805f2a0c3 failsafe: make sure we clear any RC override in manual failsafe 2011-12-22 10:55:43 +11:00
Andrew Tridgell
26d5d3c385 fixed HIL build 2011-12-21 23:31:39 +11:00
Andrew Tridgell
29fa78214b APM: added failsafe support
we now pass all channels through at 50Hz if the main loop stops
running, regardless of why. This gives us a reasonable failsafe, as
long as the low level RC library is still working, and interrupts
don't get completely disabled.
2011-12-21 23:31:39 +11: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
4bdc872595 APM: show temperature in airpressure test
useful for tracking down baro bugs
2011-12-19 18:52:56 +11:00
Andrew Tridgell
c14d702912 geofence: send fence status messages on fence events
this ensures the fence status goes out as soon as possible, which
means the messages arrive in a sane order on the GCS
2011-12-19 11:25:59 +11:00
Andrew Tridgell
e99db6526f APM: added RST_SWITCH_CH parameter
This is useful for switching back to the mode indicated by the control
switch after a failsafe or fence breach. I was just changing modes
each time, but it is far more elegant to have a spring loaded switch
for "I am ready to take control again", rather than continually
changing modes.
2011-12-19 11:25:59 +11:00
Andrew Tridgell
71c911f65d Log: fixed logging dependence on compiler arg eval order 2011-12-18 17:31:45 +11:00
Andrew Tridgell
f25ee899f3 APM: run mavlink loop while erasing logs 2011-12-18 10:19:52 +11:00
Andrew Tridgell
fc20aa9602 geofence: enable return to old control mode via FENCE_CHANNEL
if you disable fencing with the fence channel switch while still in
GUIDED mode to the return point, then reset the control mode back to
the transmitter control mode
2011-12-18 10:00:44 +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
b9a88aac32 geofence: added FENCE_TRIGGERED_PIN
this allows for a digital pin to be set high when the geofence
triggers. This pin can be connected to an external failsafe device
2011-12-17 07:29:08 +11:00
Michael Oborne
28d280562a apm 1280 disables 2011-12-16 22:26:39 +08:00
Andrew Tridgell
42522baf9f geofence: store fence points as int32_t
this keeps maximum precision in fence boundaries
2011-12-16 20:11:51 +11:00
Andrew Tridgell
fc495ce6a7 geofence: added fence status reporting and faster altitude check 2011-12-16 20:11:51 +11:00
Andrew Tridgell
64ae2ebec5 geofence: don't trim control surfaces on geo-fence breach
the user input is likely to be bad
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
Andrew Tridgell
82b615df50 geofence: added geo-fencing control parameters 2011-12-16 20:11:51 +11:00
Andrew Tridgell
960d6ee38a removed an unused variable 2011-12-16 20:09:49 +11:00
Andrew Tridgell
84a694efb9 only check for "enter 3 times" in first 20s after boot
we don't want stray bytes on serial3 to make us enter the CLI during
flight!
2011-12-16 20:09:32 +11:00
Doug Weibel
ca89857854 Changes to logging file system to avoid problems with 0 and 1 page logs 2011-12-13 20:09:07 -07:00
Andrew Tridgell
1998908a05 DCM: reset the DCM matrix after a ground start 2011-12-13 21:33:07 +11:00
Andrew Tridgell
8cd13749bd MAVLink: fixed link flood on waypoint upload 2011-12-13 20:39:04 +11:00
Andrew Tridgell
dd9f3a3fa6 fixed a hang on 2nd run of IMU test
we should not try to initialise the ISR handlers twice
2011-12-13 18:28:50 +11:00
Andrew Tridgell
483bef35e5 IMU: update ACM and APM for flash_leds change in IMU init 2011-12-13 18:19:41 +11:00
Andrew Tridgell
888d6226b2 fixed two more CONFIG_HARDWARE #ifdef bugs 2011-12-13 17:05:48 +11:00
Andrew Tridgell
07dba4eff7 desktop: fixed Wire.begin() build problem 2011-12-12 15:14:55 +11:00
Andrew Tridgell
78e8fbff9c fixed hardware config check for barometer 2011-12-12 15:14:55 +11:00
Andrew Tridgell
1b1c629167 added sitl build target 2011-12-12 15:14:55 +11:00
Andrew Tridgell
2bd18e937c throttle: only use throttle slew in auto throttle modes
we don't want STABILISE and FBWA to have throttle change limits
2011-12-12 15:14:55 +11:00
Andrew Tridgell
0a7332b6e3 airspeed: smooth the airspeed value a bit more
the value is very noisy in my tests. A bit more smoothing may help
2011-12-12 15:14:55 +11:00
Andrew Tridgell
011110e1dd airspeed: use floating point values and better averaging in zero_airspeed()
this makes the calibration of airspeed a bit more accurate, and
prevents truncation of airspeed values
2011-12-12 15:14:55 +11:00
Andrew Tridgell
d5c23c83cf apm2: fixed for new barometer code 2011-12-11 15:21:10 -08:00