Commit Graph

46 Commits

Author SHA1 Message Date
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
Caio Marcelo de Oliveira Filho ee073787c8 Rover: use millis/micros/panic functions
Instead of going through 'hal' then 'scheduler', use directly the AP_HAL
functions. Besides removing indirection that is not necessary for such
functions, this patch ends up reducing the code size in the call sites.

For example, building ArduCopter for PX4 with this change (compared to
before introduction of the functions) yields almost 3k bytes of code
size.

    # ArduCopter build before the functions (1b29a1af46)
       text	   data	    bss	    dec	    hex	filename
     895264	   2812	  62732	 960808	  ea928	/.../px4fmu-v2_APM.build/firmware.elf

    # ArduCopter build after this patch
       text	   data	    bss	    dec	    hex	filename
     892264	   2812	  62732	 957808	  e9d70	/.../px4fmu-v2_APM.build/firmware.elf

A later patch will remove the unused functions in the Schedulers.
2015-11-20 12:26:14 +09:00
Grant Morphett e81973cd29 Rover: motor_active method similar to the plane is_flying but simpler 2015-11-11 13:39:39 +11:00
Grant Morphett 3636b53313 Rover: Implementation of the ARMING functionality 2015-11-11 13:39:38 +11:00
Grant Morphett 571b4478fd Rover: Using a new method to check for throttle failsafe
This method checks for throttle reversal.
2015-09-09 10:28:02 +10:00
Grant Morphett 103119fe9a Rover: fixed bug when reverse throttle would increase speed in AUTO
Fixed this bug
https://github.com/diydrones/ardupilot/issues/840
If a Rover was in AUTO and the user moved the throttle stick into
reverse past 50% the rover would increase.  Basically the throttle
nudge behaviour was the same regardless of whether you moved the
throttle forward or backward.
2015-08-06 17:11:53 +10:00
Andrew Tridgell b47a09b709 Rover: fixed build of .cpp files 2015-05-21 07:48:49 +10:00
Andrew Tridgell 2b6835d187 Rover: rename all .pde files to .cpp files 2015-05-21 07:48:49 +10:00