hello-robot / stretch_body

Python packages to interact with the hardware of the Stretch mobile manipulators from Hello Robot Inc.
https://docs.hello-robot.com/0.2/stretch-tutorials/stretch_body/
28 stars 24 forks source link

Dynamixel reboot tool error #346

Open hello-lamsey opened 3 months ago

hello-lamsey commented 3 months ago

After overloading the gripper and running stretch_robot_dynamixel_reboot.py, I see the following error. The motors appear to successfully reboot, though.

pip package versions:

hello_helpers                          0.2.0
hello-robot-stretch-body               0.7.24
hello-robot-stretch-body-tools         0.7.12
hello-robot-stretch-diagnostics        0.0.14
hello-robot-stretch-factory            0.5.6
hello-robot-stretch-tool-share         0.3.4
hello-robot-stretch-urdf               0.0.29
hello-robot-stretch-visual-servoing    0.7.22 

error text:

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

[WARNING] [stretch_gripper]: WARNING: Servo stretch_gripper in error state: overload_error. Reboot servo with stretch_robot_dynamixel_reboot.py
Dnamixel Com error: 
Rebooting: head_pan
[Dynamixel ID:011] Reboot Succeeded.
Rebooting: head_tilt
[Dynamixel ID:012] Reboot Succeeded.
Rebooting: wrist_pitch
[Dynamixel ID:015] Reboot Succeeded.
Rebooting: wrist_roll
[Dynamixel ID:016] Reboot Succeeded.
Rebooting: wrist_yaw
[Dynamixel ID:013] Reboot Succeeded.
Rebooting: stretch_gripper
[Dynamixel ID:014] Reboot Succeeded.
[WARNING] [robot_monitor]: Dynamixel overload_error on eoa_wrist_dw3_tool_sg3:stretch_gripper
Process Process-1:
Traceback (most recent call last):
  File "/home/hello-robot/.local/lib/python3.10/site-packages/collada/triangleset.py", line 224, in load
    index = parse_p(indexnode)
  File "/home/hello-robot/.local/lib/python3.10/site-packages/collada/triangleset.py", line 207, in parse_p
    if indexnode.text is None or indexnode.text.isspace():
  File "/home/hello-robot/.local/lib/python3.10/site-packages/stretch_body/robot_collision.py", line 349, in signal_handler
    sys.exit(0)
