Deviated path with skid steer

Hello,

While I tested the skid steer, I found that Rover’s path is started to deviate from a mission.
You can reproduce this issue the following step in SITL:

  1. set the following parameters
    param set WP_OVERSHOOT 2.000000
    param set WP_PIVOT_ANGLE 70.000000
    param set WP_PIVOT_RATE 45.000000
    param set WP_RADIUS 0.010000
    param set WP_SPEED 3.000000
    param set WP_SPEED_MIN 0.000000

  2. Arm and run a mission

  3. Turn on the skid steer by changing the following parameters
    param set SERVO1_FUNCTION 73
    param set SERVO3_FUNCTION 74

  4. Rover is started to deviate a path planned in the mission

Log flies: https://drive.google.com/file/d/1ncB4IYCimlkqZUDAEbgWyulBPQeHL0Pl/view?usp=sharing

Hi @KimHyungSub,

I think the issue may be the WP_RADIUS being set very very small (0.01m = 1cm). In general this should be no less than 0.5m. By the way I’ve also found an issue with very small radius here https://github.com/ArduPilot/ardupilot/issues/17417.

If you have time could you re-test with the WP_RADIUS parameter made larger?

@rmackay9 Thank you for your feedback!
I re-test the skid steer with default values of parameters.
The only changed parameters are SERVO1_FUNCTION and SERVO3_FUNCTION to trigger the skid steer. The result is the same as before.


I turn on the skid steer after the waypoint 2.

Log file: https://drive.google.com/file/d/1clngJkv9tgRDJaswATBqnmp2yKe3RkIC/view?usp=sharing

Edit: I also tested Rover-3.5.0 release version. I could not figure out what is the root cause, but it showed more stable path than Rover-4.1.0-beta.

Re-edit: This issue occurs after this commit (a96c146758742a22c296bafaf4d61696ce7a5592).

When I commented out the below code line, this issue did not happen again.

// set last time speed controller was run so accelerations are limited
_speed_last_ms = now;

Extracted from libraries/APM_Control/AR_AttitudeControl.cpp

@KimHyungSub,

When you start the simulator are you adding “-f rover-skid” to the start command? (e.g. “Tools/autotest/sim_vehicle.py --map --console -f rover-skid”).

If not then the simulated vehicle will have ackermann steering controls and trying to control it as a skid steering vehicle definitely will not work! :slight_smile:

@rmackay9 Oh! Then, never mind because I executed the simulator without “-f rover-skid”. I thought that I can change steering style by changing SERVO1_FUNCTION and SERVO3_FUNCTION parameters. Thanks!

1 Like