# uncertain problem

• 11-17-2008, 02:01 PM
wc48
uncertain problem
hey guys, just to start off i want to say i'm a complete noobie to java so please bare with me and not get frustrated if i'm asking something that is actually quite simple and obvious to you guys, after all i'm only wee lol

I have a problem implementing certain formulas to calculate the positioning of four theta angles when a user inputs coordinates to the system, the following is where i need to input my code for this but for some reason it doesn't want to compile i think i'm probably missing an important expression but i don't know what it is:

my formulas and code so far:

public void calcThetas(){

float theta1 = arctan(py/px);
float ax = ((cos(theta1))*(sin(alpha)));
float ay = ((sin(theta1))*(sin(alpha)));
float az = cos(alpha);

float theta234 = arctan((cos(alpha))/(((cos(theta1))*(sin(alpha))*(cos(theta1)))+((sin( theta1))*(sin(alpha))*(sin(theta1)))));;

float p1 = ((px*cos(theta1))+(py*sin(theta1))-(d4*cos(theta234)));
float p2 = p2 - d4*sin(theta234);

float c3 = ((sqr(p1)+sqr(p2)-sqr(d2)-sqr(d3))/(2*d2*d3));

float theta3 = ((arctan(sqrt(1-(sqr(c3)))))/c3);

float theta2 = arctan(((d3*c3)*p2)-(d3*sin(theta3)*p1))/(((d3*c3)+d2)+(d3*sin(theta3)*p2));

float theta4 = theta234-theta2-theta3;

/*********************** Note from Nick Taylor **************************
The limb lengths of the arm are held in the floats d1, d2, d3 and d4
The new x, y, z co-ordinates of the TCP are held in the floats px, py, pz
The new TCP orientation is held in the float alpha
These eight variables are available for use at this point in the program
The variables which you should determine values for are the floats
theta1, theta2, theta3 and theta4, all in radians
*/

anyone got any ideas?

Thanks for any help
Will C

}
• 11-17-2008, 02:45 PM
Paul Richards
You are using static methods from the Math class:

Math (Java Platform SE 6)

so, your code needs to be like this:

Code:

`float x = Math.sin(y);`
I suggest you read the documentation, and make this change, and see if it compiles. If not, you can re-post it here, but surround the code with tags using the # button, it makes it easier to read. Also, you need to give the compiler error messages.

Good luck!
• 11-17-2008, 02:50 PM
"cos" should be "Math.cos", likewise for sin.

"sqr" should be "Math.sqrt".

"arctan" should be "Math.atan" or, maybe, "Math.atan2"

Do you see the Pattern?

Check out the Math Class (or StrictMath class, read the disclaimer info at the beginning of the API docs for Math, to determine whether or not you should be using StrictMath).

Math (Java Platform SE 6)
StrictMath (Java Platform SE 6)

Edit: Slow, I am.
• 11-17-2008, 03:05 PM
wc48
right i commented the code and brought it down too:

public void calcThetas(){

float theta1 = Math.atan(py/px);

but this gives the error:

bash-3.2\$ javac robot.java
robot.java:2804: possible loss of precision
found : double
required: float
float theta1 = Math.atan(py/px);
^
1 error

and to be honest that means nothing to me, i've tried searching the web, using different techniques to make it work but nothing is working, its giving me a headache like.

cheers for the response guys btw, lol i didn't want to sound rude there :)
• 11-17-2008, 03:13 PM