Commit Graph

109 Commits

Author SHA1 Message Date
Yuval Tassa f905c7fb7f Add mju_fill, mju_symmetrize and mju_eye utility functions.
PiperOrigin-RevId: 484226916
Change-Id: I79593d54e903ddacab0f859bfc6d17eccad7d3a1
2022-10-27 05:28:26 -07:00
Zixing Wang 28ff96fbd8 Update changelog.rst
I tested the version 2.3.0 and found the two ends of a cable object are exposed as B_first & B_last instead of B_left & B_right.
2022-10-19 12:39:27 -04:00
Yuval Tassa 84d168442a Fix link text in changelog.
PiperOrigin-RevId: 481879587
Change-Id: Ifa5a6062d7e6a9f53e1e6d3e2ecf343cabec9fd9
2022-10-18 04:00:19 -07:00
Saran Tunyasuvunakool 57b0b36699 Bump version number to 2.3.0.
PiperOrigin-RevId: 481823754
Change-Id: Ie8c2c65b11178952355830ef019fe2efdf774189
2022-10-17 22:36:59 -07:00
Yuval Tassa c7c6a870b4 Fix rendering of example attribute in XMLreference.rst
PiperOrigin-RevId: 481614595
Change-Id: Ie582b2ba0b3fc89e3296337b0d43c492ac0d65fa
2022-10-17 05:29:28 -07:00
Saran Tunyasuvunakool ec6ea6a69e Fix a memory leak when using Python callbacks.
Fixes #527.

PiperOrigin-RevId: 481173711
Change-Id: Ie176a8bda09727b6be8b6641d3be9a75c675d566
2022-10-14 10:12:11 -07:00
Alessio Quaglino af74044e43 Add YouTube cable videos to changelog.
PiperOrigin-RevId: 481138236
Change-Id: Ibabbc312ea265f9193daf01abd8e81876f1dadfb
2022-10-14 15:18:20 +01:00
Alessio Quaglino ca99ed8664 Check if updating XMLschema is necessary.
PiperOrigin-RevId: 481105158
Change-Id: I7b5199e595a73a4d988d90dee40a8cd759f86218
2022-10-14 03:27:05 -07:00
Alessio Quaglino e250ff0d5a - Added passive forces plugins
- Added new `cable` composite type:
  * The `initial` parameter specifies the joint at the starting boundary: `free`, `ball`, or `none`.
  * The boundary bodies are exposed with the names:`B_left` and `B_right`.
  * The vertex initial positions can be specified directly in the XML with the parameter `vertex`.
  * The orientation of the body frame **is** the orientation of the material frame of the curve.

- Added new `cable` passive force plugin:
  * Twist and bending stiffness can be set separately with the parameters `twist` and `bend`.
  * The stress-free configuration can be set to be the initial one or flat with the flag `flat`.
  * New cable example showing the formation of plectoneme.
  * New coil example.
  * New belt example showing interaction between twist and anisotropy.
  * Added test using cantilever exact solution.

PiperOrigin-RevId: 480033694
Change-Id: I491271bce8fccb185961477e903e5a72d172c8a3
2022-10-10 02:46:51 -07:00
Alessio Quaglino d55e70b576 Add links automatically to all sections of XMLschema.
PiperOrigin-RevId: 479556475
Change-Id: Ie188ecc5c0801bd6bbe27554afcb5436c19f5fa6
2022-10-07 05:33:52 -07:00
Yuval Tassa eac04ce5e9 Reflow all documentation source files to 120 chars.
PiperOrigin-RevId: 479552166
Change-Id: I777df18cf96d35d5260b4003452b7a6da6707a26
2022-10-07 05:02:21 -07:00
Yuval Tassa 6da125ea37 Standardise tags of MJCF elements in XMLreference.rst
PiperOrigin-RevId: 479541059
Change-Id: I98cb7933469f7010870d04608fbb931539769c2e
2022-10-07 03:45:53 -07:00
Saran Tunyasuvunakool f0343ff3ed Fix documentation for nstack to more accurately describe what it does now.
PiperOrigin-RevId: 479409986
Change-Id: Ic7cfadb610e6938bdea58cc01b381fd2bbc21a7c
2022-10-06 14:14:50 -07:00
Saran Tunyasuvunakool 58fd72f53d Dynamically allocate contact and efc_ arrays on a new memory arena.
- Add private function `mj_arenaAlloc`. This is used internally to allocate memory from the arena.

