-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Labels
bugSomething isn't workingSomething isn't working
Description
🐛 Bug
When using the gym engine, the human render screen does not always appear.
To Reproduce
Create object (for example pendulum-v1) with gym engine and single process backend.
Then call env.render("human") and train with sb3.
import eagerx
from eagerx_dcsc_setups.pendulum.objects import Pendulum
from eagerx_dcsc_setups.pendulum.envs import PendulumEnv
from eagerx.engines.openai_gym.engine import GymEngine
from eagerx.wrappers import Flatten
from eagerx.backends.single_process import SingleProcess
import stable_baselines3 as sb3
import gym.wrappers as w
if __name__ == "__main__":
rate = 20
# Create pendulum object
pendulum = Pendulum.make(
"pendulum",
actuators=["u"],
sensors=["x", "image"],
states=["model_state", "max_speed", "length"],
actuator_rate=rate,
sensor_rate=rate,
)
# Create graph
graph = eagerx.Graph.create()
graph.add(pendulum)
graph.connect(action="voltage", target=pendulum.actuators.u)
graph.connect(source=pendulum.sensors.x, observation="angle_data")
graph.render(source=pendulum.sensors.image, rate=rate)
gym_engine = GymEngine.make(rate=rate, process=eagerx.ENVIRONMENT)
backend = SingleProcess.make()
# Create envs
train_env = PendulumEnv(
name="TrainEnv",
rate=rate,
graph=graph,
engine=gym_engine,
backend=backend,
)
train_env = w.rescale_action.RescaleAction(Flatten(train_env), min_action=-1.0, max_action=1.0)
train_env.render("human")
model = sb3.SAC("MlpPolicy", train_env, verbose=1, learning_rate=7e-4)
model.learn(total_timesteps=5000)Expected behavior
Render screen opening.
Note that a workaround is to do an extra reset before training.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working