stack-of-tasks / pinocchio

A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
http://stack-of-tasks.github.io/pinocchio/
BSD 2-Clause "Simplified" License
1.78k stars 375 forks source link

Meshcat visualizer error when collision model is undefined #2146

Closed stephane-caron closed 7 months ago

stephane-caron commented 7 months ago

Bug description

The Meshcat visualizer tries to read from the collision model even when it is undefined (collision_model=None):

You can open the visualizer by visiting the following URL:
http://127.0.0.1:7001/static/
Traceback (most recent call last):
  File "/home/stephane-caron/src/project/run.py", line 361, in <module>
    run(scenario, args, rho, mu)
  File "/home/stephane-caron/src/project/run.py", line 189, in run
    scene = Scene(scenario, record=args.record)  # scene is not multiprocess
  File "/home/stephane-caron/src/project/project/scene.py", line 49, in __init__
    visualizer = start_meshcat_visualizer(robot)
  File "/home/stephane-caron/.micromamba/envs/project/lib/python3.10/site-packages/pink/visualization.py", line 26, in start_meshcat_visualizer
    viz.loadViewerModel()
  File "/home/stephane-caron/.micromamba/envs/project/lib/python3.10/site-packages/pinocchio/visualize/meshcat_visualizer.py", line 641, in loadViewerModel
    for collision in self.collision_model.geometryObjects:
AttributeError: 'NoneType' object has no attribute 'geometryObjects'

Expected behavior

The visualizer ignores the collision model when it is not defined.

Reproduction steps

Create a visualizer with collision_model=None.

jorisv commented 7 months ago

Fixed in #2147