Commit Graph

58 Commits

Author SHA1 Message Date
Andrew Tridgell f18e0dadc9 Copter: added optional AdvancedFailsafe for copter and heli 2016-08-25 14:14:18 +10:00
Jonathan Challinger 80f3541933 Copter: add configurable arming delay 2016-08-04 15:19:22 +09:00
Andrew Tridgell 7e1ef905d3 Copter: removed 30ms delay on arming
this is the last of the delays that can cause the EKF to get unhappy
on arming in copter. The comment says it is waiting for RC input, but
I don't think that makes any sense any more.
2016-05-24 15:42:53 +10:00
skyscraper 6f200fa923 ArduCopter: Fix up after refactoring RC_Channel class
Further to refactor of RC_Channel class which included
adding get_xx set_xx methods, change reads and writes to the public members
to calls to  get and set functionsss

old public member(int16_t)   get function -> int16_t     set function (int16_t)
(expression where c is an object of type RC_Channel)
c.radio_in                     c.get_radio_in()           c.set_radio_in(v)
c.control_in                   c.get_control_in()         c.set_control_in(v)
c.servo_out                    c.get_servo_out()          c.set_servo_out(v)
c.pwm_out                      c.get_pwm_out()            // use existing
c.radio_out                    c.get_radio_out()          c.set_radio_out(v)
c.radio_max                    c.get_radio_max()          c.set_radio_max(v)
c.radio_min                    c.get_radio_min()          c.set_radio_min(v)
c.radio_trim                   c.get_radio_trim()         c.set_radio_trim(v);

c.min_max_configured() // return true if min and max are configured

Because data members of RC_Channels are now private and so cannot be written directly
 some overloads are provided in the Plane classes to provide the old functionality

new overload Plane::stick_mix_channel(RC_Channel *channel)
which forwards to the previously existing
void stick_mix_channel(RC_Channel *channel, int16_t &servo_out);

new overload Plane::channel_output_mixer(Rc_Channel* , RC_Channel*)const
which forwards to
(uint8_t mixing_type, int16_t & chan1, int16_t & chan2)const;

Rename functions

 RC_Channel_aux::set_radio_trim(Aux_servo_function_t function)
    to RC_Channel_aux::set_trim_to_radio_in_for(Aux_servo_function_t function)

 RC_Channel_aux::set_servo_out(Aux_servo_function_t function, int16_t value)
    to RC_Channel_aux::set_servo_out_for(Aux_servo_function_t function, int16_t value)

 Rationale:

        RC_Channel is a complicated class, which combines
        several functionalities dealing with stick inputs
        in pwm and logical units, logical and actual actuator
        outputs, unit conversion etc, etc
        The intent of this PR is to clarify existing use of
        the class. At the basic level it should now be possible
        to grep all places where private variable is set by
        searching for the set_xx function.

        (The wider purpose is to provide a more generic and
        logically simpler method of output mixing. This is a small step)
2016-05-10 16:21:16 +10:00
Andrew Tridgell 111eb2ccc1 Copter: use DataFlash::log_while_disarmed() 2016-05-09 12:05:52 +10:00
Andrew Tridgell 54d1cc7e50 Copter: only save offsets for Compass::LEARN_EKF
this means by default that one flight one affect the next one, which
makes it more robust in case of a bad flight
2016-04-30 16:43:14 +10:00
Jonathan Challinger c9b1b02b8e Copter: loop through compasses and save offsets 2016-04-21 09:53:03 +10:00
Jonathan Challinger 8ded496f8b Copter: log mode change reason 2016-04-14 12:24:04 +09:00
Paul Riseborough a7b69366a1 Copter: Add flight mode for throw launch
The is commit adds a new flight mode called 'Throw' to Copter that enables the copter to be thrown into the air to start motors. This mode can only be netered when the copters EKF has a valid position estimate and goes through the following states

Throw_Disarmed - The copter is disarmed and motors are off.
Throw_Detecting - The copter is armed, but motors will not spin unless THROW_MOT_START has been set to 1. The copter is waiting to detect the throw. A throw with an upwards velocity of at least 50cm/s is required to trigger the detector.
Throw_Uprighting - The throw has been detected and the copter is being uprighted with 50% throttle to maximise control authority. This state transitions when the copter is within 30 degrees of level.
Throw_HgtStabilise - The copter is kept level and height is stabilised about the target height which is 3m above the height at which the throw release was detected. This state transitions when the height is no more than 0.5m below the demanded height.
Throw_PosHold - The horizontal motion is arrested and the copter is kept at a constant position and height.
2016-03-03 12:18:13 +09:00
Randy Mackay 1f3fa3e272 Copter: formatting fixes to arming checks 2015-12-24 14:11:38 +09:00
Jonathan Challinger 933ffb2b10 Copter: move prearm logic to arming_checks.cpp 2015-12-24 14:10:23 +09:00
Luis Vale Gonçalves 3199829d45 Copter: revisions to text strings sent to GCS 2015-11-27 16:16:58 +09:00
Randy Mackay 1b29a1af46 Copter: consolidate setting of using-iterlock state 2015-11-17 09:02:31 +09:00
Robert Lefebvre 2b111c2bd6 Copter: fix Helicopter no-build issue
Conflict with another recent change to disarm counter
2015-11-14 10:32:58 +09:00
Fredrik Hedberg a6d2e0d4df Copter: Don't auto-disarm helicopters if rotor is still spinning. 2015-11-13 11:17:43 +09:00
Robert Lefebvre 2632a2e348 Copter: Rework arming proceedures for interlock/Estop
to fix race condition.
2015-11-12 19:37:15 +09:00
Jonathan Challinger 6524222397 Copter: adapt auto disarm check to use a timer 2015-11-09 15:34:41 +09:00
lvale 549695181c Copter: revised and uniformization of severity messages 2015-11-05 12:20:49 +09:00
Lucas De Marchi 84da1f5039 Rename gcs_send_text_P to gcs_send_text 2015-10-30 14:35:07 +09:00
Lucas De Marchi 2c38e31c93 Remove use of PSTR
The PSTR is already define as a NOP for all supported platforms. It's
only needed for AVR so here we remove all the uses throughout the
codebase.

