Reformat MJCF array in xml_native_reader.cc.

Undo mistaken auto-format of the schema table, revert it to be more human-readable.

PiperOrigin-RevId: 941628625
Change-Id: Ifc51996da9a7df9d1a03392a0ade256fb8b1c151
This commit is contained in:
Yuval Tassa
2026-07-02 04:44:53 -07:00
committed by Copybara-Service
parent c3adb50898
commit cdc35dec38
+259 -488
View File
@@ -166,62 +166,33 @@ static void UpdateString(string& psuffix, int count, int i) {
//---------------------------------- MJCF schema --------------------------------------------------- //---------------------------------- MJCF schema ---------------------------------------------------
// clang-format off
std::vector<const char*> MJCF[nMJCF] = { std::vector<const char*> MJCF[nMJCF] = {
{"mujoco", "!", "model"}, {"mujoco", "!", "model"},
{"<"}, {"<"},
{"compiler", "*", {"compiler", "*", "autolimits", "boundmass", "boundinertia", "settotalmass",
"autolimits", "boundmass", "balanceinertia", "strippath", "coordinate", "angle", "fitaabb", "eulerseq",
"boundinertia", "settotalmass", "meshdir", "texturedir", "discardvisual", "usethread", "fusestatic", "inertiafromgeom",
"balanceinertia", "strippath", "inertiagrouprange", "saveinertial", "assetdir", "alignfree", "conflict"},
"coordinate", "angle",
"fitaabb", "eulerseq",
"meshdir", "texturedir",
"discardvisual", "usethread",
"fusestatic", "inertiafromgeom",
"inertiagrouprange", "saveinertial",
"assetdir", "alignfree",
"conflict"},
{"<"}, {"<"},
{"lengthrange", "?", "mode", "useexisting", "uselimit", "accel", "maxforce", {"lengthrange", "?", "mode", "useexisting", "uselimit",
"timeconst", "timestep", "inttotal", "interval", "tolrange"}, "accel", "maxforce", "timeconst", "timestep",
"inttotal", "interval", "tolrange"},
{">"}, {">"},
{"option", {"option", "*",
"*", "timestep", "impratio", "tolerance", "ls_tolerance", "noslip_tolerance",
"timestep", "ccd_tolerance", "sleep_tolerance", "gravity", "wind", "magnetic", "density", "viscosity",
"impratio", "o_margin", "o_solref", "o_solimp", "o_friction",
"tolerance", "integrator", "cone", "jacobian",
"ls_tolerance", "solver", "iterations", "ls_iterations", "noslip_iterations", "ccd_iterations",
"noslip_tolerance", "sdf_iterations", "sdf_initpoints", "actuatorgroupdisable"},
"ccd_tolerance",
"sleep_tolerance",
"gravity",
"wind",
"magnetic",
"density",
"viscosity",
"o_margin",
"o_solref",
"o_solimp",
"o_friction",
"integrator",
"cone",
"jacobian",
"solver",
"iterations",
"ls_iterations",
"noslip_iterations",
"ccd_iterations",
"sdf_iterations",
"sdf_initpoints",
"actuatorgroupdisable"},
{"<"}, {"<"},
{"flag", "?", "constraint", "equality", "frictionloss", {"flag", "?", "constraint", "equality", "frictionloss", "limit", "contact",
"limit", "contact", "spring", "damper", "gravity", "spring", "damper", "gravity", "clampctrl", "warmstart", "filterparent", "actuation",
"clampctrl", "warmstart", "filterparent", "actuation", "refsafe", "refsafe", "sensor", "midphase", "eulerdamp", "autoreset", "nativeccd", "island",
"sensor", "midphase", "eulerdamp", "autoreset", "nativeccd", "override", "energy", "fwdinv", "invdiscrete", "multiccd", "sleep",
"island", "override", "energy", "fwdinv", "invdiscrete", "diagexact"},
"multiccd", "sleep", "diagexact"},
{">"}, {">"},
{"size", "*", "memory", "njmax", "nconmax", "nstack", "nuserdata", "nkey", {"size", "*", "memory", "njmax", "nconmax", "nstack", "nuserdata", "nkey",
@@ -230,50 +201,26 @@ std::vector<const char*> MJCF[nMJCF] = {
{"visual", "*"}, {"visual", "*"},
{"<"}, {"<"},
{"global", "?", "cameraid", "orthographic", "fovy", "ipd", "azimuth", {"global", "?", "cameraid", "orthographic", "fovy", "ipd", "azimuth", "elevation",
"elevation", "linewidth", "glow", "offwidth", "offheight", "realtime", "linewidth", "glow", "offwidth", "offheight", "realtime", "ellipsoidinertia",
"ellipsoidinertia", "bvactive"}, "bvactive"},
{"quality", "?", "shadowsize", "offsamples", "numslices", "numstacks", {"quality", "?", "shadowsize", "offsamples", "numslices", "numstacks",
"numquads"}, "numquads"},
{"headlight", "?", "ambient", "diffuse", "specular", "active"}, {"headlight", "?", "ambient", "diffuse", "specular", "active"},
{"map", "?", "stiffness", "stiffnessrot", "force", "torque", "alpha", {"map", "?", "stiffness", "stiffnessrot", "force", "torque", "alpha",
"fogstart", "fogend", "znear", "zfar", "haze", "shadowclip", "shadowscale", "fogstart", "fogend", "znear", "zfar", "haze", "shadowclip", "shadowscale",
"actuatortendon"}, "actuatortendon"},
{"scale", "?", "forcewidth", "contactwidth", "contactheight", "connect", {"scale", "?", "forcewidth", "contactwidth", "contactheight", "connect", "com",
"com", "camera", "light", "selectpoint", "jointlength", "jointwidth", "camera", "light", "selectpoint", "jointlength", "jointwidth", "actuatorlength",
"actuatorlength", "actuatorwidth", "framelength", "framewidth", "actuatorwidth", "framelength", "framewidth", "constraint", "slidercrank", "frustum"},
"constraint", "slidercrank", "frustum"}, {"rgba", "?", "fog", "haze", "force", "inertia", "joint",
{"rgba", "actuator", "actuatornegative", "actuatorpositive", "com",
"?", "camera", "light", "selectpoint", "connect", "contactpoint", "contactforce",
"fog", "contactfriction", "contacttorque", "contactgap", "rangefinder",
"haze", "constraint", "slidercrank", "crankbroken", "frustum", "bv", "bvactive"},
"force",
"inertia",
"joint",
"actuator",
"actuatornegative",
"actuatorpositive",
"com",
"camera",
"light",
"selectpoint",
"connect",
"contactpoint",
"contactforce",
"contactfriction",
"contacttorque",
"contactgap",
"rangefinder",
"constraint",
"slidercrank",
"crankbroken",
"frustum",
"bv",
"bvactive"},
{">"}, {">"},
{"statistic", "*", "meaninertia", "meanmass", "meansize", "extent", {"statistic", "*", "meaninertia", "meanmass", "meansize", "extent", "center"},
"center"},
{"default", "R", "class"}, {"default", "R", "class"},
{"<"}, {"<"},
@@ -283,92 +230,60 @@ std::vector<const char*> MJCF[nMJCF] = {
{"<"}, {"<"},
{"layer", "*", "texture", "role"}, {"layer", "*", "texture", "role"},
{">"}, {">"},
{"joint", {"joint", "?", "type", "group", "pos", "axis", "springdamper",
"?", "limited", "actuatorfrclimited", "solreflimit", "solimplimit",
"type", "solreffriction", "solimpfriction", "stiffness", "range", "actuatorfrcrange",
"group", "actuatorgravcomp", "margin", "ref", "springref", "armature", "damping",
"pos", "frictionloss", "user"},
"axis", {"geom", "?", "type", "pos", "quat", "contype", "conaffinity", "condim",
"springdamper", "group", "priority", "size", "material", "friction", "mass", "density",
"limited", "shellinertia", "solmix", "solref", "solimp",
"actuatorfrclimited", "margin", "gap", "fromto", "axisangle", "xyaxes", "zaxis", "euler",
"solreflimit", "hfield", "mesh", "fitscale", "rgba", "fluidshape", "fluidcoef", "user"},
"solimplimit", {"site", "?", "type", "group", "pos", "quat", "material",
"solreffriction", "size", "fromto", "axisangle", "xyaxes", "zaxis", "euler", "rgba", "user"},
"solimpfriction", {"camera", "?", "projection", "fovy", "ipd", "resolution", "output", "pos", "quat",
"stiffness", "axisangle", "xyaxes", "zaxis", "euler", "mode", "focal", "focalpixel",
"range", "principal", "principalpixel", "sensorsize", "user"},
"actuatorfrcrange",
"actuatorgravcomp",
"margin",
"ref",
"springref",
"armature",
"damping",
"frictionloss",
"user"},
{"geom", "?", "type", "pos", "quat",
"contype", "conaffinity", "condim", "group", "priority",
"size", "material", "friction", "mass", "density",
"shellinertia", "solmix", "solref", "solimp", "margin",
"gap", "fromto", "axisangle", "xyaxes", "zaxis",
"euler", "hfield", "mesh", "fitscale", "rgba",
"fluidshape", "fluidcoef", "user"},
{"site", "?", "type", "group", "pos", "quat", "material", "size", "fromto",
"axisangle", "xyaxes", "zaxis", "euler", "rgba", "user"},
{"camera", "?", "projection",
"fovy", "ipd", "resolution",
"output", "pos", "quat",
"axisangle", "xyaxes", "zaxis",
"euler", "mode", "focal",
"focalpixel", "principal", "principalpixel",
"sensorsize", "user"},
{"light", "?", "pos", "dir", "bulbradius", "intensity", "range", {"light", "?", "pos", "dir", "bulbradius", "intensity", "range",
"directional", "type", "castshadow", "active", "attenuation", "cutoff", "directional", "type", "castshadow", "active", "attenuation", "cutoff", "exponent",
"exponent", "ambient", "diffuse", "specular", "mode"}, "ambient", "diffuse", "specular", "mode"},
{"pair", "?", "condim", "friction", "solref", "solreffriction", "solimp", {"pair", "?", "condim", "friction", "solref", "solreffriction", "solimp",
"gap", "margin"}, "gap", "margin"},
{"equality", "?", "active", "solref", "solimp"}, {"equality", "?", "active", "solref", "solimp"},
{"tendon", "?", "group", "limited", "range", "solreflimit", "solimplimit", {"tendon", "?", "group", "limited", "range",
"solreffriction", "solimpfriction", "frictionloss", "springlength", "solreflimit", "solimplimit", "solreffriction", "solimpfriction",
"width", "material", "margin", "stiffness", "damping", "rgba", "user"}, "frictionloss", "springlength", "width", "material",
{"general", "?", "ctrllimited", "forcelimited", "actlimited", "margin", "stiffness", "damping", "rgba", "user"},
"ctrlrange", "forcerange", "actrange", "gear", "damping", {"general", "?", "ctrllimited", "forcelimited", "actlimited", "ctrlrange", "forcerange",
"armature", "cranklength", "user", "group", "nsample", "actrange", "gear", "damping", "armature", "cranklength", "user", "group", "nsample",
"interp", "delay", "actdim", "dyntype", "gaintype", "interp", "delay", "actdim", "dyntype", "gaintype", "biastype", "dynprm", "gainprm",
"biastype", "dynprm", "gainprm", "biasprm", "actearly"}, "biasprm", "actearly"},
{"motor", "?", "ctrllimited", "forcelimited", "ctrlrange", "forcerange", {"motor", "?", "ctrllimited", "forcelimited", "ctrlrange", "forcerange",
"gear", "damping", "armature", "cranklength", "user", "group", "nsample", "gear", "damping", "armature", "cranklength", "user", "group", "nsample", "interp", "delay"},
"interp", "delay"}, {"position", "?", "ctrllimited", "forcelimited", "ctrlrange", "inheritrange", "forcerange",
{"position", "?", "ctrllimited", "forcelimited", "ctrlrange", "gear", "damping", "armature", "cranklength", "user", "group", "nsample", "interp",
"inheritrange", "forcerange", "gear", "damping", "armature",
"cranklength", "user", "group", "nsample", "interp",
"delay", "kp", "kv", "dampratio", "timeconst"}, "delay", "kp", "kv", "dampratio", "timeconst"},
{"velocity", "?", "ctrllimited", "forcelimited", "ctrlrange", "forcerange", {"velocity", "?", "ctrllimited", "forcelimited", "ctrlrange", "forcerange", "gear",
"gear", "damping", "armature", "cranklength", "user", "group", "nsample", "damping", "armature", "cranklength", "user", "group", "nsample", "interp", "delay", "kv"},
"interp", "delay", "kv"}, {"intvelocity", "?", "ctrllimited", "forcelimited", "ctrlrange", "forcerange", "actrange",
{"intvelocity", "?", "ctrllimited", "forcelimited", "ctrlrange", "inheritrange", "gear", "damping", "armature", "cranklength", "user", "group",
"forcerange", "actrange", "inheritrange", "gear", "damping", "nsample", "interp", "delay", "kp", "kv", "dampratio"},
"armature", "cranklength", "user", "group", "nsample", {"damper", "?", "forcelimited", "ctrlrange", "forcerange",
"interp", "delay", "kp", "kv", "dampratio"}, "gear", "damping", "armature", "cranklength", "user", "group", "nsample", "interp", "delay", "kv"},
{"damper", "?", "forcelimited", "ctrlrange", "forcerange", "gear",
"damping", "armature", "cranklength", "user", "group", "nsample", "interp",
"delay", "kv"},
{"cylinder", "?", "ctrllimited", "forcelimited", "ctrlrange", "forcerange", {"cylinder", "?", "ctrllimited", "forcelimited", "ctrlrange", "forcerange",
"gear", "damping", "armature", "cranklength", "user", "group", "nsample", "gear", "damping", "armature", "cranklength", "user", "group", "nsample", "interp", "delay",
"interp", "delay", "timeconst", "area", "diameter", "bias"}, "timeconst", "area", "diameter", "bias"},
{"muscle", "?", "ctrllimited", "forcelimited", "ctrlrange", {"muscle", "?", "ctrllimited", "forcelimited", "ctrlrange", "forcerange",
"forcerange", "gear", "damping", "armature", "cranklength", "gear", "damping", "armature", "cranklength", "user", "group", "nsample", "interp", "delay",
"user", "group", "nsample", "interp", "delay", "timeconst", "range", "force", "scale",
"timeconst", "range", "force", "scale", "lmin", "lmin", "lmax", "vmax", "fpmax", "fvmax"},
"lmax", "vmax", "fpmax", "fvmax"}, {"adhesion", "?", "forcelimited", "ctrlrange", "forcerange",
{"adhesion", "?", "forcelimited", "ctrlrange", "forcerange", "gain", "user", "gain", "user", "group", "nsample", "interp", "delay"},
"group", "nsample", "interp", "delay"}, {"dcmotor", "?", "ctrllimited", "ctrlrange",
{"dcmotor", "?", "ctrllimited", "ctrlrange", "gear", "gear", "damping", "armature", "cranklength", "user", "group", "nsample", "interp", "delay",
"damping", "armature", "cranklength", "user", "group", "motorconst", "resistance", "nominal", "saturation",
"nsample", "interp", "delay", "motorconst", "resistance", "inductance", "cogging", "controller", "input", "thermal", "lugre"},
"nominal", "saturation", "inductance", "cogging", "controller",
"input", "thermal", "lugre"},
{">"}, {">"},
{"extension", "*"}, {"extension", "*"},
@@ -403,67 +318,40 @@ std::vector<const char*> MJCF[nMJCF] = {
{"config", "*", "key", "value"}, {"config", "*", "key", "value"},
{">"}, {">"},
{">"}, {">"},
{"hfield", "*", "name", "content_type", "file", "nrow", "ncol", "size", {"hfield", "*", "name", "content_type", "file", "nrow", "ncol", "size", "elevation"},
"elevation"}, {"skin", "*", "name", "file", "material", "rgba", "inflate",
{"skin", "*", "name", "file", "material", "rgba", "inflate", "vertex", "vertex", "texcoord", "face", "group"},
"texcoord", "face", "group"},
{"<"}, {"<"},
{"bone", "*", "body", "bindpos", "bindquat", "vertid", "vertweight"}, {"bone", "*", "body", "bindpos", "bindquat", "vertid", "vertweight"},
{">"}, {">"},
{"texture", "*", "name", "type", "colorspace", {"texture", "*", "name", "type", "colorspace", "content_type", "file", "gridsize",
"content_type", "file", "gridsize", "gridlayout", "fileright", "gridlayout", "fileright", "fileleft", "fileup", "filedown", "filefront", "fileback",
"fileleft", "fileup", "filedown", "filefront", "fileback", "builtin", "rgb1", "rgb2", "mark", "markrgb", "random", "width", "height",
"builtin", "rgb1", "rgb2", "mark", "markrgb", "hflip", "vflip", "nchannel"},
"random", "width", "height", "hflip", "vflip",
"nchannel"},
{"material", "*", "name", "class", "texture", "texrepeat", "texuniform", {"material", "*", "name", "class", "texture", "texrepeat", "texuniform",
"emission", "specular", "shininess", "reflectance", "metallic", "emission", "specular", "shininess", "reflectance", "metallic", "roughness", "rgba"},
"roughness", "rgba"},
{"<"}, {"<"},
{"layer", "*", "texture", "role"}, {"layer", "*", "texture", "role"},
{">"}, {">"},
{"model", "*", "name", "file", "content_type"}, {"model", "*", "name", "file", "content_type"},
{">"}, {">"},
{"body", "R", "name", "childclass", "pos", "quat", "mocap", "axisangle", {"body", "R", "name", "childclass", "pos", "quat", "mocap",
"xyaxes", "zaxis", "euler", "gravcomp", "sleep", "user"}, "axisangle", "xyaxes", "zaxis", "euler", "gravcomp", "sleep", "user"},
{"<"}, {"<"},
{"inertial", "?", "pos", "quat", "mass", "diaginertia", "axisangle", {"inertial", "?", "pos", "quat", "mass", "diaginertia",
"xyaxes", "zaxis", "euler", "fullinertia"}, "axisangle", "xyaxes", "zaxis", "euler", "fullinertia"},
{"joint", {"joint", "*", "name", "class", "type", "group", "pos", "axis",
"*", "springdamper", "limited", "actuatorfrclimited",
"name", "solreflimit", "solimplimit", "solreffriction", "solimpfriction",
"class", "stiffness", "range", "actuatorfrcrange", "actuatorgravcomp", "margin", "ref",
"type", "springref", "armature", "damping", "frictionloss", "user"},
"group",
"pos",
"axis",
"springdamper",
"limited",
"actuatorfrclimited",
"solreflimit",
"solimplimit",
"solreffriction",
"solimpfriction",
"stiffness",
"range",
"actuatorfrcrange",
"actuatorgravcomp",
"margin",
"ref",
"springref",
"armature",
"damping",
"frictionloss",
"user"},
{"freejoint", "*", "name", "group", "align"}, {"freejoint", "*", "name", "group", "align"},
{"geom", "*", "name", "class", "type", {"geom", "*", "name", "class", "type", "contype", "conaffinity", "condim",
"contype", "conaffinity", "condim", "group", "priority", "group", "priority", "size", "material", "friction", "mass", "density",
"size", "material", "friction", "mass", "density", "shellinertia", "solmix", "solref", "solimp",
"shellinertia", "solmix", "solref", "solimp", "margin", "margin", "gap", "fromto", "pos", "quat", "axisangle", "xyaxes", "zaxis", "euler",
"gap", "fromto", "pos", "quat", "axisangle", "hfield", "mesh", "fitscale", "rgba", "fluidshape", "fluidcoef", "user"},
"xyaxes", "zaxis", "euler", "hfield", "mesh",
"fitscale", "rgba", "fluidshape", "fluidcoef", "user"},
{"<"}, {"<"},
{"plugin", "*", "plugin", "instance"}, {"plugin", "*", "plugin", "instance"},
{"<"}, {"<"},
@@ -471,52 +359,45 @@ std::vector<const char*> MJCF[nMJCF] = {
{">"}, {">"},
{">"}, {">"},
{"attach", "*", "model", "body", "frame", "prefix"}, {"attach", "*", "model", "body", "frame", "prefix"},
{"site", "*", "name", "class", "type", "group", "pos", "quat", "material", {"site", "*", "name", "class", "type", "group", "pos", "quat",
"size", "fromto", "axisangle", "xyaxes", "zaxis", "euler", "rgba", "user"}, "material", "size", "fromto", "axisangle", "xyaxes", "zaxis", "euler", "rgba", "user"},
{"camera", "*", "name", "class", "projection", {"camera", "*", "name", "class", "projection", "fovy", "ipd", "resolution", "output", "pos",
"fovy", "ipd", "resolution", "output", "pos", "quat", "axisangle", "xyaxes", "zaxis", "euler", "mode", "target",
"quat", "axisangle", "xyaxes", "zaxis", "euler", "focal", "focalpixel", "principal", "principalpixel", "sensorsize", "user"},
"mode", "target", "focal", "focalpixel", "principal", {"light", "*", "name", "class", "directional", "type", "castshadow", "active",
"principalpixel", "sensorsize", "user"}, "pos", "dir", "bulbradius", "intensity", "range", "attenuation", "cutoff",
{"light", "*", "name", "class", "directional", "exponent", "ambient", "diffuse", "specular", "mode", "target", "texture"},
"type", "castshadow", "active", "pos", "dir",
"bulbradius", "intensity", "range", "attenuation", "cutoff",
"exponent", "ambient", "diffuse", "specular", "mode",
"target", "texture"},
{"plugin", "*", "plugin", "instance"}, {"plugin", "*", "plugin", "instance"},
{"<"}, {"<"},
{"config", "*", "key", "value"}, {"config", "*", "key", "value"},
{">"}, {">"},
{"composite", "*", "prefix", "type", "count", "offset", "vertex", "initial", {"composite", "*", "prefix", "type", "count", "offset",
"curve", "size", "quat"}, "vertex", "initial", "curve", "size", "quat"},
{"<"}, {"<"},
{"joint", "*", "kind", "group", "stiffness", "damping", "armature", {"joint", "*", "kind", "group", "stiffness", "damping", "armature",
"solreffix", "solimpfix", "type", "axis", "limited", "range", "margin", "solreffix", "solimpfix", "type", "axis",
"solreflimit", "solimplimit", "frictionloss", "solreffriction", "limited", "range", "margin", "solreflimit", "solimplimit",
"solimpfriction"}, "frictionloss", "solreffriction", "solimpfriction"},
{"skin", "?", "texcoord", "material", "group", "rgba", "inflate", {"skin", "?", "texcoord", "material", "group", "rgba", "inflate", "subgrid"},
"subgrid"}, {"geom", "?", "type", "contype", "conaffinity", "condim",
{"geom", "?", "type", "contype", "conaffinity", "condim", "group", "group", "priority", "size", "material", "rgba", "friction", "mass",
"priority", "size", "material", "rgba", "friction", "mass", "density", "density", "solmix", "solref", "solimp", "margin", "gap"},
"solmix", "solref", "solimp", "margin", "gap"},
{"site", "?", "group", "size", "material", "rgba"}, {"site", "?", "group", "size", "material", "rgba"},
{"plugin", "*", "plugin", "instance"}, {"plugin", "*", "plugin", "instance"},
{"<"}, {"<"},
{"config", "*", "key", "value"}, {"config", "*", "key", "value"},
{">"}, {">"},
{">"}, {">"},
{"flexcomp", "*", "name", "type", "group", "dim", {"flexcomp", "*", "name", "type", "group", "dim", "dof",
"dof", "count", "cellcount", "spacing", "radius", "rigid", "count", "cellcount", "spacing", "radius", "rigid", "mass", "inertiabox",
"mass", "inertiabox", "scale", "file", "point", "element", "scale", "file", "point", "element", "texcoord", "material", "rgba",
"texcoord", "material", "rgba", "flatskin", "pos", "quat", "flatskin", "pos", "quat", "axisangle", "xyaxes", "zaxis", "euler", "origin"},
"axisangle", "xyaxes", "zaxis", "euler", "origin"},
{"<"}, {"<"},
{"edge", "?", "equality", "solref", "solimp", "stiffness", "damping"}, {"edge", "?", "equality", "solref", "solimp", "stiffness", "damping"},
{"elasticity", "?", "young", "poisson", "damping", "thickness", {"elasticity", "?", "young", "poisson", "damping", "thickness", "elastic2d"},
"elastic2d"}, {"contact", "?", "contype", "conaffinity", "condim", "priority",
{"contact", "?", "contype", "conaffinity", "condim", "priority", "friction", "friction", "solmix", "solref", "solimp", "margin", "gap",
"solmix", "solref", "solimp", "margin", "gap", "internal", "selfcollide", "internal", "selfcollide", "activelayers", "passive"},
"activelayers", "passive"},
{"pin", "*", "id", "range", "grid", "gridrange"}, {"pin", "*", "id", "range", "grid", "gridrange"},
{"plugin", "*", "plugin", "instance"}, {"plugin", "*", "plugin", "instance"},
{"<"}, {"<"},
@@ -527,19 +408,17 @@ std::vector<const char*> MJCF[nMJCF] = {
{"deformable", "*"}, {"deformable", "*"},
{"<"}, {"<"},
{"flex", "*", "name", "group", "dim", "radius", "material", "rgba", {"flex", "*", "name", "group", "dim", "radius", "material", "rgba", "flatskin", "body",
"flatskin", "body", "vertex", "element", "texcoord", "elemtexcoord", "vertex", "element", "texcoord", "elemtexcoord", "node", "cellcount", "dof"},
"node", "cellcount", "dof"},
{"<"}, {"<"},
{"contact", "?", "contype", "conaffinity", "condim", "priority", "friction", {"contact", "?", "contype", "conaffinity", "condim", "priority",
"solmix", "solref", "solimp", "margin", "gap", "internal", "selfcollide", "friction", "solmix", "solref", "solimp", "margin", "gap",
"activelayers", "passive"}, "internal", "selfcollide", "activelayers", "passive"},
{"edge", "?", "stiffness", "damping"}, {"edge", "?", "stiffness", "damping"},
{"elasticity", "?", "young", "poisson", "damping", "thickness", {"elasticity", "?", "young", "poisson", "damping", "thickness", "elastic2d"},
"elastic2d"},
{">"}, {">"},
{"skin", "*", "name", "file", "material", "rgba", "inflate", "vertex", {"skin", "*", "name", "file", "material", "rgba", "inflate",
"texcoord", "face", "group"}, "vertex", "texcoord", "face", "group"},
{"<"}, {"<"},
{"bone", "*", "body", "bindpos", "bindquat", "vertid", "vertweight"}, {"bone", "*", "body", "bindpos", "bindquat", "vertid", "vertweight"},
{">"}, {">"},
@@ -554,70 +433,36 @@ std::vector<const char*> MJCF[nMJCF] = {
{"equality", "*"}, {"equality", "*"},
{"<"}, {"<"},
{"connect", "*", "name", "class", "body1", "body2", "anchor", "site1", {"connect", "*", "name", "class", "body1", "body2", "anchor",
"site2", "active", "solref", "solimp"}, "site1", "site2", "active", "solref", "solimp"},
{"weld", "*", "name", "class", "body1", "body2", "relpose", "anchor", {"weld", "*", "name", "class", "body1", "body2", "relpose", "anchor",
"site1", "site2", "active", "solref", "solimp", "torquescale"}, "site1", "site2", "active", "solref", "solimp", "torquescale"},
{"joint", "*", "name", "class", "joint1", "joint2", "polycoef", "active", {"joint", "*", "name", "class", "joint1", "joint2", "polycoef",
"solref", "solimp"}, "active", "solref", "solimp"},
{"tendon", "*", "name", "class", "tendon1", "tendon2", "polycoef", "active", {"tendon", "*", "name", "class", "tendon1", "tendon2", "polycoef",
"solref", "solimp"}, "active", "solref", "solimp"},
{"flex", "*", "name", "class", "flex", "active", "solref", "solimp"}, {"flex", "*", "name", "class", "flex",
{"flexvert", "*", "name", "class", "flex", "active", "solref", "solimp"}, "active", "solref", "solimp"},
{"flexstrain", "*", "name", "class", "flex", "cell", "active", "solref", {"flexvert", "*", "name", "class", "flex",
"solimp"}, "active", "solref", "solimp"},
{"flexstrain", "*", "name", "class", "flex", "cell",
"active", "solref", "solimp"},
{">"}, {">"},
{"tendon", "*"}, {"tendon", "*"},
{"<"}, {"<"},
{"spatial", {"spatial", "*", "name", "class", "group", "limited", "actuatorfrclimited", "range",
"*", "actuatorfrcrange", "solreflimit", "solimplimit", "solreffriction", "solimpfriction",
"name", "frictionloss", "springlength", "width", "material",
"class", "margin", "stiffness", "damping", "armature", "rgba", "user"},
"group",
"limited",
"actuatorfrclimited",
"range",
"actuatorfrcrange",
"solreflimit",
"solimplimit",
"solreffriction",
"solimpfriction",
"frictionloss",
"springlength",
"width",
"material",
"margin",
"stiffness",
"damping",
"armature",
"rgba",
"user"},
{"<"}, {"<"},
{"site", "*", "site"}, {"site", "*", "site"},
{"geom", "*", "geom", "sidesite"}, {"geom", "*", "geom", "sidesite"},
{"pulley", "*", "divisor"}, {"pulley", "*", "divisor"},
{">"}, {">"},
{"fixed", {"fixed", "*", "name", "class", "group", "limited", "actuatorfrclimited", "range",
"*", "actuatorfrcrange", "solreflimit", "solimplimit", "solreffriction", "solimpfriction",
"name", "frictionloss", "springlength", "margin", "stiffness", "damping", "armature", "user"},
"class",
"group",
"limited",
"actuatorfrclimited",
"range",
"actuatorfrcrange",
"solreflimit",
"solimplimit",
"solreffriction",
"solimpfriction",
"frictionloss",
"springlength",
"margin",
"stiffness",
"damping",
"armature",
"user"},
{"<"}, {"<"},
{"joint", "*", "joint", "coef"}, {"joint", "*", "joint", "coef"},
{">"}, {">"},
@@ -625,89 +470,61 @@ std::vector<const char*> MJCF[nMJCF] = {
{"actuator", "*"}, {"actuator", "*"},
{"<"}, {"<"},
{"general", "*", "name", {"general", "*", "name", "class", "group", "nsample", "interp", "delay",
"class", "group", "nsample", "ctrllimited", "forcelimited", "actlimited", "ctrlrange", "forcerange", "actrange",
"interp", "delay", "ctrllimited", "lengthrange", "gear", "damping", "armature", "cranklength", "user",
"forcelimited", "actlimited", "ctrlrange", "joint", "jointinparent", "tendon", "slidersite", "cranksite", "site", "refsite",
"forcerange", "actrange", "lengthrange", "body", "actdim", "dyntype", "gaintype", "biastype", "dynprm", "gainprm", "biasprm",
"gear", "damping", "armature", "actearly"},
"cranklength", "user", "joint", {"motor", "*", "name", "class", "group", "nsample", "interp", "delay",
"jointinparent", "tendon", "slidersite", "ctrllimited", "forcelimited", "ctrlrange", "forcerange",
"cranksite", "site", "refsite", "lengthrange", "gear", "damping", "armature", "cranklength", "user",
"body", "actdim", "dyntype", "joint", "jointinparent", "tendon", "slidersite", "cranksite", "site", "refsite"},
"gaintype", "biastype", "dynprm", {"position", "*", "name", "class", "group", "nsample", "interp", "delay",
"gainprm", "biasprm", "actearly"}, "ctrllimited", "forcelimited", "ctrlrange", "inheritrange", "forcerange",
{"motor", "*", "name", "class", "group", "lengthrange", "gear", "damping", "armature", "cranklength", "user",
"nsample", "interp", "delay", "ctrllimited", "forcelimited", "joint", "jointinparent", "tendon", "slidersite", "cranksite", "site", "refsite",
"ctrlrange", "forcerange", "lengthrange", "gear", "damping", "kp", "kv", "dampratio", "timeconst"},
"armature", "cranklength", "user", "joint", "jointinparent", {"velocity", "*", "name", "class", "group", "nsample", "interp", "delay",
"tendon", "slidersite", "cranksite", "site", "refsite"}, "ctrllimited", "forcelimited", "ctrlrange", "forcerange",
{"position", "*", "name", "lengthrange", "gear", "damping", "armature", "cranklength", "user",
"class", "group", "nsample", "joint", "jointinparent", "tendon", "slidersite", "cranksite", "site", "refsite",
"interp", "delay", "ctrllimited",
"forcelimited", "ctrlrange", "inheritrange",
"forcerange", "lengthrange", "gear",
"damping", "armature", "cranklength",
"user", "joint", "jointinparent",
"tendon", "slidersite", "cranksite",
"site", "refsite", "kp",
"kv", "dampratio", "timeconst"},
{"velocity", "*", "name", "class", "group",
"nsample", "interp", "delay", "ctrllimited", "forcelimited",
"ctrlrange", "forcerange", "lengthrange", "gear", "damping",
"armature", "cranklength", "user", "joint", "jointinparent",
"tendon", "slidersite", "cranksite", "site", "refsite",
"kv"}, "kv"},
{"intvelocity", "*", {"intvelocity", "*", "name", "class", "group", "nsample", "interp", "delay",
"name", "class",
"group", "nsample",
"interp", "delay",
"ctrllimited", "forcelimited", "ctrllimited", "forcelimited",
"ctrlrange", "forcerange", "ctrlrange", "forcerange", "actrange", "inheritrange", "lengthrange",
"actrange", "inheritrange", "gear", "damping", "armature", "cranklength", "user",
"lengthrange", "gear", "joint", "jointinparent", "tendon", "slidersite", "cranksite", "site", "refsite",
"damping", "armature", "kp", "kv", "dampratio"},
"cranklength", "user", {"damper", "*", "name", "class", "group", "nsample", "interp", "delay",
"joint", "jointinparent", "forcelimited", "ctrlrange", "forcerange",
"tendon", "slidersite", "lengthrange", "gear", "damping", "armature", "cranklength", "user",
"cranksite", "site", "joint", "jointinparent", "tendon", "slidersite", "cranksite", "site", "refsite",
"refsite", "kp", "kv"},
"kv", "dampratio"}, {"cylinder", "*", "name", "class", "group", "nsample", "interp", "delay",
{"damper", "*", "name", "class", "group", "ctrllimited", "forcelimited", "ctrlrange", "forcerange",
"nsample", "interp", "delay", "forcelimited", "ctrlrange", "lengthrange", "gear", "damping", "armature", "cranklength", "user",
"forcerange", "lengthrange", "gear", "damping", "armature", "joint", "jointinparent", "tendon", "slidersite", "cranksite", "site", "refsite",
"cranklength", "user", "joint", "jointinparent", "tendon",
"slidersite", "cranksite", "site", "refsite", "kv"},
{"cylinder", "*", "name", "class", "group",
"nsample", "interp", "delay", "ctrllimited", "forcelimited",
"ctrlrange", "forcerange", "lengthrange", "gear", "damping",
"armature", "cranklength", "user", "joint", "jointinparent",
"tendon", "slidersite", "cranksite", "site", "refsite",
"timeconst", "area", "diameter", "bias"}, "timeconst", "area", "diameter", "bias"},
{"muscle", "*", "name", "class", "group", {"muscle", "*", "name", "class", "group", "nsample", "interp", "delay",
"nsample", "interp", "delay", "ctrllimited", "forcelimited", "ctrllimited", "forcelimited", "ctrlrange", "forcerange",
"ctrlrange", "forcerange", "lengthrange", "gear", "damping", "lengthrange", "gear", "damping", "armature", "cranklength", "user",
"armature", "cranklength", "user", "joint", "jointinparent", "joint", "jointinparent", "tendon", "slidersite", "cranksite",
"tendon", "slidersite", "cranksite", "timeconst", "tausmooth", "timeconst", "tausmooth", "range", "force", "scale",
"range", "force", "scale", "lmin", "lmax", "lmin", "lmax", "vmax", "fpmax", "fvmax"},
"vmax", "fpmax", "fvmax"},
{"adhesion", "*", "name", "class", "group", "nsample", "interp", "delay", {"adhesion", "*", "name", "class", "group", "nsample", "interp", "delay",
"forcelimited", "ctrlrange", "forcerange", "user", "body", "gain"}, "forcelimited", "ctrlrange", "forcerange", "user", "body", "gain"},
{"dcmotor", "*", "name", "class", "group", {"dcmotor", "*", "name", "class", "group", "nsample", "interp", "delay",
"nsample", "interp", "delay", "ctrllimited", "ctrlrange", "ctrllimited", "ctrlrange",
"lengthrange", "gear", "damping", "armature", "cranklength", "lengthrange", "gear", "damping", "armature", "cranklength", "user",
"user", "joint", "jointinparent", "tendon", "slidersite", "joint", "jointinparent", "tendon", "slidersite", "cranksite", "site", "refsite",
"cranksite", "site", "refsite", "motorconst", "resistance", "motorconst", "resistance", "nominal", "saturation",
"nominal", "saturation", "inductance", "cogging", "controller", "inductance", "cogging", "controller", "thermal", "lugre", "input"},
"thermal", "lugre", "input"}, {"plugin", "*", "name", "class", "plugin", "instance", "group", "nsample", "interp", "delay",
{"plugin", "*", "name", "class", "ctrllimited", "forcelimited", "actlimited", "ctrlrange", "forcerange", "actrange",
"plugin", "instance", "group", "nsample", "lengthrange", "gear", "damping", "armature", "cranklength", "joint", "jointinparent",
"interp", "delay", "ctrllimited", "forcelimited", "site", "actdim", "dyntype", "dynprm", "tendon", "cranksite", "slidersite", "user",
"actlimited", "ctrlrange", "forcerange", "actrange", "actearly"},
"lengthrange", "gear", "damping", "armature",
"cranklength", "joint", "jointinparent", "site",
"actdim", "dyntype", "dynprm", "tendon",
"cranksite", "slidersite", "user", "actearly"},
{"<"}, {"<"},
{"config", "*", "key", "value"}, {"config", "*", "key", "value"},
{">"}, {">"},
@@ -715,105 +532,58 @@ std::vector<const char*> MJCF[nMJCF] = {
{"sensor", "*"}, {"sensor", "*"},
{"<"}, {"<"},
{"touch", "*", "name", "site", "nsample", "interp", "delay", "interval", {"touch", "*", "name", "site", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
"cutoff", "noise", "user"}, {"accelerometer", "*", "name", "site", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"accelerometer", "*", "name", "site", "nsample", "interp", "delay", {"velocimeter", "*", "name", "site", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
"interval", "cutoff", "noise", "user"}, {"gyro", "*", "name", "site", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"velocimeter", "*", "name", "site", "nsample", "interp", "delay", {"force", "*", "name", "site", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
"interval", "cutoff", "noise", "user"}, {"torque", "*", "name", "site", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"gyro", "*", "name", "site", "nsample", "interp", "delay", "interval", {"magnetometer", "*", "name", "site", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
"cutoff", "noise", "user"}, {"camprojection", "*", "name", "site", "camera", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"force", "*", "name", "site", "nsample", "interp", "delay", "interval", {"rangefinder", "*", "name", "site", "camera", "data", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
"cutoff", "noise", "user"}, {"jointpos", "*", "name", "joint", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"torque", "*", "name", "site", "nsample", "interp", "delay", "interval", {"jointvel", "*", "name", "joint", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
"cutoff", "noise", "user"}, {"tendonpos", "*", "name", "tendon", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"magnetometer", "*", "name", "site", "nsample", "interp", "delay", {"tendonvel", "*", "name", "tendon", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
"interval", "cutoff", "noise", "user"}, {"actuatorpos", "*", "name", "actuator", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"camprojection", "*", "name", "site", "camera", "nsample", "interp", {"actuatorvel", "*", "name", "actuator", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
"delay", "interval", "cutoff", "noise", "user"}, {"actuatorfrc", "*", "name", "actuator", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"rangefinder", "*", "name", "site", "camera", "data", "nsample", "interp", {"jointactuatorfrc", "*", "name", "joint", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
"delay", "interval", "cutoff", "noise", "user"}, {"tendonactuatorfrc", "*", "name", "tendon", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"jointpos", "*", "name", "joint", "nsample", "interp", "delay", "interval", {"ballquat", "*", "name", "joint", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
"cutoff", "noise", "user"}, {"ballangvel", "*", "name", "joint", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"jointvel", "*", "name", "joint", "nsample", "interp", "delay", "interval", {"jointlimitpos", "*", "name", "joint", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
"cutoff", "noise", "user"}, {"jointlimitvel", "*", "name", "joint", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"tendonpos", "*", "name", "tendon", "nsample", "interp", "delay", {"jointlimitfrc", "*", "name", "joint", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
"interval", "cutoff", "noise", "user"}, {"tendonlimitpos", "*", "name", "tendon", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"tendonvel", "*", "name", "tendon", "nsample", "interp", "delay", {"tendonlimitvel", "*", "name", "tendon", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
"interval", "cutoff", "noise", "user"}, {"tendonlimitfrc", "*", "name", "tendon", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"actuatorpos", "*", "name", "actuator", "nsample", "interp", "delay", {"framepos", "*", "name", "objtype", "objname", "reftype", "refname", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
"interval", "cutoff", "noise", "user"}, {"framequat", "*", "name", "objtype", "objname", "reftype", "refname", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"actuatorvel", "*", "name", "actuator", "nsample", "interp", "delay", {"framexaxis", "*", "name", "objtype", "objname", "reftype", "refname", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
"interval", "cutoff", "noise", "user"}, {"frameyaxis", "*", "name", "objtype", "objname", "reftype", "refname", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"actuatorfrc", "*", "name", "actuator", "nsample", "interp", "delay", {"framezaxis", "*", "name", "objtype", "objname", "reftype", "refname", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
"interval", "cutoff", "noise", "user"}, {"framelinvel", "*", "name", "objtype", "objname", "reftype", "refname", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"jointactuatorfrc", "*", "name", "joint", "nsample", "interp", "delay", {"frameangvel", "*", "name", "objtype", "objname", "reftype", "refname", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
"interval", "cutoff", "noise", "user"}, {"framelinacc", "*", "name", "objtype", "objname", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"tendonactuatorfrc", "*", "name", "tendon", "nsample", "interp", "delay", {"frameangacc", "*", "name", "objtype", "objname", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
"interval", "cutoff", "noise", "user"}, {"subtreecom", "*", "name", "body", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"ballquat", "*", "name", "joint", "nsample", "interp", "delay", "interval", {"subtreelinvel", "*", "name", "body", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
"cutoff", "noise", "user"}, {"subtreeangmom", "*", "name", "body", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"ballangvel", "*", "name", "joint", "nsample", "interp", "delay", {"insidesite", "*", "name", "site", "objtype", "objname", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
"interval", "cutoff", "noise", "user"}, {"distance", "*", "name", "geom1", "geom2", "body1", "body2", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"jointlimitpos", "*", "name", "joint", "nsample", "interp", "delay", {"normal", "*", "name", "geom1", "geom2", "body1", "body2", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
"interval", "cutoff", "noise", "user"}, {"fromto", "*", "name", "geom1", "geom2", "body1", "body2", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"jointlimitvel", "*", "name", "joint", "nsample", "interp", "delay", {"contact", "*", "name", "geom1", "geom2", "body1", "body2", "subtree1", "subtree2", "site",
"interval", "cutoff", "noise", "user"}, "num", "data", "reduce", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"jointlimitfrc", "*", "name", "joint", "nsample", "interp", "delay", {"e_potential", "*", "name", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
"interval", "cutoff", "noise", "user"}, {"e_kinetic", "*", "name", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"tendonlimitpos", "*", "name", "tendon", "nsample", "interp", "delay", {"clock", "*", "name", "nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
"interval", "cutoff", "noise", "user"}, {"tactile", "*", "name", "geom", "mesh", "nsample", "interp", "delay", "interval", "user"},
{"tendonlimitvel", "*", "name", "tendon", "nsample", "interp", "delay", {"user", "*", "name", "objtype", "objname", "datatype", "needstage",
"interval", "cutoff", "noise", "user"}, "dim", "cutoff", "noise", "user"},
{"tendonlimitfrc", "*", "name", "tendon", "nsample", "interp", "delay", {"plugin", "*", "name", "plugin", "instance", "cutoff", "objtype", "objname", "reftype", "refname",
"interval", "cutoff", "noise", "user"}, "user"},
{"framepos", "*", "name", "objtype", "objname", "reftype", "refname",
"nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"framequat", "*", "name", "objtype", "objname", "reftype", "refname",
"nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"framexaxis", "*", "name", "objtype", "objname", "reftype", "refname",
"nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"frameyaxis", "*", "name", "objtype", "objname", "reftype", "refname",
"nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"framezaxis", "*", "name", "objtype", "objname", "reftype", "refname",
"nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"framelinvel", "*", "name", "objtype", "objname", "reftype", "refname",
"nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"frameangvel", "*", "name", "objtype", "objname", "reftype", "refname",
"nsample", "interp", "delay", "interval", "cutoff", "noise", "user"},
{"framelinacc", "*", "name", "objtype", "objname", "nsample", "interp",
"delay", "interval", "cutoff", "noise", "user"},
{"frameangacc", "*", "name", "objtype", "objname", "nsample", "interp",
"delay", "interval", "cutoff", "noise", "user"},
{"subtreecom", "*", "name", "body", "nsample", "interp", "delay",
"interval", "cutoff", "noise", "user"},
{"subtreelinvel", "*", "name", "body", "nsample", "interp", "delay",
"interval", "cutoff", "noise", "user"},
{"subtreeangmom", "*", "name", "body", "nsample", "interp", "delay",
"interval", "cutoff", "noise", "user"},
{"insidesite", "*", "name", "site", "objtype", "objname", "nsample",
"interp", "delay", "interval", "cutoff", "noise", "user"},
{"distance", "*", "name", "geom1", "geom2", "body1", "body2", "nsample",
"interp", "delay", "interval", "cutoff", "noise", "user"},
{"normal", "*", "name", "geom1", "geom2", "body1", "body2", "nsample",
"interp", "delay", "interval", "cutoff", "noise", "user"},
{"fromto", "*", "name", "geom1", "geom2", "body1", "body2", "nsample",
"interp", "delay", "interval", "cutoff", "noise", "user"},
{"contact", "*", "name", "geom1", "geom2", "body1", "body2",
"subtree1", "subtree2", "site", "num", "data", "reduce", "nsample",
"interp", "delay", "interval", "cutoff", "noise", "user"},
{"e_potential", "*", "name", "nsample", "interp", "delay", "interval",
"cutoff", "noise", "user"},
{"e_kinetic", "*", "name", "nsample", "interp", "delay", "interval",
"cutoff", "noise", "user"},
{"clock", "*", "name", "nsample", "interp", "delay", "interval", "cutoff",
"noise", "user"},
{"tactile", "*", "name", "geom", "mesh", "nsample", "interp", "delay",
"interval", "user"},
{"user", "*", "name", "objtype", "objname", "datatype", "needstage", "dim",
"cutoff", "noise", "user"},
{"plugin", "*", "name", "plugin", "instance", "cutoff", "objtype",
"objname", "reftype", "refname", "user"},
{"<"}, {"<"},
{"config", "*", "key", "value"}, {"config", "*", "key", "value"},
{">"}, {">"},
@@ -821,10 +591,11 @@ std::vector<const char*> MJCF[nMJCF] = {
{"keyframe", "*"}, {"keyframe", "*"},
{"<"}, {"<"},
{"key", "*", "name", "time", "qpos", "qvel", "act", "mpos", "mquat", {"key", "*", "name", "time", "qpos", "qvel", "act", "mpos", "mquat", "ctrl"},
"ctrl"},
{">"}, {">"},
{">"}}; {">"}
};
// clang-format on