Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Java (http://www.chiefdelphi.com/forums/forumdisplay.php?f=184)
-   -   Automatic Differential/Motor Speed Compensation (http://www.chiefdelphi.com/forums/showthread.php?t=143312)

Sky Captain 06-02-2016 15:03

Automatic Differential/Motor Speed Compensation
 
Hey All,

We're encountering a problem, we are currently using Rhino drive, with 2 motors per side. Sometimes one set of motors runs faster than the other. When that happens we use a differential modifier on the RobotDrive class.
Example:
Code:

Robot Drive(0.8*DIFFERENTIAL, 0.8)
and that makes the robot drive straight. The problem is that the hardware changes slightly between different sessions, so that means the DIFFERENTIAL modifier needs to change. Has anyone experimented with doing this automatically using encoders or anything else? Sorry, if the post isn't too clear, if you have questions I'm willing to supply answers.

Edit: We are using tank drive style, not arcade style.

joelg236 06-02-2016 15:23

Re: Automatic Differential/Motor Speed Compensation
 
Encoders could work, using a PID to compensate the turn. This is complicated but it does work. Using a gyroscope works as well.

I always recommend fixing the problem mechanically though. If it's such a problem that a driver can't compensate themselves, you have an issue on your hands that should be physically fixed.

Ether 06-02-2016 15:25

Re: Automatic Differential/Motor Speed Compensation
 

http://www.chiefdelphi.com/forums/sh...48&postcount=7

http://www.chiefdelphi.com/forums/sh...33&postcount=2



Ether 06-02-2016 16:05

Re: Automatic Differential/Motor Speed Compensation
 
Quote:

Originally Posted by Sky Captain (Post 1536042)
if you have questions I'm willing to supply answers


OK:

- skidsteer drivetrain

- tank drive user interface


Questions:

Are you just trying to solve the problem of driving straight a given distance in autonomous?

Or are you getting pushback from the drivers that the bot is annoyingly asymmetric and you're trying to correct that?

Are you using SRX motor controllers in CAN mode?

Do you plan to use encoders only, or are you open to the idea of adding a gyro as well?

EDIT (adding Joel's question): Have you tried to identify possible mechanical issues? How?


The set of optimal solutions depends on how you answer the questions.

Sky Captain 07-02-2016 12:27

Re: Automatic Differential/Motor Speed Compensation
 
Mostly the first two problems you posted. When we drive in autonomous, sometimes it doesn't drive straight. Also with the motors being off, the drivers are having to attempt to manually compensate for differing speeds on the left and right set of motors. On the robot we are testing, we are using Jaguars set up in PWM (standard) mode. We have encoders and a gyro. We've checked out the gearboxes, and made sure that all the treads are tight. We think it might be an inherent differences in the motors themselves.

Ether 07-02-2016 12:53

Re: Automatic Differential/Motor Speed Compensation
 
Quote:

Originally Posted by Sky Captain (Post 1536449)
We think it might be an inherent differences in the motors themselves.

How difficult would it be to pull the right and left motors out and swap them?

That would definitively tell you whether it's the motors, or friction in the drivetrain.




Sky Captain 07-02-2016 13:11

Re: Automatic Differential/Motor Speed Compensation
 
Not that difficult actually, I'll get mechanical on it and report what the results are. Thanks.

Ether 12-02-2016 11:58

Re: Automatic Differential/Motor Speed Compensation
 
Quote:

Originally Posted by Sky Captain @ 02-07-2016, 01:11 PM (Post 1536463)
Not that difficult actually, I'll get mechanical on it and report what the results are. Thanks.

any news ??



Sky Captain 12-02-2016 19:41

Re: Automatic Differential/Motor Speed Compensation
 
We just got our frame assembled, and we were going to disassemble the tracks when we migrated them from the test bot to the real bot. I'll report back sometime during the weekend when this happens.

Ether 21-02-2016 21:47

Re: Automatic Differential/Motor Speed Compensation
 
Quote:

Originally Posted by Sky Captain 02-12-2016 07:41 PM (Post 1539388)
I'll report back sometime during the weekend when this happens.

Any news??



RSNovi 12-03-2016 09:16

Re: Automatic Differential/Motor Speed Compensation
 
We have a similar problem with our robot. One of the gear boxes on one side is tighter. It doesn't seem to cause problems when manually driving, but long distances in autonomous mode would cause it to veer slightly.

We corrected by designing an algorithm using the gyro which we can set an angle and the PI controller will correct. Unfortunately it isn't perfect because the gyros drift so bad.

We were having good luck scoring a goal autonomously and we made it to the finals. After turning the robot on the announcers would talk so long that the gyro would start drifting like crazy before the robots started. The reference library takes 5 seconds to calibrate the gyro. I wonder if that could be reduced.

Ether 12-03-2016 09:23

Re: Automatic Differential/Motor Speed Compensation
 
Quote:

Originally Posted by RSNovi (Post 1555777)
After turning the robot on the announcers would talk so long that the gyro would start drifting like crazy before the robots started. The reference library takes 5 seconds to calibrate the gyro. I wonder if that could be reduced.

It doesn't take 5 seconds to read the gyro and use that reading as a zero offset.



RSNovi 12-03-2016 11:38

Re: Automatic Differential/Motor Speed Compensation
 
I know reading the gyro doesn't take that long, the calibration routine takes 5 seconds on the 450 gyro. That is when using the WPI class.

When it drifts it really takes off. I reset the gyro at the very beginning, but if it is already drifting it will be off a few degrees in a matter of a few seconds. Ideally I would like to calibrate the gyro in my autonomous init.

Ether 12-03-2016 11:57

Re: Automatic Differential/Motor Speed Compensation
 
Quote:

Originally Posted by RSNovi (Post 1555818)
I reset the gyro at the very beginning, but if it is already drifting it will be off a few degrees in a matter of a few seconds.

If you calibrate the gyro when it's cold, it will drift faster when it warms up.

Also make sure you have all vibration sources (like the compressor) turned off when you calibrate.

Or you could try this solution:

http://www.chiefdelphi.com/forums/sh...9&postcount=13
http://www.chiefdelphi.com/forums/sh...8&postcount=17



mark219 12-03-2016 13:00

Re: Automatic Differential/Motor Speed Compensation
 
We used a gyro to drive straight, by taking into account the change in angle and a constant value (a constant much like a P-value in a PID loop).

RSNovi 15-03-2016 18:27

Re: Automatic Differential/Motor Speed Compensation
 
Quote:

Originally Posted by Ether (Post 1555826)
If you calibrate the gyro when it's cold, it will drift faster when it warms up.

Also make sure you have all vibration sources (like the compressor) turned off when you calibrate.

Or you could try this solution:

http://www.chiefdelphi.com/forums/sh...9&postcount=13
http://www.chiefdelphi.com/forums/sh...8&postcount=17



I wonder if it would be better to bring the robot up to the course powered up so all of the electronics are warm. Then toggle the power after placement so the calibration is done while everything is somewhat warm.


All times are GMT -5. The time now is 10:17.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi