Ask Your Question
0

Unable to load the manifest for package

asked 2014-04-07 01:12:02 -0600

Pro gravatar image

I'm using rosbridge with catkin packages.

ros_rope (the webserver for the GUI) is started with a python script. At the same time rosbridge_websocket is started. Here's my launchfile:

<launch>
        <node name="ros_rope_server" pkg="ros_rope" type="server.py" output="screen" />
        <node name="ros_rope_bridge" pkg="rosbridge_server" type="rosbridge_websocket" />
        <node name="ros_rope_helper" pkg="ros_rope_helper" type="listener.py" output="screen" />
</launch>

Additionally there's another ROS node ros_rope_test providing the different services for the gui:

<launch>
        <node name="ros_rope_test_server" pkg="ros_rope_test" type="rope_server.py" output="screen" />
</launch>

I start both packages with roslaunch ros_rope server and roslaunch ros_rope_test server.

When the ros_rope executes the first service call to ros_rope_test, it throws the following exception:

[ERROR] [WallTime: 1396864502.429285] [Client 0] [id: call_service:/get_process_list:2] call_service InvalidPackageException: Unable to load the manifest for package ros_rope_test. Caused by: ros_rope_test

The next calls work without any problem. So this exception is only thrown once after the node is started.

How can I fix this?

edit retag flag offensive close merge delete

Comments

Did you make sure service is available before you call service?

jihoonl gravatar imagejihoonl ( 2014-04-12 20:05:45 -0600 )edit

Yes, I can call the service with `rosservice call` -> The service is definetly up and running. I can also reproduce this behavior by simply restarting the `rosbridge_server rosbridge_websocket`. Thus rosbridge causes the error after each restart. Maybe it's related to catkin packages?

Pro gravatar imagePro ( 2014-04-13 21:33:19 -0600 )edit

Can you provide any test code? So I can dig out the problem. I am not sure how to reproduce the given issue.

jihoonl gravatar imagejihoonl ( 2014-04-13 22:00:48 -0600 )edit

Here are two ros packages to reproduce this behavior: https://www.dropbox.com/s/5acl60sygzjyf51/gui_process_editor.tar.gz Just `catkin_make` and start them with `roslaunch rosbridge_test_service server` and `roslauch rosbridge_test_webapp server`. Then open your browser http://localhost:3000

Pro gravatar imagePro ( 2014-04-14 01:26:06 -0600 )edit

It looks like this problem only occurs when using backbone.js (see the comments in main.js file within the webapp folder)

Pro gravatar imagePro ( 2014-04-14 01:26:56 -0600 )edit

It complains about ros_rope package missing when I tried to start rosbridge_test_webapp server. Can you share this? Or any simple way to replicate the problem would be good too.

jihoonl gravatar imagejihoonl ( 2014-04-14 22:17:32 -0600 )edit

Oh, sorry, here again: https://www.dropbox.com/s/h088mhtyqwf34zw/rosbridge_test_2.tar.gz Unfortunately I didn't found any simpler way than creating these two packages...

Pro gravatar imagePro ( 2014-04-14 23:06:38 -0600 )edit

I am following this. Please wait me for test. I just got too many things are loaded on my todo list these days.

jihoonl gravatar imagejihoonl ( 2014-04-16 15:03:21 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted
0

answered 2014-04-16 21:21:36 -0600

jihoonl gravatar image

After some experiment, I firstly confirms that ServiceRequests works fine with the code below.

  var ros = new ROSLIB.Ros();

  // If there is an error on the backend, an 'error' emit will be emitted.
  ros.on('error', function(error) {
    console.log(error);
  });

  // Find out exactly when we made a connection.
  ros.on('connection', function() {
    console.log('Connection made!');
    var getListService = new ROSLIB.Service({
      ros : ros,
      name : '/get_list',
      serviceType : 'rosbridge_test_service/GetList'
    });
    var request = new ROSLIB.ServiceRequest({});
    getListService.callService(request, function(result) {
       console.log(result);
     });
  });

  // Create a connection to the rosbridge WebSocket server.
  ros.connect('ws://localhost:9090'); //98

I figured out that your code call the service twice almost simultaneously. And it seems to cause a problem when rosbridge creates a message cache. I have tried to investigate to solve this issue but the exception arises from ros core library which I can't track down more deeply.

Thus, I would suggest to clean up the server code logic to call service once. rosbridge is able to handle multiple connections and multiple service calls. However, this case was too extreme...

edit flag offensive delete link more

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: 2014-04-07 01:12:02 -0600

Seen: 1,804 times

Last updated: Apr 16 '14