fzi-forschungszentrum-informatik / cartesian_controllers

A set of Cartesian controllers for the ROS1 and ROS2-control framework.
BSD 3-Clause "New" or "Revised" License
350 stars 100 forks source link

Controlling the robot velocity in cartesian_motion_controller #176

Open shrutichakraborty opened 4 months ago

shrutichakraborty commented 4 months ago

Hello! I would like to know if there is any way of managing the speed with shich the the robot moves when we publish to cartesian_mostion_controller/target_frame? For instance I have to make very precice movements with lowered speed, how could I do that?

matthias-mayr commented 4 months ago

It would move slower for lower stiffness values, but what is typically actually needed is some controlled way of moving the reference point.

For example one can use motion planning frameworks like MoveIt and some of the helper controllers in this repo.
For our experiments I wrote a simple one that just publishes linear Cartesian trajectories with fixed acceleration & deceleration as well as some maximum velocity: https://github.com/matthias-mayr/cartesian_trajectory_generator It is currently only available for ROS 1 though.

shrutichakraborty commented 3 months ago

It would move slower for lower stiffness values, but what is typically actually needed is some controlled way of moving the reference point.

For example one can use motion planning frameworks like MoveIt and some of the helper controllers in this repo. For our experiments I wrote a simple one that just publishes linear Cartesian trajectories with fixed acceleration & deceleration as well as some maximum velocity: https://github.com/matthias-mayr/cartesian_trajectory_generator It is currently only available for ROS 1 though.

Hi @matthias-mayr ! Thanks for your response. Does your framework work on top of the Cartesian controllers? For instance, is it going to take a target_pose and basically interpolate between the current and the target_pose and publish the intermediate poses to the cartesian_motion_controller?

matthias-mayr commented 3 months ago

Yes, that's exactly what it does. We used it for example in this paper with the cartesian_controllers package on a UR5e and a Cartesian impedance controller running on an iiwa. Eventually the trajectory generator only published a reference pose, so whatever controller takes that as an input can be a target.

stefanscherzinger commented 2 months ago

@shrutichakraborty

If you need this feature for ROS2 and are willing to code , here's a promising fork by @egordon that implements a cartesian_twist_controller. I'm happy to take PRs :).