Commit Graph

50 Commits

Author SHA1 Message Date
jeff567
200a644cfe Rover: fixes bug in rovers with pivot turning 2018-07-11 11:35:43 +09:00
Randy Mackay
a061203eaf Rover: pass ground speed to motors lib for scaling of steering 2018-05-10 08:02:13 +09:00
Randy Mackay
822c4b6dca Rover: remove set of slew for motor test
The motor library test function does not attempt to implement slewing so setting this is not necessary
2017-11-27 14:31:20 +09:00
Daniel Widmann
ac7e76cc43 Rover: enable pivot turns in auto mode 2017-11-08 14:35:00 +09:00
Randy Mackay
fb9f695d2f Rover: fix use-pivot-steering
absolute yaw error should be used
2017-10-26 19:43:55 +09:00
Randy Mackay
1b19ee865d Rover: remove active-loiter and set-auto-wp
these are now handled by auto mode
2017-08-05 11:20:58 +09:00
Randy Mackay
b9db9229d9 Rover: replace vehicle code guided methods with calls to guided mode class
set_guided_WP replaced by mode_guided.set_desired_location
nav_set_yaw_speed replaced with mode_guided.set_desired_heading_and_speed
set_guided_velocity replaced with mode_guided.set_desired_turn_rate_and_speed
guided_control structure replaced with mode_guided members
use_pivot_steering accepts yaw-error argument instead of calculating it itself internally
2017-08-05 11:20:58 +09:00
Randy Mackay
2321cefdc2 Rover: move manual mode failsafe handling to mode class 2017-07-21 10:13:20 +09:00
khancyr
b9644c4ec7 Rover: disable slew limit by default on mode 2017-07-21 10:13:20 +09:00
Peter Barker
07f4603533 Rover: integrate mode class 2017-07-21 10:13:20 +09:00
khancyr
5208466629 Rover: add motor test 2017-07-18 10:15:44 +09:00
Peter Barker
9509f7f1bf Rover: use send_text method on the GCS singleton 2017-07-09 17:17:29 -04:00
khancyr
8ab3e83a3c Rover: use float qualifier and functions 2017-07-08 16:07:13 +09:00
Pierre Kancir
ba8664193a Rover: fix failsafe throttle 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
Randy Mackay
1fc85e9a8c Rover: adjust skid steer motor mixing, fix rotation direction in reverse
balanced prioritisation of throttle vs steering when motors become saturated
direction of turning made consistent with normal (ie non-skid-steered) vehicles

Also includes fixes to motor mixing after peer review
2017-07-01 19:48:01 +09:00
Randy Mackay
f036b1f92c Rover: pivot steering stays active until within 10deg of target heading
Previously the vehicle would pop out of pivot-steering once it was within PIVOT_TURN_ANGLE degrees of the target heading.  This meant that it would give up on the pivot steer long before it was actually pointing at the target.
2017-07-01 19:48:01 +09:00
Georgii Staroselskii
eed08fb8cd Rover: cork and push servo outputs
SRV_Channels API makes it easy to sync all PWM channels at once. This is
the support needed for it to work properly on Rovers.
2017-06-27 11:46:41 -07:00
Pierre Kancir
9abb1f634f Rover: add comments to Steering 2017-06-24 13:17:33 +09:00
Pierre Kancir
031ed4bbb0 Rover: Remove old skid steering 2017-06-24 13:17:33 +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
ee28e49790 Rover: steering mark floats as float and fix parenthesis 2017-06-24 13:17:10 +09:00
Pierre Kancir
32dc59baec Rover: fix throttle slew limit for skid steer out 2017-06-24 13:16:40 +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
8a85b8be4c APMRover2: correct usage of set_output_pwm 2017-06-20 15:58:33 +09:00
Pierre Kancir
045d171ab9 Rover: add Guided velocity controller 2017-05-04 19:53:21 +10:00
Pierre Kancir
7f861aafd0 APMRover2: make on spot turn in skid and manual use full motor range 2017-04-26 10:38:01 +10: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
Pierre Kancir
b31d2a59da APMRover2: Fix skid steer in when in skid steer out 2017-01-17 10:31:43 +11:00
Pierre Kancir
e0a3caea13 APMRover2: Steering fix style 2017-01-17 10:31:43 +11:00
Andrew Tridgell
93d6b012c2 Rover: convert to new SRV_Channel API 2017-01-12 17:39:37 +11:00
Pierre Kancir
f32de5e21b Rover: Steering.cpp correct whitespace, remove tabs 2016-12-30 09:20:24 +09:00
Grant Morphett
378bd84b29 Rover: Fixed a bug in the wp loiter functionality
Had a bug where the rover would loiter for ever and not resume even
though its loiter time had expired.  This resolves that.
2016-12-20 14:35:28 +11:00
Grant Morphett
86d4fcfb32 Rover: Station Keeping is implemented via NAV_LOITER_COMMAND
It is a very simply form of station keeping.  If a boat is
loitering on a waypoint and it gets blown off a distance
past the WAYPOINT_RADIUS it will automaticlly drive back to
the waypoint.
2016-10-30 22:50:03 +11: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
57c23c7fe3 Rover: Adding support for rovers driving in Reverse. 2016-07-17 08:15:34 +10:00
Pierre Kancir
ee168bee8d APMrover2 : correct arming and failsafe in skid steer mode
Commit 3636b53#diff-e22a85a55f71f1b9b2d3f293dea61368 introduce arming for rover. But in skid steering mode it was only applied on throttle and the rover still pivot.
The patch also correct rover behaviour in case of failsafe or loitering.
2016-05-28 14:34:43 +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
Grant Morphett
039ea59d7e Rover: Whitespace/formatting change ONLY for Steering.cpp 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
lvale
a64689600f Rover: text message severity uniformization
Global revision of message severity values.

Required also change to the low priority function gcs_send_text_fmt()
on GCS_Mavlink.cpp to disable the automatic setting of priority on
messages sent by this function
2015-11-05 12:33:56 +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
squilter
b4cf0ce2bb Rover: update severity values 2015-08-25 14:04:40 +09:00
Grant Morphett
a2e9d0488c Rover: Implemented loitering at a waypoint if Param1 is non-zero
Rover now honours the Param1 setting of a time in seconds for a
NAV_WAYPOINT and the Rover will loiter at that waypoint for that
period of time.
Note that as soon as the Rover reaches that waypoint the loiter timer
will start. If you enter a different mode during this time (HOLD for
instance) the timer resets. If you then switch back to AUTO
mode and the Rover returns to that waypoint it will wait for the
loiter time configured in param1.
2015-07-29 10:08:04 +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