- Add private function `mj_nefc` to count constraints. This function returns a tight upper bound on `d->nefc`. The number of counted constraints can be slightly bigger than exact `d->nefc` in the case of constraints with empty Jacobian, as when placing a frictional tendon between two world sites.

- Add new `memory` attribute to the `size` XML element for specification of arena memory size. This attribute is mutually exclusive with `nstack` and `njmax` specifications, which are now deprecated (but left around for the time being for legacy compatibility).

- Move `d->stack` to the end of the new arena space. The stack now grows in reverse from the end.

PiperOrigin-RevId: 479341539
Change-Id: Ie019c202e0908577ffc6f833a37920858116f667
2022-10-06 10:03:05 -07:00
Alessio Quaglino 3e378e2c37 Autogeneration of XML schema in documentation.
BEGIN_PUBLIC

Add script for the autogeneration of the XML schema in the documentation.

ENG_PUBLIC

PiperOrigin-RevId: 479289884
Change-Id: I49423195fbd1067d4a4d7be78018d446575bc7e1
2022-10-06 05:43:36 -07:00
Alessio Quaglino bc1490b7a8 Add realtime parameter to visual global.
PiperOrigin-RevId: 478775714
Change-Id: Ic2d178a5c57d298d005215219ce8470392c4651b
2022-10-04 07:09:15 -07:00
Kevin Zakka f85cfb8ed2 Fix broken simulate links.
PiperOrigin-RevId: 478775551
Change-Id: I1c4f43c7cbe01f267948f5915a7511744eb0d158
2022-10-04 07:07:57 -07:00
Alessio Quaglino 52c415eb80 Move schema from XMLReference to the new XMLschema RST file.
PiperOrigin-RevId: 478436495
Change-Id: Ib1db879eef2720f897360810eccb198bb9946f72
2022-10-03 01:18:57 -07:00
Kevin Zakka cce35e1816 Add assetdir compiler option.
PiperOrigin-RevId: 478117894
Change-Id: I4a93108e00558034aa02d22047da80adfa4232b2
2022-09-30 17:59:25 -07:00
Kevin Zakka 48f2ed99a5 Enforce strict positivity of extent and znear attributes at parse time.
PiperOrigin-RevId: 477597498
Change-Id: Ic927655cd5ba2fd8fdb1a1a5f7e54ff5040c3370
2022-09-28 17:53:05 -07:00
Saran Tunyasuvunakool 323d6e96fd Fix typo and weird indentation in documentation.
PiperOrigin-RevId: 477285765
Change-Id: I90dd05c85898193f67fa1ec94e9d3ffdaa7701e8
2022-09-27 15:09:24 -07:00
Yuval Tassa a6b338db64 mju_boxQP only reads from the lower triangle of the input Hessian.
- Before this change, an asymmetric Hessian would lead to solver failure. After this change the Hessian is symmetric by definition (upper triangle is ignored).
- API documentation was updated to reflect this contract.

