cmu-rss-lab / rosdiscover-evaluation

Image Creation and Evaluation Infrastructure for ROS Discover
MIT License
2 stars 0 forks source link

[Turtlebot-01] ValueError: too many values to unpack (expected 3) #87

Open tobiasduerschmid opened 3 years ago

tobiasduerschmid commented 3 years ago
ValueError: too many values to unpack (expected 3)
ERROR: failed to statically recover system architecture for image [rosdiscover-experiments/turtlebot:3e32933c829e308600707a9f971334d13d1cbe19]
Traceback (most recent call last):

  File "/home/rosqual/rosdiscover-evaluation/scripts/recover-system.py", line 133, in <module>
    main()
    └ <function main at 0x7f098e9a31f0>

  File "/home/rosqual/rosdiscover-evaluation/scripts/recover-system.py", line 129, in main
    recover(config)
    │       └ {'type': 'detection', 'subject': 'turtlebot', 'distro': 'indigo', 'build_command': 'cd /ros_ws/; catkin build -DCMAKE_EXPORT_...
    └ <function recover at 0x7f0994b55310>

  File "/home/rosqual/rosdiscover-evaluation/scripts/recover-system.py", line 26, in recover
    ({

  File "/home/rosqual/rosdiscover-evaluation/scripts/recover-system.py", line 43, in _recover_for_detection_experiment
    recover_system(
    └ <function recover_system at 0x7f098e9a30d0>

> File "/home/rosqual/rosdiscover-evaluation/scripts/recover-system.py", line 95, in recover_system
    rosdiscover.cli.main(args)
    │           │   │    └ ['launch', '/home/rosqual/rosdiscover-evaluation/experiments/detection/subjects/turtlebot-01/recovery.fixed.rosdiscover.yml',...
    │           │   └ <function main at 0x7f098e9fe820>
    │           └ <module 'rosdiscover.cli' from '/home/rosqual/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/cli.py'>
    └ <module 'rosdiscover' from '/home/rosqual/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/__init__.py'>

  File "/home/rosqual/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/cli.py", line 356, in main
    parsed_args.func(parsed_args)
    │           │    └ Namespace(output='/home/rosqual/rosdiscover-evaluation/experiments/detection/subjects/turtlebot-01/fixed.architecture.yml', c...
    │           └ <function launch at 0x7f098e9fe310>
    └ Namespace(output='/home/rosqual/rosdiscover-evaluation/experiments/detection/subjects/turtlebot-01/fixed.architecture.yml', c...

  File "/home/rosqual/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/cli.py", line 72, in launch
    summary = _launch_config(args)
              │              └ Namespace(output='/home/rosqual/rosdiscover-evaluation/experiments/detection/subjects/turtlebot-01/fixed.architecture.yml', c...
              └ <function _launch_config at 0x7f098ea07c10>

  File "/home/rosqual/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/cli.py", line 67, in _launch_config
    return _launch(config)
           │       └ Config(image='rosdiscover-experiments/turtlebot:3e32933c829e308600707a9f971334d13d1cbe19', sources=('/opt/ros/indigo/setup.ba...
           └ <function _launch at 0x7f098e9eab80>

  File "/home/rosqual/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/cli.py", line 61, in _launch
    interpreter.launch(fn_launch)
    │           │      └ Launch(filename='/ros_ws/src/turtlebot/turtlebot_bringup/launch/3dsensor.launch', arguments={})
    │           └ <function Interpreter.launch at 0x7f098ea77ee0>
    └ <rosdiscover.interpreter.interpreter.Interpreter object at 0x7f098ddedfd0>

  File "/home/rosqual/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/interpreter/interpreter.py", line 110, in launch
    self._load(pkg=node.package,
    │    │         │    └ <member 'package' of 'NodeConfig' objects>
    │    │         └ NodeConfig(namespace='/camera', name='rgb_debayer', typ='nodelet', package='nodelet', executable_path='/opt/ros/indigo/lib/no...
    │    └ <function Interpreter._load at 0x7f098ea8b0d0>
    └ <rosdiscover.interpreter.interpreter.Interpreter object at 0x7f098ddedfd0>

  File "/home/rosqual/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/interpreter/interpreter.py", line 261, in _load
    load, pkg_and_nodetype, mgr = args.split(' ')
                                  │    └ <method 'split' of 'str' objects>
                                  └ 'load image_proc/debayer camera_nodelet_manager --no-bond'

ValueError: too many values to unpack (expected 3)
ChrisTimperley commented 3 years ago

I fixed the broken handling of nodelet arguments [https://github.com/rosqual/rosdiscover/pull/241]. We get a bit further, but we now see a different error. It looks like the nodelet manager also isn't being constructed correctly.

INFO: launched nodelet manager:  as camera_nodelet_manager
INFO: launching nodelet [rgb_debayer] inside manager [camera_nodelet_manager] from /opt/ros/indigo/share/rgbd_launch/launch/includes/rgb.launch.xml
INFO: using remappings: {'image_raw': 'rgb/image_raw', 'image_mono': 'rgb/image_mono', 'image_color': 'rgb/image_color'}
ERROR: failed to launch node: rgb_debayer
Traceback (most recent call last):

  File "/usr0/home/chris/experiments/rosdiscover-evaluation/scripts/recover-system.py", line 133, in <module>
    main()
    └ <function main at 0x7fa65c20b700>

  File "/usr0/home/chris/experiments/rosdiscover-evaluation/scripts/recover-system.py", line 129, in main
    recover(config)
    │       └ {'type': 'detection', 'subject': 'turtlebot', 'distro': 'indigo', 'build_command': 'cd /ros_ws/; catkin build -DCMAKE_EXPORT_...
    └ <function recover at 0x7fa6623b81f0>

  File "/usr0/home/chris/experiments/rosdiscover-evaluation/scripts/recover-system.py", line 26, in recover
    ({

  File "/usr0/home/chris/experiments/rosdiscover-evaluation/scripts/recover-system.py", line 43, in _recover_for_detection_experiment
    recover_system(
    └ <function recover_system at 0x7fa65c20b5e0>

  File "/usr0/home/chris/experiments/rosdiscover-evaluation/scripts/recover-system.py", line 95, in recover_system
    rosdiscover.cli.main(args)
    │           │   │    └ ['launch', '/usr0/home/chris/experiments/rosdiscover-evaluation/experiments/detection/subjects/turtlebot-01/recovery.fixed.ro...
    │           │   └ <function main at 0x7fa65c268ee0>
    │           └ <module 'rosdiscover.cli' from '/usr0/home/chris/experiments/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/cli.py'>
    └ <module 'rosdiscover' from '/usr0/home/chris/experiments/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/__init__.py'>

  File "/usr0/home/chris/experiments/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/cli.py", line 356, in main
    parsed_args.func(parsed_args)
    │           │    └ Namespace(output='/usr0/home/chris/experiments/rosdiscover-evaluation/experiments/detection/subjects/turtlebot-01/fixed.archi...
    │           └ <function launch at 0x7fa65c2689d0>
    └ Namespace(output='/usr0/home/chris/experiments/rosdiscover-evaluation/experiments/detection/subjects/turtlebot-01/fixed.archi...

  File "/usr0/home/chris/experiments/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/cli.py", line 72, in launch
    summary = _launch_config(args)
              │              └ Namespace(output='/usr0/home/chris/experiments/rosdiscover-evaluation/experiments/detection/subjects/turtlebot-01/fixed.archi...
              └ <function _launch_config at 0x7fa65c2604c0>

  File "/usr0/home/chris/experiments/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/cli.py", line 67, in _launch_config
    return _launch(config)
           │       └ Config(image='rosdiscover-experiments/turtlebot:3e32933c829e308600707a9f971334d13d1cbe19', sources=('/opt/ros/indigo/setup.ba...
           └ <function _launch at 0x7fa65c25c4c0>

  File "/usr0/home/chris/experiments/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/cli.py", line 61, in _launch
    interpreter.launch(fn_launch)
    │           │      └ Launch(filename='/ros_ws/src/turtlebot/turtlebot_bringup/launch/3dsensor.launch', arguments={})
    │           └ <function Interpreter.launch at 0x7fa65c2e1dc0>
    └ <rosdiscover.interpreter.interpreter.Interpreter object at 0x7fa65c084f70>

> File "/usr0/home/chris/experiments/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/interpreter/interpreter.py", line 110, in launch
    self._load(pkg=node.package,
    │    │         │    └ <member 'package' of 'NodeConfig' objects>
    │    │         └ NodeConfig(namespace='/camera', name='rgb_debayer', typ='nodelet', package='nodelet', executable_path='/opt/ros/indigo/lib/no...
    │    └ <function Interpreter._load at 0x7fa65c2e1f70>
    └ <rosdiscover.interpreter.interpreter.Interpreter object at 0x7fa65c084f70>

  File "/usr0/home/chris/experiments/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/interpreter/interpreter.py", line 267, in _load
    return self._load_nodelet(pkg=pkg,
           │    │                 └ 'image_proc'
           │    └ <function Interpreter._load_nodelet at 0x7fa65c2e1ee0>
           └ <rosdiscover.interpreter.interpreter.Interpreter object at 0x7fa65c084f70>

  File "/usr0/home/chris/experiments/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/interpreter/interpreter.py", line 190, in _load_nodelet
    return self._load(pkg=pkg,
           │    │         └ 'image_proc'
           │    └ <function Interpreter._load at 0x7fa65c2e1f70>
           └ <rosdiscover.interpreter.interpreter.Interpreter object at 0x7fa65c084f70>

  File "/usr0/home/chris/experiments/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/interpreter/interpreter.py", line 298, in _load
    raise ValueError(f"The nodelet manager {manager_name} has not been launched")

ValueError: The nodelet manager camera_nodelet_manager has not been launched
ChrisTimperley commented 3 years ago

Digging a little deeper into the construction of the nodelet manager:

2021-11-07 10:28:12.084 | DEBUG    | rosdiscover.interpreter.interpreter:launch:106 - launching node: camera_nodelet_manager from /opt/ros/indigo/share/rgbd_launch/launch/includes/mana
      ger.launch.xml                                                                                                                                                                          
2021-11-07 10:28:12.084 | DEBUG    | rosdiscover.interpreter.interpreter:_load:248 - parsing nodelet arguments: manager
ChrisTimperley commented 3 years ago

And here's the launch file that brings up that nodelet manager. This seems to break a few of our assumptions, @schmerl. https://github.com/ros-drivers/rgbd_launch/blob/indigo-devel/launch/includes/manager.launch.xml#L18-L22

  <!-- Nodelet manager -->
  <node pkg="nodelet" type="nodelet" name="$(arg name)" args="manager"
        output="screen" launch-prefix="$(arg launch_prefix)">
     <param name="num_worker_threads" value="$(arg num_worker_threads)" />
  </node>
ChrisTimperley commented 3 years ago

After using the latest fixes, I now get this issue:

WARNING: failed to find model for node type [DepthImageToLaserScanNodelet] in package [depthimage_to_laserscan]
ERROR: failed to launch node: depthimage_to_laserscan
Traceback (most recent call last):

Traceback (most recent call last):

  File "/usr0/home/chris/experiments/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/recover/database.py", line 83, in _path_from_config
    package = config.app.description.packages[package_name]
              │      │                        └ 'depthimage_to_laserscan'
              │      └ <member 'app' of 'Config' objects>
              └ Config(image='rosdiscover-experiments/turtlebot:3e32933c829e308600707a9f971334d13d1cbe19', sources=('/opt/ros/indigo/setup.ba...

  File "/usr0/home/chris/experiments/rosdiscover-evaluation/deps/roswire/src/roswire/common/package.py", line 157, in __getitem__
    return self._contents[name]
           │    │         └ 'depthimage_to_laserscan'
           │    └ {'nolangs': ROS1Package(name='nolangs', path='/ros_ws/src/catkin/test/mock_resources/src/nolangs', messages=(), services=(), ...
           └ ROS1PackageDatabase(_contents={'nolangs': ROS1Package(name='nolangs', path='/ros_ws/src/catkin/test/mock_resources/src/nolang...

KeyError: 'depthimage_to_laserscan'

This tells us that ROSWire isn't seeing the depthimage_to_laserscan package. This is (most likely) because either: (a) the package path isn't set correctly, or (b) node isn't in the image.

ChrisTimperley commented 3 years ago

It looks like depthimage_to_laserscan isn't included in the Docker image:

root@e1e6ca5cbd2b:/# find . -name depthimage_to_laserscan