UniversalRobots/Universal_Robots_ROS2_Driver

The test_joint_trajectory_controller not work with ur_robot_driver for Humble but work with Foxy

nqduy35 opened this issue · 2 comments

Affected ROS2 Driver version(s)

Humble branch

Used ROS distribution.

Humble

Which combination of platform is the ROS driver running on.

Docker

How is the UR ROS2 Driver installed.

Build both the ROS driver and UR Client Library from source

Which robot platform is the driver connected to.

UR E-series robot, URSim in docker

Robot SW / URSim version(s)

5.14

How is the ROS driver used.

Others

Issue details

Summary + Issue + Steps

Trying installing ur_ros_driver on Docker ubuntu 22.04 with ros 2 Humble, all installation steps are succeeded and the ur_ros_driver runs without any errors. However, when I test with test_joint_trajectory_controller, the robot does not move. Note that my host computer runs ubuntu 20.04 with ros 2 Foxy, so I can produce several tests as follows:

  1. Foxy ur_ros_driver + Foxy test_joint_trajectory_controller + UR3e => Success
  2. Foxy ur_ros_driver + Humble test_joint_trajectory_controller + UR3e => Success
  3. Foxy ur_ros_driver + Foxy test_joint_trajectory_controller + URsim => Success
  4. Foxy ur_ros_driver + Humble test_joint_trajectory_controller + URsim => Success
  5. Humble ur_ros_driver + Foxy test_joint_trajectory_controller + UR3e => Failure
  6. Humble ur_ros_driver + Humble test_joint_trajectory_controller + UR3e => Failure
  7. Humble ur_ros_driver + Foxy test_joint_trajectory_controller + URsim => Failure
  8. Humble ur_ros_driver + Humble test_joint_trajectory_controller + URsim => Failure

=> So i temporarily conclude that the problem is from Humble ur_ros_driver

Example, the following the screen capture of the 8th case. Window 1: the URsim, Window 2: running ur_ros_driver, Window 3: running test_joint_trajectory_controller. As you can see, the UR3e in URsim can detect the ur_ros_driver, but nothing happens when running test_joint_trajectory_controller.
error-ur_ros_driver

Relevant log output

No response

Accept Public visibility

  • I agree to make this context public

I can't recall how we did things with Foxy, but we use the scaled joint trajectory controller as default since quite a while, so you would need to use the test_scaled_joint_trajectory_controller.launch.py file.

Please note (If anyone else reads this issue, since @nqduy35 seems to have done that correctly judging from the screenshots) that you will have to move the robot to a valid start pose (upright pose as in the screenshot) and have to make sure that the external_control program is actually running.

@nqduy35 If using the scaled version doesn't work for you, could you please post the output of ros2 control list_controllers? It should look as follows (when the external_control program is running)

forward_position_controller[position_controllers/JointGroupPositionController] inactive  
speed_scaling_state_broadcaster[ur_controllers/SpeedScalingStateBroadcaster] active    
scaled_joint_trajectory_controller[ur_controllers/ScaledJointTrajectoryController] active    
joint_state_broadcaster[joint_state_broadcaster/JointStateBroadcaster] active    
io_and_status_controller[ur_controllers/GPIOController] active    
force_torque_sensor_broadcaster[force_torque_sensor_broadcaster/ForceTorqueSensorBroadcaster] active

Thank @fmauch for the answer. It works with test_scaled_joint_trajectory_controller. The output of running $ros2 control list_controllers is the same as the above.