Giter Site home page Giter Site logo

movingcam's Introduction

Human Dynamics from Monocular Video with Dynamic Camera Movements

Ri Yu, Hwangpil Park and Jehee Lee

Seoul National University

ACM Transactions on Graphics, Volume 40, Number 6, Article 208. (SIGGRAPH Asia 2021)

Teaser Image

Abstract

We propose a new method that reconstructs 3D human motion from in-the wild video by making full use of prior knowledge on the laws of physics. Previous studies focus on reconstructing joint angles and positions in the body local coordinate frame. Body translations and rotations in the global reference frame are partially reconstructed only when the video has a static camera view. We are interested in overcoming this static view limitation to deal with dynamic view videos. The camera may pan, tilt, and zoom to track the moving subject. Since we do not assume any limitations on camera movements, body translations and rotations from the video do not correspond to absolute positions in the reference frame. The key technical challenge is inferring body translations and rotations from a sequence of 3D full-body poses, assuming the absence of root motion. This inference is possible because human motion obeys the law of physics. Our reconstruction algorithm produces a control policy that simulates 3D human motion imitating the one in the video. Our algorithm is particularly useful for reconstructing highly dynamic movements, such as sports, dance, gymnastics, and parkour actions.

Requirements

  • Ubuntu (tested on 22.04 LTS and 18.04 LTS)

  • Python 3 (tested on version 3.6+)

  • Dart (modified version, see below)

  • Fltk 1.3.4.1

Installation

Dart

sudo apt install git cmake wget build-essential freeglut3-dev libeigen3-dev libassimp-dev libccd-dev libfcl-dev libboost-regex-dev libboost-system-dev libopenscenegraph-dev coinor-libipopt-dev libbullet-dev libode-dev liboctomap-dev libflann-dev libtinyxml2-dev liburdfdom-dev doxygen libxi-dev libxmu-dev liblz4-dev

# Ubuntu 18.04
sudo apt install libnlopt-dev

# Ubuntu 22.04
sudo apt install libnlopt-cxx-dev libboost-filesystem-dev

git clone https://github.com/hpgit/dart-ltspd.git
cd dart-ltspd
mkdir build
cd build
cmake ..
make -j4
sudo make install

Pydart

# Ubuntu 18.04
sudo apt install swig

# Ubuntu 22.04
sudo apt install swig3.0
sudo ln -s /usr/bin/swig3.0 /usr/bin/swig

sudo apt install python3-venv python3-dev

after making a virtual environment (venv) in the movingcam repo,

source venv/bin/activate
git clone https://github.com/hpgit/pydart2.git
cd pydart2
pip install -U pip
pip install wheel

# Python 3.6
pip install numpy
pip install pyopengl==3.1.0
pip install pyopengl-accelerate==3.1.0

# Python 3.7 or above
pip install numpy==1.23
pip install pyopengl pyopengl-accelerate

python setup.py build
python setup.py install

Fltk and Pyfltk

sudo apt install libfltk1.3-dev

Download pyfltk

cd ~/Downloads
tar xzf pyFltk-1.3.4.1_py3.tar
cd pyFltk-1.3.4.1
python setup.py build
python setup.py install

misc

sudo apt install libgle3-dev

# Python 3.6
pip install torch
pip install cvxopt
pip install scipy
pip install gym
pip install tensorboard==2.0.0
pip install setuptools==59.5.0
pip install pillow

# Python 3.7 or above
pip install torch==1.13.1 cvxopt scipy gym tensorboard pillow

Dump frames

sudo apt install ffmpeg ffplay
cd PyCommon/modules/GUI
python setup.py build
find ./ -name "csDump*.so" | xargs -I{} cp {} ./

