jaguar scaling factors

My team (3247) just got our bot driving today and we noticed a big problem. With four motors we are using 2 black jags and 2 grey jags. This seemed fine except for a problem where the scaling is not quite right! When driving foward, one side (black side I think) is way faster. As the programer for the team, I was told to fix it. I was thinking that maybe I should attempt to scale the joysticks. The problem with this is that my team also wants to use arcade drive. We used last years DS for testing but they think it will be easier to control with arcade.

My questions are:

  1. How do I make each side move in step so that the bot drives strait using PWM
  2. How do I re-scale the joysticks so that most of the range is for slow speeds and it is still possible to get full speed
  3. Is there a better solution that does not involve buying more jaguar controllers

Thanks in advance

Same issue for our team. Would love to hear the answer. The black jaguars output about 12.5V in full on, the grey/tan jaguars are about 10.5V. Quite a difference to balance.

idk if this would help any but you could always try installing encoders onto each side of the drive train then using those output values and then scaling back each motors output.

By far the simpler solution would be to pair a Black Jaguar with a Gray Jaguar on each side, rather than having all Blacks on one side and all Gray’s on the other.

You can certainly scale back the faster side permanently by multiplying the joystick input to just the Black side by a factor or by using encoder feedback and PID.

because these are the CIMple gearboxes from andymark, I don’t think it would be advisable to mix controllers. I see ground gears for anyone who tries that…

The voltage data is very helpful, does anyone know if the speed is ramped in a linear fashion? If it is linear, then it would be some very simple math to make them even.

I would suggest using PID with encoders to get a closed-loop control.
There’s nothing quite like feedback for repeatability and low-speed handling.

Can you suggest any good resources for creating PID algorithms? I am used to text based languages on OS/2 so any resources that are labview based would be nice.

If you’re using LabVIEW, the FRC version does include a PID toolkit. Note that the LabVIEW toolkit uses the Standard form rather than the Ideal form.

Wikipedia has a good article on PID.

I read through the article posted and I am trying to make heads or tails of it. I do not understand how exactly a PID loop will allow me to synchronize the movements of the left and rights drivetrains so that the robot drives in a straight line. PID does however seem to be an excellent way of defining the movements during autonomous to place the ubertube.

More questions:

  1. How do I use PID to make the system drive in a straight controllable line while not sacrificing response times?
  2. Is PID a good choice for autonomous?
  3. Is all of this overkill for what I am trying to achieve?
  1. If you use the joystick controls to set a velocity that you use a PID loop to maintain instead of setting the Jaguar values directly the robot should maintain equal velocity on both sides and drive in a straight line.

  2. Yes, PID control on position is a good way to handle dead reckoning forward/back movements in autonomous. PID control on angle using a gyro is a good way to make dead reckoning turns.

  3. Nope, not at all.

so do I use one PID VI for each input needed on the drive VI?

In my question about autonomous, would I want to use a setpoint VI.

Lastly, does the PID VI need to be in a loop to work? Sorry for all the questions, but short and simple answers for APPLYING code are few and far between over at NI’s site.

Have you tried calibrating the speed controllers?

I have, but there is still a slight variance from straight on.

Yes, yes, and yes.

I think a global variable would work wonderfully for transferring your setpoint from your autonomous code to your PID loops. Put the PID loops in Periodic Tasks so that they run all the time.

Should the PID Loop run with a delay or should it run at full speed?

Well, the PID probably isn’t your most critical task, so a delay would be good. I would give it a delay of 5 to 25ms.
One thing I may have neglected to tell you:
PID doesn’t “just work”. You have to tune it.
Luckily, temporary deployments in LabVIEW make that easy. Just create a control for the parameters, and tune until it works. Make sure to start with Proportional, and then tune the others to whatever is appropriate.

EDIT:
Feel free to post your code. An easy way to post your whole project is to zip the folder it is contained in, and just upload the zip as a whole. To make it smaller, you can delete the “Builds” folder first.

I don’t want to move this thread in a different direction, but could you please elaborate on how you measured the output voltage?

Did you use a volt meter, scope, other?
Were motors connected to the outputs?
Did you take these measurements at the same time (measure one, then the other, same setup)?

-David

I assumed the duty cycle at full on was 100% so I simply used a voltmeter
Set to DC. No motors. No load.
Measured two Black and two Grey
Full forward and full reverse
Same result consistently.

This is a false measurment. The Gray Jags at full really drop maybe .15v more than the Black Jag.

Your measurement was just a by-product of the Gray Jaguar circuit design.
It doesn’t measure properly without a load.
The Black Jaguar has a different design that doesn’t affect no-load measurements.

I tripped over that myself earlier, although you have to read several surrounding posts to understand what was going on in that thread.

I liked Eric’s way of putting it…

What about creating a slider “trim” control.

Your “trim” control would run joystick position through a multiplier on one set of Jags. Experiment with trim position until you’re satisfied that you’re driving in a straight line.

This method will only be suitable if the differences between the Jags are consistent at various speeds.