Ask Your Question

Cartesian velocity control of robot arm

asked 2015-02-01 20:23:05 -0600

rand gravatar image

I have a 6DOF robot arm, and would like to start driving the end effector around with a joystick. I think the most natural way to do this would be to map my joystick axes to Cartesian velocities of the end effector. I have tried executing very small paths in the desired directions using MoveGroupCommander.compute_cartesian_path(), but I end up getting very jumpy results. Are there any facilities built into MoveIt or otherwise to help me do this?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2015-02-02 18:21:25 -0600

rand gravatar image

I actually found a good solution to this in the code for pr2_teleop_general. The basic idea is to:

  1. Grab the current robot state using RobotCommander.get_current_state()
  2. Call the GetPositionFK service of your move_group to get the the end effector position using this state as input.
  3. Scale your Cartesian velocity by a constant and add it onto this position. Call the GetPositionIK service of your move_group to get an inverse kinematics solution for this.
  4. Subtract your current joint angles from the IK joint angles, and multiply by some constant to get a velocity for every joint.
edit flag offensive delete link more


rand, did this method worked for you or did you find something else? I am trying to do the same thing with my 7DOF robot. Thanks

sangfuu gravatar image sangfuu  ( 2015-04-07 15:28:08 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools



Asked: 2015-02-01 20:23:05 -0600

Seen: 1,322 times

Last updated: Feb 02 '15