|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
|||
|
|||
|
Driving Straight Error
Hey guys. So we have had this problem with driving straight for a little while, but it appears to be getting worse and worse. Our bot is the kit of parts chassis, which is wired with encoders, as well as a gyro. When ever we attempt to go straight the bot veers to one side, and doesn't veer to the same side all the time.
When we run the robot at half of the max speed, the bot drifts towards the left. Here is video of the robot doing this. https://www.youtube.com/watch?v=Yn5b...ature=youtu.be When we run the robot at full speed, the bot starts to veer to the right. Here is video of the robot going at full speed. https://www.youtube.com/watch?v=nQDE...ature=youtu.be In both videos, we have used code to eliminate getting the x-axis values on the joystick and to solely move forward. We were wondering if any teams had this problem, and if anyone knows how to possibly correct this. Any help is appreciated. |
|
#2
|
|||||
|
|||||
|
Re: Driving Straight Error
Does it behave this way when the encoders and/or the gyro are removed from the system, by code or other means? Mechanically, it should track pretty straight even without the sensors--at least, it should only go one way.
Are your speed controllers calibrated? It sounds like on one side, you're getting more power at half throttle, but the other gets more power at full--but I suspect that isn't the whole story. Are there signs of wear, or debris, in one or both gearboxes? That might be jamming you up a little bit. |
|
#3
|
|||
|
|||
|
Re: Driving Straight Error
The bot behaves this way regardless of the sensors on the bot. Currently we aren't doing much with the sensors. We are trying to use the sensors to allow for us to drive straight. The speed controllers that are in use are the Talons and were just calibrated. We don't think there is anything wrong with the gearboxes as they seem to sound fine when we are running them, I will see if we can get anyone to look into that in our next meeting, but could the gearboxes be the reason for this shift in direction of drift after a certain point?
|
|
#4
|
|||||
|
|||||
|
Re: Driving Straight Error
Quote:
I wonder... Check your speed controller output values in code. I'm thinking that maybe one of the motors might be getting an abnormally low value at full throttle, which would cause a draggy motor on that side. That would put the remaining motor working hard to overcome both the motor and the system... Or maybe your joysticks need calibration. |
|
#5
|
|||
|
|||
|
Re: Driving Straight Error
Quote:
|
|
#6
|
|||
|
|||
|
Re: Driving Straight Error
What if you write a simple autonomous program that has the robot drive straight forward. If it drives straight it is likely a controller problem, but if its pulling its likely the robot itself.
|
|
#7
|
|||
|
|||
|
Re: Driving Straight Error
Since you have encoders, can you plot them over time? I'd be curious how much difference there is under different conditions. In particular, how much difference is there when the robot is up on blocks? Does the half joystick and full joystick bias persist or does the behavior change?
Looking at the videos, in the half-speed one, the robot's acceleration is minor and the robot stays level. In the full-speed one, the robot accelerates hard. The weight rocks the robot on its back wheels, and that seems to be when it veers right. It doesn't look like a constant arc. So another test would be to ramp the motor values more slowly. See if that sheds some light. Greg McKaskle |
|
#8
|
|||
|
|||
|
Re: Driving Straight Error
Quote:
Quote:
Quote:
Code:
Speed: .5 Left encoder: 7282 Right Encoder: 7591 Speed: .6 Left encoder: 11546 Right Encoder: 11435 Speed: .7 Left encoder: 16531 Right Encoder: 17083 Speed: .8 Left encoder: 20538 Right Encoder: 21263 Speed: .9 Left encoder: 25814 Right Encoder: 26199 Speed: 1.0 Left encoder: 32812 Right Encoder: 33366 |
|
#9
|
||||
|
||||
|
Re: Driving Straight Error
FYI, the motors can be +/- 10% off the published power curves. Simply sending the same values to the Talon/Victor/Jaguars will rarely make the robot drive perfectly straight. If you have encoders, feed them to the PID controller class to implement a velocity servo. The wheels will reach the same velocity eventually but might drive a little crooked while accelerating because one side accelerates faster than the other. You can compensate with 'P' constants.
Some teams add accelerometers and gyros feedback and help to drive straight and execute precise turns. HTH |
|
#10
|
||||
|
||||
|
Re: Driving Straight Error
Does that +/- 10% apply to the power curve? Or is that the tolerance for the free speed?
|
|
#11
|
||||
|
||||
|
Re: Driving Straight Error
Something else to consider is that the motors spin in different directions to cause motion either forward or backwards.
The CIM motors are very close in speed when run full CW and full CCW but there is always difference which account for you encoder numbers. Try running the robot at full speed in a circle and record results. |
|
#12
|
|||
|
|||
|
Re: Driving Straight Error
If I read your post correctly - the signal for the Talons is being set via the smart dashboard instead of the controller, therefore you can rule out the controller.
I would unhook the gyro and comment out any code that refers to it. As a general rule for troubleshooting: you want to start from a known good state and add things back in until you find the problem. In your case this means getting two motors working such that the robot drives straight and then add Talons and motors back in until you get 4 motors driving straight. Some troubleshooting step I would look into: - Are the transmissions greased properly and equally? Does one have a lot more old yucky grease? - Are the gears inside each transmission identical? We have had different gearings in "identical" transmissions before. Same goes for any belts idlers or chain sprockets. We had a bot where the left and right chain sprockets attached to the gearbox were different tooth counts so it always moved left. - Can you spin the gearboxes by hand with approximately the same force without motors while on blocks? - When on blocks and set to coast - if you go from 100% power to 0% power do the wheels stop at about the same time? - Are all the motors and controllers the same vintage (i.e. is one motor re-used from 2013)? What encoders are you using? Did you calibrate the Talons on blocks on the actual robot or calibrate them on a different electronics setup and then add them to the chassis? Are the PWM cables in good shape and making good contact? Have you tried other PWM ports on the Digital Sidecar? I have seen a few CD posts where the PWM ports weren't working properly (though this is rare). With the robot on blocks - are the Voltages on the outputs of the Talons very close to each other? If you still still see errors start switching components (Talons and Motors) one at a time and take careful notes of what was changed and whether the robot went straight, right or left. Theoretically when you swap the underperforming Motor or Talon from left to right it will drift the other way. This is easier to do with a single motor on each side. If you have motors A,B,C,D and Talons 1,2,3,4 try something like: Talon 1 with Motor A on the left and Talon 2 with Motor B on the right, then Talon 1 with Motor B on the left and Talon 2 with Motor A on the right, etc. until you find out which Talon or Motor is not playing nicely. We have had a few hiccups using Talons for the first time this year but eventually sorted them out. Drive up and visit us in Denver Tuesday if you're still having trouble. We still owe you for setting up such a great off-season event. -matto- |
|
#13
|
||||||||||
|
||||||||||
|
Re: Driving Straight Error
Quote:
Quote:
Quote:
Yes. Quote:
Quote:
Quote:
We are using: US Digital E4P-250-250-N-S-D-D-B encoder (am-0174) Quote:
I've checked the cables, and they seem to be in good shape. Quote:
Quote:
It is a 4 motor drive base. Quote:
Code:
Talon flTalon;
Talon frTalon;
Talon blTalon;
Talon brTalon;
/**
* Create a new instance of the Drive class.
*/
public Drive_Simple() {
flTalon = new Talon(RobotMap.DRIVE_MODULE, RobotMap.FL_WHEEL);
frTalon = new Talon(RobotMap.DRIVE_MODULE, RobotMap.FR_WHEEL);
blTalon = new Talon(RobotMap.DRIVE_MODULE, RobotMap.BL_WHEEL);
brTalon = new Talon(RobotMap.DRIVE_MODULE, RobotMap.BR_WHEEL);
System.out.println("Module: "+ RobotMap.DRIVE_MODULE +" used for drive.");
System.out.println("FL wheel at: "+ RobotMap.FL_WHEEL +" FR wheel at: "+ RobotMap.FR_WHEEL);
System.out.println("BL wheel at: "+ RobotMap.BL_WHEEL +" BR wheel at: "+ RobotMap.BR_WHEEL);
robotDrive = new RobotDrive(flTalon, blTalon, frTalon, brTalon);
(etc...)
Last edited by raptaconehs : 22-01-2014 at 14:17. Reason: Forgot to mention PID |
|
#14
|
|||
|
|||
|
Re: Driving Straight Error
Quote:
Quote:
Did you try swapping out PWM ports? Did you read the drive voltages put out by the Talons? Did you try driving with just 2 motors at a time (I realize this is time consuming to swap them in and out)? Another (crazy) thought Is your left-right weight distribution equal? Are your wheels making equal contact with the carpet? Are the wheels of approximately the same Coefficient of Friction (i.e. same material, same wear)? What I am getting at here is that for an identical power transmitted from each gearbox to the left and right side wheels - is there something causing a different force to be applied at the left and right sides? From the video this does not appear to be the case. I am not surprised that a tuned (or almost tuned) PID fixes the problem. The PID will drive the error to 0 if tuned correctly by correcting the PWM signals. However, I don't think you want to be at the competition and have your driver press forward on the controller and get a non-forward motion. -matto- |
|
#15
|
||||
|
||||
|
Re: Driving Straight Error
Good question - I have never seen a power-torque-speed curve with error bars along the entire curve. Your reference to the free speed tolerance comes from the web site. And my experience using the CIMs and similar low-cost motors is consistent with a 10% assumption for the stall torque as well. Do you think otherwise? Also, have you seen much difference rotating CW versus CCW?
Last edited by wireties : 19-01-2014 at 03:58. |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|