Hi,
I am spawning a number of obstacles using FixedCuboid and FixedCylinder. Then wrapping them in a view as
RigidPrimView(prim_paths_expr=prim_paths_expr,
name=name,
reset_xform_properties=False,
**view_kwargs)
and adding this view to the scene.
While the collisions work correctly around 80% of the time, from time to time the robot is just able to drive through the obstacle as shown in the images below. The part of the obstacle outside the robot-base is still being detected in the lidar. But the base just drives through it and get_physx_simulation_interface().get_contact_report()
does not detect any collisions either.
This seemed to work fine in version 2022.1.1, but since changing to 2022.2.1 I see this happening quite often.
I have already tried to increase the buffer sizes etc, following the values from OmniIsaacGym. I use the following values for defaults, the robot and the obstacles:
physx:
worker_thread_count: 4
solver_type: 1
use_gpu: True # set to False to run on CPU
solver_position_iteration_count: 12
solver_velocity_iteration_count: 1
contact_offset: 0.005
rest_offset: 0.0
bounce_threshold_velocity: 0.2
friction_offset_threshold: 0.04
friction_correlation_distance: 0.025
enable_sleeping: True
enable_stabilization: True
max_depenetration_velocity: 1000.0
# GPU buffers
gpu_max_rigid_contact_count: 1048576
gpu_max_rigid_patch_count: 33554432
gpu_found_lost_pairs_capacity: 20971520
gpu_found_lost_aggregate_pairs_capacity: 20971520
gpu_total_aggregate_pairs_capacity: 20971520
gpu_max_soft_body_contacts: 1048576
gpu_max_particle_contacts: 1048576
gpu_heap_capacity: 33554432
gpu_temp_buffer_capacity: 16777216
gpu_max_num_partitions: 8
robot_params:
# -1 to use default values
override_usd_defaults: False
enable_self_collisions: False
enable_gyroscopic_forces: True
# also in stage params
# per-actor
solver_position_iteration_count: 12
solver_velocity_iteration_count: 1
sleep_threshold: 0.005
stabilization_threshold: 0.001
# per-body
density: -1
max_depenetration_velocity: 1000.0
# per-shape
contact_offset: 0.005
rest_offset: 0.0
obstacle:
# -1 to use default values
override_usd_defaults: False
enable_self_collisions: False
enable_gyroscopic_forces: True
# also in stage params
# per-actor
solver_position_iteration_count: 12
solver_velocity_iteration_count: 1
sleep_threshold: 0.005
stabilization_threshold: 0.001
# per-body
# density: 1000000
# mass: 100000
max_depenetration_velocity: 1000.0
# per-shape
contact_offset: 0.005
rest_offset: 0.0
This happens even on large machines with more than enough compute:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 515.105.01 Driver Version: 515.105.01 CUDA Version: 11.7 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA RTX A6000 Off | 00000000:41:00.0 Off | Off |
| 30% 40C P8 33W / 300W | 5494MiB / 49140MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 2129 G /usr/lib/xorg/Xorg 39MiB |
| 0 N/A N/A 175414 G ...RendererForSitePerProcess 20MiB |
| 0 N/A N/A 386148 C+G ...nda/envs/orbit/bin/python 5071MiB |
| 0 N/A N/A 1217447 G /usr/lib/firefox/firefox 146MiB |
| 0 N/A N/A 1256077 G ...b/thunderbird/thunderbird 15MiB |
| 0 N/A N/A 3999984 G /usr/lib/xorg/Xorg 153MiB |
| 0 N/A N/A 4000503 G /usr/bin/gnome-shell 16MiB |
+-----------------------------------------------------------------------------+
I suspect this issue to have a large impact on the training process (reinforcement learning). Do you have any idea how to ensure that all collisions work correctly?