Ask Your Question
0

roslaunch can't find 'resource' and says file doesn't exist

asked 2016-06-08 00:25:52 -0500

billy gravatar image

Working through this tutorial on navigation package: http://wiki.ros.org/navigation/Tutori... I built the launch files as directed. The first one launches OK. The second one fails.

Launch file with issue:


<launch>
  <master auto="start"/>

  <!-- Run the map server -->
  <node name="map_server" pkg="map_server" type="map_server" args="$(find catkin_ws)/map.pgm map_resolution"/>

  <!--- Run AMCL -->
  <include file="$(find amcl)/examples/amcl_diff.launch" />

  <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
    <rosparam file="$(find my_robot_name_2dnav)/costmap_common_params.yaml" command="load" ns="global_costmap" />
    <rosparam file="$(find my_robot_name_2dnav)/costmap_common_params.yaml" command="load" ns="local_costmap" />
    <rosparam file="$(find my_robot_name_2dnav)/local_costmap_params.yaml" command="load" />
    <rosparam file="$(find my_robot_name_2dnav)/global_costmap_params.yaml" command="load" />
    <rosparam file="$(find my_robot_name_2dnav)/base_local_planner_params.yaml" command="load" />
  </node>
</launch>
The error code:
Traceback (most recent call last):
  File "/opt/ros/jade/lib/python2.7/dist-packages/roslaunch/__init__.py", line 307, in main
    p.start()
  File "/opt/ros/jade/lib/python2.7/dist-packages/roslaunch/parent.py", line 268, in start
    self._start_infrastructure()
  File "/opt/ros/jade/lib/python2.7/dist-packages/roslaunch/parent.py", line 217, in _start_infrastructure
    self._load_config()
  File "/opt/ros/jade/lib/python2.7/dist-packages/roslaunch/parent.py", line 132, in _load_config
    roslaunch_strs=self.roslaunch_strs, verbose=self.verbose)
  File "/opt/ros/jade/lib/python2.7/dist-packages/roslaunch/config.py", line 451, in load_config_default
    loader.load(f, config, verbose=verbose)
  File "/opt/ros/jade/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 730, in load
    self._load_launch(launch, ros_config, is_core=core, filename=filename, argv=argv, verbose=verbose)
  File "/opt/ros/jade/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 702, in _load_launch
    self._recurse_load(ros_config, launch.childNodes, self.root_context, None, is_core, verbose)
  File "/opt/ros/jade/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 638, in _recurse_load
    n = self._node_tag(tag, context, ros_config, default_machine, verbose=verbose)
  File "/opt/ros/jade/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 95, in call
    return f(*args, **kwds)
  File "/opt/ros/jade/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 379, in _node_tag
    'launch-prefix', 'required'))
  File "/opt/ros/jade/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 202, in opt_attrs
    return [self.resolve_args(tag_value(tag,a), context) for a in attrs]
  File "/opt/ros/jade/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 183, in resolve_args
    return substitution_args.resolve_args(args, context=context.resolve_dict, resolve_anon=self.resolve_anon)
  File "/opt/ros/jade/lib/python2.7/dist-packages/roslaunch/substitution_args.py", line 312, in resolve_args
    resolved = _resolve_args(resolved, context, resolve_anon, commands)
  File "/opt/ros/jade/lib/python2.7/dist-packages/roslaunch/substitution_args.py", line 325, in _resolve_args
    resolved = commands[command](resolved, a, args, context)
  File "/opt/ros/jade/lib/python2.7/dist-packages/roslaunch/substitution_args.py", line 141, in _find
    source_path_to_packages=source_path_to_packages)
  File "/opt/ros/jade/lib/python2.7/dist-packages/roslaunch/substitution_args.py", line 184, in _find_executable
    full_path = _get_executable_path(rp.get_path(args[0]), path)
  File "/usr/lib/python2.7/dist-packages/rospkg/rospack.py", line 200, in get_path
    raise ResourceNotFound(name, ros_paths=self._ros_paths)
ResourceNotFound: catkin_ws
ROS path [0]=/opt/ros/jade/share/ros
ROS path [1]=/home/linux ...
(more)
edit retag flag offensive close merge delete

Comments

If you feel your question has been answered, please indicate that by ticking the checkmark to the left of the answer. That will clearly mark the question as answered in the question list.

gvdhoorn gravatar image gvdhoorn  ( 2016-06-16 03:00:38 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
1

answered 2016-06-08 06:05:11 -0500

gvdhoorn gravatar image
 <node name="map_server" pkg="map_server" type="map_server" args="$(find catkin_ws)/map.pgm map_resolution"/>

the problem is in this line in your launch file: you are asking roslaunch to search for a package called catkin_ws, which it can't find. Hence the ResourceNotFound exception.

You can only ask roslaunch to look for packages, not directories, and if you look at the launch file example given in the tutorial you linked, you'll see that is exactly what they do:

  <node name="map_server" pkg="map_server" type="map_server" args="$(find my_map_package)/my_map.pgm my_map_resolution"/>

Notice the $(find my_map_package).

edit flag offensive delete link more

Comments

If there was an emoji on the board with a forehead slap, I would use that here. Thank you for taking the time to explain.

Any idea what causes the file-does-not-exist error? Is it possible that the duplicated line causes an issue? It was in the tutorial so I left it in.

billy gravatar image billy  ( 2016-06-08 18:41:21 -0500 )edit

? I'm not sure I understand: there is no duplicated line (at least not in the launch file you posted). You seem to have altered the map_server node args, substituting catkin_ws (which is a directory) for my_map_package (an actual pkg). roslaunch can't search for dirs, only pkgs.

gvdhoorn gravatar image gvdhoorn  ( 2016-06-09 01:46:16 -0500 )edit

GVD, I was unable to fix the file-does-not-exist rationally, so I deleted and created a new one. That corrected it. Launch file is functioning now. Now I'm on to the next issue of AMCL not recognizing the robot pose. Thanks again for your help. If you guys weren't here to help, I'd be screwed.

billy gravatar image billy  ( 2016-06-09 11:56:45 -0500 )edit

Well, basically you put catkin_ws as an argument to the $(find ..) substitution arg. That will cause roslaunch to go looking for a package called catkin_ws. There is no package called 'catkin_ws'. It is a directory. Pkgs have package.xml files. roslaunch only finds pkgs.

gvdhoorn gravatar image gvdhoorn  ( 2016-06-09 12:26:26 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2016-06-08 00:25:52 -0500

Seen: 2,535 times

Last updated: Jun 08 '16