We are using our joystick to control our turret. However, like most joysticks manufactured today, the joystick has a square restrictor that forces a square motion. Short of opening the joystick and machining a restrictor to allow only circular motion, is there another joystick currently on the market that is set up this way for USB and is a reasonable price?
The square motion causes issues with aiming the turret - when you are in one of the corners you have fine control and your amplitude is larger. When you are in either the x or y axis, however, the turret is more sensitive because your distance from center is smaller and a change creates a larger actual angle change (we convert the joystick to polar coordinates).
We really don’t have time to change what we have, but perhaps we can be ready for next season.
May I ask why you need two joystick axes for turret control?
For example, our turret is controlled solely by the X axis of the operator’s joystick. Alternatively, you could use a stick with a yaw axis (Z or twist).
Because we have our joystick set up to handle the turret similar to how crab is programmed - push in a direction and the turret turns to that direction.
We started out with that as one of our designs. However, we like to simplify the controls system as much as possible, and the joystick’s integrated buttons made that chore much easier. We already have a knob for the left hand that sets distance for the turret system :).
How about using the joytick’s throttle, it will stay in place? If you aren’t satisfied with the small throttle on the kit joystick you can buy a better one or just a USB throttle. My team uses theSaitek AV8R (Only $35 w/ free shipping right now) for the past 2 years. Its not circular, but has 5 axis (x, y, twist, dual throttle) and 12 well located buttons.
I concur, a three-axis joystick with the z “rotational” axis being used to “throttle” would seem like an ideal method. The problem is that 3-axis joysticks are often made for industrial purposes, and tend to be pricey. A quick google search only yielded a few results for 3-axis USB joysticks.
Our turret looks at the gyro and initial heading of the robot to determine absolute angle to the field.
If the joystick is pushed to the west - the turret turns and aims west. If the joystick is pushed north - the turret turns and aims north. Regardless of what direction the robot is facing.
That is why I need the circular range of motion joystick. Adjusting the gain of the turret for angles close to the x and y axis result in the turret being very slow in the corners because the joystick is much further from the center. Adjusting for the corners makes it touchy when the joystick is pushed in the direction of x and y axis.
Potentionally we could use an encoder and calibrate it - continous turn pots have too much of a dead zone to be desirable. However we have many functions that are tied to joystick buttons that are simply too late to change.
Perhaps we’ll just machine a 2 part collar that will fit around the top of the joystick to limit it to circular motion.
Ditto on that question. I’m assuming it stays in whatever the last position it was told to goto was?
A “field-centric” turret control is possibly one of the coolest things I’ve seen done control wise in FIRST. A number of teams have done field-centric drives (especially holonomic and mecanums), which is perhaps even more daunting, but you’re the first I know of to do field-centric turret control.
I don’t know of any circular range of motion joysticks, and was unable to find one (although I did run into customizable joysticks designed for arcade machine enthusiasts, which may or may not be useful to you). Depending on how you have your code written (namely the return to center question), it might be possible to use a trackball though. You’d have to fine tune it for the trackball control and your driver would have to relearn the system, but it could potentially work well.
With regards to what happens when the joystick returns to center - the turret simply stays at the last angle it was directed to go to. We use the magnitude (the R value coming out of the Labview rect => polar coversion vi) to add a deadzone to the joystick.
Seeing this thing in action the first time (in our room) dropped the jaws of many team members. I have to give all the kudos to the two Junior programmers and the two sophmore programmers who did it. The math is far easier than I thought it would be when we started.
The neatest part of it was when we put the robot on a turntable. You could push the joystick in a direction and release it. From then on, no matter how you turned the robot on the turntable, the turret always pointed in the same direction. I was amazed.
It allows anyone to walk up to our gunner station and have intuitive control. Push the joystick toward the target robot, and you’re on target. We’re going to let judges play with it to see if they’re as startled by the performance as we were .
Al - we considered a pot - like a 10 turn. However, I was concerned about what would happen in the off-instance where the gunner reached the end of the turns in a critical situation and had to spin it around the other way. I like trying to simplify and plan for every eventuality, and that created a problem I didn’t want our gunner to have to deal with.