Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Set TCP speed #51

Open
mat-l opened this issue Aug 24, 2017 · 4 comments
Open

Set TCP speed #51

mat-l opened this issue Aug 24, 2017 · 4 comments
Labels

Comments

@mat-l
Copy link

mat-l commented Aug 24, 2017

Dear all,
Dear @gavanderhoorn

we are working with ROS indigo right now using a Universal Robot UR10. I am wondering if there is the possibility to set a limit of the TCP speed. There are lot of applications where one needs to set a defined TCP speed, like 100 mm/s or other values.

Anyway, I just found the two scaling factors which are most like only regarding the joint speed:

      group.setMaxVelocityScalingFactor(0.25);
      group.setMaxAccelerationScalingFactor(0.25);

These scaling factors refer to the URDF files of a robot. In Universal Robot that means for example:
velocity="3.2"/
Which unit is that? Is it only representing the joint speed in point to point movement or can I transfer this also to Cartesian movements and therefore to the tool centre point (TCP) of the robot system?

Do you have any idea how I can solve the problem?

Best
matl

@jrgnicho
Copy link
Contributor

jrgnicho commented Sep 7, 2017

@mat-l this inquiry seems to be outside the scope of this repository. Those scaling factors are applied in the robot's joint space and as such there are unit-less. In STOMP, these scale factors are applied on the planned joint path in order to compute the time stamps, joint speeds and accelerations associated with each joint position in the path. However, it does not directly control the speed to the TCP.

@Levi-Armstrong
Copy link
Contributor

Levi-Armstrong commented Sep 7, 2017

You could write your own moveit adapter that which updates each point in the trajectories time to achieve a constant tool velocity, though it may not be achievable. You most likely want to do this at the planner level to ensure that this is achieved. For the Cartesian planner in this package you can write a primary cost function to achieve this.

@mat-l
Copy link
Author

mat-l commented Sep 14, 2017

Do you know if someone else is working on this issue, cause moving a robot with a defined speed along a linear path is normally a basic feature of robot controllers. I am really wondering why this is not already existing in ROS :(

@jkira33
Copy link

jkira33 commented Oct 12, 2017

I followed a tutorial here https://github.com/ros-planning/moveit_tutorials/blob/kinetic-devel/doc/pr2_tutorials/planning/src/move_group_interface_tutorial.cpp#L184. And a comment said that setMaxVelocityScalingFactor() could reduce the speed of the robot arm via a scaling factor of the maxiumum speed of each joint. However, in my case, it did not work in tool even in joints. I have checked /joint_state in rqt, but no data in velocity category. May be something wrong in my URDF. I am confusing how to control TCP speed with move group C++ API.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants