Commit Graph

57 Commits

Author SHA1 Message Date
Peter Barker 9105284a7d Rover: remove rc out initialisation wrappers 2019-02-12 08:21:30 +09:00
Randy Mackay 380884e175 Rover: shorten radio/throttle failsafe to 0.2 sec min 2018-11-02 10:31:37 +09:00
Randy Mackay ed8feda5b9 Rover: shorten failsafe timeouts
radio failsafes may trigger within 1sec (previously was 2 seconds)
default failsafe set to 1.5sec (was 5sec)
also minor improvement to FS_TIMEOUT parameter description
2018-11-02 10:31:37 +09:00
Randy Mackay fa5de31cb9 Rover: rename control_failsafe to radio_failsafe_check
although this makes the name inconsistent with plane it is more precise because control can also come from rc-overrides which are covered by the GCS failsafe
2018-11-02 10:31:37 +09:00
Randy Mackay 0665ac5229 Rover: rename rudder_arming to get_rudder_arming_type 2018-09-11 19:34:39 +10:00
Randy Mackay b1a4cd55fd Rover: support disabling rudder arming 2018-09-11 19:34:39 +10:00
Peter Barker 5d923aed85 Rover: remove dead gcs failsafe code
Also use rc().has_valid_input() before using radio for trim
2018-08-02 15:21:03 +09:00
Peter Barker 1f0908bba2 Rover: move handling of RC Switches into RC_Channel
Rover: use base-class auxsw handling

Rover: factor out do_aux_function_change_mode

Rover: move mode number enumeration to be in Mode:: namespace

Rover: move mode switch handling to RC_Channel

Rover: rename control_modes.cpp to RC_Channel.cpp

