# LyceumMuJoCoViz

## Overview

LyceumMuJoCoViz is an OpenGL-based interactive visualizer for MuJoCo-based models and environments. It allows for visualizing passive dynamics, playing back recorded trajectories, and interacting with a policy or controller in real time. Several additional features are provided:

• Interact with the simulation using the mouse and keyboard.
• "Burst mode", the ability to render multiple snapshots along an entire trajectory at once.
• Run the simulation faster or slower than real time, or in reverse.
• Record a high-resolution video of the rendered scene.
• Step through time, one or several timesteps at a time.

All of these commands are controlled via keyboard shortcuts which are displayed in a help window when the visualizer is launched:

## API

LyceumMuJoCoViz.visualizeFunction
visualize(model::Union{LyceumMuJoCo.AbstractMuJoCoEnvironment, MJSim}; trajectories, controller)


Starts an interactive visualization of model, which can be either a valid subtype of AbstractMuJoCoEnvironment or just a MJSim simulation. The visualizer has several "modes" that allow you to visualize passive dynamics, play back recorded trajectories, and run a controller interactively. The passive dynamics mode depends only on model and is always available, while the other modes are specified by the keyword arguments below.

Keywords

• trajectories::AbstractVector{<:AbstractMatrix}: a vector of trajectories, where each trajectory is an AbstractMatrix of states with size (length(statespace(model)), T) and T is the length of the trajectory. Note that each trajectory can have different length.
• controller: a callback function with the signature controller(model), called at each timestep, that that applys a control input to the system.

Examples

using LyceumMuJoCo, LyceumMuJoCoViz
env = LyceumMuJoCo.HopperV2()
T = 100
states = Array(undef, statespace(env), T)
for t = 1:T
step!(env)
states[:, t] .= getstate(env)
end
visualize(
env,
trajectories=[states],
controller = env -> setaction!(env, rand(actionspace(env)))
)