Releases: Genesis-Embodied-AI/genesis-world
v1.1.2
This minor release introduces morph pose offset to finally provide a viable solution to the long-lasting inconstency of spatial accessors related to non-standard mesh axes conventions (0.3.13) and inertia alignment (0.4.4). Besides, fixed-size buffers are now sized more tightly to significantly reduce the default memory footprint.
Breaking changes
New Features
- Add pruning-aware sizing of contact constraint buffers using 'max_contacts' option. (@duburcqa) (#2928)
Bug Fixes
- Fix island support in rigid body solver. (@duburcqa) (#2930)
- Fix serialized batched simulation on CPU scaling sub-linearly. (@duburcqa) (#2929)
Miscellaneous
v1.1.1
This minor release mainly improves the robustness of rigid collision detection for both convex and non-convex geometries. It is no longer considered experimental to disable convex decomposition when higher fidelity is necessary.
authored_convex_stacking_tower.mov |
nonconvex_bolt_nut.mov |
nonconvex_bowls.mov |
Bug Fixes
- Deduplicate textures across GLB submeshes sharing a material. (@duburcqa) (#2896)
- Skip grayscale conversion for colorized segmentation maps. (@ACMLCZH) (#2901)
- Fix non-deterministic simulation on GPU. (@duburcqa) (#2898, #2907, #2909)
- Fix non-convex collision detection for concave geometries. (@duburcqa) (#2903)
- More robust perturbation-based multi-contact convex-convex collision detection. (@duburcqa) (#2917, #2921)
Miscellaneous
- Support passing sliced env mask to RigidSolver.set_base_links_(pos|quat). (@duburcqa) (#2897)
- Improve interactive scene mode. (@duburcqa) (#2899)
- Use qd.ndrange(axes=) to collapse layout-flip duplications. (@hughperkins) (#2861)
- Switch dedupe contact sort to use Quadrants bitonic sort (@hughperkins) (#2853)
- Move register-tile Cholesky into quadrants. (@hughperkins) (#2860)
v1.1.0
This release focuses on performance improvement and numerical stability of rigid solver. Genesis speed should drop less aggressively as the complexity of the scene increases, notably the number of decomposed convex geoms, floating-base entities, and dofs.
Bug Fixes
- Fix contact tunnelling when enabling grad. (@duburcqa) (#2873)
- Fix raycast sensor for heterogeneous entities. (@duburcqa) (#2876, #2891)
- Fix loading of MJCF mesh normals. (@duburcqa) (#2883)
- Fix biased convex-convex multi-contact causing drift and inefficiency. (@duburcqa) (#2889)
Miscellaneous
- Scale contact arrow radius with object size. (@duburcqa) (#2852)
- Improve ImGui overlay plugin. (@duburcqa) (#2850, #2851, #2859, #2862, #2863, #2866)
- Add interactive scene launcher 'gs launch' to replace now deprecated 'gs view'. (@duburcqa) (#2864)
- Speedup rigid solver for large dofs count (> ~128). (@Kashu7100) (#2869)
- Speedup raycaster sensor by skipping static BVH rebuilds and share BVH across env-identical geometries. (@Kashu7100, @duburcqa) (#2867, #2875)
- Speedup rigid solver using CPU skyline-envelope sparse Cholesky. (@duburcqa) (#2879)
- Speedup raycaster-related sensors using cross-sensor shared context. (@duburcqa) (#2882, #2885)
v1.0.0
This release adds full support of non-convex multi-contact collision detection. Besides, many components of the simulation have been sped up, incl the rigid solver that should now be up to 35% for contact-reach scenes with about 64 dofs.
New Features
- Add robust non-convex mesh repair pipeline. (@duburcqa) (#2816)
- Add robust non-convex multi-contact collision detection. (@duburcqa) (#2812, #2821, #2823, #2825, #2828, #2844)
- Add 'ViewerOptions.enable_gui' option to easily enable ImGui overlay. (@duburcqa) (#2846, #2849)
Bug Fixes
- Always register scene for destroy even in case of build failure. (@duburcqa) (#2807)
- Fix static-contact drift on smooth-vs-polytope contacts. (@duburcqa) (#2801, #2841)
- Fix spurious rotation on flat terrain. (@duburcqa) (#2810)
- Fix elastomer taxel broken on Apple Metal. (@duburcqa) (#2811)
- Fix inconsistency between broadphase and narrowphase. (@duburcqa) (#2838)
- Fix tilted plane rendering. (@duburcqa) (#2824)
Miscellaneous
- Speed up point cloud tactile sensors. (@Milotrince) (#2800)
- Speed up MPM solver. (@Kashu7100) (#2720)
- Speed up rigid constraint solver. (@hughperkins) (#2809, #2817, #2820, #2827, #2837)
- Add contact pruning at link pair level. (@duburcqa, @hughperkins) (#2829, #2831, #2832, #2834, #2835)
v0.4.7
This release introduces a new type of tactile sensors while improving the existing raycasting-based and tactile sensors. Besides, a new opt-in experimental viewer plugin to interact with the simulation is now available.
Breaking changes
New Features
- Add ImGui overlay for interactive joint control and visualization. (@YilingQiao, @duburcqa) (#2541, #2780)
- Add public API to set / get vertex positions of visual rigid geometries. (@duburcqa) (#2776)
- Add support of visual-mesh to camera and raycasting-based sensors. (@Kashu7100, @duburcqa) (#2769, #2783)
- Add
history_lengthto Sensors (@Milotrince) (#2655) - Add new point-cloud-based tactile sensors. (@Milotrince) (#2735)
Bug Fixes
- Fix 'qd_zero_grad' not supporting qd.Tensor. (@duburcqa) (#2753)
- Fix zero-copy race condition on Apple Metal. (@duburcqa) (#2758)
- Fix rigid body Jacobian getter for compound joints. (@vlordier) (#2706)
- Fix ImGui interactive viewer plugin. (@Kashu7100) (#2789)
- Fix safe GJK fallback. (@duburcqa) (#2716, #2717)
- Workaround buggy float modulo on AMDGPU. (@duburcqa) (#2714)
- Reject 'CoacdOptions.pca=True' due to upstream CoACD bug (@voidborne-d) (#2757)
- Make Surface shortcut resolution idempotent. (@Kashu7100) (#2761)
- Robust device handling in slerp utils. (@Kashu7100) (#2754)
Miscellaneous
- Speedup noslip post-processing step used to suppress slip/drift. (@erizmr) (#2671, #2672, #2703)
- Unify linesearch refinement between decomposed and monolith solver paths. (@duburcqa) (#2710)
- Improve stability of CI performance benchmarks. (@hughperkins) (#2722, #2723, #2724, #2731)
- Speedup rigid constraint solver. (@hughperkins) (#2659, #2762)
- Serialize USD bake operations to prevent deadlocks. (@hughperkins) (#2739)
- Migrate to unified Quadrant's tensor abstraction. (@hughperkins) (#2751)
- Add support of autodiff with dynamic loops. (@duburcqa) (#2742, #2743)
- Viewer plugin updates: orthographic cam mode, multi-env mouse control, auto dark mode. (@Milotrince) (#2728)
- Refactor sensor pipeline. (@duburcqa, @Milotrince) (#2770, #2786, #2792)
- Avoid manually sync between torch and quadrants on Metal. (@hughperkins) (#2760)
- Update Dockerfile for Ubuntu 24.04 (@alnI3S) (#2744)
v0.4.6
This release brings recent performance uplifts that were CUDA-only to all GPU backends while relaxing CUDA Toolkit requirement. Besides, all reported CUDA crashes have been fixed.
New Features
- Add public API to Scene for drawing cameras frustum and trajectories. (@Mehak261124) (#2593)
Bug Fixes
- Fix EGL context not properly destroy during scene destruction. (@duburcqa) (#2673)
- Fix loading of GLB meshes missing normals or tex_coord. (@iory) (#2668)
- Fix sparse solve bug when building hessian. (@erizmr) (#2670)
- Fix contact overflow causing unbounded memory access. (@duburcqa) (#2688)
Miscellaneous
- Enable parallel linesearch on all GPU backends. (@duburcqa, @hughperkins) (#2678, #2689, #2692)
- Add public API to update debug markers. (@duburcqa) (#2665)
- Make markers always foreground with XRAY effect. (@duburcqa) (#2666, #2685)
- Speed up rigid constraint solver init. (@erizmr) (#2521)
- More robust GPU detection in test infrastructure. (@Lidang-Jiang) (#2653)
v0.4.5
This release continues on the ongoing trend of rigid body simulation speed improvements. A few camera-related bugs and all known regression on Metal backend are now fixed.
New Features
- Add support of xacro URDF. (@duburcqa) (#2642)
- Add public API to RigidEntity for kinematic and potential energy. (@Lidang-Jiang) (#2613)
- Add support of Mujoco general actuator model. (@duburcqa) (#2641)
- Add support of zerocopy to set_pos/set_quat. (@duburcqa) (#2657)
Bug Fixes
- Guard gradient computation not supported on Metal backend with dynamic array mode. (@duburcqa) (#2628)
- Fix plotter video export race condition. (@duburcqa) (#2647)
- Fix sensor camera 'lookat' being ignored when 'entity_idx' is set. (@Lidang-Jiang) (#2614)
- Fix various regressions on Metal backend. (@duburcqa) (#2651, #2624, #2657)
- Fix camera sensor per-env rendering with Rasterizer. (@duburcqa) (#2657)
Miscellaneous
- Add parallel linesearch for constraint solver to speedup simulation on GPU backend. (@erizmr) (#2523)
- Speedup tiled hessian kernel by using direct lower-triangle indexing. (@hughperkins) (#2618)
- Add broadphase all-vs-all to speedup simulation on GPU backend. (@hughperkins) (#2607)
- Add GPU graph to decomposed solver to reduce kernel launch latency. (@hughperkins, @duburcqa) (#2621, #2635, #2636)
- Add support of opt-in shared memory for tiled hessian to improve performance. (@duburcqa) (#2629)
- Better parallelization of add collision constraints. (@hughperkins) (#2639)
- Enable GPU-optimised decomposed constraints solver implementation on all GPU backends. (@duburcqa) (#2623)
- Unify narrowphase codepath on all GPU backends. (@duburcqa) (#2637)
- Automatically select optimal H264 codec for Video recorder. (@duburcqa) (#2657)
- Update all RL examples. (@duburcqa) (#2644, #2657)
- Update docker container. (@duburcqa) (#2643)
v0.4.4
The numerical stability of the simulation for simple rigid objects has been greatly improved. Apart from that, rigid body simulation is now much faster for complex scenes with many entities. Finally, a significant number of bugs have been fixed.
Breaking changes
- [FEATURE] Improve numerical stability of simulation by aligning inertial axes of free joints. (@duburcqa) (#2569, #2571, #2573, #2575)
- [BUG FIX] Fix default armature incorrectly applied on free joints for MJCF. (@duburcqa) (#2584)
- [MISC] Set 'RigidEntity.set_quat(..., relative=True)' by default. (@duburcqa) (#2592)
- [MISC] More realistic default material density for Rigid. (@duburcqa) (#2378)
New Features
- Support batched camera for Rasterizer. (@duburcqa) (#2564)
- Add MacOS support for separated envs rendering with Rasterizer. (@duburcqa) (#2560)
Bug Fixes
- Fix flickering issue for temperature sensor debug draw. (@duburcqa) (#2557)
- Fix batched env separated rendering with Rasterizer.
- Fix interactive viewer race condition when running background thread. (@duburcqa) (#2585)
- Fix color overwrite for MJCF without visuals. (@duburcqa) (#2586)
- Fix batched sensor read when combining multiple sensor types. (@Milotrince) (#2581)
- Fix USD parsing. (@duburcqa) (#2594)
- Fix GPU synchronization issue on Apple Metal. (@duburcqa) (#2600)
- Fix degenerated invweight computation. (@duburcqa) (#2598)
- Fix viewer plugin registration after build. (@duburcqa) (#2601)
- Fix motion planning crashing for short path < 3 nodes. (@Lidang-Jiang) (#2610)
- Fix mouse interaction void ray casting. (@duburcqa) (#2611)
- Fix IK solver using wrong entity's DOFs for multi-robot scenes. (@Lidang-Jiang) (#2612)
Miscellaneous
- Improve mouse interaction visualization. (@duburcqa) (#2574)
- Add support of batching to 'RigidLink.set_mass'. (@duburcqa) (#2578)
- Refactor rigid benchmarks into reusable scene factories. (@hughperkins) (#2577)
- Re-raise viewer exception running in background thread. (@duburcqa) (#2583)
- Support non-blocking scene reset for rigid solver. (@duburcqa) (#2580)
- Support more recent GPU devices by migrating Quadrants to LLVM 22. (@hughperkins) (#2595)
- Migrate materials to new pydantic based options with strict validation. (@duburcqa) (#2597)
- Disable perf dispatch re-benchmarking to reduce performance penalty. (@erizmr) (#2599)
- Tune kernel dispatch heuristics to reduce wrong selection. (@erizmr) (#2605)
- Rename 'Drone.set_propellels_rpm' in 'Drone.set_propellers_rpm'. (@Lidang-Jiang) (#2609)
- Speed up simulation by tuning tiled Hessian block size. (@hughperkins) (#2617)
- Optimize performance of collision detection using hardware-derived thread count. (@hughperkins) (#2616)
v0.4.3
This release introduces additional sensors while significantly speeding up collision detection on GPU (up to 30%). As usual, a few bugs have been fixed.
New Features
- Add ProximitySensor. (@Milotrince) (#2550)
- Add TemperatureGridSensor. (@Milotrince) (#2457)
Bug Fixes
- Fix rendering FEM vertex normals in interactive viewer. (@duburcqa) (#2555)
- Fix support of ellipsoid geometry. (@duburcqa) (#2554)
- Fix mujoco compatible URDF parsing. (@duburcqa) (#2547)
- Fix typing, validation, and compatibility issues with structured options. (@duburcqa) (#2548)
Miscellaneous
- Speed up rigid collision detection on GPU for generic convex meshes. (@hughperkins) (#2527)
- Fix spurious Quadrants compilation warnings. (@duburcqa) (#2546)
- Improve typing of 'add_entity', 'add_sensor'. (@duburcqa) (#2552)
- Add init/destroy registration mechanism for external modules. (@duburcqa) (#2551)
- More flexible and reliable sensor plugin registration mechanism. (@duburcqa) (#2553)
v0.4.2
This release introduces a new type of tactile sensors based on FOTS, and add support of parallel simulation of heterogeneous articulated robots. Beyond that, the performance of the simulation has been significantly improved, especially when rigid option 'noslip' is enabled.
New Features
- Add ElastomerDisplacementSensor. (@Milotrince) (#2447)
- Support articulated assets in heterogeneous parallel simulation. (@Kashu7100, @ACMLCZH) (#2472, #2535)
Bug Fixes
- Fix GJK multi-contact in mujoco-compatibility mode. (@SonSang, @duburcqa) (#2514, #2516)
- Add support of morph option "fixed" for USD without explicit root and filter out invisible geometries from collision. (@ACMLCZH) (#2528)
- More robust collision detection on 32bits precision. (@SonSang) (#2525)
- Fix parsing of URDF with undefined inertial properties. (@duburcqa) (#2544)
Miscellaneous
- Propagate interactive viewer exceptions when running in thread. (@duburcqa) (#2510)
- More robust and versatile interactive viewer keybinding. (@duburcqa) (#2512)
- Migrate 'gs view' to kinematic entity to reduce compile time. (@duburcqa) (#2522)
- Fix Python-scope field read to avoid GPU-CPU sync. (@erizmr) (#2518)
- Faster initialisation of collision pairs validity mask. (@ACMLCZH) (#2534)
- Introduce structured options with validation. (@duburcqa) (#2536)
- Accelerate noslip simulation on GPU backend. (@erizmr) (#2532)
- Speedup rigid constraint solver. (@erizmr) (#2524)
- Add dexterous hand benchmark. (@hughperkins) (#2500)