Add actuator and sensor delays. Fixes #1004
PiperOrigin-RevId: 866478839 Change-Id: Id21a6da0f98454c8fa39ea5af8a5e213d6eae497
This commit is contained in:
committed by
Copybara-Service
parent
84fa527723
commit
6419534bad
@@ -522,20 +522,21 @@ ENUMS: Mapping[str, EnumDecl] = dict([
|
||||
('mjSTATE_QPOS', 2),
|
||||
('mjSTATE_QVEL', 4),
|
||||
('mjSTATE_ACT', 8),
|
||||
('mjSTATE_WARMSTART', 16),
|
||||
('mjSTATE_CTRL', 32),
|
||||
('mjSTATE_QFRC_APPLIED', 64),
|
||||
('mjSTATE_XFRC_APPLIED', 128),
|
||||
('mjSTATE_EQ_ACTIVE', 256),
|
||||
('mjSTATE_MOCAP_POS', 512),
|
||||
('mjSTATE_MOCAP_QUAT', 1024),
|
||||
('mjSTATE_USERDATA', 2048),
|
||||
('mjSTATE_PLUGIN', 4096),
|
||||
('mjNSTATE', 13),
|
||||
('mjSTATE_PHYSICS', 14),
|
||||
('mjSTATE_FULLPHYSICS', 4111),
|
||||
('mjSTATE_USER', 4064),
|
||||
('mjSTATE_INTEGRATION', 8191),
|
||||
('mjSTATE_HISTORY', 16),
|
||||
('mjSTATE_WARMSTART', 32),
|
||||
('mjSTATE_CTRL', 64),
|
||||
('mjSTATE_QFRC_APPLIED', 128),
|
||||
('mjSTATE_XFRC_APPLIED', 256),
|
||||
('mjSTATE_EQ_ACTIVE', 512),
|
||||
('mjSTATE_MOCAP_POS', 1024),
|
||||
('mjSTATE_MOCAP_QUAT', 2048),
|
||||
('mjSTATE_USERDATA', 4096),
|
||||
('mjSTATE_PLUGIN', 8192),
|
||||
('mjNSTATE', 14),
|
||||
('mjSTATE_PHYSICS', 30),
|
||||
('mjSTATE_FULLPHYSICS', 8223),
|
||||
('mjSTATE_USER', 8128),
|
||||
('mjSTATE_INTEGRATION', 16383),
|
||||
]),
|
||||
)),
|
||||
('mjtConstraint',
|
||||
|
||||
@@ -2636,6 +2636,156 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
|
||||
),
|
||||
doc='Copy state from src to dst.',
|
||||
)),
|
||||
('mj_readCtrl',
|
||||
FunctionDecl(
|
||||
name='mj_readCtrl',
|
||||
return_type=ValueType(name='mjtNum'),
|
||||
parameters=(
|
||||
FunctionParameterDecl(
|
||||
name='m',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjModel', is_const=True),
|
||||
),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='d',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjData', is_const=True),
|
||||
),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='id',
|
||||
type=ValueType(name='int'),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='time',
|
||||
type=ValueType(name='mjtNum'),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='interp',
|
||||
type=ValueType(name='int'),
|
||||
),
|
||||
),
|
||||
doc='Read ctrl value for actuator at given time. Returns d->ctrl[id] if no history, otherwise reads from history buffer. interp: 0=zero-order-hold, 1=linear, 2=cubic spline.', # pylint: disable=line-too-long
|
||||
)),
|
||||
('mj_readSensor',
|
||||
FunctionDecl(
|
||||
name='mj_readSensor',
|
||||
return_type=PointerType(
|
||||
inner_type=ValueType(name='mjtNum', is_const=True),
|
||||
),
|
||||
parameters=(
|
||||
FunctionParameterDecl(
|
||||
name='m',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjModel', is_const=True),
|
||||
),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='d',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjData', is_const=True),
|
||||
),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='id',
|
||||
type=ValueType(name='int'),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='time',
|
||||
type=ValueType(name='mjtNum'),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='result',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjtNum'),
|
||||
),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='interp',
|
||||
type=ValueType(name='int'),
|
||||
),
|
||||
),
|
||||
doc='Read sensor value from history buffer at given time. Returns pointer to sensordata (no history) or history buffer (exact match), or NULL if interpolation performed (writes to result). interp: 0=zero-order-hold, 1=linear, 2=cubic spline.', # pylint: disable=line-too-long
|
||||
)),
|
||||
('mj_initCtrlHistory',
|
||||
FunctionDecl(
|
||||
name='mj_initCtrlHistory',
|
||||
return_type=ValueType(name='void'),
|
||||
parameters=(
|
||||
FunctionParameterDecl(
|
||||
name='m',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjModel', is_const=True),
|
||||
),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='d',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjData'),
|
||||
),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='id',
|
||||
type=ValueType(name='int'),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='times',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjtNum', is_const=True),
|
||||
),
|
||||
nullable=True,
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='values',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjtNum', is_const=True),
|
||||
),
|
||||
),
|
||||
),
|
||||
doc='Initialize history buffer for actuator; if times is NULL, uses existing buffer timestamps.', # pylint: disable=line-too-long
|
||||
)),
|
||||
('mj_initSensorHistory',
|
||||
FunctionDecl(
|
||||
name='mj_initSensorHistory',
|
||||
return_type=ValueType(name='void'),
|
||||
parameters=(
|
||||
FunctionParameterDecl(
|
||||
name='m',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjModel', is_const=True),
|
||||
),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='d',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjData'),
|
||||
),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='id',
|
||||
type=ValueType(name='int'),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='times',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjtNum', is_const=True),
|
||||
),
|
||||
nullable=True,
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='values',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjtNum', is_const=True),
|
||||
),
|
||||
),
|
||||
FunctionParameterDecl(
|
||||
name='phase',
|
||||
type=ValueType(name='mjtNum'),
|
||||
),
|
||||
),
|
||||
doc='Initialize history buffer for sensor; if times is NULL, uses existing buffer timestamps. phase sets the user slot (last computation time for interval sensors).', # pylint: disable=line-too-long
|
||||
)),
|
||||
('mj_setKeyframe',
|
||||
FunctionDecl(
|
||||
name='mj_setKeyframe',
|
||||
|
||||
@@ -1277,6 +1277,11 @@ STRUCTS: Mapping[str, StructDecl] = dict([
|
||||
type=ValueType(name='mjtSize'),
|
||||
doc='number of mjtNums in plugin state vector',
|
||||
),
|
||||
StructFieldDecl(
|
||||
name='nhistory',
|
||||
type=ValueType(name='mjtSize'),
|
||||
doc='number of mjtNums in history buffer',
|
||||
),
|
||||
StructFieldDecl(
|
||||
name='narena',
|
||||
type=ValueType(name='mjtSize'),
|
||||
@@ -4157,6 +4162,30 @@ STRUCTS: Mapping[str, StructDecl] = dict([
|
||||
doc='group for visibility',
|
||||
array_extent=('nu',),
|
||||
),
|
||||
StructFieldDecl(
|
||||
name='actuator_history',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='int'),
|
||||
),
|
||||
doc='history buffer: [nsample, interp]',
|
||||
array_extent=('nu', 2),
|
||||
),
|
||||
StructFieldDecl(
|
||||
name='actuator_historyadr',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='int'),
|
||||
),
|
||||
doc='address in history buffer; -1: none',
|
||||
array_extent=('nu',),
|
||||
),
|
||||
StructFieldDecl(
|
||||
name='actuator_delay',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjtNum'),
|
||||
),
|
||||
doc='delay time in seconds; 0: no delay',
|
||||
array_extent=('nu',),
|
||||
),
|
||||
StructFieldDecl(
|
||||
name='actuator_ctrllimited',
|
||||
type=PointerType(
|
||||
@@ -4389,6 +4418,38 @@ STRUCTS: Mapping[str, StructDecl] = dict([
|
||||
doc='noise standard deviation',
|
||||
array_extent=('nsensor',),
|
||||
),
|
||||
StructFieldDecl(
|
||||
name='sensor_history',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='int'),
|
||||
),
|
||||
doc='history buffer: [nsample, interp]',
|
||||
array_extent=('nsensor', 2),
|
||||
),
|
||||
StructFieldDecl(
|
||||
name='sensor_historyadr',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='int'),
|
||||
),
|
||||
doc='address in history buffer; -1: none',
|
||||
array_extent=('nsensor',),
|
||||
),
|
||||
StructFieldDecl(
|
||||
name='sensor_delay',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjtNum'),
|
||||
),
|
||||
doc='delay time in seconds; 0: no delay',
|
||||
array_extent=('nsensor',),
|
||||
),
|
||||
StructFieldDecl(
|
||||
name='sensor_interval',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjtNum'),
|
||||
),
|
||||
doc='interval: [period, phase] in seconds',
|
||||
array_extent=('nsensor', 2),
|
||||
),
|
||||
StructFieldDecl(
|
||||
name='sensor_user',
|
||||
type=PointerType(
|
||||
@@ -5402,6 +5463,14 @@ STRUCTS: Mapping[str, StructDecl] = dict([
|
||||
doc='actuator activation',
|
||||
array_extent=('na',),
|
||||
),
|
||||
StructFieldDecl(
|
||||
name='history',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjtNum'),
|
||||
),
|
||||
doc='history buffer',
|
||||
array_extent=('nhistory',),
|
||||
),
|
||||
StructFieldDecl(
|
||||
name='qacc_warmstart',
|
||||
type=PointerType(
|
||||
@@ -9173,6 +9242,21 @@ STRUCTS: Mapping[str, StructDecl] = dict([
|
||||
type=ValueType(name='int'),
|
||||
doc='group',
|
||||
),
|
||||
StructFieldDecl(
|
||||
name='nsample',
|
||||
type=ValueType(name='int'),
|
||||
doc='number of samples in history buffer',
|
||||
),
|
||||
StructFieldDecl(
|
||||
name='interp',
|
||||
type=ValueType(name='int'),
|
||||
doc='interpolation order (0=ZOH, 1=linear, 2=cubic)',
|
||||
),
|
||||
StructFieldDecl(
|
||||
name='delay',
|
||||
type=ValueType(name='double'),
|
||||
doc='delay time in seconds; 0: no delay',
|
||||
),
|
||||
StructFieldDecl(
|
||||
name='userdata',
|
||||
type=PointerType(
|
||||
@@ -9268,6 +9352,29 @@ STRUCTS: Mapping[str, StructDecl] = dict([
|
||||
type=ValueType(name='double'),
|
||||
doc='noise stdev',
|
||||
),
|
||||
StructFieldDecl(
|
||||
name='nsample',
|
||||
type=ValueType(name='int'),
|
||||
doc='number of samples in history buffer',
|
||||
),
|
||||
StructFieldDecl(
|
||||
name='interp',
|
||||
type=ValueType(name='int'),
|
||||
doc='interpolation order (0=ZOH, 1=linear, 2=cubic)',
|
||||
),
|
||||
StructFieldDecl(
|
||||
name='delay',
|
||||
type=ValueType(name='double'),
|
||||
doc='delay time in seconds',
|
||||
),
|
||||
StructFieldDecl(
|
||||
name='interval',
|
||||
type=ArrayType(
|
||||
inner_type=ValueType(name='double'),
|
||||
extents=(2,),
|
||||
),
|
||||
doc='[period, time_prev] in seconds',
|
||||
),
|
||||
StructFieldDecl(
|
||||
name='userdata',
|
||||
type=PointerType(
|
||||
|
||||
Reference in New Issue
Block a user