SystemExit: 0

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.10/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/usr/lib/python3.10/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/hello-robot/.local/lib/python3.10/site-packages/stretch_body/robot_collision.py", line 334, in _collision_compute_worker
    if collision_compute.startup():
  File "/home/hello-robot/.local/lib/python3.10/site-packages/stretch_body/robot_collision.py", line 513, in startup
    self.urdf = urdf_loader.URDF.load(urdf_name)
  File "/home/hello-robot/.local/lib/python3.10/site-packages/urchin/urdf.py", line 3825, in load
    return URDF._from_xml(node, path, lazy_load_meshes)
  File "/home/hello-robot/.local/lib/python3.10/site-packages/urchin/urdf.py", line 4035, in _from_xml
    kwargs = cls._parse(node, path, lazy_load_meshes)
  File "/home/hello-robot/.local/lib/python3.10/site-packages/urchin/urdf.py", line 361, in _parse
    kwargs.update(cls._parse_simple_elements(node, path, lazy_load_meshes))
  File "/home/hello-robot/.local/lib/python3.10/site-packages/urchin/urdf.py", line 333, in _parse_simple_elements
    v = [t._from_xml(n, path, lazy_load_meshes) for n in vs]
  File "/home/hello-robot/.local/lib/python3.10/site-packages/urchin/urdf.py", line 333, in <listcomp>
    v = [t._from_xml(n, path, lazy_load_meshes) for n in vs]
  File "/home/hello-robot/.local/lib/python3.10/site-packages/urchin/urdf.py", line 383, in _from_xml
    return cls(**cls._parse(node, path, lazy_load_meshes))
  File "/home/hello-robot/.local/lib/python3.10/site-packages/urchin/urdf.py", line 361, in _parse
    kwargs.update(cls._parse_simple_elements(node, path, lazy_load_meshes))
  File "/home/hello-robot/.local/lib/python3.10/site-packages/urchin/urdf.py", line 333, in _parse_simple_elements
    v = [t._from_xml(n, path, lazy_load_meshes) for n in vs]
  File "/home/hello-robot/.local/lib/python3.10/site-packages/urchin/urdf.py", line 333, in <listcomp>
    v = [t._from_xml(n, path, lazy_load_meshes) for n in vs]
  File "/home/hello-robot/.local/lib/python3.10/site-packages/urchin/urdf.py", line 1245, in _from_xml
    kwargs = cls._parse(node, path, lazy_load_meshes)
  File "/home/hello-robot/.local/lib/python3.10/site-packages/urchin/urdf.py", line 361, in _parse
    kwargs.update(cls._parse_simple_elements(node, path, lazy_load_meshes))
  File "/home/hello-robot/.local/lib/python3.10/site-packages/urchin/urdf.py", line 322, in _parse_simple_elements
    v = t._from_xml(v, path, lazy_load_meshes)
  File "/home/hello-robot/.local/lib/python3.10/site-packages/urchin/urdf.py", line 383, in _from_xml
    return cls(**cls._parse(node, path, lazy_load_meshes))
  File "/home/hello-robot/.local/lib/python3.10/site-packages/urchin/urdf.py", line 361, in _parse
    kwargs.update(cls._parse_simple_elements(node, path, lazy_load_meshes))
  File "/home/hello-robot/.local/lib/python3.10/site-packages/urchin/urdf.py", line 322, in _parse_simple_elements
    v = t._from_xml(v, path, lazy_load_meshes)
  File "/home/hello-robot/.local/lib/python3.10/site-packages/urchin/urdf.py", line 698, in _from_xml
    meshes = cls._load_and_combine_meshes(fn, combine)
  File "/home/hello-robot/.local/lib/python3.10/site-packages/urchin/urdf.py", line 681, in _load_and_combine_meshes
    meshes = load_meshes(fn)
  File "/home/hello-robot/.local/lib/python3.10/site-packages/urchin/utils.py", line 225, in load_meshes
    meshes = trimesh.load(filename)
  File "/home/hello-robot/.local/lib/python3.10/site-packages/trimesh/exchange/load.py", line 133, in load
    loaded = load_mesh(file_obj,
  File "/home/hello-robot/.local/lib/python3.10/site-packages/trimesh/constants.py", line 134, in timed
    result = method(*args, **kwargs)
  File "/home/hello-robot/.local/lib/python3.10/site-packages/trimesh/exchange/load.py", line 209, in load_mesh
    results = mesh_loaders[file_type](file_obj,
  File "/home/hello-robot/.local/lib/python3.10/site-packages/trimesh/exchange/dae.py", line 43, in load_collada
    c = collada.Collada(file_obj)
  File "/home/hello-robot/.local/lib/python3.10/site-packages/collada/__init__.py", line 231, in __init__
    self._loadGeometry()
  File "/home/hello-robot/.local/lib/python3.10/site-packages/collada/__init__.py", line 316, in _loadGeometry
    self.handleError(ex)
  File "/home/hello-robot/.local/lib/python3.10/site-packages/collada/__init__.py", line 314, in _loadGeometry
    G = geometry.Geometry.load(self, {}, geomnode)
  File "/home/hello-robot/.local/lib/python3.10/site-packages/collada/geometry.py", line 214, in load
    _primitives.append(triangleset.TriangleSet.load(collada, sourcebyid, subnode))
  File "/home/hello-robot/.local/lib/python3.10/site-packages/collada/triangleset.py", line 232, in load
    raise DaeMalformedError('Corrupted index in triangleset')
collada.common.DaeMalformedError: DaeMalformedError: Corrupted index in triangleset
s
Dynamixel servo reboot complete. You will need to re-home servos now.

@hello-binit suggests wrapping CollisionJoint._collision_compute_worker in a try / catch block (code here).