![]() |
Converting Two joystick values into a vector
Hey everyone,
Our code takes in a vector (direction and magnitude) in order to move. This was implemented in order to simplify PID. We have been using a wheel and a joystick for our driver setup, but we are looking to switch to two joysticks. Now to my main question. Is there any way to take the values of the left and right joysticks and turn them into a vector? I have seen ways to go from a vector to left and right motor power, but not the other way around. Thanks. Ben |
Re: Converting Two joystick values into a vector
Yes, there's a way -- here's a hint: atan2 and the Pythagorean theorem.
|
Re: Converting Two joystick values into a vector
Here's a java example
Code:
public double getTheta(double x, double y){ |
Re: Converting Two joystick values into a vector
Thanks all for the help, but I believe the wording of my question was a bit weird. It looks as though the examples you are giving are for x and y values (arcade drive). I was wondering about getting the x values from both joysticks (tank drive) and finding the vector components from that.
I may just interpreting your responses incorrectly, so tell me if I'm wrong. Thanks again. Ben |
Re: Converting Two joystick values into a vector
Maybe this will help.
You can take any continuous inputs from your joystick(s) and label then X and Y. Then use the info you've been given. You can also think of this as a conversion from rectangular (cartesian) coordinate system and polar coordinate system. But you still need to define the X and Y, and that is independent of the conversion. Greg McKaskle |
Re: Converting Two joystick values into a vector
Alright, let me get this straight.
You have a setup with two joysticks that are used in a tank drive set up, and from these two, you'd like to find the angle/magnitude. This is a little trickier, as you first need to find the amount of turn (x), then you need the amount of going forward (y) from the two axes used in tank drive. The speed of your turn is just the difference in the speeds of two sides of the robot, and the forward speed is the average of the two sticks. Here's some more java examples. NOTE:See my later post for corrections! Code:
public double getTheta(double x, double y){Code:
//you can get your values like this |
Re: Converting Two joystick values into a vector
1 Attachment(s)
Quote:
|
Re: Converting Two joystick values into a vector
It really depends on what you are looking for. The getTheta method I posted doesn't really do what you want.
This might Code:
public static double getTheta(double x, double y){ |
Re: Converting Two joystick values into a vector
Quote:
I agree with you that the OP's problem statement is not entirely clear. Quote:
You can get the same result, without the need for conditional logic, with this computation: 180/pi*atan2(-y,-x) + 180 If however you want the angle in degrees measured clockwise from the positive Y axis, this will do that: 180/pi*atan2(-x,-y) + 180......(see below) Code:
// RLaB version 2.1.05 Copyright (C) 1992-97 Ian Searle |
Re: Converting Two joystick values into a vector
Quote:
Now, you want to control this same drive system with a two-joystick tank-style operator interface. So you want to use two y-inputs (or whatever) to derive a single vector? How do you expect the controls to work? Rather than try to answer based on this much speculation, it would be good to have confirmation or the specific details. I hope I didn't confuse things and that this makes sense... |
Re: Converting Two joystick values into a vector
Ben, are you still following this thread? If so, if you would respond to the last three posts 8, 9, 10 we might be able to offer you more help. Quote:
Quote:
Quote:
|
Re: Converting Two joystick values into a vector
Hey guys, thanks for all the help, but I managed to skip converting the joysticks to a vector. I just bypass the PID and set the left and right motors to the values of the joysticks.
|
| All times are GMT -5. The time now is 03:02. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi