Commit Graph

126 Commits

Author SHA1 Message Date
Andrew Tridgell
45cf82ba15 Plane: removed CONFIG_RELAY check
relay is always available
2013-08-30 14:40:47 +10:00
Andrew Tridgell
a33573352e Plane: fixes for updated AP_Math and AHRS APIs
Pair-Programmed-With: Brandon Jones <brnjones@gmail.com>
2013-08-05 10:30:04 +10:00
Andrew Tridgell
3c97fad2ec Plane: changes for GPS field changes 2013-07-10 14:04:22 +10:00
Andrew Tridgell
3c177867a4 Plane: allow enable/disable of camera log messages in CLI 2013-07-10 12:23:36 +10:00
Andrew Tridgell
1d6748cf3f Plane: use a glide slope in RTL when descending
when above the target altitude in RTL come down slowly, when below
climb rapidly

This fixes issue #39
2013-07-05 14:56:58 +10:00
Andrew Tridgell
a5bda3ffef Plane: changed to using a "aircraft parameters" structure
this structure can be passed to libraries to give them easy access to
critical user parameters
2013-07-04 16:56:57 +10:00
Paul Riseborough
d62636d309 Plane: added new TECS altitude controller
Includes improvements to takeoff/launch detect logic to support hand
launching for X-8 flight
2013-07-04 16:56:57 +10:00
Andrew Tridgell
515d726ee0 Plane: use RC_Channel::rc_channel() instead of rc_ch[] 2013-06-03 16:23:48 +10:00
Andrew Tridgell
eba7d6da9a Plane: removed the old crash_timer code
This code is less relevent with the new L1 navigation, and could cause
issues with the pilot not having control after a long dive.

Thanks to Soren for pointing out the issues

See issue #305
2013-05-28 11:19:28 +10:00
Andrew Tridgell
9f0f482dd7 Plane: fixed LOITER_TIME to start when loiter starts
thanks to Paul Riseborough for finding this bug!
2013-04-15 21:39:14 +10:00
Andrew Tridgell
75f4a43e2d Plane: fixed LOITER_TURNS command
and cleanup more loiter variables
2013-04-15 21:31:11 +10:00
Andrew Tridgell
e918293e86 Plane: explain verify_*() commands 2013-04-15 14:41:15 +10:00
Andrew Tridgell
19b92b5bd8 Plane: removed "circle waypoint" completion test
this is redundent with the location_passed_point() test
2013-04-15 14:39:18 +10:00
Andrew Tridgell
994d8e354a Plane: allow for negative WP_LOITER_RAD for conter-clockwise loiter
this follows the same convention as missions
2013-04-15 10:52:32 +10:00
priseborough
70a186464b Plane: added LEVEL_ROLL_LIMIT parameter
this replaces both TKOFF_HEAD_HOLD and RUDDER_STEER, allowing users to
instead select a roll limit for takeoff and landing
2013-04-12 21:59:52 +10:00
Andrew Tridgell
11eb0cfce1 Plane: update for new AP_Navigation controller class
this switches ArduPlane over to use the L1 navigation controller, via
a generic nav_controller object pointer.

Note that the nav_controller controls all types of navigation now,
including level flight and heading hold. This provides a cleaner
abstraction than the old method of special case navigation handling

Pair-Programmed-With: Paul Riseborough <p_riseborough@live.com.au>
2013-04-12 12:48:09 +10:00
tobias
217b8d7a59 cleanup: use const for struct Location pointers and references
this allows the compiler to generate more efficient code
2013-04-09 12:10:32 +10:00
Andrew Tridgell
a69c9ff674 Plane: added logging of DIGICAM events 2013-04-02 13:08:38 +11:00
Andrew Tridgell
dfb14d760b Plane: added HIL_SERVOS option
this allows for real servo output in HIL
2013-03-30 14:38:43 +11:00
Andrew Tridgell
fcde3ceb24 Plane: also avoid rudder on takeoff with TOFF_HEAD_HOLD==0 2013-03-27 16:36:39 +11:00
Randy Mackay
c2055557f5 Plane: add support for GPS fix type 2D 2013-03-27 11:41:51 +09:00
Andrew Tridgell
e8806b14ec Plane: enable MAV_CMD_DO_DIGICAM_CONTROL 2013-02-14 09:35:56 +11:00
Andrew Tridgell
9d3224ef34 Plane: fixed target speed reload on landing
thanks to Doug for this fix!
2013-02-11 11:40:36 +11:00
Jochen Tuchbreiter
c5f19f5df8 Plane: Implement issue 80: counterclockwise loiter
- libraries/AP_Common/AP_Common.h: Use bit 2 of Location.options to store
  loiter direction
