object_state_base
AbsoluteObjectState
Bases: BaseObjectState
This class is used to track object states that are absolute, e.g. do not require a second object to compute the value.
Source code in omnigibson/object_states/object_state_base.py
BaseObjectRequirement
Base ObjectRequirement class. This allows for sanity checking a given asset / BaseObject to check whether a set of conditions are met or not. This can be useful for sanity checking dependencies for properties such as requested abilities or object states.
Source code in omnigibson/object_states/object_state_base.py
is_compatible(obj, **kwargs)
classmethod
Determines whether this requirement is compatible with object @obj or not (i.e.: whether this requirement is satisfied by @obj given other constructor arguments **kwargs).
NOTE: Must be implemented by subclass.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
obj |
StatefulObject
|
Object whose compatibility with this state should be checked |
required |
Returns:
Type | Description |
---|---|
2 - tuple
|
|
Source code in omnigibson/object_states/object_state_base.py
is_compatible_asset(prim, **kwargs)
classmethod
Determines whether this requirement is compatible with prim @prim or not (i.e.: whether this requirement is satisfied by @prim given other constructor arguments **kwargs). This is a useful check to evaluate an object's USD that hasn't been explicitly imported into OmniGibson yet.
NOTE: Must be implemented by subclass
Parameters:
Name | Type | Description | Default |
---|---|---|---|
prim |
Prim
|
Object prim whose compatibility with this requirement should be checked |
required |
Returns:
Type | Description |
---|---|
2 - tuple
|
|
Source code in omnigibson/object_states/object_state_base.py
BaseObjectState
Bases: BaseObjectRequirement
, Serializable
, Registerable
, Recreatable
, ABC
Base ObjectState class. Do NOT inherit from this class directly - use either AbsoluteObjectState or RelativeObjectState.
Source code in omnigibson/object_states/object_state_base.py
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 |
|
cache
property
Returns:
Type | Description |
---|---|
dict
|
Dictionary mapping specific argument combinations from @self.get_value() to cached values and information stored for that specific combination |
stateful
property
Returns:
Type | Description |
---|---|
bool
|
True if this object has a state that can be directly dumped / loaded via dump_state() and load_state(), otherwise, returns False. Note that any sub object states that are NOT stateful do not need to implement any of _dump_state(), _load_state(), _serialize(), or _deserialize()! |
cache_info(get_value_args)
Helper function to cache relevant information at the current timestep.
Stores it under @self._cache [
Parameters:
Name | Type | Description | Default |
---|---|---|---|
get_value_args |
tuple
|
Specific argument combinations (usually tuple of objects) passed into @self.get_value whose caching information should be computed |
required |
Returns:
Type | Description |
---|---|
dict
|
Any caching information to include at the current timestep when this state's value is computed |
Source code in omnigibson/object_states/object_state_base.py
cache_is_valid(get_value_args)
Helper function to check whether the current cached value is valid or not at the current timestep. Default is False unless we're at the current timestep.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
get_value_args |
tuple
|
Specific argument combinations (usually tuple of objects) passed into @self.get_value whose cached values should be validated |
required |
Returns:
Type | Description |
---|---|
bool
|
True if the cache is valid, else False |
Source code in omnigibson/object_states/object_state_base.py
clear_cache()
get_dependencies()
classmethod
Get the dependency states for this state, e.g. states that need to be explicitly enabled on the current object before the current state is usable. States listed here will be enabled for all objects that have this current state, and all dependency states will be processed on all objects prior to this state being processed on any object.
Returns:
Type | Description |
---|---|
set of str
|
Set of strings corresponding to state keys. |
Source code in omnigibson/object_states/object_state_base.py
get_optional_dependencies()
classmethod
Get states that should be processed prior to this state if they are already enabled. These states will not be enabled because of this state's dependency on them, but if they are already enabled for another reason (e.g. because of an ability or another state's dependency etc.), they will be processed on all objects prior to this state being processed on any object.
Returns:
Type | Description |
---|---|
set of str
|
Set of strings corresponding to state keys. |
Source code in omnigibson/object_states/object_state_base.py
get_value(*args, **kwargs)
Get this state's value
Returns:
Type | Description |
---|---|
any
|
Object state value given input @args and @kwargs |
Source code in omnigibson/object_states/object_state_base.py
has_changed(get_value_args, value, info, t)
A helper function to query whether this object state has changed between the current timestep and an arbitrary previous timestep @t with the corresponding cached value @value and cache information @info
Note that this may require some non-trivial compute, so we leverage @t, in addition to @get_value_args, as a unique key into an internal dictionary, such that specific @t will result in a computation conducted exactly once. This is done for performance reasons; so that multiple states relying on the same state dependency can all query whether that state has changed between the same timesteps with only a single computation.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
get_value_args |
tuple
|
Specific argument combinations (usually tuple of objects) passed into @self.get_value |
required |
value |
any
|
Cached value computed at timestep @t for this object state |
required |
info |
dict
|
Information calculated at timestep @t when computing this state's value |
required |
t |
int
|
Initial timestep to compare against. This should be an index of the steps taken, i.e. a value queried from og.sim.current_time_step_index at some point in time. It is assumed @value and @info were computed at this timestep |
required |
Returns:
Type | Description |
---|---|
bool
|
Whether this object state has changed between @t and the current timestep index for the specific @get_value_args |
Source code in omnigibson/object_states/object_state_base.py
initialize()
Initialize this object state
Source code in omnigibson/object_states/object_state_base.py
postprocess_ability_params(params, scene)
classmethod
Post-processes ability parameters if needed. The default implementation is a simple passthrough.
remove()
set_value(*args, **kwargs)
Set this state's value
Returns:
Type | Description |
---|---|
bool
|
True if setting the value was successful, otherwise False |
Source code in omnigibson/object_states/object_state_base.py
update_cache(get_value_args)
Updates the internal cached value based on the evaluation of @self._get_value(*get_value_args)
Parameters:
Name | Type | Description | Default |
---|---|---|---|
get_value_args |
tuple
|
Specific argument combinations (usually tuple of objects) passed into @self.get_value / @self._get_value |
required |
Source code in omnigibson/object_states/object_state_base.py
BooleanStateMixin
Bases: BaseObjectState
This class is a mixin used to indicate that a state has a boolean value.
Source code in omnigibson/object_states/object_state_base.py
IntrinsicObjectState
Bases: BaseObjectState
This class is used to track object states that should NOT have getters / setters implemented, since the associated ability / state is intrinsic to the state
Source code in omnigibson/object_states/object_state_base.py
RelativeObjectState
Bases: BaseObjectState
This class is used to track object states that are relative, e.g. require two objects to compute a value. Note that subclasses will typically compute values on-the-fly.