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:
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
Arm and run a mission
Turn on the skid steer by changing the following parameters
param set SERVO1_FUNCTION 73
param set SERVO3_FUNCTION 74
Rover is started to deviate a path planned in the mission
Log flies: https://drive.google.com/file/d/1ncB4IYCimlkqZUDAEbgWyulBPQeHL0Pl/view?usp=sharing
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
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!
@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!