This was automated with a simple python script so it also converts
places which spans to multiple lines, removing the matching parentheses.

AVR-specific places were not changed.
2015-10-30 14:35:04 +09:00
Randy Mackay b49fda4a94 Copter: remove rotor spinning arming check from TradHeli 2015-10-27 09:14:39 +09:00
Jonathan Challinger 28f55766fd Copter: use configured to check whether radio has been calibrated 2015-10-26 11:15:54 +11:00
Lucas De Marchi 09f185eb5e ArduCopter: remove check for max INS instances
For all supported boards the maximum number of instances is 3.
2015-10-21 10:05:17 +11:00
Paul Riseborough d0aba09503 Copter: Access EKF healthy through AHRS object
Enables EKF2 use
2015-10-20 15:21:38 +11:00
Paul Riseborough 7c6b31b585 Copter: Access EKF variance checks through AHRS object
Supports flight using EKF2
2015-10-20 15:21:38 +11:00
Randy Mackay d03489263d Copter: remove gyro cal on first arming 2015-10-19 12:00:41 +09:00
Gustavo Jose de Sousa fb5320bb25 ArduCopter: use compass get_{field,offsets}() functions
Both functions are equivalent, so we're going to simply use
get_{field,offsets}() instead of get_{field,offsets}_milligauss().
2015-10-15 19:56:05 +09:00
Andrew Tridgell 5cb088fe14 Copter: pass display_failure to AP_Motors heli check 2015-09-25 12:30:34 +10:00
Andrew Tridgell 2470cf0e76 Copter: use resetHeightDatum() and getLastYawResetAngle() 2015-09-23 17:47:11 +10:00
Randy Mackay 57c5840f0d Copter: add EKF attitude arming check 2015-09-21 17:06:39 +09:00
Randy Mackay 01c0b20930 Copter: calibrate gyros depending on INS GYR_CAL parameter 2015-09-21 17:06:34 +09:00
Randy Mackay 0f55b2a0eb Copter: replace vehicle compass consistency check 2015-09-16 15:13:38 +09:00
Staroselskii Georgii 68e0d57998 Copter: make Copter use milligauss
The telemetry and and logging is still in compass units, though. This
way, users won't need to recalibrate their compasses.
2015-09-09 10:38:16 +10:00
Andrew Tridgell dff9fe9cb2 Copter: use prearm_failure_reason() 2015-09-08 16:07:33 +10:00
Siddharth Bharat Purohit 9cf2998bba Copter: update send text severity for compass cal 2015-09-03 16:59:13 +10:00
Jonathan Challinger fa6bfee433 Copter: add arming check for compass calibration running 2015-09-03 16:59:12 +10:00
Andrew Tridgell 00da3ccc49 Copter: set in_arm_motors to false on all arm failure returns
otherwise if the user fails to arm due to interlock or emergency stop
then they won't be able to try to arm again until they reboot
2015-09-02 11:03:36 +10:00
Robert Lefebvre c968ec3a63 Copter: Helicopters to use motor interlock logic.
Also, remove motor interlock pre-arm check to streamline logic.
2015-08-31 11:43:37 +09:00
Andrew Tridgell 90909f2b4a Copter: added DISARM_DELAY parameter
this allows automatic disarming to be disabled, or set to a shorter or
longer time as appropriate for the user
2015-08-31 11:44:08 +10:00
Randy Mackay 0424b3f93c Copter: pre-arm check of EKF compass variance 2015-08-26 13:59:41 +09:00
Randy Mackay 920d5cefbb Copter: always check GPS before arming in Loiter 2015-08-26 13:15:28 +09:00
squilter 767b4da5b6 Copter: update send text severities 2015-08-25 14:05:25 +09:00
Paul Riseborough dc785fd2ed Copter: shorten disarm counter to 10 seconds 2015-08-15 08:21:13 +09:00
Jonathan Challinger 94fb94d67d Copter: adapt auto disarm for sprung throttle stick copters 2015-08-15 08:21:08 +09:00
Randy Mackay cc27fb46bf Copter: arming check that baro is healthy 2015-07-29 16:32:47 +09:00
Randy Mackay 11c9e46ec7 Copter: arming check that accels and gyro are healty 2015-07-29 16:32:45 +09:00
Randy Mackay 546d668d1d Copter: no set_hover_throttle for TradHeli 2015-07-21 16:26:07 +09:00
Robert Lefebvre e3a0f1568d Copter: Tradheli to check rotor speed control input before arming
Also, force rsc_control input to 0 when disarmed.  This prevents condition where AP_MotorsHeli can receive a rotor speed command greater than zero while disarmed, which was causing the ColYaw function to move the rudder servo.  These two changes are somewhat tied together as it required changing the arming_check to check the RSC_Control not desired_speed from AP_MotorsHeli.
2015-07-21 16:25:25 +09:00
Robert Lefebvre 92de71f993 Copter: Check helicopter parameters during Pre-Arm Checks 2015-07-21 16:25:07 +09:00
Randy Mackay 4e3d0ae0c1 Copter: fix startup logging
Removed potentially endless loop caused by start_logging calling
Log_Write_Startup which called should_log which could then call
start_logging.
Moved disarm event logging above motors disarm so it is logged
2015-07-14 14:03:00 +09:00