Releases: Genesis-Embodied-AI/Genesis
v0.4.0
This release completes the migration to Quadrants, our own high-performance cross-platform compiler which originally started as a fork of the official Taichi project back in May and has now sufficiently diverged to be renamed. Beyond that, this release polishes the newly introduced USD parser and the external interactive viewer plugin mechanism. Finally, the performance of the simulation has been significantly improved for collision-heavy scenes (up to 30%) and robots using capsule/sphere collision geometries (up to 20%).
Breaking changes
- Migrate from GsTaichi to Quadrants. (@hughperkins, @duburcqa) (#2399, #2409)
New Features
- Replace partial broken Vulkan backend by (experimental) AMD ROCm backend. (@duburcqa) (#2393, #2402)
- Support ArticulationRoot-free robots and instanced prims in USD. (@alanray-tech) (#2411)
- Add KinematicContactProbe sensor. (@Milotrince) (#2389)
- Add support of USD in 'gs view'. (@duburcqa) (#2423)
- Add IPC Robot-Cloth Coupling. (@Roushelfy, @alanray-tech) (#2427, #2352)
Bug Fixes
- Fix weld and connect equality constraints. (@duburcqa) (#2390)
- Fix color overwrite for primitive geometries in URDF. (@duburcqa) (#2403)
- Fix merging chained fixed links. (@duburcqa) (#2404, #2429)
- Fix handling of unspecified spatial inertia properties in USD. (@alanray-tech) (#2401)
- Tune GJK to avoid false negative collision detection. (@SonSang) (#2419)
- Fix object slowly falling when holding object using mouse interaction plugin. (@Milotrince) (#2418)
- Fix interactive viewer deadlock on Wayland. (@alexis779) (#2422)
- Fix default file extension for interactive viewer save. (@duburcqa) (#2424)
- Fix viewer raycast kernel compilation race condition. (@duburcqa) (#2430)
Miscellaneous
- Speed up linesearch via reducing global reads by recomputing quad. (@erizmr) (#2384)
- Speed up capsule-capsule and capsule-sphere collision detection. (@hughperkins) (#2363, #2413, #2414)
- Lazy-initialize SDF pre-processing in RigidGeom. (@duburcqa) (#2392)
- Add uv installation instructions to translated READMEs. (@antoinedandi) (#2416)
- Fix support of fastcache for raycast kernels. (@duburcqa) (#2417)
v0.3.14
This release mainly focuses on asset loading and usability, introducing a new external plugin mechanism for the interactive viewer, and extending support of glTF meshes and USD scenes. Besides, the performance of the simulation has been significantly improved for collision-heavy scenes (up to 30%).
New Features
- Introduce interactive viewer plugins. (@Milotrince) (#2004, #2357)
- Add naming logics to entities. (@YilingQiao) (#2303)
- Support rendering textures for USD scenes. (@ACMLCZH) (#2286)
- Add invalid spatial inertia diagnosis. (@duburcqa) (#2297, #2321, #2367)
Bug Fixes
- Fix wrong default sampler for SPH solver causing numerical stability issues. (@erizmr) (#2280)
- Fix render destroy. (@nimrod-gileadi, @duburcqa) (#2282, #2358)
- Fix IPC Coupler. (@duburcqa) (#2299)
- Fix batched numpy 'euler_to_R' geom util. (@Kashu7100) (#2306)
- Fix glTF mesh loading. (@duburcqa) (#2296, #2311, #2316, #2329)
- Fix 'Mesh.convert_to_zup' by applying scaling out-of-place. (@duburcqa)
- Fix rigid body entity hibernation mechanism. (@YilingQiao) (#2294)
- Fix DFSPH solver. (@erizmr) (#2302)
- Fix parsing material of primitive geometries in MJCF files. (@ACMLCZH) (#2328)
- Fix 'draw_debug_frames' after PR#1869. (@duburcqa) (#2330)
- Fix compatibility with 'trimesh<4.6.0'. (@duburcqa) (#2334)
- Fix linesearch edge-case fallback. (@erizmr) (#2339)
- Fix mujoco-compatible GJK multi-contact for box primitive. (@hughperkins) (#2341)
- Fix FEM entity rendering with Raytracer backend. (@duburcqa) (#2356)
- Fix combining Rasterizer-based camera sensors and interactive viewer. (@YilingQiao) (#2351)
Miscellaneous
- Track mesh UVs in FEM/PBD solvers for rendering of deformable entities. (@alelievr) (#2323)
- Support scrolling menu in 'gs view'. (@Kashu7100) (#2335)
- Add memory to CI performance monitoring report. (@hughperkins) (#2281, #2291, #2293, #2295, #2298, #2300, #2312, #2315, #2320)
- Improve support of Linux ARM. (@duburcqa) (#2317)
- Clearer error message of 'RigidEntity.(get_joint|get_link)'. (@Kashu7100) (#2313)
- Add Markdown Files to Facilitate AI Tools. (@YilingQiao) (#2305)
- Support --record in the RL stage in Manipulation example (@SnakeOnex) (#2344)
- More robust OpenGL context initialisation for Rasterizer. (@duburcqa) (#2354)
- Add benchmark for Unitree G1. (@hughperkins) (#2310)
- Recomputing inertia for primitive geometries using analytical formula. (@duburcqa) (#2337)
- Speed up linesearch via batched alpha evals and reduced global memory access. (@erizmr) (#2350)
- Disable shadow and plane reflection when using software rendering. (@duburcqa) (#2365)
- Workaround for 'pyglet' bug. (@duburcqa) (#2385)
v0.3.13
This small release adds user-friendly diagnosis of invalid Rigid physics properties and improves support of GLTF meshes.
Breaking changes
- Apply 'FileMorph.file_meshes_are_zup' to all meshes including GLTF. (@duburcqa) (#2275)
- Do not officially support importing GLTF morph Mesh as Z-UP. (@duburcqa) (#2279)
New Features
- Add Magnetometer measurement to IMU Sensor. (@sunkmechie) (#2265)
- Check validity of links spatial inertia and support forcing computation from geoms. (@duburcqa) (#2273, #2276)
Bug Fixes
- Improve support of attached RigidEntity. (@duburcqa) (#2256, #2259)
- Fix attaching RayTracer camera sensor. (@duburcqa) (#2266)
- Fix empty data when adding more than 3 Raycast Sensors. (@JackLowry) (#2268)
- Fix Raycast Sensor for batched environments. (@d-corsi) (#2269)
- More robust filtering of self-collision in neutral configuration. (@duburcqa) (#2278)
Miscellaneous
- Improve performance and add torch support to 'utils.geom.slerp'. (@Kashu7100) (#2260)
v0.3.12
This PR focuses on performance improvements (x4 faster for complex scenes with 64 < n_dofs < 96 and n_envs=4096 compared to 0.3.10). Besides, initial support of heterogenous object and USD stage import for rigid body simulation has been introduced.
Breaking changes
- [BREAKING][MISC] Improve import logics of y-up vs z-up file meshes (see official doc). (@AnisB) (#2237)
New Features
- [FEATURE] Add method to compute axis-aligned bounding boxes of visual geometries. (@duburcqa) (#2185)
- [FEATURE] Add partial support of batched camera sensor with Rasterizer. (@Narsil) (#2207, #2212)
- [FEATURE] Add support for attaching MPM particles to rigid links. (@YilingQiao) (#2205)
- [FEATURE] Add support of USD import for Rigid Body. (@alanray-tech) (#2067)
- [FEATURE] Add support of batched textures to BatchRenderer. (@ACMLCZH) (#2077)
- [FEATURE] Add support of fisheye camera mode to BatchRenderer. (@ACMLCZH) (#2138)
- [FEATURE] Add batched simulation of heterogeneous objects. (@YilingQiao) (#2202)
- [FEATURE] Filter out self-collision pairs active in neutral configuration. (@duburcqa) (#2251)
Bug Fixes
- [BUG FIX] Fix zero-copy for fields on Apple Metal. (@duburcqa) (#2188, #2223)
- [BUG FIX] Fix compatibility with 'numpy<2.0'. (@duburcqa) (#2197)
- [BUG FIX] Fix invalid default particle sampler on Linux ARM. (@duburcqa) (#2211)
- [BUG FIX] Fix 'RigidGeom.get_(pos|quat)' invalid shape. (@duburcqa) (#2218)
- [BUG FIX] Fix various sensor bugs and add zero-copy to contact force sensors. (@duburcqa) (#2232, #2235)
- [BUG FIX] Clear dynamic weld at scene reset. (@YilingQiao) (#2233)
- [BUG FIX] Fix viewer not closed at scene destroy if running in background thread. (@duburcqa) (#2236)
- [BUG FIX] More robust handling of corrupted cache. (@duburcqa) (#2241)
Miscellaneous
- [MISC] More intuitive visualisation of camera frustum in interactive viewer. (@duburcqa) (#2180)
- [MISC] Remove broken and unmaintained Avatar Solver. (@duburcqa) (#2181)
- [MISC] Speedup non-tiled hessian cholesky factor and solve. (@duburcqa) (#2182, #2183)
- [MISC] Force public getters to return by-value to avoid mistake. (@duburcqa) (#2184)
- [MISC] Improve CI infrastructure. (@hughperkins, @duburcqa) (#1981, #2166, #2190, #2194, #2195, #2242, #2245, #2250)
- [MISC] Add Ruff format. (@Narsil) (#2213, #2214, #2215)
- [MISC] Store texture path for primitive morphs as metadata. (@Rush2k) (#2227)
- [MISC] Simplify boolean contact sensors update logics. (@duburcqa) (#2238)
- [MISC] Rigid methods set_qpos,set_dofs_position now clear error code. (@duburcqa) (#2253)
v0.3.11
The main focus of this release is to improve scaling of the simulation wrt the complexity of the scene, and better leverage GPU compute for small to moderate batch sizes (0<=n_envs<=8192). As usual, a bunch of minor bugs have been fixed.
New Features
- Support specifying offset transform for camera sensor. (@YilingQiao) (#2126)
- Enable zero-copy for fields on Metal if supported. (@duburcqa) (#2174)
Bug Fixes
- Avoid discontinuities in smooth animations caused by singularities. (@Rush2k) (#2116)
- Fix forward update logics. (@duburcqa) (#2122)
- Fix kernel caching mechanism hindering performance. (@duburcqa) (#2123)
- Fix support of old torch for 'set_dofs_velocity' when velocity=None. (@YilingQiao) (#2160)
- Force rendering systematically when updating camera sensor. (@YilingQiao) (#2162)
- Fix incorrect lighting when offscreen cameras based on rasterizer. (@duburcqa) (#2163)
- Fix rasterizer race conditions when running in background thread. (@duburcqa) (#2169)
- Fix broken exception handling when loading obj files with unsupported face type. (@Kashu7100) (#2170)
- Fix 'pysplashsurf' memory leak causing OOM error. (@duburcqa) (#2173, #2176)
- Diagnose out-of-bound SDF gradient index. (@duburcqa) (#2177)
Miscellaneous
- Stop assessing warmstart vs smooth acc at constraint solver init. (@duburcqa) (#2117)
- Speedup collision detection broad phase on GPU. (@duburcqa) (#2128)
- More comprehensive benchmarks. (@duburcqa) (#2137)
- Accelerate constraint solver first pass using shared memory. (@duburcqa) (#2136, #2140)
- Further optimize cholesky solve using warp reduction and memory padding. (@duburcqa) (#2145, #2146)
- Improve runtime speed by optimize memory layout of constraint solver. (@duburcqa) (#2147)
- Fast mass matrix factorisation on GPU using shared memory. (@duburcqa) (#2154)
- Optimize rigid body dynamics to scale better wrt dofs and entities. (@duburcqa) (#2161)
- Fix spurious deprecated property warnings during introspection. (@duburcqa) (#2168)
- Various solver refactoring to support GsTaichi Main. (@hughperkins, @duburcqa) (#2131, #2135, #2143, #2151)
- Improve single-threaded cpu-based simulation speed by upgrading gstaichi. (@hughperkins) (#2129, #2153)
v0.3.10
v0.3.9
Small release mainly polishing features that were introduced in previous release.
New Features
- [CHANGING] Replace SDF fallback by GJK. (@duburcqa) (#2081)
- [CHANGING] Improve inertial estimation if undefined. (@YilingQiao) (#2100)
- Add support of boolean masking as index. (@duburcqa) (#2087)
- Fix and improve merging of rigid entities. (@duburcqa) (#2098)
Bug Fixes
- Fix increased memory usage due to differentiable simulation. (@duburcqa) (#2074)
- Fix 'envs_idx' in motion planning. (@duburcqa) (#2093)
- Fix 'DroneEntity.set_propellels_rpm'. (@duburcqa) (#2095)
- Fix extended broadcasting. (@duburcqa) (#2096)
- Fix 'RigidEntity.set_dofs_velocity'. (@robin271828) (#2102)
- Fix joint stiffness not taking into account neutral position. (@YilingQiao) (#2105)
- Fix explicit URDF material color being ignored. (@duburcqa) (#2107)
Miscellaneous
v0.3.8
The performance of data accessors have been dramatically improved by leveraging zero-copy memory sharing between GsTaichi and Torch. Beyond that, the robustness of the default contact algorithm has been improved, and differentiable forward dynamics for Rigid Body simulation is not partially available. Last, but not least, GsTaichi dynamic array mode is finally enabled back by default!
New Features
- [CHANGING] More robust MPR+SDF collision detection algorithm. (@duburcqa) (#1983, #1985)
- [CHANGING] Disable box-box by default. (@duburcqa) (#1982)
- Enable back GsTaichi dynamic array mode by default except for MacOS. (@duburcqa) (#1977)
- Add error code to rigid solver. (@duburcqa) (#1979)
- Add option to force batching of fixed vertices. (@duburcqa) (#1998)
- Leverage GsTaichi zero-copy in data accessors. (@duburcqa) (#2011, #2019, #2021, #2023, #2025, #2030, #2037, #2048, #2054)
- Add an option to disable keyboard shortcuts (@YilingQiao) (#2026)
- Add support of 'capsule' primitive in URDF file. (@duburcqa) (#2045)
- Add full support of tensor broadcasting in getters. (@duburcqa) (#2051)
- Add rasterizer, batch renderer, and raytracer as sensor (@YilingQiao) (#2010)
- Differentiable forward dynamics for rigid body sim. (@SonSang) (#1808, #2063, #2068)
Bug Fixes
- Fix sensor IMU accelerometer signal. (@Milotrince) (#1962)
- Fix 'RigidJoint.(get_anchor_pos | get_anchor_axis)' getters. (@alexis779) (#2012)
- Prevent nan to propagate in position and raise exception. (@duburcqa) (#2033)
- Fix camera following entity for 'fix_orientation=True'. (@duburcqa) (#2038)
- Fix support of Hybrid entity with non-fixed base link. (@duburcqa) (#2040)
- Raise exception if trying to load PointCloud as Mesh. (@duburcqa) (#2042)
- Fix boolean mask inversion for PyTorch 2.x (@yoneken) (#2056)
- Fix URDF color overwrite. (@duburcqa) (#2065)
Miscellaneous
- Reduce memory footprint. (@duburcqa) (#2000, #2031)
- Only enable GJK by default if gradient computation is required. (@duburcqa) (#1984)
- Bump GsTaichi Support Nvidia GPU Blackwell. (@johnnynunez) (#2002)
- Add dependency version upper-bound 'tetgen< 0.7.0'. (@YilingQiao) (#2029)
- Bump up min version requirement for Torch after introducing zero-copy. (@duburcqa) (#2034)
- Add 'parse_glb_with_zup' option to all file-based Morph. (@ACMLCZH) (#1938)
- Enable more example scripts in CI. (@duburcqa) (#2057)
- Fix fast cache and zero-copy bugs. (@hughperkins) (#2050)
0.3.7
The performance of GsTaichi dynamic array mode has been greatly improved. Now it should be on par with performance for very large batch size, and up to 30% slower for non-batched simulation. This mode this still considered experimental and must be enabled manually by setting the env var 'GS_ENABLE_NDARRAY=1'. Just try it if you are tired of endlessly waiting for the simulation to compile!
New Features
- Implement position-velocity controller. (@matthieuvigne) (#1948)
Bug Fixes
- Fix missing option
diffuse_texturetoGlasssurface. (@Kashu7100) (#1934) - Fix interactive viewer. (@YilingQiao) (#1931)
- Fix external coupling forces from other solvers not affecting rigid bodies. (@SonSang) (#1941)
- Fix silent process killing issue in MPM simulation by raising an exception. (@SonSang) (#1949)
- Fix 'discrete_obstacles_terrain' being completely flat. (@jgillick) (#1972)
Miscellaneous
- Added warning message about stable timestep for SPH solver. (@SonSang) (#1925)
- Reduce memory usage due to diff constraint solver. (@YilingQiao) (#1930)
- Faster non-batched simulation. (@duburcqa) (#1935)
- Fix or silent dev warnings. (@duburcqa) (#1944)
- Add caching to Rigid Link state getters to improve performance. (@duburcqa) (#1940, #1955)
- Add support of Linux ARM. (@duburcqa) (#1961)
- Add 'GS_PARA_LEVEL' env var to force kernel parallelization level. (@duburcqa) (#1968)
0.3.6
A new experimental interface with the Incremental Potential Contact coupling solver libuipc has been introduced, mainly targetting cloth simulation.
New Features
- Add Rigid ‘get_dofs_frictionloss’ public API method. (@ax-anoop) (#1904)
- Add IPC (Incremental Potential Contact) coupling system. (@Roushelfy) (#1859)
Bug Fixes
- Fix missing dependencies in Docker (@schlagercollin) (#1896)
- Fix sensor recorder Matplotlib plotter on Linux and Windows. (@duburcqa) (#1894)
- Fix particle emitter failure if batch size = num emit particles. (@duburcqa) (#1901)
- Fix MJCF handling of visual groups. (@duburcqa) (#1902)
Miscellaneous
- Disable GsTaichi dynamic arrays by default (again!) (@duburcqa) (#1915)
- Reset control during reset. (@YilingQiao) (#1920)