Rover: move motor_active() to be a method on the motors class
2018-08-01 12:11:30 +09:00
Michael du Breuil c85f8c7bf5 Rover: Simplify radio trimming, improve MAVLink report 2018-06-11 16:29:36 -07:00
Peter Barker cf1f2f9aeb Rover: move motors_active to be motors.active
This will help when we come to subclass the Motors library.
2018-06-08 08:51:18 +09:00
Ammarf 26c25daa36 Rover: add support for lateral control input 2018-05-31 13:48:17 +09:00
Michael du Breuil da9053655b Rover: Support new RC_Channels::read_input() 2018-04-26 08:00:09 +10:00
Michael du Breuil 05173f24c6 Rover: Use RC_Channels instead of hal.rcin 2018-04-11 21:47:07 +01:00
Randy Mackay 5cd500847b Rover: rename auto_throttle to allows_arming_from_transmitter
This method is only used to determine whether we can arm from the transmitter so better to make its purpose more clear
Also minor comment fix to is_autopilot_mode method
2018-01-12 08:15:34 +09:00
Randy Mackay 241456f55f Rover: remove auto trim at startup
Also add additional checks to auto trim
2017-12-15 20:26:40 +09:00
Randy Mackay 8043c0f638 Rover: reduce arming delay to 2 sec 2017-12-01 21:59:55 +09:00
Randy Mackay 26f50f6055 Rover: PILOT_STEER_TYPE replaces SKID_STEER_IN
new options allow controlling vehicle's heading while reversing
skid-steering vehicles rotate in opposite direction when backing up
2017-11-29 09:38:53 +09:00
Randy Mackay 14d9e932ab Rover: allow disarming from transmitter on skid-steering vehicles 2017-11-23 09:07:04 +09:00
Randy Mackay fb944322c7 Rover: minor fix to disarm logic
check should use logical and instead of bitwise and
2017-10-26 19:43:48 +09:00
Randy Mackay 524fe4cd82 Rover: aux switch saves waypoint in manual or steering modes
Also refactor aux switch methods
rename LEARN_CH to AUX_CH
2017-08-25 14:05:23 +09:00
Randy Mackay 3adfb0e77d Rover: replace int with uint8_t
non-functional change
2017-08-25 14:05:23 +09:00
Randy Mackay 82e61d7198 Rover: remove unused throttle_failsafe_active method 2017-08-25 14:05:23 +09:00
khancyr 7c3374668e Rover: formatting fixes and const local variables 2017-08-05 17:05:00 +09:00
Randy Mackay 6626c2e12e Rover: only mode manual directly copies rc input to motors 2017-07-21 10:13:20 +09:00
Randy Mackay f17f56dea4 Rover: move throttle nudge to Mode class 2017-07-21 10:13:20 +09:00
Peter Barker 07f4603533 Rover: integrate mode class 2017-07-21 10:13:20 +09:00
Randy Mackay 208607d668 Rover: remove output_trim_all during initialisation
MotorUGV library now outputs the proper values on the motor channels.  Other libraries are also responsible for initialising their outputs on startup.
2017-07-12 14:24:16 +09:00
khancyr b28656eb11 Rover: reoder rc and servo init 2017-07-10 19:48:35 +09:00
Randy Mackay 774e484869 Rover: remove servo channel failsafe from vehicle code
This is now handled by the MotorsUGV library
2017-07-10 10:37:14 +09:00
Randy Mackay 03d04c934e Rover: improve skid-steer input processing
limit the steering input
reverse commanded steering value if reversing to be consistent with separate steering-throttle frames
2017-07-08 16:07:13 +09:00
khancyr 8ab3e83a3c Rover: use float qualifier and functions 2017-07-08 16:07:13 +09:00
khancyr 1f0c985dec Rover: add setup_servo_output to allow ouput reconfiguration 2017-07-08 16:07:13 +09:00
Pierre Kancir 38dcc2eb12 Rover: minor formatting fix 2017-07-08 16:07:13 +09:00
khancyr 9b97ad0fc0 Rover: solve skid steer in value 2017-07-08 16:07:13 +09:00
Pierre Kancir 267a1532b9 Rover: integrate motors library
move throttle_slew_limit and THR_SLEWRATE parameter
move have_skid_steering to library
move mix_skid_steering to library's output_skid_steering method
move radio.cpp's output channel initialisation to motor's init method
use motors.get_throttle and get_steering instead of getting from Servo objects
use motors.set_throttle and set_steering instead of setting to Servo object
AP_Arming::arming_required is replaced with SAFE_DISARM parameter
2017-07-08 16:07:13 +09:00
Pierre Kancir 41e18f089e Rover: remove g.skid_steer_out in favor of have_skid_steering() 2017-06-24 13:17:32 +09:00
Pierre Kancir 1dcf90c161 Rover: use scaled input in Manual modes 2017-06-24 13:17:26 +09:00
Pierre Kancir ef2c2e4afc Rover: add some comments in radio 2017-06-24 13:16:59 +09:00
Pierre Kancir 7595ffb8ba Rover: set correct safety limit 2017-06-24 13:16:48 +09:00
Andrew Tridgell 2e24c35906 Rover: setup default esc scaling
for rovers without a k_throttle channel we need a default ESC scaling
value
2017-06-21 10:30:39 +09:00
Andrew Tridgell 79f7cc5779 Rover: implement new style skid steering
use throttleLeft and throttleRight servo functions. This gives much
greater flexibility and control over motor trims and limits
2017-06-21 10:30:39 +09:00
Pierre Kancir 20cc336885 APMRover2: const correctness 2017-04-26 08:43:09 +10:00
Pierre Kancir c41e695c98 APMRover2: correct some style 2017-04-26 08:43:09 +10:00
Pierre Kancir b634fe548d APMRover2: Use c++ cast 2017-04-26 08:43:09 +10:00
Andrew Tridgell 9fe3eba2a0 Rover: added automatic parameter upgrade for SRV_Channel 2017-01-12 17:39:37 +11:00
Andrew Tridgell 93d6b012c2 Rover: convert to new SRV_Channel API 2017-01-12 17:39:37 +11:00
Pierre Kancir 25fbfeb5cf Rover: radio.cpp correct whitespace, remove tabs 2016-12-30 09:20:24 +09:00
Mathieu OTHACEHE 152edf7189 Global: remove mode line from headers
Using a global .dir-locals.el file is a better alternative than
reincluding the same emacs header in every file of the project.
2016-10-24 09:42:01 -02:00
Grant Morphett 094d571196 Rover: Skid steering disarming fixes
I have disabled steering disarming for skid steering rovers.  Its
perfectly reasonable for a skid steering rover to go hard left on the
spot without any throttle and the user wouldn't want the rover to
disarm during this procedure.
If you disarm from the GCS for a skid steering rover we also ensure
the steering channel is disabled.
2016-06-01 10:12:02 +10:00
skyscraper 8c9e55edfa APMRover2: 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