Yuval Tassa
1f4bb39b53
Fix typo in comment.
...
PiperOrigin-RevId: 853703158
Change-Id: Ic123f9273b99eeede1d76d3da20b5b5e9f898dcd
2026-01-08 05:56:29 -08:00
Yuval Tassa
8f5eb1e4f4
Improve bounds checking in engine_util_solve.c.
...
Add checks to ensure `snprintf` does not write beyond the allocated log buffer size, preventing buffer overflows.
Fixes #2661 , #2673
PiperOrigin-RevId: 853643867
Change-Id: Ibdc47810158466dc961767284ac297df98916dac
2026-01-08 02:44:38 -08:00
Yuval Tassa
fa044fe0e5
Use the word "primal" for things that relate to both Newton and CG.
...
PiperOrigin-RevId: 852634373
Change-Id: I2c7641bb92d9c01252f861b9c36e72ef6ddc6e98
2026-01-05 23:56:57 -08:00
Yuval Tassa
70bc7be4bc
Add additional data fields that can be reported by rangefinder sensors.
...
PiperOrigin-RevId: 848316991
Change-Id: Idbf7ba81b4da711a22c23302c8782ab2b0b98d82
2025-12-23 15:33:00 -08:00
Yuval Tassa
9d646e6548
Extend rangefinder sensor to support cameras.
...
PiperOrigin-RevId: 848255889
Change-Id: I6e1a9ed13d29d2242558625a47e24e47ad6e87db
2025-12-23 12:04:49 -08:00
Yuval Tassa
4a871990e9
Fix mismatched signature in engine_ray.c
...
PiperOrigin-RevId: 847834144
Change-Id: Ib42008880f495cf7f3b9e0fd2394a4df64c66ad4
2025-12-22 11:41:23 -08:00
Yuval Tassa
b28b5db680
Add mj_multiRayNormal for multi-ray casting with normal computation (not exposed in public header)
...
PiperOrigin-RevId: 847821078
Change-Id: I616441d3460406a92a10731d1a086af6163e96ad
2025-12-22 11:02:58 -08:00
Yuval Tassa
7fddeeaff6
Minor fixes to mj_multiRay
...
PiperOrigin-RevId: 847780959
Change-Id: I3588415f215bd5f1592bec6678a5bae45d5f0980
2025-12-22 08:52:36 -08:00
Yuval Tassa
223ba99ec2
Add mju_rayFlexNormal (not exposed in public header)
...
PiperOrigin-RevId: 847746174
Change-Id: Ia8f597d296bf6a3eed9bd48b1c39b2ff2b5fcf90
2025-12-22 06:49:22 -08:00
Yuval Tassa
c7f5766345
Add frustum visualization for orthographic cameras.
...
PiperOrigin-RevId: 847698917
Change-Id: I13633e8ba2d4718b127a5838c404ab74c6180e3d
2025-12-22 03:43:54 -08:00
Yuval Tassa
b8a4ac5d48
Refactor camera orthographic attribute to projection enum.
...
PiperOrigin-RevId: 847069028
Change-Id: I7f686fe654e9b56519cab8bd2f37c9cc40091d3f
2025-12-20 03:28:29 -08:00
Yuval Tassa
849a650143
Refactor mju_cholUpdateSparse to use a dense accumulator, 1.5-2x function speedup.
...
PiperOrigin-RevId: 846754379
Change-Id: Ie599658db2907a26095072d97d07b99a693050dc
2025-12-19 08:57:45 -08:00
Yuval Tassa
76e0a78b32
Use two-step sparse Cholesky in Newton solver.
...
17% overall speedup for `100_humanoids.xml` as measured by `testspeed`
PiperOrigin-RevId: 846723342
Change-Id: Ibc41487bfc576c992f14853640d0b6000f5b47b2
2025-12-19 07:20:09 -08:00
Yuval Tassa
45b0153067
Refactor sparse Cholesky factorization into symbolic and numeric phases.
...
The new symbolic function is a generalization of the function it replaces. In this CL it takes two unused temp arrays. The actual change in behavior happens in the followup.
New benchmark test output below ("L" is 2 humanoids and 100 free objects, "XL" is 100 humanoids). Note that `symbolic` is only ever called once per Newton iteration, while `numeric` is sometimes called multiple times (when the rank-1 update fails), hence timing them separately is valuable.
```
Benchmark Time(ns) CPU(ns) Iterations
--------------------------------------------------------------
BM_old_L_mean 84382 84703 19547 11.807k items/s
BM_symbolic_L_mean 16345 16381 88414 61.055k items/s
BM_numeric_L_mean 10986 10994 120000 90.999k items/s
BM_old_XL_mean 1241208 1244212 1200 803.924 items/s
BM_symbolic_XL_mean 130917 131042 12720 7.631k items/s
BM_numeric_XL_mean 77004 76767 21116 13.029k items/s
```
PiperOrigin-RevId: 846704054
Change-Id: Ib0c365724d63bf2b81606ca5353756a6496c3a26
2025-12-19 06:11:55 -08:00
Haroon Qureshi
7190bd4912
Add flag for depth rendering.
...
PiperOrigin-RevId: 846203691
Change-Id: I5ec494446bcfc1f7c81536a87dd24f9967973563
2025-12-18 04:36:26 -08:00
Yuval Tassa
08b4b4144d
Add tests for mju_cholUpdate and mju_cholUpdateSparse.
...
PiperOrigin-RevId: 845229292
Change-Id: Ide1406f85e49fe5a5b339bedff7ff6dd8099e5e8
2025-12-16 05:59:40 -08:00
Yuval Tassa
2b9940bc67
Add private function mju_fillInt
...
PiperOrigin-RevId: 845217293
Change-Id: I604372ab7ea7f4d47d9427d36dc8cd78e60d84ca
2025-12-16 05:16:50 -08:00
Yuval Tassa
ccbfc6c8bf
Improve line search initialization logic and first Newton step acceptance.
...
PiperOrigin-RevId: 844316808
Change-Id: I0a7639a486c75f122db7f8b8c0df42ef810f060c
2025-12-14 01:50:52 -08:00
Yuval Tassa
e3a860de69
Update function signatures in engine_util_spatial.h to appease fussy GCC
...
PiperOrigin-RevId: 843752024
Change-Id: I041efe6acc5a4a44488bb9ec09101681d47c37c5
2025-12-12 10:47:31 -08:00
Yuval Tassa
499291e5c2
Fix aliasing issues in engine_core_smooth.c
...
PiperOrigin-RevId: 843699660
Change-Id: I21d4ed09284624ce80fcd5b1d572b9084e95e1f1
2025-12-12 08:25:06 -08:00
Yuval Tassa
157d261701
Fix aliasing issues in engine_collision_primitive.c
...
PiperOrigin-RevId: 843665186
Change-Id: I76cd479991f6083495e7ad95c2f57a8ef8fde925
2025-12-12 06:36:34 -08:00
Yuval Tassa
9fc37a3be4
Fix aliasing violations in engine_collision_box.c
...
PiperOrigin-RevId: 843647612
Change-Id: If8ad12c058a30ec475b9eb47d315019edbb8a7bb
2025-12-12 05:35:42 -08:00
Yuval Tassa
600f0f20bc
Introduce private header engine_inline.h exploiting restrict and avoiding loops and copies in some commonly used utility functions.
...
PiperOrigin-RevId: 843635464
Change-Id: I3b0553eea98424ccc7def77e3769e2994f3e9014
2025-12-12 04:49:29 -08:00
Yuval Tassa
1ff74ba810
Change the type of state signature arguments from unsigned int to int
...
PiperOrigin-RevId: 843162492
Change-Id: I51d3324f088e8055898e115bdd32267c5950a412
2025-12-11 04:34:36 -08:00
Haroon Qureshi
caec236b2f
Make mj_loadModelBuffer a public API.
...
PiperOrigin-RevId: 843105390
Change-Id: I4058471b4cf64995dd5ab43e9c8c24e322004b62
2025-12-11 01:24:17 -08:00
Yuval Tassa
6bcb22730d
Minor clean-up of some visualization code.
...
Move mjvGeom acquire/release into helper functions, where possible.
PiperOrigin-RevId: 842675435
Change-Id: Ie5aaf206927251e79b20cc4101a7017645d5dd4b
2025-12-10 05:09:53 -08:00
Yuval Tassa
f06aa45ea6
Consolidate ray normal functions.
...
PiperOrigin-RevId: 842300829
Change-Id: Ic5e921084710cb044a4f49ea9b566d277838aaa1
2025-12-09 10:36:10 -08:00
Yuval Tassa
5b1fa666fb
Add mj_rayHfieldNormal (not exposed in public header)
...
PiperOrigin-RevId: 842259581
Change-Id: I27d6c46024d55addbc22eed276331e2ef5acfa7d
2025-12-09 08:53:47 -08:00
Yuval Tassa
f65c1cdfd1
Add mj_raySdfNormal (not exposed in public header)
...
PiperOrigin-RevId: 842178540
Change-Id: I5d2db555e9b6c0fa0daaa8bc14c7781663e4c94e
2025-12-09 04:43:39 -08:00
Gabe Oppenheimer
96e376451c
Update MuJoCo version from 3.4.0 to 3.4.1 following the 3.4.0 release
...
PiperOrigin-RevId: 840914696
Change-Id: Iffabc70dd174384ba1c535cafcd34982ff8e5712
2025-12-05 16:15:56 -08:00
Yuval Tassa
19e2d0ae2f
Add mj_fwdKinematics and a table improving documentation of the MuJoCo computation pipeline structure.
...
PiperOrigin-RevId: 838768130
Change-Id: I1a22d5cdca7db704ba4cea1667fcbecb16b87005
2025-12-01 07:39:00 -08:00
Yuval Tassa
ad24889bb9
Add mj_rayMeshNormal (not exposed in public header)
...
PiperOrigin-RevId: 838707353
Change-Id: If31d2454e0668f750bcba21ee42f81ef962e9097
2025-12-01 04:13:52 -08:00
Yuval Tassa
dc5c2faf91
Cosmetic cleanup in engine_collision_sdf.c
...
PiperOrigin-RevId: 837554740
Change-Id: Ic962af6a2c5f9f4c7edd48cbdf110ed11bc5e378
2025-11-27 09:24:56 -08:00
Kyle Bayes
ae24034f24
Refactor hfield-convex collision code. This should be a no-op.
...
PiperOrigin-RevId: 837045492
Change-Id: I82851615c7f69774da83cab361316e5a6e9982c6
2025-11-26 03:26:56 -08:00
Gabe Oppenheimer
b6e162d6fa
Update MuJoCo version from 3.3.8 to 3.4.0
...
PiperOrigin-RevId: 836719207
Change-Id: I28cbc90cee42aebfb5a4201561289ef6747cdc83
2025-11-25 10:16:02 -08:00
Kyle Bayes
b98379372e
Refactor epaWitness.
...
PiperOrigin-RevId: 836597852
Change-Id: Ib75dae07bda47764f937f32a9476ef3266f02056
2025-11-25 03:44:57 -08:00
Yuval Tassa
888d3a7b07
Add mj_copyState
...
PiperOrigin-RevId: 836588419
Change-Id: I7609e121dc0ac697d4d015d4244bdd5962650def
2025-11-25 03:10:30 -08:00
Kyle Bayes
a105042734
Tidy up primitive support functions.
...
PiperOrigin-RevId: 835329730
Change-Id: I5ad5e85b5e8284bf5e3769ab504686b7859a6ea4
2025-11-21 13:00:49 -08:00
Kyle Bayes
bb488fec29
Remove MPR from comment.
...
PiperOrigin-RevId: 835224192
Change-Id: I659231b30d4c00d9bf586f0efdac138331862df7
2025-11-21 07:58:26 -08:00
Yuval Tassa
d1317fd1a5
Add ray normal computation for primitives (currently private)
...
PiperOrigin-RevId: 834294539
Change-Id: I176f13a8f91dede589338fc44e099a16bac0b580
2025-11-19 08:01:02 -08:00
Yuval Tassa
86a77ff8eb
Change mjtSize from uint64_t to int64_t.
...
This change makes `mjtSize` a signed, rather than unsigned 64-bit integer. While sizes are non-negative, the type promotion rules for unsigned integers can lead to unituitive downstream bugs, and 8 billion terabytes are enough bytes.
PiperOrigin-RevId: 834292964
Change-Id: Iea9c47c2a5d80fde63851a543d59ed0549db0f01
2025-11-19 07:55:54 -08:00
Alessio Quaglino
3aa973894c
Fast flex: Interpolate contact points directly.
...
For each contact point, we used to first compute the vertex weights on a triangle and then add a contact point per vertex using the flex interpolation (trilinear or quadratic), obtaining the total weight by multiplying the vertex weight and the basis function value at that vertex. After this change, each contact point is added directly by evaluating the basis function directly a the point.
PiperOrigin-RevId: 834218909
Change-Id: Ic0fdb03fc0ef5478798c293df99204fd33116fd1
2025-11-19 03:40:17 -08:00
Yuval Tassa
e18e35f967
Fix normal only for libccd during hfield collisions.
...
PiperOrigin-RevId: 833933161
Change-Id: I3a4ff044276d9c7305154da09b440168f0f22305
2025-11-18 12:55:56 -08:00
Alessio Quaglino
971e73ab04
Remove unused argument from mj_vertBodyWeight.
...
PiperOrigin-RevId: 833744032
Change-Id: I26049003b1f45f8cac60c7ebc0b5abca5526177f
2025-11-18 03:28:25 -08:00
Haroon Qureshi
e882399eb0
Use mjTHREADLOCAL macro instead of intrinsic.
...
Fixes #2927 .
PiperOrigin-RevId: 833336768
Change-Id: I62bfdc7018853fc8459e03ba079fc6a15e97c7d0
2025-11-17 07:50:02 -08:00
Yuval Tassa
a66cf303f8
Clean up ray functions
...
PiperOrigin-RevId: 833299985
Change-Id: I30aabe889ccc5900ff0e50a578e98e176d3effa4
2025-11-17 05:47:44 -08:00
Haroon Qureshi
6c15c711ee
Make mjv_cameraFrame and mjv_cameraFrustum public.
...
PiperOrigin-RevId: 832187804
Change-Id: I74d05d7fe03bc81bd05a823c7c9791bca12e3079
2025-11-14 00:03:18 -08:00
Yuval Tassa
042c5223a6
Change mj_sizeModel return type to mjtSize.
...
PiperOrigin-RevId: 831768095
Change-Id: I079fbadc403b32a3ce8a73fe21b2cd66391401c3
2025-11-13 02:32:18 -08:00
Kyle Bayes
a168b3ef7f
Refactor hill climbing support function.
...
PiperOrigin-RevId: 831754211
Change-Id: I77c89c52fde86183b8e2e61a1fc71764119f208e
2025-11-13 01:47:27 -08:00
Yuval Tassa
b8512b9d1f
Fix bug related to sleeping static children of mocap bodies.
...
PiperOrigin-RevId: 831376685
Change-Id: I8891a1d7dc6efc037e9ade5c7e8dd5c35c7e455e
2025-11-12 07:20:03 -08:00