Open tobiasduerschmid opened 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
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
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>
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.
It looks like depthimage_to_laserscan
isn't included in the Docker image:
root@e1e6ca5cbd2b:/# find . -name depthimage_to_laserscan