Sim PnC Notes
Typical Physics Simulation Pipeline
- Broad phase collision detection
- Narrow phase collision detection
- Generate islands
- Solve constraints
- Constraint based method
- Impulse based method
- Penalty based method
- Integrate position: velocity * dt
ref
- Box2D
- Jolt (Box3D)
RL.Env(legged_robot) Pipeline
- __init__
- _parse_cfg()
- super().__init__()
- create_sim()
- _create_ground_plane()
- _create_heightfield()
- _create_trimesh()
- _create_envs()
- _get_env_origins()
- _process_rigid_shape_props()
- _process_dof_props()
- _process_rigid_body_props()
- set_camera()
- _init_buffers()
- _prepare_reward_function()
- create_sim()
- step
- actions clip
- render()
- for decimation: _compute_torques() & simulate
- post_physics_step()
- _post_physics_step_callback()
- _resample_commands()
- _get_heights()
- _push_robots()
- check_termination()
- compute_reward()
- reset_idx()
- _update_terrain_curriculum()
- update_command_curriculum()
- _reset_dofs()
- _reset_root_states()
- _resample_commands()
- compute_observations()
- add perceptive
- add noise
- _draw_debug_vis()
- _post_physics_step_callback()
- obs+states clip
isaacgym supported functions
- sdf
- vhacd
- attractor
- image
- xml(mjcf, support
stiffness|damping|armature
) better than urdf?
Name | Data type | Description |
---|---|---|
hasLimits | bool | Whether the DOF has limits or has unlimited motion. |
lower | float32 | Lower limit. |
upper | float32 | Upper limit. |
driveMode | gymapi.DofDriveMode | DOF drive mode, see below. |
stiffness | float32 | Drive stiffness. |
damping | float32 | Drive damping. |
velocity | float32 | Maximum velocity. |
effort | float32 | Maximum effort (force or torque). |
friction | float32 | DOF friction. |
armature | float32 | DOF armature. |
SlimeVR server/core/src/main/java/dev/slimevr/tracking/processor/skeleton
fun updatePose() {
tapDetectionManager.update()
updateTransforms()
updateBones()
if (enforceConstraints) {
// TODO re-enable toggling correctConstraints once
// https://github.com/SlimeVR/SlimeVR-Server/issues/1297 is solved
headBone.updateWithConstraints(false)
}
updateComputedTrackers()
// Don't run post-processing if the tracking is paused
if (pauseTracking) return
legTweaks.tweakLegs()
localizer.update()
}