Developers inevitably write slow, error filled code when dealing with Python and working with the type annotations can be a pain.
Happy there's something to replace PhysX for robotics, and I do really like MuJoCo's API, but really wish we could get some good C/C++ APIs.
Apart from the language, NVIDIA doesn't seem to be great when dealing with software. IsaacSim and IsaacLab have so many bugs, are incredibly slow, and hard to debug. We spend so many hours on my team findings bugs for IsaacSim, it's just a pain. On version 5.0 and still feels like beta software.
Also IsaacSim's relience on USD to hold the scene structure and update prims makes it so hard to program for. USD isn't really performant when trying to generate a large amount of scenes. And the USD interface stops working completly when simulation starts on IsaacLab. I hope Newton goes a different route, and has less of a reliacne on USD. IMO USD should just be used as an interchange format, rather than how you actually represent the scene and properties internally. I much prefer that approach, which Unreal Engine seems to support.
Lastly, my god the names in this field are terrible. USD (Googling becomes a pain sometimes), Newton (Already another engine), Warp (literally the name of the architecture and a way to write Python GPU kernels, wtf).
Note that I'm not saying it's not useful (python is what C was to unix if it was invented now)
The language is A ok.
It's way better JS, and at the time it was a breath of fresh air. It was NodeJS before JS, and it was much better than node will be (I scratched out that "never").
I do recall Guido's claims about developers cognition - stating that (quoting from memory) a person can only hold up to 50k lines of code in their head, and Py can have way more code in that dimension that C or Java, but that's just stupid.
But similarly to JS it's heavily misused.
Anything easy to use, will have also many unskilled people use it.
They already have a newton branch of IsaacLab on github but its pretty early for it. I just came across a dope project today that is a different wrapper around mujoco-warp that already mimics IsaacLab's api and you can run some robot environments on it. Clean code too, very promising: https://github.com/mujocolab/mjlab.git
For example, the cloth bending simulation is almost entirely: at __init__, call a function to add a cloth mesh to model builder obj, pass built model to initializer of a solver class; and at each timestep: call a collide model function, then call another function called solver.step. That's really it.
> Newton extends and generalizes Warp's (deprecated) warp.sim module, and integrates MuJoCo Warp as its primary backend.
It’s MuJoco GPU Edition. Nothing new or improved.
> Will Newton replace PhysX?
> No, the two engines serve different primary goals
https://newton-physics.github.io/newton/faq.html#will-newton...
From what I understand, PhysX has been built primarily as a physics engine middleware for games. So when folks at NVIDIA tried to extend this engine to robotics (for IsaacSim/IsaacLab) it seems they've faced lots of challenges (mainly with subpar multi-env performance and inaccurate solver, but also lots of technical debt over the years). So changing the internal engine to a more robotics-oriented one (Mujoco-warp) doesn't seem far-fetched. Nowadays for game engine development there are much better middleware CPU-based physics engines available (mainly Jolt Physics) - and GPU physics in games aren't that popular anymore due to pragmatic reasons (the GPU -> CPU roundtrip defeats the whole purpose of better performance)