Results 1 to 6 of 6
  1. #1
    wc48 is offline Member
    Join Date
    Nov 2008
    Posts
    4
    Rep Power
    0

    Default 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


    }

  2. #2
    Paul Richards is offline Member
    Join Date
    Oct 2008
    Location
    UK
    Posts
    65
    Rep Power
    0

    Default

    You are using static methods from the Math class:

    Math (Java Platform SE 6)

    so, your code needs to be like this:

    Java 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!

  3. #3
    masijade is offline Senior Member
    Join Date
    Jun 2008
    Posts
    2,571
    Rep Power
    8

    Default

    "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.

  4. #4
    wc48 is offline Member
    Join Date
    Nov 2008
    Posts
    4
    Rep Power
    0

    Default

    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 :)

  5. #5
    masijade is offline Senior Member
    Join Date
    Jun 2008
    Posts
    2,571
    Rep Power
    8

    Default

    Declare your variables as doubles, not floats. The Math class (as the API docs clearly show) takes doubles as arguments and returns doubles as values.

  6. #6
    wc48 is offline Member
    Join Date
    Nov 2008
    Posts
    4
    Rep Power
    0

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •