How to achieve linear movements of TCP with UR5
Hi,
With UR5
robotic arm, on the teach pendant, there is a control called TCP position under the Move
tab. Using arrow keys available there, such as Z+, Z-, X+, X-, or Y+, Y-
allows movement of the robotic arm on those axis ( almost linearly). The orientation of the tool-point / gripper remains constant during these movements. However, I noticed on the teach pendant, that as we press one of these keys (Z+, X- etc), more than one joint angle changes.
I wanted to know, is there a ROS function that we can use to achieve the same functionality.
thanks, Zahid
Asked by zahid990170 on 2023-04-17 11:24:55 UTC
Answers
You need something to do inverse kinematics for you. Since the internal controller on the UR is proprietary it's hard to know precisely what it is doing but it tends to be pretty simple from my experience. It slows down near singularities, faults when very close to them, and does some limited collision checking against robot parts and safety planes.
If you just want to go from Waypoint A to Waypoint B similar to using UR moveL commands in a program, take a look at Cartesian planners in MoveIt:
If you actually want to jog in straight lines in realtime like the teach pendant, MoveIt Servo pose tracking is an option. You feed it an end-effector pose and it does the IK to track it.
I don't know if there's a good Cartesian jog user interface package to go with that. When I've used MoveIt Servo, I wrote my own package to supply the target pose because I was using a video game controller.
You can also send linear command velocities directly to MoveIt Servo to move the end-effector but if I recall correctly I got noticeable/measurable pose drift when repeatedly commanding linear velocities, since tiny errors in the end-effector pose can and do accumulate.
Asked by danzimmerman on 2023-04-20 23:26:20 UTC
Comments