Steps for running with a custom video

  1. Run OpenPose to get 2D poses (.json).

  2. Run "foot_contact/annotate.py" to get contact information ([motion_name]_contact_info.npy) from step 1.

  3. Run VIBE to get 3D poses (.pkl).

  4. Run "ik/get_bvh_from_vibe_limited_v2.py" to get the IK result ([motion_name].skmo) from step 3.

  5. Define the environment (interacting objects) in the "control/[motion_name]/[motion_name]_env.py". (You can search for related code lines by the word "box".)

  6. Run PPO "control/hurdle/[motion_name]_ppo_mp.py".

Run examples

source venv/bin/activate
export PYTHONPATH=$PWD
export LD_LIBRARY_PATH=/usr/local/lib
cd control/parkour1
python3 render_parkour1.py

Bibtex

@article{Yu:2021:MovingCam,
    author = {Yu, Ri and Park, Hwangpil and Lee, Jehee},
    title = {Human Dynamics from Monocular Video with Dynamic Camera Movements},
    journal = {ACM Trans. Graph.},
    volume = {40},
    number = {6},
    year = {2021},
    articleno = {208}
}

movingcam's People

Contributors

yul85 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

movingcam's Issues

some questions !

@yul85

hello , i managed to run everything but i have 3 questions

1- how are you able to set the location of the boxes in the code without a preview for example i have a video with four boxes that the character interact with , how can i add their location correctly in the _env.py script

2- i get an error when running the scripts with my own data

(venv) (mocap) genesis@DESKTOP-N3L45SD:~/github/mocap/movingcam/control/parkour$ python parkour_ppo_mp.py
Traceback (most recent call last):
File "parkour_ppo_mp.py", line 508, in
ppo = PPO('parkour', 16)
File "parkour_ppo_mp.py", line 217, in init
self.env = SkateDartEnv()
File "/home/genesis/github/mocap/movingcam/control/parkour/parkour_env.py", line 42, in init
self.ref_motion.reset_root_trajectory_parkour(self.ref_skel)
AttributeError: 'DartSkelMotion' object has no attribute 'reset_root_trajectory_parkour'

is that related to the video dimensions that i used to extract open pose and deep foot contact data because the dots of foot contacts seem little bit big in the video preview because i use 300*500 video quality or it doesn't have an impact

3- do i have to run openpose_enhance.py or its ok just to use the ordinary way explained in the open pose repo , will openpose_enhance improve the quality of the output motion

dart-ltspd can not be built

CMake Error at examples/deprecated_examples/glut_human_joint_limits/CMakeLists.txt:43 (endif):
  Flow control statements are not properly nested.

Can u please add anothe fork for these thirdparty dependencies, they always change API can break this repo's build which is really annoying.

For newcomer users can be very confused by these errros.

make error - nlopt.hpp: No Such file or directory

Hi, I am following the installation instructions using UBUNTU running on wsl on windows 10.
I run the command ''$ make -j4" and get the error below.


[ 70%] Built target dart-optimizer-ipopt
[ 71%] Building CXX object dart/optimizer/nlopt/CMakeFiles/dart-optimizer-nlopt.dir/NloptSolver.cpp.o
In file included from /home/rr/DynMo/dart-ltspd/dart/optimizer/nlopt/NloptSolver.cpp:35:
/home/rr/DynMo/dart-ltspd/dart/optimizer/nlopt/NloptSolver.hpp:36:10: fatal error: nlopt.hpp: No such file or directory
36 | #include <nlopt.hpp>
| ^~~~~~~~~~~
compilation terminated.
make[2]: *** [dart/optimizer/nlopt/CMakeFiles/dart-optimizer-nlopt.dir/build.make:63: dart/optimizer/nlopt/CMakeFiles/dart-optimizer-nlopt.dir/NloptSolver.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:2273: dart/optimizer/nlopt/CMakeFiles/dart-optimizer-nlopt.dir/all] Error 2
make: *** [Makefile:141: all] Error 2

Any assistance is appreciated.

speed issue !

thanks alot for this awesome work , i just want to ask why this step using get_bvh_from_vibe_limited_v2.py is slow also its not utilizing my cpu or gpu power it just uses arround 7 % of cpu and its slow , how can i increase the speed

