ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Move ur10 with ROS topic

asked 2018-02-05 04:25:52 -0500

JuanTelo gravatar image

updated 2018-02-05 09:33:18 -0500

Hi, with my project I'm trying to move the ur10 robot and I've attached a 3-finger gripper at the end-effector. I've already found some documentation on how to move it giving values to the joints, however my goal would be to give a final pose of the end-effector and make it unfold in order to get to that pose.

My thought would be of using the inverse kinematics and as you can imagine it's quite complex and I can't find it. I'm trying to simulate the robot in gazebo so I can see it moving, so I would need a way of setting a final pose for the end effector and with this calculate the joints positions or simply make it move to there.

I'd appreciate some feedback.

EDIT 1: The link provided by @lagankapoor doesn't help much for what I'm trying to do. I've created the package of my robot for moveit and made it move there by moving the end effector and clicking "Plan and Execute". However I need the robot to move while having a node publishing the end-effector pose inside a loop. For example, in pseudo code:

while (ros::ok())
    x,y,z = pose of end effector
    make robot unfold so end effector reaches x,y,z

something like this is what I want to do if possible

edit retag flag offensive close merge delete



You want a repo or want to hind for that ?

lagankapoor gravatar image lagankapoor  ( 2018-02-05 04:56:36 -0500 )edit

@lagankapoor Sorry but what do you mean? I've managed to attach a gripper to the ur10 and I can open/close the gripper but also want to move the arm. What would be my options?

JuanTelo gravatar image JuanTelo  ( 2018-02-05 05:01:48 -0500 )edit

you have two option you can use moveIt for planning and otherwise you can use GUI in Rviz like Joint publisher

lagankapoor gravatar image lagankapoor  ( 2018-02-05 05:04:42 -0500 )edit

@lagankapoor Using a GUI in Rviz is not viable for me as I'm interested to feed the pose of the end-effector, not the joints. Can you explain me in a few words hoe the planning in moveit works?

JuanTelo gravatar image JuanTelo  ( 2018-02-05 06:43:01 -0500 )edit

2 Answers

Sort by ยป oldest newest most voted

answered 2018-02-05 05:07:48 -0500

updated 2018-02-05 05:09:00 -0500

i think this link will help you please checkit

here you have github repo from UR visit this one

edit flag offensive delete link more



@lagankapoor the link you provided doesn't help much. I've created a package with moveit assistant setup and I can move the end effector and then press "Plan and execute". But what I need is to give the end effector pose within a script and make it execute the path to get there

JuanTelo gravatar image JuanTelo  ( 2018-02-05 09:29:11 -0500 )edit

@JuanTelo then try to use kinematics with your scripts because that's the way for pos

lagankapoor gravatar image lagankapoor  ( 2018-02-05 22:47:08 -0500 )edit

answered 2018-03-15 04:40:03 -0500

Managarm gravatar image

updated 2018-03-15 04:46:27 -0500

Have a look at the MoveGroupCommander - it's how you usually control a robot arm through MoveIt. MoveIt is the component doing path planning with obstacle avoidance and so on. To use it launch ur5_moveit_planning_execution.launch from the urX_moveit_config (or your own MoveIt config). Then in python you'd do something like

from moveit_commander import MoveGroupCommander
cmd = MoveGroupCommander(movegroup)
cmd.set_pose_target(pose)  # to move the endeffector into a specific pose, OR
cmd.set_joint_value_target(joint_values) # if you know the positions the joints should be in

There are many other useful methods, have a look at them!

Keep in mind that when using set_pose_target, only the endeffector is specified and the rest of the joints will be in a rather random state depending on the solution computed by the inverse kinematic (e.g. elbow down when you really wanted an elbow up pose). To query the IK directly you can use the /compute_ik service.

I recommend using TracIK and configuring the UR driver accordingly since it created the best solutions in my experience (see urX_moveit_config/config/kinematics.yaml). Also you should probably use the driver from here since the current version of the driver tends to move the robot in unexpected ways after a while (jerky movement, position catch ups ignoring speed limits, etc.). You will need to install the industrial_core package as well to use it.

As an alternative, if you already have a trajectory message ready you could create a SimpleActionClient on the appropriate action-topic to send it.

edit flag offensive delete link more

Question Tools



Asked: 2018-02-05 04:25:52 -0500

Seen: 1,191 times

Last updated: Mar 15 '18