PiperOrigin-RevId: 477135411
Change-Id: I60d011d36853afebac26c359771c217baf101360
2022-09-27 04:32:40 -07:00
Nicholas Nadeau f3b9536c89 build(makefile): .PHONY targets are cumulative 2022-09-26 10:48:00 -04:00
Nicholas Nadeau ea3b48afeb build(makefile): explicit DEFAULT_GOAL 2022-09-26 10:47:18 -04:00
Kevin Zakka c13b9e89b6 Fix typos.
PiperOrigin-RevId: 476632296
Change-Id: I136556acc43d3cd24273fb975a515e72a3cf23d7
2022-09-24 15:25:39 -07:00
Kevin Zakka fe9bd74d3f Fix doc typos.
PiperOrigin-RevId: 476353794
Change-Id: I37db6c440893db55b2d02f78ce52e554b150fa32
2022-09-23 06:28:54 -07:00
Saran Tunyasuvunakool c13979cd17 Add id and name properties to MjModel and MjData indexers.
PiperOrigin-RevId: 476078133
Change-Id: I905cc8ec147ac595cd56f0a42e38013ae1ac6903
2022-09-22 06:19:03 -07:00
Yuval Tassa f151e84a1d Add LQR tutorial colab notebook.
PiperOrigin-RevId: 475551810
Change-Id: Iac8ca4fff88331f325e34fef01b41307603a6416
2022-09-20 07:41:16 -07:00
Saran Tunyasuvunakool 1e2a9a53bc Implement plugin mechanism for actuators and sensors.
PiperOrigin-RevId: 474874088
Change-Id: I65a8ffdf845f4fa0f8266c165883a747ab5812d8
2022-09-16 12:21:29 -07:00
DeepMind 549437ca52 Fix typo in MuJoCo docs.
PiperOrigin-RevId: 474414621
Change-Id: I0585d0f087fcf82ddb0b606f9680a9ffebeddc67
2022-09-14 16:06:04 -07:00
Alessio Quaglino 0d5a1019a5 Update author list and fix doc typo.
PiperOrigin-RevId: 474411316
Change-Id: Ifcfe1ba90ed6d04db9731f96919c78e63fbd43e0
2022-09-14 15:51:56 -07:00
Yuval Tassa f4e7fa97af Add mju_mulVecMatVec, mutiplies a square matrix M by a vector x on both sides. Returns x^T * M * x.
PiperOrigin-RevId: 474292806
Change-Id: I3432469dbe1f02ccf5a13241c7aa12d824cbe034
2022-09-14 08:05:28 -07:00
Yuval Tassa 8957976674 Add mju_boxQP solving box-constrained quadratic programs.
PiperOrigin-RevId: 474256629
Change-Id: I87d70fe6899608122fe0688b017420a3e81afae2
2022-09-14 04:31:34 -07:00
Yuval Tassa 04d44e1e0b Modifications to humanoid model.
- Increased hip flexion maximum.
- Symmetrised shoulder and ankle joints.
- Added hamstring tendons which couple the hip and knee at large flexion values.
- Moved duplicated values into defaults.
- Added two keyframes.
- Improved lighting.
- Changed naming convention.
- Moved description into README.md

PiperOrigin-RevId: 473745371
Change-Id: I95bf915c4caf3d5cf06c325cd73284d78a3d836e
2022-09-12 07:41:17 -07:00
Saran Tunyasuvunakool 00576a3bf9 Update icons to match the new banner and add Windows version info.
Also update the README banner so that the background grid lines scale more reliably to different screen PPI.

PiperOrigin-RevId: 473598837
Change-Id: I43434b35333714922128f8fd625aa6eb62521a7f
2022-09-11 11:04:36 -07:00
Rohan P. Singh 63f39d797e Update models.rst
Fix broken links
2022-09-09 17:07:28 +09:00
Yuval Tassa d04e37e724 Add Models page to docs.
PiperOrigin-RevId: 472730287
Change-Id: Ie1e5fe3bb30a5fffce8bf73b37300d8d10afd579
2022-09-07 08:25:41 -07:00
Saran Tunyasuvunakool 94b6ae2b69 Bump version number to 2.2.2.
PiperOrigin-RevId: 472513958
Change-Id: I42f321c6681fdd42c5f80368f612534aa885af74
2022-09-06 11:32:55 -07:00
Nimrod Gileadi a693a2d981 Don't infer limited attributes automatically by default.
This is an amendment to 4bfc2c0311.

Add an autolimits compiler option. When true, *limited will be inferred from the presence of the *range attributes.
When false, models where limited is not specified, and range is will fail to compile.

PiperOrigin-RevId: 472438650
Change-Id: I489098e879ee695030f44e0d8cd969787e75fb90
2022-09-06 06:11:53 -07:00
Yuval Tassa e3a82247c2 Add sensor matrices to mjd_transitionFD.
- Also add missing `mj_jacSubtreeCom` to Python bindings.

PiperOrigin-RevId: 471610181
Change-Id: I31410d194527ce6a7bdbd01e176f3a41efa52d84
2022-09-01 13:00:36 -07:00
Yuval Tassa 46da1285af Cartesian end-effector control using site transmission.
- Added `refsite` attribute to actuators with `site` transmission.
- Such actuators now have a well defined length and can be used for e.g., Cartesian end-effector control.
- Added example models and documentation describing the new feature.

