Jaguar Motor Control

Hello ChiefDelphi! I hope everyones robots are going well.

My team is currently working on their arm and it’s my first year programming so I’m in a bit of an issue.

I have a few questions about Jaguar Motor Control using Labview. We have the default sample modified and up and running and the robot is moving great. We have 4 motor controllers opened using the [DRIVE] Open 4 Motor box. However, we have a bit of slack on one chain and I was wondering if it was possible to offset the amount of information is sent to some of the motors (so like multiply it by 0.9 to make the one side move a bit slower)

How do I modify values sent to Arcade Drive for individual motors?. So far example, I have x * 0.9 sent to the left motors, and x sent to the right motors.

The other issue is we are using Jaguar motor controllers to control the movement of the arm. However, each motor controller is controlling a single motor. In labview, I noticed the open function requires 2 motors, or does it? Maybe someone can get me some help. But I’m trying to send individual values to each motor controller and I’m wondering if I have to supply 2 motors or can I just use one…

Slack in the chain won’t cause a side to travel slower, unless you have so much slack that it’s skipping teeth. If that’s the case, you really need to fix the mechanical problem.

For a mechanism other then a drive train, use the MotorControl VIs rather then RobotDrive.

Thanks for your response. We’ve tried the MotorControl via, and I’ve tried setting the output to different double values (0.1, 0.2, 0.8, 1) etc, but none of these affect the actual speed of the motor…

Also, there is a slack in the chain and we can’t fix it mechanically because the of the layout of the gearboxes (when you flip them the chain gear is on the other side). Isn’t there a way to fix this via software (IE, adjusting the value for each motor controller?)

Ok, it is possible to do this but you will not be using the Arcade Drive. You need to check the values and while the value of a joystick axis is over a certain number you need to begin to take away from the motor output. So you need to read info from 2 axises; 1 for speed and the other to sense when the speed needs to be reduced so you would use "While Axis 1 > 0.2 or Axis 1 <-0.3 (Axis 2 - Axis 1)… This is rather hard to explain through text, but you need to create an algorithm for deprecation of motor speed and a float system so you dont take away speed imediatley. Good luck!

I’m confused. Is there no way to simply adjust the values for each individual motor.

I think it would help if you would define the problem a bit more clearly because it sounds like you want to fix the slack in the chain in software. That can’t be what you are saying, is it?


The easiest way is to simply adjust the joystick commands before they enter the Tank/Arcade/Holonomic Drive.

For instance, multiple one joystick by .9 to reduce it to 90% of the power of the other joystick in Tank Drive.

If you want full control of individual motors, then you have to declare them as individual motors and setup your own drive logic, rather than using Open 2/4 Motor or Tank/Arcade/Holonomic Drive.

If this didn’t change anything no code can fix your problem. Make sure when you used MotorControl correctly, and Opened a motor in begin and closed it in finish and didn’t have any conflicting PWMs with a motor in a RobotDrive open. RobotDrive is supposed to make programming a drive base easier, but is very convention over configuration. If you don’t like the convention, then you’ll have to go somewhere else I believe.