Skidsteering is behaving strange

Ardurover 3.1.2 has skid steering too. It has two parameters, skidsteer_in and skidsteer_out to be set. Skidsteer_in is still there in 3.2, but skidsteer_out was replaced by the new servoX_function scheme, that is used by copter and plane.
The problem is, 3.1.2 and 3.2 both have the 0.5 factor on steering output, so if you need full power pivot turns, 3.1.2 will not help you either. My Dagu Wildthumper used to just sit there humming, while trying to do a pivot turn.
It should be relativly easy to remove the 0.5 factor from the code, but that will not solve the pivot turns only in manual mode problem.

Thanks, guess I will stick with 3.2.0 then until a fix is out.

Hmm, just to clarify: Isn’t it possible to to PIVOT turning in 3.1.2 at all albeit with reduced power?
We have two systems, a test rover for land use (so we don’t have to swim as much…) and the boat itself.
We are doing field tests every day and we really need to implement pivot turning on the boat in auto mode. The land rover has a much smaller turn radius when skid turning only, less than 1m, so we get away with that during testing (it does PIVOT turning on the spot in manual). The boat is a catamaran and the turn radius with skid turning only is closer to 50m! With pivot turning (like we do in manual) it turns on the spot.

Again, I really appreciate the feedback and I will be more than happy to test any firmware and share photos, videos and info. If there was a way for me to edit the code somehow I would do that but I’m not sure if that is possible? I’m talking basic stuff like tweaking a few numbers and maybe inserting a few if-statements and then save and upload.

You can pivot turn in 3.1.2 with 50% throttle/speed.
There are guides in the ardupilot wiki about how to compile the code on/for different plattforms. I only have done this for the Emlid Navio on the Raspberry Pi (sloooowww…) and cross compiling with bash on windows. If you follow the instructions, it should be no problem. The 0.5 factor is in AP_MotorsUGV.cpp in line 272 and 273.

Awesome, I will reload 3.1.2 and test on the land rover. I’ll keep you posted later this evening when I have the results (7-8 hours ++ maybe). Maybe it’s possible to cheat a bit with with the ESC’s calibration limits in order to get some extra thrust.

That compiling thing is not something I’m too familiar with. Will have a look at it anyways for sure!

as far as I know the dev team (specially @khancyr ) are considering to implement a “speed pivot turning” parameter, as seen on other topics like this one

Ok, tested 3.1.2 and it pivots (kinda slow) in auto mode, great! Problem now is getting the steering to work properly in manual mode. Setting skid_steer_in doesn’t seem to be doing much and I find that a bit strange…

Sorry for the detailed explanations but in my search for information I’ve come across so many outdated and “wrong” comments. My test rover has two wheels with separate ESC’s and motors. It also has a single caster wheel in the front.

In manual mode, rover 3.1.2 with skid_steer_in and skid_steer_out both enabled : I now have “normal car” steering with the left stick adjusting forward and backwards speed (both wheels) and the right stick for steering (both wheels). Right after powering on it operates in “tank mode” like I want it to but it changes to “normal car steering” when it auto-arms.
I want the left stick to only operate the left motor only and the right stick to operate the right motor only; just like a tank.

Guys I’m struggling to get skid steering working on my tank rover.

I’ve set RC skid steering input to 0

I’m using a mode 1 transmitter (using elevator for throttle and aileron for differential steering )

but don’t know what setting I should set for servo X output.

currently the robot is doing some weird behaviour with the RC mapping

I can see the output on CH 1 and 3 on the output.

What I would like to see is when I push the elevator forward I’d like to see both ch 1 and 3 move to value 1900
and if I push it back both ch 1 and 3 move towards 1100

and when I move the aileron left or right the output on ch1 and and 3 should move in a differential manner

Cheers

You have to set servoX_function to 73 and 74, throttle left and throttle right. This replaces the old skidsteer_out parameter.

1 Like

@brover

I had a bit spare time today and changed the AP_MotorsUGV. First, I removed the 0.5 factor, but that made matters worse. Changing from pure pivot turning to a little bit of forward or backward throttle almost ripped my rover apart.
I then commented out the whole if/else construction and simply added a normal differential mixer (elevon, skid steering).
Now it works as I would expect it. Stick full left/right, motors go full throttle in opposite directions. Stick in the corners, one motor goes full throttle, the other one stops and smooth transitions in between.

Hello,

Sorry I wasn’t much around! I just check on SITL, and you are right skid_steer_in seams broken in 3.2 . I will fix that quickly !

About the pivot turn, we get a patch read for both power issue and in auto issue. It should come this week

@khancyr

I think the bigger problem is the way the code differs between pivot turning and turning while moving. Since the change between the two states is instant, the throttle change to the motors is too. One moment, both wheels are moving in opposite directions at half input value, the next moment, one wheel stops and the other one goes to full input value. That might be ok for a motor just driving a prop, but for a rover with geared motors and a lot of mass and inertia on the wheels, it leads to mechanical failure.

Nice find !
I didn’t think about that but you are right that we can reach a problem. I will add something to prevent that

This sounds great guys! I agree that the sudden change in direction and/ or value is hard on some systems. We have successfully toasted several brand new (and expensive) ESC’s. I make prototypes for a living and we are investing a lot into this project so that’s not really a problem. As long as we know why it fails we can correct it. I’ve had a steep learning curve as to how the code works under certain conditions. Still not on top of things quite yet. Not by a long shot.

Am I right to assume that the heritage from planes or copters makes the code a bit “messy”?
I would, wherever possible, swap out all the notations like “roll” “yaw” “throttle” etc to something simpler like numbers. A few days ago we swapped one of our remotes for a taranis q x7. It was a blessing seeing their approach to “start from scratch” and how intuitive and clean setting it up is. “That stick will do that and output on this channel”. Simple!
Hopefully this will be the case one day for future firmwares. Ardupilot and rover has a LOT of potensial in pure robotic applications where, for instance, “yaw” might not make any sense in that particular system.

But, it is a great system now even with its flaws. If you manage to iron these kinks out I’ll buy the first round.

First the caveat… I’m a real beginner.

Skidsteer = 1
RCMap … All default values
Servo Functions per the beta 3.2 instructions

I’ve set up my Spektrum DX5e for the Pitch to Channel 3 and Roll to Channel 1. The Mission Planner status screen indicated a nice full swing from ~1100 to 1900 for both Chan1in and Chan3in. But when I push the pitch lever forward I get 1900 on Chan3out but only ~1600 on Chan1out. And when I push the Roll lever to the right, I get 1900 on Chan1out and 1600 on chan3out.

Is there a mixing parameter I’ve messed up somewhere?

Thanks

RoboBill

If you mean skidsteer_in = 1, you will have to set this to 0 for your DX5e.

Wow its works!!! … amazing… particularly when it is so easy for me to screw up any one of the dozens of configurable variables that are so tempting to fiddle with.

Thank you

RoboBill

1 Like

This!
Sorry, but been waiting silently for any news about the next RC, or maybe any news about next stable release ETA.
I know that it sucks when people ask for it, but… Is there an estimate date for next RC or stable release? I’m specially anxious about the pivoting thingy in auto modes.

Sorry and thank you!

Hello,

I will received a new rover this weekend, so normally, I hope to time to launch a new beta next week ! But, it will hard as I need Randy or Grant approval and there will be the unconference. I keep you in touch

2 Likes