PiperOrigin-RevId: 471561218
Change-Id: I538f09af9600d5c53992c4a9fed325648aab4fa3
2022-09-01 10:06:52 -07:00
Yuval Tassa 834e8dd506 Improvements to time synchronisation in simulate.
- Improved time-sync logic readability in `PhysicsLoop`.
- Fixed unattainable condition for breaking from stepping loop if data was reset.
- Added measurement of actual real-time tracking.
- Moved slowdown overlay to top left.
- Report slowdown as % of real-time, rather than fraction.
- Report actual slowdown if different than requested (very small timestep, PhysicsLoop cannot keep up) by more than 10%.
- Replaced slowdown increments of 2 with decimal-rounded increments of 10^(1/10). This is a finer-grained scale (approximately 3x as fine) and well suited for decimal percentage representation.
- Maximum slowdown increased to 1000.
- Added `Simulate.refreshrate` with a default of 60Hz, in case videomode refreshrate is 0 (can occur e.g. when forwarding over X11).
- Remove realtime reporting from regular info overlay.
- Various cleanups.

PiperOrigin-RevId: 471547481
Change-Id: Idd2514a4defb1dc431617f3a515cc747c4fd8971
2022-09-01 09:09:48 -07:00
Yuval Tassa fdbbc8bbe0 Allow in-place computation for mju_mulQuat and mju_mulQuatAxis
PiperOrigin-RevId: 471222168
Change-Id: If43210636cf20000b343ad1efd02836465380ebe
2022-08-31 04:09:08 -07:00
DeepMind 366e1c53d4 Clarify docs on MJCF format comparison to inline CSS.
PiperOrigin-RevId: 471009039
Change-Id: I79704fd7939daef50918e5093b092f144436a47d
2022-08-30 09:11:01 -07:00
Alessio Quaglino d26501c0f3 Add two new attributes to weld constraints:
- `anchor` determines the point of wrench application, in the frame of body2.
- `tfratio` scales applied torques relative to applied forces.
- Add visualisation of both anchor points to both weld and connect constraints.
- Add a test model showing how the new weld parameters behave.

PiperOrigin-RevId: 470021901
Change-Id: I3faba0e5dcab2e29ee81096f5ff71ff66d99758c
2022-08-25 10:22:15 -07:00
Yuval Tassa c7e36e9350 Fix typo.
PiperOrigin-RevId: 469880250
Change-Id: I4d7d61ced696bb5dcbaafc9c49188d8a61a20ae5
2022-08-24 19:04:32 -07:00
Yuval Tassa 62b185bd52 Fix indentation in the changelog.
PiperOrigin-RevId: 469825941
Change-Id: Ica8a9561a58c33816633266e51bc85ef1b827974
2022-08-24 14:35:19 -07:00
Yuval Tassa 090fe2db3f Add a disable flag for sensors.
PiperOrigin-RevId: 469473066
Change-Id: I296ed790c6261c4fb15b349540edcb77e53e0567
2022-08-23 09:02:56 -07:00
Alessio Quaglino abc0a39b7a Add two new attributes to weld constraints:
- `anchor` determines the point of wrench application, in the frame of body2.
- `tfratio` scales applied torques relative to applied forces.
- Add visualisation of both anchor points to both weld and connect constraints.
- Add a test model showing how the new weld parameters behave.

PiperOrigin-RevId: 469228149
Change-Id: I836b0791f10fb624607a12ef3c687da991c21789
2022-08-22 10:46:46 -07:00
Alessio Quaglino 8ca5887c20 Add two new attributes to weld constraints:
- `anchor` determines the point of wrench application, in the frame of body2.
- `tfratio` scales applied torques relative to applied forces.
- Add visualisation of both anchor points to both weld and connect constraints.
- Add a test model showing how the new weld parameters behave.

PiperOrigin-RevId: 469190483
Change-Id: I20f6da85b09cd2c4c0b5d29eb8003eabb524e55e
2022-08-22 08:19:22 -07:00