Stretch RE1 New User Install STL Error

Hello, I’ve encountered a missing STL error with a Stretch RE1 running Ubuntu 20.04 after attempting to do a new user install.

After installing using ./stretch_new_user_install.py without running into any error, I restarted the robot and ran into an error while running stretch_robot_system_check.py. Other scripts such as stretch_xbox_controller_teleop.py also give the same error.

This error seems to involve looking for a mesh that may be used for soft limits to limit self collisions:

For use with S T R E T C H (R) RESEARCH EDITION from Hello Robot Inc.
---------------------------------------------------------------------

Waiting for all the hello* devices ...
Found all hello* devices.
Traceback (most recent call last):
  File "/home/jehan/.local/bin/stretch_xbox_controller_teleop.py", line 475, in <module>
    main()
  File "/home/jehan/.local/bin/stretch_xbox_controller_teleop.py", line 431, in main
    robot.startup()
  File "/home/jehan/.local/lib/python3.8/site-packages/stretch_body/robot.py", line 166, in startup
    self.non_dxl_thread = NonDXLStatusThread(self,target_rate_hz=self.params['rates']['NonDXLStatusThread_Hz'])
  File "/home/jehan/.local/lib/python3.8/site-packages/stretch_body/robot.py", line 65, in __init__
    self.robot.collision.startup()
  File "/home/jehan/.local/lib/python3.8/site-packages/stretch_body/robot_collision.py", line 72, in startup
    self.models.append(getattr(importlib.import_module(module_name), class_name)(self))
  File "/home/jehan/.local/lib/python3.8/site-packages/stretch_tool_share/stretch_dex_wrist/collision_model.py", line 44, in __init__
    self.fk=EndOfArmForwardKinematics()
  File "/home/jehan/.local/lib/python3.8/site-packages/stretch_body/robot_collision.py", line 143, in __init__
    self.robot_model = urdfpy.URDF.load(urdf_file)
  File "/home/jehan/.local/lib/python3.8/site-packages/urdfpy/urdf.py", line 3729, in load
    return URDF._from_xml(node, path)
  File "/home/jehan/.local/lib/python3.8/site-packages/urdfpy/urdf.py", line 3926, in _from_xml
    kwargs = cls._parse(node, path)
  File "/home/jehan/.local/lib/python3.8/site-packages/urdfpy/urdf.py", line 161, in _parse
    kwargs.update(cls._parse_simple_elements(node, path))
  File "/home/jehan/.local/lib/python3.8/site-packages/urdfpy/urdf.py", line 137, in _parse_simple_elements
    v = [t._from_xml(n, path) for n in vs]
  File "/home/jehan/.local/lib/python3.8/site-packages/urdfpy/urdf.py", line 137, in <listcomp>
    v = [t._from_xml(n, path) for n in vs]
  File "/home/jehan/.local/lib/python3.8/site-packages/urdfpy/urdf.py", line 181, in _from_xml
    return cls(**cls._parse(node, path))
  File "/home/jehan/.local/lib/python3.8/site-packages/urdfpy/urdf.py", line 161, in _parse
    kwargs.update(cls._parse_simple_elements(node, path))
  File "/home/jehan/.local/lib/python3.8/site-packages/urdfpy/urdf.py", line 137, in _parse_simple_elements
    v = [t._from_xml(n, path) for n in vs]
  File "/home/jehan/.local/lib/python3.8/site-packages/urdfpy/urdf.py", line 137, in <listcomp>
    v = [t._from_xml(n, path) for n in vs]
  File "/home/jehan/.local/lib/python3.8/site-packages/urdfpy/urdf.py", line 1146, in _from_xml
    kwargs = cls._parse(node, path)
  File "/home/jehan/.local/lib/python3.8/site-packages/urdfpy/urdf.py", line 161, in _parse
    kwargs.update(cls._parse_simple_elements(node, path))
  File "/home/jehan/.local/lib/python3.8/site-packages/urdfpy/urdf.py", line 127, in _parse_simple_elements
    v = t._from_xml(v, path)
  File "/home/jehan/.local/lib/python3.8/site-packages/urdfpy/urdf.py", line 181, in _from_xml
    return cls(**cls._parse(node, path))
  File "/home/jehan/.local/lib/python3.8/site-packages/urdfpy/urdf.py", line 161, in _parse
    kwargs.update(cls._parse_simple_elements(node, path))
  File "/home/jehan/.local/lib/python3.8/site-packages/urdfpy/urdf.py", line 127, in _parse_simple_elements
    v = t._from_xml(v, path)
  File "/home/jehan/.local/lib/python3.8/site-packages/urdfpy/urdf.py", line 581, in _from_xml
    meshes = load_meshes(fn)
  File "/home/jehan/.local/lib/python3.8/site-packages/urdfpy/utils.py", line 225, in load_meshes
    meshes = trimesh.load(filename)
  File "/home/jehan/.local/lib/python3.8/site-packages/trimesh/exchange/load.py", line 117, in load
    ) = parse_file_args(file_obj=file_obj,
  File "/home/jehan/.local/lib/python3.8/site-packages/trimesh/exchange/load.py", line 557, in parse_file_args
    raise ValueError('string is not a file: {}'.format(file_obj))
ValueError: string is not a file: /home/jehan/stretch_user/stretch-re1-1075/exported_urdf/./meshes/link_wrist_yaw_bottom.STL```

The mesh `link_wrist_yaw_bottom.STL` is not there, and I can't seem to find it anywhere on the filesystem. Any tips as to how to fix this issue?

Hi @jehan, welcome to the forum! Your interpretation is correct; stretch_body, the Python library underlying stretch_robot_system_check.py and the other stretch_* tools, has self-collision checking built in and the error is the collision manager finding something wrong with the URDF stored at ~/stretch_user/stretch-re1-xxxx/exported_urdf/.

Start by confirming there is valid URDF/mesh files within that folder. Next, run stretch_params.py | grep robot.tool to check what tool is configured on the robot (i.e. tool_stretch_gripper if you have the standard gripper attached to your Stretch).

I was able to fix my issue by copying the meshes folder from another user to the ~/stretch_user/stretch-re1-xxxx/exported_urdf/ folder for my new user. Resolved for me now.

1 Like

Awesome, glad to hear it!