You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
the interfaces aren't available in ros2_control, at all.
Does this mean that ros2_control does not support cartesian commands at all? As in it is not possible to define something like a System hardware component that offers the possibility to set a 6DOF twist, for example?
Or is it specific to the UR and interfaces such as SpeedL aren't available to the ros2_control driver?
Does this mean that ros2_control does not support cartesian commands at all? As in it is not possible to define something like a System hardware component that offers the possibility to set a 6DOF twist, for example?
Does this mean that ros2_control does not support cartesian commands at all? As in it is not possible to define something like a System hardware component that offers the possibility to set a 6DOF twist, for example?
As far as I know, yes.
As maintainer of ros2_control I would not agree on this. @diogoalmeida if your hardware driver (UR hardware driver) supports/exports those interfaces, you can configure JointTrajectoryController to use those interfaces instead of joints. There could be minor tweaking necessary, but is should work without much effort.
If you want to tackle this, I'll be glad to support you with my knowlege.
you can configure JointTrajectoryController to use those interfaces instead of joints.
Interesting! I am not sure how that would work for trajectories. I managed to adjust one of the ros2 control demos to forward "cartesian" commands (linear and angular velocity for the robot base) to the diffbot example, which required some modifications to the robot hardware driver.
I'd expect that the ur driver would require something like that. It is already detecting whether it needs to send SpeedJ or ServoJ commands when it does a command mode switch (
If we add a cartesian command mode, I'd expect the driver to be able to detect it and then use, for example, the SpeedL command for a cartesian twist command mode.
Yes, exactly! You should add other interfaces for Cartesian commands, and in prepare_ and perform_command_mode_switch you can detect mode you are in.
I managed to adjust one of the ros2 control demos to forward "cartesian" commands (linear and angular velocity for the robot base) to the diffbot example, which required some modifications to the robot hardware driver.
This sounds fascinating! Would you be so kind to share this code with us in form of a new example for ros2_control_demos repository? This is very valuable for many users.
Activity
fmauch commentedon Apr 8, 2022
This is currently not very high on our priority list, as the interfaces aren't available in ros2_control, at all.
diogoalmeida commentedon Apr 8, 2022
Hi @fmauch, thanks for your reply.
Does this mean that ros2_control does not support cartesian commands at all? As in it is not possible to define something like a
Systemhardware component that offers the possibility to set a 6DOF twist, for example?Or is it specific to the UR and interfaces such as
SpeedLaren't available to the ros2_control driver?fmauch commentedon Apr 8, 2022
As far as I know, yes.
ametrix commentedon Apr 11, 2022
Hello @fmauch
I see that you are listed as maintainer of https://github.com/UniversalRobots/Universal_Robots_ROS_controllers_cartesian.
Are you planning to port this to ROS 2 ?
destogl commentedon Apr 24, 2022
As maintainer of
ros2_controlI would not agree on this. @diogoalmeida if your hardware driver (UR hardware driver) supports/exports those interfaces, you can configure JointTrajectoryController to use those interfaces instead of joints. There could be minor tweaking necessary, but is should work without much effort.If you want to tackle this, I'll be glad to support you with my knowlege.
diogoalmeida commentedon Apr 25, 2022
Hi @destogl thanks for your comment.
Interesting! I am not sure how that would work for trajectories. I managed to adjust one of the ros2 control demos to forward "cartesian" commands (linear and angular velocity for the robot base) to the diffbot example, which required some modifications to the robot hardware driver.
I'd expect that the ur driver would require something like that. It is already detecting whether it needs to send
SpeedJorServoJcommands when it does a command mode switch (Universal_Robots_ROS2_Driver/ur_robot_driver/src/hardware_interface.cpp
Line 774 in 082dd2a
If we add a cartesian command mode, I'd expect the driver to be able to detect it and then use, for example, the
SpeedLcommand for a cartesian twist command mode.Was something like this that you had in mind?
destogl commentedon Apr 25, 2022
Yes, exactly! You should add other interfaces for Cartesian commands, and in
prepare_andperform_command_mode_switchyou can detect mode you are in.This sounds fascinating! Would you be so kind to share this code with us in form of a new example for ros2_control_demos repository? This is very valuable for many users.
JaredRosenbaum commentedon Jun 23, 2025
Hi @fmauch - any news on the addition of the twist (and other cartesian) controllers to the ROS2 driver? Does this remain a low priority?
urfeex commentedon Jun 25, 2025
At the moment, yes.