Yuval Tassa
ecb769fc3a
Refactor islands to be memory contiguous.
...
PiperOrigin-RevId: 755803476
Change-Id: I41972b07e0d5ef5d0117c94f565b93367b87458b
2025-05-07 05:06:27 -07:00
Yuval Tassa
8f768be2da
Remove solver_nisland field from mjData.
...
PiperOrigin-RevId: 750527660
Change-Id: I6b34944c92483ea2abc774df75efd868255a2bac
2025-04-23 03:27:41 -07:00
Saran Tunyasuvunakool
71a7004057
Fix array extent parsing logic for introspect.
...
Also fix the mjxmacro_test to correctly assert that all array extents defined in the X macros can be correctly parsed from field comments.
PiperOrigin-RevId: 747808525
Change-Id: I0b08dc263f8a46118a07200ae044d6c491207245
2025-04-15 04:03:04 -07:00
Alessio Quaglino
157b074116
Add signature to mjSpec and mjModel and use it to perform safe bind to mjModel and mjData.
...
PiperOrigin-RevId: 740378879
Change-Id: If14b326942529494f172e7aedcae30195798b458
2025-03-25 09:37:49 -07:00
Yuval Tassa
0f563ecf31
Switch mjData.{qH,qLD} from reduced ("C") to full ("M") inertia matrix structure. No performance impact of extra zeros because of existing "simple dof" skipping mechanism.
...
PiperOrigin-RevId: 733523931
Change-Id: Ic8d8a152dda5532331c239cb6b4ce7d8d09b7fff
2025-03-04 17:34:35 -08:00
Yuval Tassa
c72c83aa3b
Allocate qM CSR matrix structure on mjData (currently empty).
...
PiperOrigin-RevId: 733247419
Change-Id: I814e574e3161875e89433a6e03f2c9e200d8b1d6
2025-03-04 02:37:47 -08:00
Yuval Tassa
fb07e0d1f7
Convert qLD to CSR format.
...
PiperOrigin-RevId: 728196818
Change-Id: I31bdf32e251293284426ed345019f27fd051a0e1
2025-02-18 07:14:45 -08:00
Yuval Tassa
5ee0654830
Roll back recent change to mjData.qLD until some issues are resolved.
...
PiperOrigin-RevId: 724389161
Change-Id: I1b30ab0950ab5c5e611b1c6fc3bf3f42f964939c
2025-02-07 10:21:42 -08:00
Yuval Tassa
c27d3758c2
Convert qLD to CSR format.
...
PiperOrigin-RevId: 723955038
Change-Id: I30c3dc7f59739e89ae5fff8841432bc74717ec1b
2025-02-06 08:59:35 -08:00
Yuval Tassa
2409a6e537
Add mjData.nA the number of non-zeros in the constraint inverse inertia matrix.
...
PiperOrigin-RevId: 714076988
Change-Id: I4c323a6e81dfb23f7972b662719bbcb688bacf4a
2025-01-10 09:23:55 -08:00
Yuval Tassa
b5df2c10bf
Remove mjData.C_diag, no longer required as C is now lower triangular.
...
PiperOrigin-RevId: 712514204
Change-Id: I8293f65ebc09c6a8fed76b0e59d2e2a667e01a43
2025-01-06 06:58:19 -08:00
Yuval Tassa
69c9ac074a
Remove mjData.qLDiagSqrtInv, add corresponding argument to mj_solveM2.
...
- `qLDiagSqrtInv` is only required for the dual solvers. It is now computed as-needed rather than unconditionally.
- `mj_solveM2` now requires a new input array `sqrtInvD` which contains the square root of the inverse diagonal D (formerly saved in `qLDiagSqrtInv`).
PiperOrigin-RevId: 710805133
Change-Id: I0622d6a8da3882916824e9c10bad9223c122c321
2024-12-30 15:24:36 -08:00
Yuval Tassa
3a14ada308
Store index of diagonal element for C and D in mjData.
...
PiperOrigin-RevId: 704287869
Change-Id: I15d1faa0b5c3ff54721f692ec6329726456ec318
2024-12-09 08:01:30 -08:00
Taylor Howell
aae5fd6906
Add nJmom, the number of non-zeros in sparse actuator_moment matrix, to mjModel.
...
PiperOrigin-RevId: 698343986
Change-Id: I3d4a4dea1ec095d4e7b231c2fffc0e6241cee39f
2024-11-20 04:30:47 -08:00
Yuval Tassa
c9f78ad8a8
Rename nnzJ to nJ in mjData.
...
This naming is more consistent.
PiperOrigin-RevId: 691858223
Change-Id: Ife3db822afa0b51b30d0792548b35b3742da388a
2024-10-31 10:43:10 -07:00
Saran Tunyasuvunakool
98478f8811
Minor changes to inline comments in mjModel and mjData headers.
...
PiperOrigin-RevId: 688231631
Change-Id: Iae5430142cab256a73a0fb8c698992ceba21b28c
2024-10-21 12:31:15 -07:00
Taylor Howell
36e8845599
Add actuator_moment Jacobian sparsity pattern to mjData.
...
PiperOrigin-RevId: 688124236
Change-Id: Ieccc8131d0046100ec9a2783ffb43dd784f0a63b
2024-10-21 07:11:25 -07:00
Yuval Tassa
ee7b994021
Remove Newton Cholesky factor from mjData arena, rollback of b66da3d369.
...
PiperOrigin-RevId: 685726867
Change-Id: Ic2afd0dd35e38f403164d2cbe4618286abfa51ab
2024-10-14 09:07:22 -07:00
Yuval Tassa
b66da3d369
Add mjData.L, sparse Cholesky factor of Newton solver Hessian.
...
PiperOrigin-RevId: 683669555
Change-Id: I18d7530b5d68d1d48cb95d4faa0150c434109638
2024-10-08 10:13:08 -07:00
Yuval Tassa
3437361bfb
Add reduced sparse dof-dof matrix structures to mjData.
...
PiperOrigin-RevId: 670919263
Change-Id: I3592de802ae84648d97230115c2e9c3437424968
2024-09-04 04:24:02 -07:00
Yuval Tassa
42eb669e4e
Precompute mappings between M <-> D sparse representations.
...
PiperOrigin-RevId: 670898353
Change-Id: I4b15477b1b6eb4a64cf7d4a0bb5af8fcb95d4e45
2024-09-04 02:57:13 -07:00
Yuval Tassa
56e00a5d4a
Re-order elements of mjSTATE_FULLPHYSICS. Fixes #1876
...
PiperOrigin-RevId: 659267096
Change-Id: Iaf1e13caa989c41179aa0bd635cfa17ac776d06d
2024-08-04 03:32:24 -07:00
Yuval Tassa
ca44ad4f0f
Improve docstrings and layout in mjdata.h
...
PiperOrigin-RevId: 649195756
Change-Id: Iadf6589c226acacd9f3e85959de552a98fc7435a
2024-07-03 14:15:51 -07:00
Yuval Tassa
9e9a0c637e
Fix docstring of mjData.arena. Fixes #1753
...
PiperOrigin-RevId: 646121139
Change-Id: I46c7fb32b0e705fb3b8301272d7fc55ba0dacd7c
2024-06-24 09:29:12 -07:00
Erik Frey
255a59487c
Corrects function reference in class comments.
...
PiperOrigin-RevId: 637070006
Change-Id: I0d9dcf0401a107de67cd0a663df6c876287ba772
2024-05-24 16:53:56 -07:00
Yuval Tassa
2feefbc5d2
Remove fine-grained timing from narrow-phase collision functions, delete mjTIMER_COL_MID.
...
PiperOrigin-RevId: 599225419
Change-Id: Ieca166753c20a0abf660e2821b2844dda8758951
2024-01-17 10:54:23 -08:00
Yuval Tassa
67a00a3a51
Rename mjMAXTHREADS -> mjMAXTHREAD (consistency).
...
PiperOrigin-RevId: 599130235
Change-Id: Ia80379b8ae0574a7cd8fbc668657f806e90d6c5c
2024-01-17 04:33:44 -08:00
Yuval Tassa
1885d518eb
Use the string (rot:lin) in mjdata.h to clarify where 6D motion vectors use the Featherstone convention. Also add clarifying text to the appropriate note in the documentation.
...
Fixes #982 .
PiperOrigin-RevId: 589556339
Change-Id: I3e7ff185a089715a386694321d4b89d09d481cf9
2023-12-10 03:27:44 -08:00
Yuval Tassa
8a5e2b19a8
Improve mjContact documentation. Fixes #1136
...
PiperOrigin-RevId: 579836970
Change-Id: Ife8dd73eecdbdaacecc1e48460cf6efcf4f7b487
2023-11-06 07:28:51 -08:00
Yuval Tassa
a89412bb4a
Add components of qfrc_passive to mjData: qfrc_{spring, damper, gravcomp, fluid}.
...
PiperOrigin-RevId: 576493532
Change-Id: If8eda1a2bb728fe8ab91b8004f97fc729d999ad9
2023-10-25 05:01:45 -07:00
Alessio Quaglino
5a70ad08ab
Add Flex component.
...
PiperOrigin-RevId: 572830650
Change-Id: I6908228087b7b9683be3506c8d9cdc725ed5dcd5
2023-10-12 10:49:35 +01:00
Alessio Quaglino
8af09eb70d
Add timing of collision phases.
...
PiperOrigin-RevId: 572273621
Change-Id: Ib9440a996a05e42e00dcf4f1ce487a12f65e999b
2023-10-10 09:27:45 -07:00
Yuval Tassa
ee78b8f76b
Added mjData.eq_active user input variable, for enabling/disabling the state of equality constraints.
...
Renamed `mjModel.eq_active` to `mjModel.eq_active0`, which now has the semantic of "initial value of `mjData.eq_active`".
Fixes #876 .
PiperOrigin-RevId: 570410643
Change-Id: Id03171e751377c7cc453f143abee64239ee2e2ed
2023-10-03 09:32:24 -07:00
Matthew Bennice
4f34cacf35
Add maxuse_threadstack to mjData
...
PiperOrigin-RevId: 567334177
Change-Id: Ifd772350042e548a63ab269fd68fb5e5fef55831
2023-09-21 09:41:00 -07:00
Yuval Tassa
63fd23a934
Remove mjTIMER_ACCELERATION, add mjTIMER_ADVANCE.
...
- mjTIMER_ACCELERATION is not very useful, it's usually very tiny (0.5% for humanoid, 1% for 22humanoids). It basically times a single call to `mj_solveM`.
- Added `mjTIMER_ADVANCE` to time `mj_Euler` and `mj_implicit` (which can be significant).
- Moved `mj_transmission` to `mjTIMER_KINEMATICS` where it belongs (and used to be).
PiperOrigin-RevId: 565936880
Change-Id: I26b8a067133594e5500ca1c809beb3518b4a8d9c
2023-09-16 08:03:45 -07:00
Yuval Tassa
86d8b912f4
Rejigged solver statistics in preparation for islanding.
...
- See public description below.
- Stopped incrementing the iteration count in saveStats().
- `sizeof(mjSolverStat) == 40`, so this ends up costing 160KB, up from 40KB.
BEGIN_PUBLIC
Changed the size of `mjData.solver`, the structure used to collect solver diagnostic information. The array is now of length `mjNISLAND * mjNSOLVER`, where each row of length `mjNSOLVER` contains separate solver statistics for each constraint island. Until solver islanding is implemented, only row 0 is used.
- The new constant `mjNISLAND` is set to 20.
- `mjNSOLVER` is reduced from 1000 to 200.
- Added `mjData.solver_nisland`, the number of islands for which the solver ran.
- `mjData.solver_niter` (renamed from mjData.solver_iter) and `mjData.solver_nnz` are now integer vectors of length `mjNISLAND`.
END_PUBLIC
PiperOrigin-RevId: 565030093
Change-Id: I773e918805c6ced79f0dab5f19ea23956760c8c5
2023-09-13 06:18:37 -07:00
Matthew Bennice
6225186964
Add threading primitives.
...
PiperOrigin-RevId: 562649644
Change-Id: I9c35b270e4b3b50cc7eb5a152f24d71def8e2fcd
2023-09-04 20:09:19 -07:00
Saran Tunyasuvunakool
94a8705ad0
Add mj_markStack and mj_freeStack as public API functions.
...
Also add asan instrumentation to detect stack frame leakages (i.e. `mj_markStack` without a corresponding `mj_freeStack` in the same caller function).
PiperOrigin-RevId: 562625645
Change-Id: I4e3ff66ca0b9d08ed0a95cef45393db8e3053e22
2023-09-04 17:04:11 -07:00
Yuval Tassa
d3ed16e78f
Add mjData.dof_islandind, indexing from dofs into islands.
...
Also fix bug in allocation for constraint islands, added allocation for limit constraints.
PiperOrigin-RevId: 561083128
Change-Id: I9e01d5a5b7454ec3cf60bccadaa0f96f2c0d87d1
2023-08-29 11:06:17 -07:00
Saran Tunyasuvunakool
daa2ac7f8b
Rename nstack to narena, change it and pstack to count bytes.
...
PiperOrigin-RevId: 561066311
Change-Id: I4d0e645e6c254dd906bfc42159e0e99149a7c6c8
2023-08-29 10:13:33 -07:00
Yuval Tassa
df1b3515c7
Add mjData.nl: number of active limit constraints.
...
PiperOrigin-RevId: 561012367
Change-Id: I9a01fec55502f8a90d7435972e477455ae29df15
2023-08-29 06:32:18 -07:00
Yuval Tassa
1dad5993f0
Refactor constraint island representation.
...
Required for constraint solver islanding.
Replace linked lists with `island_{dof,efc}_{num,adr,ind}`, corresponding to the standard `{rownnz,rowadr,colind}` sparse matrix representation. By effectively defining two sparse matrix structures of dimensions `nisland x nv` and `nisland x nefc`, respectively, this representation is more conducive to reuse of existing sparse matrix utility functions, while being cache-friendlier by making sequential indices adjacent in memory.
PiperOrigin-RevId: 559704957
Change-Id: I919362cbef0d5fe5acc4aa2bb4ffb17eee8223a2
2023-08-24 03:48:57 -07:00
Yuval Tassa
b1ecc943bb
Fix multiple bugs related to mjvSceneState.
...
PiperOrigin-RevId: 557864131
Change-Id: I47d9692930c54b1304a5cc161f99bbd81d992a7c
2023-08-17 10:25:39 -07:00
Yuval Tassa
3e034e38b2
Add constraint island discovery
...
PiperOrigin-RevId: 557067599
Change-Id: Ic41e1d0efef02b7a79142518afe49cf9d4e74725
2023-08-15 02:30:05 -07:00
Yuval Tassa
f0f535ed04
Improve order and clarify declarations of arena variables in mjdata.h
...
PiperOrigin-RevId: 554419319
Change-Id: I83b83c56be4b74060f4a108c35ce481b8f354c5e
2023-08-07 03:07:11 -07:00
Yuval Tassa
f67e359532
Add mjtState enum and related mj_stateSize, mj_getState and mj_setState functions.
...
PiperOrigin-RevId: 539667943
Change-Id: I14c34be8ce4c287e529380257b5c5bffc3ab45ce
2023-06-12 08:56:48 -07:00
Yuval Tassa
d82f5ce5a4
Add mjContact.solreffriction, mjModel.pair_solreffriction and related implementation, allowing contact reference acceleration to be different for normal and frictional contact directions. This is required for e.g. elastic frictional collisions.
...
PiperOrigin-RevId: 538513357
Change-Id: Id9eb910fe791cf898c712030cb2c0fc481389c91
2023-06-07 09:40:20 -07:00
Alessio Quaglino
5f132af625
Add midphase and broadphase statistics to mjData.
...
PiperOrigin-RevId: 521387641
Change-Id: Id50f2549d119e364216491a23b107e04d9ebb5b6
2023-04-03 00:59:59 -07:00
Alessio Quaglino
70959c1a2c
Added a collision midphase on geom pairs using rotated AABBs static trees.
...
PiperOrigin-RevId: 517357695
Change-Id: I068fee714d9638be2fb6d042d5d86f8ff970635b
2023-03-17 02:37:29 -07:00
Yuval Tassa
448ab1a299
More consistent formatting of mjdata.h
...
PiperOrigin-RevId: 517142236
Change-Id: I3ee93e10b843cb3f3a73a6a19e6b96f23be05cc3
2023-03-16 09:23:53 -07:00