Screenshot (59)

ppo algorithm training speed is very slow

Hello,I am very interesting in your excellenct work!
I found that the training speed of the ppo algorithm is very slow, about 7 seconds per iteration. Is there any way to improve the training speed?thank you!

info about the last two steps !

i checked the code of motion in control folder but i have no idea how the code inside made , i got the file "parkour_vibe_dof_limit_v2.skmo" after doing the first 4 steps , i would appreciate if there is more documentation on these two steps
and how you got the bvh file

5-Define the environment (interacting objects) in the "control/[motion_name]/[motion_name]_env.py". (You can search for related code lines by the word "box".)

6-Run PPO "control/hurdle/[motion_name]_ppo_mp.py".

.skmo format specifications

As I understand .skmo contains the data converted from the VIBE output. I was not able to find any related scripts or descriptions of how it's done. Would be great to have some details about it. Thanks!

error when running _ppo_mp.py

@yul85 i get this error when running the script hurdle_ppo_mp.py

(venv) (mocap) genesis@DESKTOP-N3L45SD:~/github/mocap/movingcam/control/hurdle$ python hurdle_ppo_mp.py
/home/genesis/github/mocap/movingcam/venv/lib/python3.8/site-packages/gym/spaces/box.py:127: UserWarning: WARN: Box bound precision lowered by casting to float32
logger.warn(f"Box bound precision lowered by casting to {self.dtype}")
/home/genesis/github/mocap/movingcam/venv/lib/python3.8/site-packages/gym/spaces/box.py:127: UserWarning: WARN: Box bound precision lowered by casting to float32
logger.warn(f"Box bound precision lowered by casting to {self.dtype}")
/home/genesis/github/mocap/movingcam/venv/lib/python3.8/site-packages/gym/spaces/box.py:127: UserWarning: WARN: Box bound precision lowered by casting to float32
logger.warn(f"Box bound precision lowered by casting to {self.dtype}")
/home/genesis/github/mocap/movingcam/venv/lib/python3.8/site-packages/gym/spaces/box.py:127: UserWarning: WARN: Box bound precision lowered by casting to float32
logger.warn(f"Box bound precision lowered by casting to {self.dtype}")
/home/genesis/github/mocap/movingcam/venv/lib/python3.8/site-packages/gym/spaces/box.py:127: UserWarning: WARN: Box bound precision lowered by casting to float32
logger.warn(f"Box bound precision lowered by casting to {self.dtype}")
/home/genesis/github/mocap/movingcam/venv/lib/python3.8/site-packages/gym/spaces/box.py:127: UserWarning: WARN: Box bound precision lowered by casting to float32
logger.warn(f"Box bound precision lowered by casting to {self.dtype}")
/home/genesis/github/mocap/movingcam/venv/lib/python3.8/site-packages/gym/spaces/box.py:127: UserWarning: WARN: Box bound precision lowered by casting to float32
logger.warn(f"Box bound precision lowered by casting to {self.dtype}")
/home/genesis/github/mocap/movingcam/venv/lib/python3.8/site-packages/gym/spaces/box.py:127: UserWarning: WARN: Box bound precision lowered by casting to float32
logger.warn(f"Box bound precision lowered by casting to {self.dtype}")
/home/genesis/github/mocap/movingcam/venv/lib/python3.8/site-packages/gym/spaces/box.py:127: UserWarning: WARN: Box bound precision lowered by casting to float32
logger.warn(f"Box bound precision lowered by casting to {self.dtype}")
/home/genesis/github/mocap/movingcam/venv/lib/python3.8/site-packages/gym/spaces/box.py:127: UserWarning: WARN: Box bound precision lowered by casting to float32
logger.warn(f"Box bound precision lowered by casting to {self.dtype}")
/home/genesis/github/mocap/movingcam/venv/lib/python3.8/site-packages/gym/spaces/box.py:127: UserWarning: WARN: Box bound precision lowered by casting to float32
logger.warn(f"Box bound precision lowered by casting to {self.dtype}")
/home/genesis/github/mocap/movingcam/venv/lib/python3.8/site-packages/gym/spaces/box.py:127: UserWarning: WARN: Box bound precision lowered by casting to float32
logger.warn(f"Box bound precision lowered by casting to {self.dtype}")
/home/genesis/github/mocap/movingcam/venv/lib/python3.8/site-packages/gym/spaces/box.py:127: UserWarning: WARN: Box bound precision lowered by casting to float32
logger.warn(f"Box bound precision lowered by casting to {self.dtype}")
/home/genesis/github/mocap/movingcam/venv/lib/python3.8/site-packages/gym/spaces/box.py:127: UserWarning: WARN: Box bound precision lowered by casting to float32
logger.warn(f"Box bound precision lowered by casting to {self.dtype}")
/home/genesis/github/mocap/movingcam/venv/lib/python3.8/site-packages/gym/spaces/box.py:127: UserWarning: WARN: Box bound precision lowered by casting to float32
logger.warn(f"Box bound precision lowered by casting to {self.dtype}")
/home/genesis/github/mocap/movingcam/venv/lib/python3.8/site-packages/gym/spaces/box.py:127: UserWarning: WARN: Box bound precision lowered by casting to float32
logger.warn(f"Box bound precision lowered by casting to {self.dtype}")
/home/genesis/github/mocap/movingcam/venv/lib/python3.8/site-packages/gym/spaces/box.py:127: UserWarning: WARN: Box bound precision lowered by casting to float32
logger.warn(f"Box bound precision lowered by casting to {self.dtype}")
hurdle_ppo_mp.py:365: UserWarning: Creating a tensor from a list of numpy.ndarrays is extremely slow. Please consider converting the list to a single numpy.ndarray with numpy.array() before converting to a tensor. (Triggered internally at ../torch/csrc/utils/tensor_new.cpp:261.)
a_dist, v = self.model(torch.tensor(states).float())
Process Process-5:
Process Process-7:
Process Process-10:
Process Process-15:
Process Process-16:
Process Process-3:
Process Process-11:
Process Process-8:
Process Process-9:
Traceback (most recent call last):
Traceback (most recent call last):
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "hurdle_ppo_mp.py", line 180, in worker
state, reward, is_done, _ = env.step(action)
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 395, in step
return tuple([self.state(), self.reward(), self.is_done(), {}])
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 220, in reward
up_angle_hat = self.up_angle_list[self.current_frame]
File "hurdle_ppo_mp.py", line 180, in worker
state, reward, is_done, _ = env.step(action)
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 395, in step
return tuple([self.state(), self.reward(), self.is_done(), {}])
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 220, in reward
up_angle_hat = self.up_angle_list[self.current_frame]
IndexError: list index out of range
IndexError: list index out of range
Traceback (most recent call last):
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "hurdle_ppo_mp.py", line 180, in worker
state, reward, is_done, _ = env.step(action)
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 395, in step
return tuple([self.state(), self.reward(), self.is_done(), {}])
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 220, in reward
up_angle_hat = self.up_angle_list[self.current_frame]
IndexError: list index out of range
Process Process-13:
Traceback (most recent call last):
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "hurdle_ppo_mp.py", line 180, in worker
state, reward, is_done, _ = env.step(action)
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 395, in step
return tuple([self.state(), self.reward(), self.is_done(), {}])
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 220, in reward
up_angle_hat = self.up_angle_list[self.current_frame]
IndexError: list index out of range
Process Process-12:
Traceback (most recent call last):
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "hurdle_ppo_mp.py", line 180, in worker
state, reward, is_done, _ = env.step(action)
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 395, in step
return tuple([self.state(), self.reward(), self.is_done(), {}])
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 220, in reward
up_angle_hat = self.up_angle_list[self.current_frame]
IndexError: list index out of range
Process Process-6:
Traceback (most recent call last):
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "hurdle_ppo_mp.py", line 180, in worker
state, reward, is_done, _ = env.step(action)
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 395, in step
return tuple([self.state(), self.reward(), self.is_done(), {}])
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 220, in reward
up_angle_hat = self.up_angle_list[self.current_frame]
IndexError: list index out of range
Process Process-2:
Traceback (most recent call last):
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "hurdle_ppo_mp.py", line 180, in worker
state, reward, is_done, _ = env.step(action)
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 395, in step
return tuple([self.state(), self.reward(), self.is_done(), {}])
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 220, in reward
up_angle_hat = self.up_angle_list[self.current_frame]
IndexError: list index out of range
Traceback (most recent call last):
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "hurdle_ppo_mp.py", line 180, in worker
state, reward, is_done, _ = env.step(action)
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 395, in step
return tuple([self.state(), self.reward(), self.is_done(), {}])
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 220, in reward
up_angle_hat = self.up_angle_list[self.current_frame]
Process Process-4:
Traceback (most recent call last):
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "hurdle_ppo_mp.py", line 180, in worker
state, reward, is_done, _ = env.step(action)
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 395, in step
return tuple([self.state(), self.reward(), self.is_done(), {}])
IndexError: list index out of range
Traceback (most recent call last):
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "hurdle_ppo_mp.py", line 180, in worker
state, reward, is_done, _ = env.step(action)
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 395, in step
return tuple([self.state(), self.reward(), self.is_done(), {}])
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 220, in reward
up_angle_hat = self.up_angle_list[self.current_frame]
IndexError: list index out of range
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 220, in reward
up_angle_hat = self.up_angle_list[self.current_frame]
IndexError: list index out of range
Traceback (most recent call last):
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "hurdle_ppo_mp.py", line 180, in worker
state, reward, is_done, _ = env.step(action)
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 395, in step
return tuple([self.state(), self.reward(), self.is_done(), {}])
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 220, in reward
up_angle_hat = self.up_angle_list[self.current_frame]
IndexError: list index out of range
Traceback (most recent call last):
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "hurdle_ppo_mp.py", line 180, in worker
state, reward, is_done, _ = env.step(action)
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 395, in step
return tuple([self.state(), self.reward(), self.is_done(), {}])
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 220, in reward
up_angle_hat = self.up_angle_list[self.current_frame]
IndexError: list index out of range
Process Process-1:
Traceback (most recent call last):
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "hurdle_ppo_mp.py", line 180, in worker
state, reward, is_done, _ = env.step(action)
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 395, in step
return tuple([self.state(), self.reward(), self.is_done(), {}])
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 220, in reward
up_angle_hat = self.up_angle_list[self.current_frame]
IndexError: list index out of range
Traceback (most recent call last):
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "hurdle_ppo_mp.py", line 180, in worker
state, reward, is_done, _ = env.step(action)
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 395, in step
return tuple([self.state(), self.reward(), self.is_done(), {}])
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 220, in reward
up_angle_hat = self.up_angle_list[self.current_frame]
IndexError: list index out of range
Traceback (most recent call last):
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "hurdle_ppo_mp.py", line 180, in worker
state, reward, is_done, _ = env.step(action)
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 395, in step
return tuple([self.state(), self.reward(), self.is_done(), {}])
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 220, in reward
up_angle_hat = self.up_angle_list[self.current_frame]
IndexError: list index out of range
Process Process-14:
Traceback (most recent call last):
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/home/genesis/miniconda3/envs/mocap/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "hurdle_ppo_mp.py", line 180, in worker
state, reward, is_done, _ = env.step(action)
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 395, in step
return tuple([self.state(), self.reward(), self.is_done(), {}])
File "/home/genesis/github/mocap/movingcam/control/hurdle/hurdle_env.py", line 220, in reward
up_angle_hat = self.up_angle_list[self.current_frame]
IndexError: list index out of range

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.