Universal_Robots_ROS2_Driver: ur10 cannot find robot_descrition semantic in ros humble

Hello, I am trying to use the moveit_config files from the ur repository together with the ur driver. I can launch the driver and the moveit package with the commands:

ros2 launch ur_robot_driver ur10.launch.py robot_ip:=localhost use_fake_hardware:=true launch_rviz:=false initial_joint_controller:=joint_trajectory_controller ros2 launch ur_moveit_config ur_moveit.launch.py ur_type:=ur10 launch_rviz:=true

This launches the ur_driver and also rviz with moveit. I can plan and execute a motion with the motion planning plugin and it all works out well. However when I try to publish a motion via script I get the error as below

[ERROR] [1659434560.178463185] [moveit_ur_test]: Could not find parameter robot_description_semantic and did not receive robot_description_semantic via std_msgs::msg::String subscription within 10.000000 seconds. Error: Could not parse the SRDF XML File. Error=XML_ERROR_EMPTY_DOCUMENT ErrorID=13 (0xd) Line number=0 at line 715 in /home/******/ws_moveit2/src/srdfdom/src/model.cpp [ERROR] [1659434560.193027035] [moveit_rdf_loader.rdf_loader]: Unable to parse SRDF [FATAL] [1659434560.193493008] [move_group_interface]: Unable to construct robot model. Please make sure all needed information is on the parameter server. terminate called after throwing an instance of 'std::runtime_error' what(): Unable to construct robot model. Please make sure all needed information is on the parameter server. [ros2run]: Aborted

I have loaded the script after launching the ur_driver and moveit files and also sourcing the workspaces. I am not sure if I am missing something Can anyone help me with this error and elp me figure out what I am doing wrong?

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Comments: 28

Most upvoted comments

@skaeringur97 I forgot to save the change from “ur3e” to “ur_manipulator” an entire day. Now i finally figured it out and it works now.

Everything worked fine and my robot started as i planned like 1 month ago!! You’re the best, i don’t know how to properly thank you for this massive help!

Thank you very much!!

@enriLoniterp yes it’s my personal launch file. You should not modify any moveit2 source code since that will only mean future problems. I based my launch file on the launch file from ur_moveit_config

@LucaBross you changed it to ur3 but somewhere you are calling ur3e, I’m guessing in the hello_moveit_ur node. If you want to use ur3e, you should change that in the launch file. Also, it looks like you are trying to move the group ur3e, but ur3e is not the name of the group. The group name is ur_manipulator and the robot name is ur3e.

@enriLoniterp For simulation, you can think of the last link as the “end-effector”, and it should be able to “grab” an object, kind of like a magnet. However, if you want to use the actual universal robot for pick and place, I believe you would need some separate code to run the gripper part.

I had similar issues as mentioned above, where I could plan but not execute. I was able to solve it like this:

First, I found out that the scaled_trajectory_controller does not work for simulation, and that joint_trajectory_controller should be used. When ‘use_fake_hardware:=true’ is set, the controllers should default to joint_trajectory_controller. After adding that to my launch arguments, running ‘ros2 control list_controllers’ still showed the scaled_trajectory_controller instead of the joint_trajectory_controller. I can only get the joint_trajectory_controller running by adding ‘initial_joint_controller:=joint_trajectory_controller’ to my command when starting the driver.

When I then ran the moveit launch file, I still got the same error as @doshininad.

Action client not connected to action server: scaled_joint_trajectory_controller/follow_joint_trajectory

After looking in the moveit launch file I saw that ‘use_sim_time’ needs to be set to true when planning in simulation. Not sure why that isn’t connected to the use_fake_hardware boolean.

After adding that to the moveit launch arguments I managed to execute my plans.

This is what I use to run the driver and moveit:

ros2 launch ur_robot_driver ur10e.launch.py robot_ip:=aaa.bbb.cc.ddd use_fake_hardware:=true initial_joint_controller:=joint_trajectory_controller
ros2 launch ur_moveit_config ur_moveit.launch.py use_fake_hardware:=true ur_type:=ur10e use_sim_time:=true

Hello @gjane5,

I’m sorry but I’m not able help you out, but i was wondering how you were able to execute trajectory’s with RViz MotionPlanning.

I’m running on Ubuntu 22.04, ROS 2 Humble (Debian desktop install), and followed the instructions from UR Driver main branch. When I’m running the same ur_driver and rviz with moveit as you I am getting MoveGroupInterface error… Have you encountered the same error before or did everything, except what you’re writing about above, work perfectly?

@vetletj The scaled_trajectory_controller had an error in as described in this issue #301, hence i used the joint_trajectory_controller (as you can see in the launch parameters). Other than for this if the launch files are launched in the order I mentioned in the post it should work with the motion planning plugin