- ArduPlane/defines.h: New bitmask MASK_OPTIONS_LOITER_DIRECTION for struct
  Location bit 2
- ArduPlane/ArduPlane.pde: New variable loiter_direction
- ArduPlane/GCS_Mavlink.pde: For mavlink loiter-commands use sign of param3 to
  detemine direction. Set Location.option flag accordingly
- ArduPlane/commands.pde: Make sure loiter-directions get saved into EEPROM
  correctly
- ArduPlane/commands_logic.pde: Set loiter_direction on all loiter-actions
  as well as RTL/instant loiter
- ArduPlane/navigation.pde: Yield loiter_direction in update_loiter
2013-02-05 10:29:31 +11:00
Andrew Tridgell
ebb7f27962 Plane: minor signed/type fixups 2013-01-27 13:16:26 +11:00
Randy Mackay
d2767b911c AP_Math: switch get_distance_cm to return uint32_t
Includes changes required on ArduCopter and ArduPlane side as well
2013-01-26 17:04:12 +09:00
Andrew Tridgell
9a2e77b797 Plane: fully disable relay and mount code on APM1-1280
this saves some more flash space
2012-12-20 14:53:23 +11:00
Pat Hickey
92b0c302f2 ArduPlane: Ported to AP_HAL 2012-12-20 14:51:36 +11:00
Andrew Tridgell
84300c85d6 APM: make it possible to run the CLI on any serial port 2012-11-21 21:41:34 +11:00
Andrew Tridgell
2324997e16 APM: added ALT_OFFSET parameter
useful to adjust for barometric pressure changes during a long flight
2012-09-19 16:23:25 +10:00
Andrew Tridgell
7e8ef0ae95 APM: fixed handling of DO_REPEAT_SERVO and DO_REPEAT_RELAY 2012-09-17 14:45:47 +10:00
Andrew Tridgell
127117b640 APM: ensure DO_SET_SERVO channels are enabled 2012-09-16 15:08:14 +10:00
Andrew Tridgell
589c8fcc12 APM: report throttle and ground speed mission changes 2012-09-12 13:09:32 +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
f26b9ab286 APM: prevent crosstrack from takeoff point after takeoff completion 2012-09-08 11:37:14 +10:00
Andrew Tridgell
85e9fa8c3b APM: fixed another problem with DO_JUMP
off by one error!
2012-08-28 20:18:24 +10:00
Andrew Tridgell
d13d117e61 APM: removed reset_I() and instead auto-reset integrator in PID library
this prevents us resetting key integrators on waypoint change, while
still preventing old integrators being used when a PID starts to be
used again
2012-08-28 20:18:23 +10:00
Andrew Tridgell
c9cf483822 APM: added XTRK_USE_WIND parameter
when enabled this will use the wind estimation code to adjust the
navigation bearing, allowing the navigation code to cope with much
higher levels of wind while using a compass
2012-08-25 17:49:26 +10:00
Andrew Tridgell
4668f8b7db APM: ensure takeoff_complete is reset 2012-08-22 16:17:55 +10:00
Andrew Tridgell
95c941664f APM: fixed bug in do_jump() navigation
this avoids a problem where the jump can cause the next command to be
reset to 0
2012-08-22 15:29:46 +10:00
uncrustify
4793162a9d uncrustify ArduPlane/commands_logic.pde 2012-08-21 18:58:11 -07:00
Andrew Tridgell
6300fa7399 math: more abs() fixes
abs() is 16 bit
2012-08-16 15:17:42 +10:00
Andrew Tridgell
ad73c229ab APM: added LAND_FLARE_ALT and LAND_FLARE_SEC
these allow you to configure the altitude and time before touchdown to
flare the plane and lock the heading. Useful on larger planes.
2012-08-15 18:11:16 +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
2d7fcbd14b APM: reload airspeed and throttle after landing
this allows for restarting a mission after landing with reasonable
airspeed values
2012-08-15 12:39:35 +10:00
Andrew Tridgell
e26e8b3b67 APM: added RDRSTEER_ PID for steering on ground
this allows for rolling takeoff with steering, and use of rudder in
landing
2012-08-15 12:39:35 +10:00
Andrew Tridgell
52064772ee APM: report speed changes via MAVLink 2012-08-15 12:39:35 +10:00
Andrew Tridgell
ff6301fb46 APM: show waypoint number in jump message 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
dc47074dbd MAVLink: removed the need for Mavlink_compat.h
we have now fully transitioned to MAVLink 1.0, so we no longer need
the compatibility layer and the old names in the code
2012-08-09 12:22:46 +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
Amilcar Lucas
95f2af6d2d Implement set ROI 2012-08-04 18:44:29 +02:00
Andrew Tridgell
07992bc943 APM: fixed build
the SET_ROI commands are not supported yet
2012-07-26 10:03:36 +10:00
Jason Short
e574f3c8cf Arduplane: Fixed unsigned int comparison warning 2012-07-18 23:07:34 -07: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
Andrew Tridgell
58fd91165f APM: fixed some build warnings and type errors 2012-07-06 19:59:18 +10:00
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
Amilcar Lucas
1906e06b69 Added camera trigger functionality 2012-06-13 21:00:20 +02:00
Andrew Tridgell
8afd196907 APM: adapt ArduPlane for AHRS framework 2012-03-19 17:29:02 +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
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
Doug Weibel
b4e58b50ee Additional commenting on global variables 2012-01-16 09:45:42 -07: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
Doug Weibel
2ef4c79a7c Minimum ground speed patch from Claudio Natoli. Thanks Claudio!
This patch will boost the target airspeed as necessary to keep the ground speed above a parameter value - param_min_groundspeed.  Airspeed is still limited to FBW-max.  Setting min_groundspeed to zero (default) disables the feature.
2011-12-09 16:43:25 -07:00
Doug Weibel
e6542ec1a2 Fix Do_Jump bug. Also fix cross track bearing bug after Jump 2011-11-15 20:44:19 -07:00
Amilcar Lucas
ab730ff919 Added camera and/or antenna mount support.
It is fully configurable with the mission planner, there is no need to change
the source code to adapt to your setup.
It needs more testing, but the SIL is not working for me.
2011-10-31 22:55:58 +01:00
Doug Weibel
cbf59e96bd Bug fixes for command logic re-write 2011-10-27 13:45:57 -06:00
Doug Weibel
645b9c1d48 Initial rewrite of command logic.
Changes mission structure so that conditional and immediate commands are located between associated waypoints instead of after the second waypoint.
2011-10-27 13:45:52 -06:00
Amilcar Lucas
7b4ccffa53 Moved relay control functions to it's own library 2011-10-02 01:00:27 +02:00
Doug Weibel
3fff788f95 Add code to disable throttle if we are on the ground and in FBW_B or higher
Add code to disable throttle if we are on the ground and in FBW_B or higher.  We believe we are on the ground if speed < 5 and alt < 5.  Also check that we are not trying to perform a takeoff.
2011-09-30 07:25:35 -06:00
Andrew Tridgell
20bfe6b01d use gcs_send_text_fmt() and cleanup a few old debug lines 2011-09-19 11:04:02 +10:00
Andrew Tridgell
55cd7bcf1d added gcs_severity enum
this makes it harder to mixup defines
2011-09-19 11:04:02 +10:00
Andrew Tridgell
e61d742345 GCS: make the two GCS links gcs0 and gcs3
the artifical separation between 'gcs' and 'hil' just leads to
confusion. This also simplifies the code a bit more, and saves us a
bit more text
2011-09-19 11:04:02 +10:00
Andrew Tridgell
2ca8e58bc2 GCS: simplify the API for sending messages
this makes the code clearer, and saves us another 100 bytes of text
2011-09-19 11:04:02 +10:00
Andrew Tridgell
e0dc1271d6 imported ArduPlane from ArduPilotMega svn 2011-09-09 11:29:39 +10:00