mcx-lab/rl-baselines3-zoo

Error when attempting to render A1 gym environment

Closed this issue · 1 comments

Jenny can't reproduce this so I have to figure it out.

Stack trace:

(rl-baselines3-zoo) dtch1997@DESKTOP-AR4R24K:~/code/rl-baselines3-zoo$ python enjoy.py --algo ppo --env A1GymEnv-v0 -f logs --load-last-checkpoint
Loading latest experiment, id=3
Loading logs/ppo/A1GymEnv-v0_3/rl_model_200000_steps.zip
pybullet build time: Aug 16 2021 13:56:42
argv[0]=
/home/dtch1997/anaconda3/envs/rl-baselines3-zoo/lib/python3.8/site-packages/gym/logger.py:34: UserWarning: WARN: Box bound precision lowered by casting to float32
  warnings.warn(colorize("%s: %s" % ("WARN", msg % args), "yellow"))
Loading running average
with params: {'norm_obs': True, 'norm_reward': False}
Traceback (most recent call last):
  File "enjoy.py", line 248, in <module>
    main()
  File "enjoy.py", line 197, in main
    env.render("human")
  File "/home/dtch1997/anaconda3/envs/rl-baselines3-zoo/lib/python3.8/site-packages/stable_baselines3/common/vec_env/base_vec_env.py", line 281, in render
    return self.venv.render(mode=mode)
  File "/home/dtch1997/anaconda3/envs/rl-baselines3-zoo/lib/python3.8/site-packages/stable_baselines3/common/vec_env/dummy_vec_env.py", line 85, in render
    return self.envs[0].render(mode=mode)
  File "/home/dtch1997/anaconda3/envs/rl-baselines3-zoo/lib/python3.8/site-packages/gym/core.py", line 254, in render
    return self.env.render(mode, **kwargs)
  File "/home/dtch1997/anaconda3/envs/rl-baselines3-zoo/lib/python3.8/site-packages/gym/core.py", line 254, in render
    return self.env.render(mode, **kwargs)
  File "/home/dtch1997/anaconda3/envs/rl-baselines3-zoo/lib/python3.8/site-packages/gym/core.py", line 254, in render
    return self.env.render(mode, **kwargs)
  File "/home/dtch1997/code/rl-baselines3-zoo/blind_walking/envs/gym_envs/a1_gym_env.py", line 36, in render
    return self._env.render('rgb_array')
  File "/home/dtch1997/code/rl-baselines3-zoo/blind_walking/envs/env_wrappers/observation_dictionary_to_array_wrapper.py", line 65, in render
    return self._gym_env.render(mode)
  File "/home/dtch1997/code/rl-baselines3-zoo/blind_walking/envs/locomotion_gym_env.py", line 389, in render
    rgb_array = rgb_array[:, :, :3]
IndexError: too many indices for array: array is 1-dimensional, but 3 were indexed

I resolved this after some printing and taking time to understand Pybullet's GetCameraImage() function.

The issue was that the returned array was expected to be 3D (RGBA) but the GetCameraImage function returns it as a single line. I resolved the issue after casting the array to the right shape and type. See branch debug/log_rgb_array