I'm trying to use the arm_navigation stack to do some motion planning on the pr2, and I notice that I often get an error code of JOINT_LIMITS_VIOLATED. [I'm not really sure what this is about, but it seems like it's based on the initial joint state because I can fix this by moving the arm around until I get to a good state (specifically, it seems to not like the wrist being at a 90 degree angle with the forearm). Is this actually what the error means?] Update: Oops yeah, should have checked rosout, the error is indeed Start state violates joint limits, can't plan..

If the arm is in a state that is physically possible (I'm working on a real PR2), it shouldn't be violating joint limits, right?

For some reason I can't seem to plan for the left arm at all. No matter what I do I get this error. I'm guessing maybe I have something copied and pasted from the right arm stuff that needs to be changed, but I'm not seeing it. I have started both arm planners using roslaunch pr2_3dnav both_arms_navigation.launch and I am sending the request to the move_left_arm service.

https://github.com/rll/berkeley_utils/blob/master/rll_utils/src/rll_utils/MoveArmUtils.py is what I wrote to construct and send a MoveArmGoal, just a convenience wrapper that populates some sensible defaults for a lot of fields. I hope others who prefer to use python over C++ when possible find it useful :)

Any help is appreciated! Thanks!

Edit: Here's the MoveArmGoal that I'm sending:

https://gist.github.com/1495429/8abcc19fb109f2dd813356cefb48a68e9159beb6

Edit2: Rosout is good, I should check it more. Here are the joints that are violating limits (as I suspected, it's the wrists):

https://gist.github.com/e9a379199e7a348a0f4f

Related to that, why is there both move_arm_msgs/MoveArmGoal and arm_navigation_msgs/MoveArmGoal which only differ in that the latter takes in a planning_scene_diff? I guess hopefully it doesn't make a difference if you don't populate it. Is the move_arm_msgs version a relic from Diamondback? If so, perhaps it shouldn't be listed on http://www.ros.org/wiki/move_arm .

edit retag close merge delete

Sort by » oldest newest most voted

Hah, solved my own problem. The problem, if it is one, is just that the wrist_flex_link joint limits are perhaps too conservative and don't encompass the extremes that the wrist can actually take on (which happen to come up often because the rest positions of the wrist tend to the extremes due to gravity if you're disabling the runstops and repositioning the arms/wrists like I am).

http://ros.org/wiki/pr2_controller_manager/safety_limits

more

@Ibrahim, So, how did you solve this problem?? I am fairly new to ROS, please describe in detail.. Thanks!

( 2013-02-27 06:56:50 -0500 )edit

## Stats

Seen: 284 times

Last updated: Dec 18 '11