ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Problem with urdf_tutorial

asked 2016-04-21 07:42:38 -0600

updated 2016-04-21 12:48:48 -0600

Hi All,

I am going through the urdf tutorials but have run into a problem. I got to Materials before running into this error:

Traceback (most recent call last):
File "/opt/ros/indigo/share/xacro/", line 62, in <module>
File "/opt/ros/indigo/lib/python2.7/dist-packages/xacro/", line 673, in main
f = open(args[0])
IOError: [Errno 2] No such file or directory: 'urdf/04-materials.urdf'
Invalid <param> tag: Cannot load command parameter [robot_description]: command [/opt/ros/indigo/share/xacro/ urdf/04-materials.urdf] returned with code [1]. 

Param xml is <param command="$(find xacro)/ $(arg model)" name="robot_description"/>
The traceback for the exception was written to the log file

The file does exist and I'm not even using xacro yet. The weirdest part is I was able to get the first 3 files to work (myfirst, multiple, and origins) without this issue, but now they give me the same error and won't run. I've seen a few similar issues here and people say to go through the xml in the xacro file, but as I've said I don't have one. Anyone know why this is happening?

[EDIT] After finding that the master and indigo branches of the urdf_tutorial package are different on github, I deleted the master and downloaded the indigo version. This got rid of the xacro issue but still tells me that the file doesn't exist. This happens with both roslaunch urdf_tutorial display.launch model:=urdf/04-materials.urdf from the package path as shown in the tutorial and when using roslaunch urdf_tutorial display.launch model:='$(find urdf_tutorial)/urdf/04-materials.urdf'. The full error message is shown below:

Traceback (most recent call last):
File "/opt/ros/indigo/lib/python2.7/dist-packages/roslaunch/", line 307, in main
File "/opt/ros/indigo/lib/python2.7/dist-packages/roslaunch/", line 268, in start
File "/opt/ros/indigo/lib/python2.7/dist-packages/roslaunch/", line 217, in _start_infrastructure
File "/opt/ros/indigo/lib/python2.7/dist-packages/roslaunch/", line 132, in _load_config
roslaunch_strs=self.roslaunch_strs, verbose=self.verbose)
File "/opt/ros/indigo/lib/python2.7/dist-packages/roslaunch/", line 451, in load_config_default
loader.load(f, config, verbose=verbose)
File "/opt/ros/indigo/lib/python2.7/dist-packages/roslaunch/", line 730, in load
self._load_launch(launch, ros_config, is_core=core, filename=filename, argv=argv, verbose=verbose)
File "/opt/ros/indigo/lib/python2.7/dist-packages/roslaunch/", line 702, in _load_launch
self._recurse_load(ros_config, launch.childNodes, self.root_context, None, is_core, verbose)
File "/opt/ros/indigo/lib/python2.7/dist-packages/roslaunch/", line 646, in _recurse_load
self._param_tag(tag, context, ros_config, verbose=verbose)
File "/opt/ros/indigo/lib/python2.7/dist-packages/roslaunch/", line 95, in call
return f(*args, **kwds)
File "/opt/ros/indigo/lib/python2.7/dist-packages/roslaunch/", line 264, in _param_tag
value = self.param_value(verbose, name, ptype, *vals)
File ...
edit retag flag offensive close merge delete


In the very last line of the new error message you see it is specifically looking for a file /home/ros/catkin_ws/src/urdf_tutorial-indigo/urdf/04-materials.urdf... does that file exist? Does the ros user have permission to read it? Are you running as the ros user?

jarvisschultz gravatar image jarvisschultz  ( 2016-04-21 13:14:42 -0600 )edit

You could try running just xacro on the URDF file and see if that generates different errors. E.g. /opt/ros/indigo/share/xacro/ /home/ros/catkin_ws/src/urdf_tutorial-indigo/urdf/04-materials.urdf

jarvisschultz gravatar image jarvisschultz  ( 2016-04-21 13:18:33 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2016-04-21 11:16:08 -0600

updated 2016-04-21 11:22:49 -0600

The issue is most likely related to the path that you were using. What directory were you in when the commands used to work? If you happened to be in the base path of the urdf_tutorial package, then it makes sense that a command like

roslaunch urdf_tutorial display.launch model:=urdf/04-materials.urdf

would work correctly. If you inspect the display.launch file on Indigo, you'll see that the model arg gets passed directly to the robot_description parameter. The relative path in the above command will only work if your current working directory is correct. Note that this is discussed in the One Shape section of the tutorial originally linked.

If you instead used a command like

roslaunch urdf_tutorial display.launch model:='$(find urdf_tutorial)/urdf/04-materials.urdf'

the error would disappear.


Looking at the changes in the urdf_tutorials package, I noticed that in commit f2db517470 the contents of the display.launch file changed quite a bit. If you were using a copy of the urdf_tutorials package from GitHub and you were on the master branch, this could explain why you are seeing references to xacro. The newest version of display.launch uses xacro even when you are just using a regular URDF.

edit flag offensive delete link more


Hi, I noticed the master/indigo difference after posting this. I have since downloaded the indigo branch. That fixed the xacro problem but not finding the file. I was in the base path of the urdf_tutorial package and I tried your command, still nothing.

Icehawk101 gravatar image Icehawk101  ( 2016-04-21 11:42:23 -0600 )edit

Frankly... the first command is bad practice. The second command is far more robust and easier for people to use. Does that command work? If not, I suggest you edit your question and provide the exact command that you are using to generate your error....

jarvisschultz gravatar image jarvisschultz  ( 2016-04-21 12:32:44 -0600 )edit

Both commands work fine for me with both versions of display.launch. It may also be helpful to see the output of things like rospack find urdf_tutorial to figure out which version you are using. Possibly rospack list-duplicates could be helpful.

jarvisschultz gravatar image jarvisschultz  ( 2016-04-21 12:34:18 -0600 )edit

Also notice that the second command has the model argument value in quotes. That is important... otherwise bash will split the arg value between "find" and "urdf_tutorial"

jarvisschultz gravatar image jarvisschultz  ( 2016-04-21 12:35:55 -0600 )edit

Question Tools

1 follower


Asked: 2016-04-21 07:42:38 -0600

Seen: 3,915 times

Last updated: Apr 21 '16