Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
tobiasduerschmid opened this issue Nov 7, 2021 · 5 comments

Comments

@tobiasduerschmid
Copy link
Collaborator

tobiasduerschmid commented Nov 7, 2021

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
Copy link
Member

ChrisTimperley commented Nov 7, 2021

I fixed the broken handling of nodelet arguments [https://github.com/cmu-rss-lab/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
Copy link
Member

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
Copy link
Member

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
Copy link
Member

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
Copy link
Member

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

root@e1e6ca5cbd2b:/# find . -name depthimage_to_laserscan

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants