Page 2 of 3 FirstFirst 123 LastLast
Results 11 to 20 of 21

Thread: Simple_Arms

  1. #11
    Join Date
    May 2008
    Posts
    2,228
    Images
    155
    Rep Power
    132

    Re: Simple_Arms

    Whoops! The server can certainly handle 6DOF, but the test program didn't (we have to pass a yaw value, 0.0 isn't gonna work).

    Check out the latest trunk, and try this:

    Code:
    rosrun simple_arm_server simple_arm_server_test.py 0.71 0.128 0.05 -0.036 -0.190 0.150
    -Fergs

  2. #12
    Join Date
    Apr 2009
    Location
    Stanford, CA USA
    Posts
    590
    Rep Power
    54

    Re: Simple_Arms

    Thanks Fergs--alas, I am still not getting a solution. I now have revision 383 and here is what I just tried:
    Code:
    $ rosrun tf tf_echo base_link left_hand_link
    - Translation: [0.109, 0.123, 0.050]
    - Rotation: in Quaternion [-0.088, -0.009, -0.220, 0.971]
                in RPY [-0.167, -0.057, -0.441]
    
    $ rosrun simple_arm_server simple_arm_server_test.py 0.109 0.123 0.050 -0.057 -0.167 -0.441
    success: False
    Do I have the order of the angle parameters right?

    --patrick
    The Pi Robot Project
    http://www.pirobot.org

  3. #13
    Join Date
    Apr 2009
    Location
    Stanford, CA USA
    Posts
    590
    Rep Power
    54

    Re: Simple_Arms

    Well, it looks like I have the same problem even when just using the arm_kinematics solver on its own. So I don't think anything needs to be fixed in your simple_arm_server. Not sure why the solver can't get the solution when given the same pose as the forward kinematics produces from the current joint positions, but I'll have to dig deeper into my setup...

    --patrick
    The Pi Robot Project
    http://www.pirobot.org

  4. #14
    Join Date
    Apr 2009
    Location
    Stanford, CA USA
    Posts
    590
    Rep Power
    54

    Re: Simple_Arms

    Good news--I am now getting IK solutions using both arm_kinematics on its own and simple_arm_server. I think I tracked the problem down to asking for solutions too far away from the starting point. It appears that the default seed position for the joint angles is to set them all to 0. When I set the target position too far from this seed position, both arm_kinematics and simple_arm_server fail. If I then choose seed values closer to the solution, both packages succeed.

    --patrick
    The Pi Robot Project
    http://www.pirobot.org

  5. #15
    Join Date
    Apr 2009
    Location
    Stanford, CA USA
    Posts
    590
    Rep Power
    54

    Re: Simple_Arms

    Hey Fergs,

    I thought I was home free with the arm kinematics stuff on Pi Robot. However, I am now doing a more thorough test by passively moving the arm joints through their range of motion and asking the IK solver to give me a solution for the current position of the hand. I use the current joint states as the seed values as I figured that would make it easier. I'm discovering many non-extreme configurations where the IK solver is unable to find a solution. The problem configurations seem clearly related to specific angle ranges at specific joints. For example, the solver always fails to find a solution if I move the elbow joint past the neutral point in one direction, but move the elbow in the other direction past neutral and I always get a valid solution no matter how far I bend it! Similarly, if I lift the whole arm using the shoulder lift servo, I reach a point about 45 degrees from vertical where the solver then consistently fails from that point and higher.

    I changed the angle limits from -3.14/3.14 to -6.28/6.28 on all arm servos but that does not seem to have an effect. Any ideas what might be going on?

    Thanks!
    patrick
    Last edited by Pi Robot; 06-20-2011 at 07:23 PM.
    The Pi Robot Project
    http://www.pirobot.org

  6. #16
    Join Date
    Apr 2009
    Location
    Stanford, CA USA
    Posts
    590
    Rep Power
    54

    Re: Simple_Arms

    I just discovered an important update to my issue so don't waste any time on it at this point. I discovered that if I take the real servos and ArbotiX out of the equation and just use joint_state_publisher along with the slider GUI to position the joints in RViz, I get IK solutions for all configurations of the arm, no matter how contorted I make it. So there is something about the joint states being published by arbotix_python or the readings from my servos that is causing the trouble. Stay tuned...

    --patrick
    The Pi Robot Project
    http://www.pirobot.org

  7. #17
    Join Date
    May 2008
    Posts
    2,228
    Images
    155
    Rep Power
    132

    Re: Simple_Arms

    Quote Originally Posted by Pi Robot View Post
    I just discovered an important update to my issue so don't waste any time on it at this point. I discovered that if I take the real servos and ArbotiX out of the equation and just use joint_state_publisher along with the slider GUI to position the joints in RViz, I get IK solutions for all configurations of the arm, no matter how contorted I make it. So there is something about the joint states being published by arbotix_python or the readings from my servos that is causing the trouble. Stay tuned...

    --patrick
    Make sure all your servos are reading correctly. If a read fails, it returns -1 (where normally you have 0-1023). This currently gets blindly converted into a radian angle (something like +/-2.7.....), which is certainly out of range.

    -Fergs

  8. #18
    Join Date
    Apr 2009
    Location
    Stanford, CA USA
    Posts
    590
    Rep Power
    54

    Re: Simple_Arms

    Thanks Fergs--that sounds like a definite possibility since I don't think I have ever had completely noise-free servo performance. I'll check it tonight when I'm back in front of the robot.

    --patrick
    The Pi Robot Project
    http://www.pirobot.org

  9. #19
    Join Date
    Apr 2009
    Location
    Stanford, CA USA
    Posts
    590
    Rep Power
    54

    Re: Simple_Arms

    At last! It wasn't noise in the servos, it was noise in my brain. Turns out I had defined the tip link in arm_kinematics to be "left_finger_link" instead of "left_hand_link". Once I made the correction, I started getting IK solutions for all arm configurations with the ArbotiX publishing the joint states.

    --patrick
    The Pi Robot Project
    http://www.pirobot.org

  10. Re: Simple_Arms

    Hi fergs,
    I have phantomx pincher arm, and turtlebot2, with Groovy.
    I got strange problems in rosrunning simple_arm_server simple_arm_server_test.py [...(params collected from tf_echo)]. There was no text shown after rosrunning it, and arm didn't move.
    But the gripper should move to point(x,y,z) as what was given. Pls help me and tell me if more info are needed, thanks!

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

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