Code Monkey home page Code Monkey logo

deepmimic's Introduction

Intro

Code accompanying the following papers:

"DeepMimic: Example-Guided Deep Reinforcement Learning of Physics-Based Character Skills"
(https://xbpeng.github.io/projects/DeepMimic/index.html)
Skills

"AMP: Adversarial Motion Priors for Stylized Physics-Based Character Control"
(https://xbpeng.github.io/projects/AMP/index.html)
Skills

The framework uses reinforcement learning to train a simulated humanoid to imitate a variety of motion skills from mocap data.

Dependencies

sudo apt install libgl1-mesa-dev libx11-dev libxrandr-dev libxi-dev

sudo apt install mesa-utils

sudo apt install clang

sudo apt install cmake

C++:

Misc:

Python:

pip install PyOpenGL PyOpenGL_accelerate

pip install tensorflow

pip install mpi4py

Build

The simulated environments are written in C++, and the python wrapper is built using SWIG. Note that MPI must be installed before MPI4Py. When building Bullet, be sure to disable double precision with the build flag USE_DOUBLE_PRECISION=OFF.

Windows

The wrapper is built using DeepMimicCore.sln.

  1. Select the x64 configuration from the configuration manager.

  2. Under the project properties for DeepMimicCore modify Additional Include Directories to specify

    • Bullet source directory
    • Eigen include directory
    • python include directory
  3. Modify Additional Library Directories to specify

    • Bullet lib directory
    • python lib directory
  4. Build DeepMimicCore project with the Release_Swig configuration and this should generate DeepMimicCore.py in DeepMimicCore/.

Linux

  1. Modify the Makefile in DeepMimicCore/ by specifying the following,

    • EIGEN_DIR: Eigen include directory
    • BULLET_INC_DIR: Bullet source directory
    • PYTHON_INC: python include directory
    • PYTHON_LIB: python lib directory
  2. Build wrapper,

    make python
    

This should generate DeepMimicCore.py in DeepMimicCore/

How to Use

Once the python wrapper has been built, training is done entirely in python using Tensorflow. DeepMimic.py runs the visualizer used to view the simulation. Training is done with mpi_run.py, which uses MPI to parallelize training across multiple processes.

DeepMimic.py is run by specifying an argument file that provides the configurations for a scene. For example,

python DeepMimic.py --arg_file args/run_humanoid3d_spinkick_args.txt

will run a pre-trained policy for a spinkick. Similarly,

python DeepMimic.py --arg_file args/play_motion_humanoid3d_args.txt

will load and play a mocap clip. To run a pre-trained policy for a simulated dog, use this command

python DeepMimic.py --arg_file args/run_dog3d_pace_args.txt

To train a policy, use mpi_run.py by specifying an argument file and the number of worker processes. For example,

python mpi_run.py --arg_file args/train_humanoid3d_spinkick_args.txt --num_workers 16

will train a policy to perform a spinkick using 16 workers. As training progresses, it will regularly print out statistics and log them to output/ along with a .ckpt of the latest policy. It typically takes about 60 millions samples to train one policy, which can take a day when training with 16 workers. 16 workers is likely the max number of workers that the framework can support, and it can get overwhelmed if too many workers are used.

A number of argument files are already provided in args/ for the different skills. train_[something]_args.txt files are setup for mpi_run.py to train a policy, and run_[something]_args.txt files are setup for DeepMimic.py to run one of the pretrained policies. To run your own policies, take one of the run_[something]_args.txt files and specify the policy you want to run with --model_file. Make sure that the reference motion --motion_file corresponds to the motion that your policy was trained for, otherwise the policy will not run properly.

Similarly, to train a policy using amp, run with the corresponding argument files:

python mpi_run.py --arg_file args/train_amp_target_humanoid3d_locomotion_args.txt --num_workers 16

Pretrained AMP models can be evaluated using:

python DeepMimic.py --arg_file args/run_amp_target_humanoid3d_locomotion_args.txt

Interface

  • the plot on the top-right shows the predictions of the value function
  • right click and drag will pan the camera
  • left click and drag will apply a force on the character at a particular location
  • scrollwheel will zoom in/out
  • pressing 'r' will reset the episode
  • pressing 'l' will reload the argument file and rebuild everything
  • pressing 'x' will pelt the character with random boxes
  • pressing space will pause/resume the simulation
  • pressing '>' will step the simulation one step at a time

Mocap Data

Mocap clips are located in data/motions/. To play a clip, first modify args/play_motion_humanoid3d_args.txt and specify the file to play with --motion_file, then run

python DeepMimic.py --arg_file args/play_motion_humanoid3d_args.txt

The motion files follow the JSON format. The "Loop" field specifies whether or not the motion is cyclic. "wrap" specifies a cyclic motion that will wrap back to the start at the end, while "none" specifies an acyclic motion that will stop once it reaches the end of the motion. Each vector in the "Frames" list specifies a keyframe in the motion. Each frame has the following format:

[
	duration of frame in seconds (1D),
	root position (3D),
	root rotation (4D),
	chest rotation (4D),
	neck rotation (4D),
	right hip rotation (4D),
	right knee rotation (1D),
	right ankle rotation (4D),
	right shoulder rotation (4D),
	right elbow rotation (1D),
	left hip rotation (4D),
	left knee rotation (1D),
	left ankle rotation (4D),
	left shoulder rotation (4D),
	left elbow rotation (1D)
]

Positions are specified in meters, 3D rotations for spherical joints are specified as quaternions (w, x, y ,z), and 1D rotations for revolute joints (e.g. knees and elbows) are represented with a scalar rotation in radians. The root positions and rotations are in world coordinates, but all other joint rotations are in the joint's local coordinates. To use your own motion clip, convert it to a similar style JSON file.

Possible Issues and Solutions

ImportError: libGLEW.so.2.1: cannot open shared object file: No such file or directory search for libGLEW.so.2.1 and use the following command accordingly ln /path/to/libGLEW.so.2.1 /usr/lib/x86----/libGLEW.so.2.1 ln /path/to/libGLEW.so.2.1.0 /usr/lib/x86----/libGLEW.so.2.1.0

ImportError: libBulletDynamics.so.2.88: cannot open shared object file: No such file or directory export LD_LIBRARY_PATH=/usr/local/lib/ ( can be temporary when run in terminal) (libBullet file are present in that path - gets installed in that path after the command sudo make install while installing Bullet)

Misc.

deepmimic's People

Contributors

0xflotus avatar 376temp avatar alan-man avatar dev-bz avatar donnyward avatar intelligentindia7 avatar mids avatar sloganking avatar williamtambellini avatar xbpeng 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  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

deepmimic's Issues

Training exception: test return increases explosively, while train return is quite small.

figure_1
As shown in the figure, as the training goes on about 8 hours, test return starts to increase explosively. At the same time, train return still increases quite steady, and test return becomes multiple times than train return. In about 12 hours, both test return and train return experience a sudden drop and become pretty close.
I see no difference between the code to calculate the train return and test return. Can you help to explain that? Appreciate that.

freeglut error

Hi I have successfully built the python wrapper with VS2017.
When I run
python DeepMimic.py --arg_file args\run_humanoid3d_spinkick_args.txt

I got the following output. Please help, thanks

OpenGL_accelerate seems to be installed, but unable to import expected wrapper entry points!
O:\WinPython-64bit-3.6.3.0Qt5\python-3.6.3.amd64\lib\site-packages\h5py_init_.py:36: FutureWarning: Conversion of the second argument of issubdtype from float to np.floating is deprecated. In future, it will be treated as np.float64 == np.dtype(float).type.
from ._conv import register_converters as _register_converters
WARNING:tensorflow:From O:\WinPython-64bit-3.6.3.0Qt5\python-3.6.3.amd64\lib\site-packages\tensorflow\contrib\learn\python\learn\datasets\base.py:198: retry (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.
Instructions for updating:
Use the retry module or similar alternatives.
O:\WinPython-64bit-3.6.3.0Qt5\python-3.6.3.amd64\lib\site-packages\fastparquet\dataframe.py:7: FutureWarning: 'pandas.core' is private. Use 'pandas.Categorical'
from pandas.core.categorical import Categorical, CategoricalDtype
Renderer: GeForce GT 730/PCIe/SSE2
OpenGL version supported 3.2.0 NVIDIA 416.34
Compiling shader: data/shaders/Mesh_VS.glsl
Compiling shader: data/shaders/VertColor_PS.glsl
Compiling shader: data/shaders/FullScreenQuad_VS.glsl
Compiling shader: data/shaders/DownSample_PS.glsl
Compiling shader: data/shaders/Mesh_VS.glsl
Compiling shader: data/shaders/DownSample_PS.glsl

Agent Registry
Num Agents: 1
Agent 0: ct_pd

Compiling shader: data/shaders/Mesh_VS.glsl
Compiling shader: data/shaders/Depth_PS.glsl
Compiling shader: data/shaders/Mesh_VS.glsl
Compiling shader: data/shaders/Lighting_Lambert_PS.glsl
Loaded scene: Imitate

Num Agents: 1
Agent 0: data/agents/ct_agent_humanoid_ppo.txt
2018-10-20 01:54:18.955724: I T:\src\github\tensorflow\tensorflow\core\platform\cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
Built actor net: fc_2layers_1024units
Built critic net: fc_2layers_1024units
{
"ID": 0,
"Type": "PPO",
"ActionSpace": "Continuous",
"StateDim": 197,
"GoalDim": 0,
"ActionDim": 36
}
Model loaded from: data/policies/humanoid3d/humanoid3d_spinkick.ckpt

freeglut ERROR: Function <glutPostRedisplay> called without first calling 'glutInit'.

Import issues

Hi, after successfull installation, when I execute the demo example 'python DeepMimic.py --arg_file args/run_humanoid3d_spinkick_args.txt' I run into '' ImportError related to _DeepMimicCore.so: undefined symbol: _ZN6cSpAlg10gSpVecSizeE ''.

Do you happen to face similar issues?

linux version

Hi ,
can you mention in which linux version did you install this environment as i think my problem is with linux version ,i am having some troubles in the bullet installation as stated in one of the issues that can't find
cannot find -lBulletDynamics
cannot find -lBulletCollision
when i built it i think it should be build in the src/bin and src/include but it doesn't.
i have specified a build folder and i have put it in
Makefile in DeepMimicCore/

thanks in advance

How to understand the state?

Hi, Jason. Now I have question about the state. As I read the paper and the code, I think the state is of the format [phi, root_y, dx1, dy1, dz1, w1, nx1, ny1, nz1, ..... dxn, dyn, dzn, wn, nxn, nyn, nzn, velocities...].

Since the rotations are computed in the local coordinate, rotations of corresponding link directly extracted from state can be used to create motion file.

However, I cannot get correct motion file in this way (I run the trained model for one eposide and record the state sequence, and extract rotations from the state to create motion file).... So, I wonder how I should understand the state, what's the difference of the rotation representation between state and motion file?

Implementing env.setpose() in Python

I want to vary the initial state of the humanoid with my custom motion capture data.
In other words, I want to implement sth like env.SetPose() in python with minimum modification in deepmimiccore files.

But I could not really how RSI is implemented in deepmimicCore and deepmimicEnv.
Can you give me some clues which code I need to read through?

freeglut (foo): ERROR: Internal error <FBConfig with necessary capabilities not found> in function fgOpenWindow

My system enviroment

python:anaconda3

bullet3: 2.87

The bullet was installed use two different mehods:

method 1:

cmake .
make 
sudo make install

method 2:

./build_cmake_pybullet_double.sh

And the pybullet and Bullet/example/examplebrowser could be opened without problem.

Build process

My directory variable set as:

EIGEN_DIR = /data/program/eigen-eigen-b3f3d4950030
BULLET_INC_DIR = /data/program/bullet3-2.87/src

PYTHON_INC = /home/forrest/anaconda3/include/python3.6m
PYTHON_LIB = /home/forrest/anaconda3/lib -lpython3.6m

When I build DeepMimic, after entering make python,the build process stop with the output as follows:

17 warnings generated.
clang++ -shared -std=c++11 -O3 -Wall -fPIC  objs/Main.o objs/DeepMimicCore.o objs/util/Annealer.o objs/util/ArgParser.o objs/util/BVHReader.o objs/util/FileUtil.o objs/util/IndexManager.o objs/util/JsonUtil.o objs/util/MathUtil.o objs/util/Rand.o objs/util/Timer.o objs/util/Trajectory.o objs/util/json/json_reader.o objs/util/json/json_value.o objs/util/json/json_writer.o objs/anim/Character.o objs/anim/KinCharacter.o objs/anim/KinTree.o objs/anim/Motion.o objs/anim/Shape.o objs/sim/AgentRegistry.o objs/sim/CharController.o objs/sim/ContactManager.o objs/sim/Controller.o objs/sim/CtController.o objs/sim/CtCtrlUtil.o objs/sim/CtPDController.o objs/sim/CtrlBuilder.o objs/sim/CtVelController.o objs/sim/DeepMimicCharController.o objs/sim/ExpPDController.o objs/sim/GroundBuilder.o objs/sim/Ground.o objs/sim/GroundPlane.o objs/sim/ImpPDController.o objs/sim/MultiBody.o objs/sim/ObjTracer.o objs/sim/PDController.o objs/sim/Perturb.o objs/sim/PerturbManager.o objs/sim/RBDModel.o objs/sim/RBDUtil.o objs/sim/SimBodyJoint.o objs/sim/SimBodyLink.o objs/sim/SimBox.o objs/sim/SimCapsule.o objs/sim/SimCharacter.o objs/sim/SimCharBuilder.o objs/sim/SimCharGeneral.o objs/sim/SimCylinder.o objs/sim/SimJoint.o objs/sim/SimObj.o objs/sim/SimPlane.o objs/sim/SimRigidBody.o objs/sim/SimSphere.o objs/sim/SpAlg.o objs/sim/World.o objs/render/Camera.o objs/render/DrawCharacter.o objs/render/DrawGround.o objs/render/DrawKinTree.o objs/render/DrawMesh.o objs/render/DrawObj.o objs/render/DrawPerturb.o objs/render/DrawSimCharacter.o objs/render/DrawUtil.o objs/render/DrawWorld.o objs/render/GraphUtil.o objs/render/IBuffer.o objs/render/MatrixStack.o objs/render/MeshUtil.o objs/render/Shader.o objs/render/ShadowMap.o objs/render/TextureDesc.o objs/render/TextureUtil.o objs/render/VertexBuffer.o objs/render/lodepng/lodepng.o objs/render/lodepng/lodepng_util.o objs/scenes/DrawRLScene.o objs/scenes/DrawScene.o objs/scenes/DrawSceneImitate.o objs/scenes/DrawSceneKinChar.o objs/scenes/DrawSceneSimChar.o objs/scenes/RLScene.o objs/scenes/RLSceneSimChar.o objs/scenes/SceneBuilder.o objs/scenes/Scene.o objs/scenes/SceneImitate.o objs/scenes/SceneKinChar.o objs/scenes/SceneSimChar.o  -lGLEW -lGL -lGLU -lglut -lBulletDynamics -lBulletCollision -lLinearMath DeepMimicCore_wrap.o -o _DeepMimicCore.so -L/home/forrest/anaconda3/lib -lpython3.6m

issue

At the time, I thought the build process finished, but when I run

python DeepMimic.py --arg_file args/run_humanoid3d_spinkick_args.txt

I get a Error about freeglut. But I test freeglut with other script, it's works.

forrest@cyborg:/data/Documents/DeepMimic$ python DeepMimic.py --arg_file args/run_humanoid3d_spinkick_args.txt
/home/forrest/anaconda3/lib/python3.6/site-packages/h5py/__init__.py:34: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
  from ._conv import register_converters as _register_converters
freeglut (foo):  ERROR:  Internal error <FBConfig with necessary capabilities not found> in function fgOpenWindow

And glxinfo | grep OpenGL output as follows:

OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: TITAN X (Pascal)/PCIe/SSE2
OpenGL core profile version string: 4.3.0 NVIDIA 384.111
OpenGL core profile shading language version string: 4.30 NVIDIA via Cg compiler
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.5.0 NVIDIA 384.111
OpenGL shading language version string: 4.50 NVIDIA
OpenGL context flags: (none)
OpenGL profile mask: (none)
OpenGL extensions:

I googled this problem, but did not find a solution. Could you give me some tips to fix this problem? Thanks!

Question About deepmimic

Thanks for a great repo!
I'd like to ask a few question about a things that was hard to figureout from code and a bit hard the constract enviroment.

  1. Did you penalize at the ground contact of any body except foot other than termination?

  2. About the Skill selector
    Is the skill selection done at the reset phase and maximum number of step is shorter than single skills such as one action? Because if the initial pose is the same in a few skill reference motion then it's equal to do the action in the middle of action. Also the collected states includes the phase variable therefore the first step should be multiple of each action's step.

make python issue

I was very impressed your paper.
Thus, I tried to build&run your code for academic reason.
But I got problem when I build your source code.
error message is below.

$ make python
....
17 warnings generated.
clang++ -shared -std=c++11 -O3 -Wall -fPIC objs/Main.o objs/DeepMimicCore.o objs/util/IndexManager.o objs/util/Timer.o objs/util/Annealer.o objs/util/ArgParser.o objs/util/Trajectory.o objs/util/Rand.o objs/util/MathUtil.o objs/util/FileUtil.o objs/util/JsonUtil.o objs/util/BVHReader.o objs/util/json/json_value.o objs/util/json/json_reader.o objs/util/json/json_writer.o objs/anim/Shape.o objs/anim/KinTree.o objs/anim/Character.o objs/anim/KinCharacter.o objs/anim/Motion.o objs/sim/CtController.o objs/sim/SimSphere.o objs/sim/ImpPDController.o objs/sim/CtrlBuilder.o objs/sim/PerturbManager.o objs/sim/RBDUtil.o objs/sim/SimObj.o objs/sim/SimBox.o objs/sim/SpAlg.o objs/sim/SimCapsule.o objs/sim/Controller.o objs/sim/CharController.o objs/sim/SimBodyLink.o objs/sim/GroundPlane.o objs/sim/CtCtrlUtil.o objs/sim/SimCharBuilder.o objs/sim/CtVelController.o objs/sim/SimBodyJoint.o objs/sim/DeepMimicCharController.o objs/sim/AgentRegistry.o objs/sim/ExpPDController.o objs/sim/CtPDController.o objs/sim/SimPlane.o objs/sim/GroundBuilder.o objs/sim/World.o objs/sim/SimRigidBody.o objs/sim/MultiBody.o objs/sim/SimCharacter.o objs/sim/PDController.o objs/sim/ContactManager.o objs/sim/SimCylinder.o objs/sim/SimJoint.o objs/sim/Ground.o objs/sim/RBDModel.o objs/sim/SimCharGeneral.o objs/sim/ObjTracer.o objs/sim/Perturb.o objs/render/DrawMesh.o objs/render/DrawWorld.o objs/render/GraphUtil.o objs/render/DrawObj.o objs/render/DrawPerturb.o objs/render/VertexBuffer.o objs/render/DrawUtil.o objs/render/Camera.o objs/render/TextureDesc.o objs/render/MeshUtil.o objs/render/DrawKinTree.o objs/render/TextureUtil.o objs/render/IBuffer.o objs/render/Shader.o objs/render/DrawSimCharacter.o objs/render/ShadowMap.o objs/render/MatrixStack.o objs/render/DrawCharacter.o objs/render/DrawGround.o objs/render/lodepng/lodepng_util.o objs/render/lodepng/lodepng.o objs/scenes/DrawSceneSimChar.o objs/scenes/SceneImitate.o objs/scenes/Scene.o objs/scenes/SceneKinChar.o objs/scenes/DrawSceneKinChar.o objs/scenes/SceneSimChar.o objs/scenes/RLScene.o objs/scenes/RLSceneSimChar.o objs/scenes/DrawSceneImitate.o objs/scenes/DrawRLScene.o objs/scenes/DrawScene.o objs/scenes/SceneBuilder.o -lGLEW -lGL -lGLU -lglut -lBulletDynamics -lBulletCollision -lLinearMath -lm -lstdc++ DeepMimicCore_wrap.o -o _DeepMimicCore.so -L/usr/lib/ -lpython3.5m
/usr/bin/ld: objs/Main.o: relocation R_X86_64_32 against `_Z5gArgsB5cxx11' can not be used when making a shared object; recompile with -fPIC
objs/Main.o: error adding symbols: Bad value
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Makefile:50: recipe for target 'python' failed
make: *** [python] Error 1

Could you help to solve my problem?

DeepMimic.py gives No scene specified Error

Hi, was experimenting with the codebase for few days now. But recently when i try to run DeepMimic.py script following the README instructions, i keep getting No scene specified and Core Dumped Error. I have specified the args file properly. Sometimes the script runs properly sometime it gives the above errors. Any help why such error would occur?.

(deepmimic) user@name:~/DeepMimic/DeepMimic-master$ python DeepMimic.py arg_file args/kin_char_args.txt Renderer: GeForce GTX 1080/PCIe/SSE2 OpenGL version supported 3.2.0 NVIDIA 384.130 Compiling shader: data/shaders/Mesh_VS.glsl Compiling shader: data/shaders/VertColor_PS.glsl Compiling shader: data/shaders/FullScreenQuad_VS.glsl Compiling shader: data/shaders/DownSample_PS.glsl Compiling shader: data/shaders/Mesh_VS.glsl Compiling shader: data/shaders/DownSample_PS.glsl No scene specified python: scenes/SceneBuilder.cpp:36: static void cSceneBuilder::BuildDrawScene(const std::string &, std::shared_ptr<cScene> &): Assertion 'false' failed. [u16:12152] *** Process received signal *** [u16:12152] Signal: Aborted (6) [u16:12152] Signal code: (-6) [u16:12152] [ 0] /lib/x86_64-linux-gnu/libc.so.6(+0x354b0)[0x7f11779204b0] [u16:12152] [ 1] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38)[0x7f1177920428] [u16:12152] [ 2] /lib/x86_64-linux-gnu/libc.so.6(abort+0x16a)[0x7f117792202a] [u16:12152] [ 3] /lib/x86_64-linux-gnu/libc.so.6(+0x2dbd7)[0x7f1177918bd7] [u16:12152] [ 4] /lib/x86_64-linux-gnu/libc.so.6(+0x2dc82)[0x7f1177918c82] [u16:12152] [ 5] /DeepMimic/DeepMimic-master/DeepMimicCore/_DeepMimicCore.so(_ZN13cSceneBuilder14BuildDrawSceneERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt10shared_ptrI6cSceneE+0x219)[0x7f114a5691b9] [u16:12152] [ 6] /DeepMimic/DeepMimic-master/DeepMimicCore/_DeepMimicCore.so(_ZN14cDeepMimicCore10SetupSceneEv+0x176)[0x7f114a43c0d6] [u16:12152] [ 7] /DeepMimic/DeepMimic-master/DeepMimicCore/_DeepMimicCore.so(+0x1eec7a)[0x7f114a57fc7a] [u16:12152] [ 8] python(_PyCFunction_FastCallDict+0x91)[0x5588f00bc311] [u16:12152] [ 9] python(+0x19cc1c)[0x5588f0145c1c] [u16:12152] [10] python(_PyEval_EvalFrameDefault+0x30a)[0x5588f016871a] [u16:12152] [11] python(+0x196d8b)[0x5588f013fd8b] [u16:12152] [12] python(+0x19ccf5)[0x5588f0145cf5] [u16:12152] [13] python(_PyEval_EvalFrameDefault+0x30a)[0x5588f016871a] [u16:12152] [14] python(+0x1962c6)[0x5588f013f2c6] [u16:12152] [15] python(_PyFunction_FastCallDict+0x1bc)[0x5588f014049c] [u16:12152] [16] python(_PyObject_FastCallDict+0x26f)[0x5588f00bc79f] [u16:12152] [17] python(_PyObject_Call_Prepend+0x63)[0x5588f00c1303] [u16:12152] [18] python(PyObject_Call+0x3e)[0x5588f00bc1de] [u16:12152] [19] python(+0x17078b)[0x5588f011978b] [u16:12152] [20] python(+0x19cf57)[0x5588f0145f57] [u16:12152] [21] python(_PyObject_FastCallDict+0x8b)[0x5588f00bc5bb] [u16:12152] [22] python(+0x19cd6e)[0x5588f0145d6e] [u16:12152] [23] python(_PyEval_EvalFrameDefault+0x30a)[0x5588f016871a] [u16:12152] [24] python(+0x196124)[0x5588f013f124] [u16:12152] [25] python(+0x196fc1)[0x5588f013ffc1] [u16:12152] [26] python(+0x19ccf5)[0x5588f0145cf5] [u16:12152] [27] python(_PyEval_EvalFrameDefault+0x10c8)[0x5588f01694d8] [u16:12152] [28] python(+0x196d8b)[0x5588f013fd8b] [u16:12152] [29] python(+0x19ccf5)[0x5588f0145cf5] [u16:12152] *** End of error message *** Aborted (core dumped)

Incorrect library path for make python

make python in DeepMimicCore on master invokes the linker with the argument
-L-lpython3.6m which doesn't make any sense. -L should be given a path which contains the libraries - /usr/local/lib or similar - and $(PYTHON_LIB) be provided as a standalone argument to the linker.

Skills From Videos

Find not work well when I use the theta from the vision-based pose estimators to make a mocap data, is it necessary to perform additional operations on theta besides the operations mentioned in the paper SFV?

Characterfile documentation or parser

Hi!
We would like to use your library with our robot, but we are not sure how to define the corresponding characterfile. The robot model is currently saved as a URDF and we would like to parse it.
I've seen you've worked with the Atlas robot - I doubt you have designed the file by hand? Did you write a parser and is it possible to get it? If not, is there a more thorough documentation of the character-file than this?

Thanks in advance!

  • André

creating custom motion file

If I want to create my own motion file, is there a code or package I can use? The documentation mentions '3D rotations for spherical joints are specified as quaternions ', may I know how you are obtaining the keyframes and then converting them to quaternions?

Signal: Bus error (7) problem occurs when running the DeepMimic.py

Hi! When I run Deepmimic.py, the following error occurred.

Renderer: GeForce GTX 1080/PCIe/SSE2
OpenGL version supported 3.2.0 NVIDIA 396.26
Compiling shader: data/shaders/Mesh_VS.glsl
Compiling shader: data/shaders/VertColor_PS.glsl
Compiling shader: data/shaders/FullScreenQuad_VS.glsl
Compiling shader: data/shaders/DownSample_PS.glsl
Compiling shader: data/shaders/Mesh_VS.glsl
Compiling shader: data/shaders/DownSample_PS.glsl
*** Process received signal ***
Signal: Segmentation fault (11)
Signal code: Address not mapped (1)
Failing at address: (nil)
[ 0] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f31138b8390]
*** End of error message ***
Segmentation fault (core dumped)

So, I check issue#10, and I comment out " glutInitContextVersion(3, 2)" in DeepMimic.py and Main.cpp. But error stills occurs.

Renderer: GeForce GTX 1080/PCIe/SSE2
OpenGL version supported 4.6.0 NVIDIA 396.26
Compiling shader: data/shaders/Mesh_VS.glsl
Compiling shader: data/shaders/VertColor_PS.glsl
Compiling shader: data/shaders/FullScreenQuad_VS.glsl
Compiling shader: data/shaders/DownSample_PS.glsl
Compiling shader: data/shaders/Mesh_VS.glsl
Compiling shader: data/shaders/DownSample_PS.glsl
*** Process received signal ***
Signal: Bus error (7)
Signal code: (128)
Failing at address: (nil)

How Do I modify the code ? Thank you very much.

Dependency

Python 3.5.2
Ubuntu16.04

Python Fail to Import _DeepMimicCore

Microsoft Windows [Version 10.0.17134.345]
(c) 2018 Microsoft Corporation. All rights reserved.

X:\DeepMimic\DeepMimic>python mpi_run.py
Running with 1 workers
cmd: mpiexec -n 1 python DeepMimic_Optimizer.py
Traceback (most recent call last):
File "X:\DeepMimic\DeepMimic\DeepMimicCore\DeepMimicCore.py", line 14, in swig_import_helper
return importlib.import_module(mname)
File "C:\Program Files\Python36\lib\importlib_init_.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 994, in _gcd_import
File "", line 971, in _find_and_load
File "", line 955, in _find_and_load_unlocked
File "", line 658, in _load_unlocked
File "", line 571, in module_from_spec
File "", line 922, in create_module
File "", line 219, in _call_with_frames_removed
ImportError: DLL load failed: The specified module could not be found.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "DeepMimic_Optimizer.py", line 3, in
from env.deepmimic_env import DeepMimicEnv
File "X:\DeepMimic\DeepMimic\env\deepmimic_env.py", line 3, in
from DeepMimicCore import DeepMimicCore
File "X:\DeepMimic\DeepMimic\DeepMimicCore\DeepMimicCore.py", line 17, in
_DeepMimicCore = swig_import_helper()
File "X:\DeepMimic\DeepMimic\DeepMimicCore\DeepMimicCore.py", line 16, in swig_import_helper
return importlib.import_module('DeepMimicCore')
File "C:\Program Files\Python36\lib\importlib_init
.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named '_DeepMimicCore'

I get this error attempting to run mpi_run.py or any of the other python scripts.

I successfully built the wrapper as far as I know (No Build Errors) I unfortunately don't know swig or python well enough to sort this out myself and was looking for some guidance.

ModuleNotFoundError: No module named '_DeepMimicCore'

Please help solve it

Traceback (most recent call last):
  File "/home/balavivek/PycharmProjects/DeepMimic/DeepMimicCore/DeepMimicCore.py", line 14, in swig_import_helper
    return importlib.import_module(mname)
  File "/home/balavivek/anaconda3/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 658, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 571, in module_from_spec
  File "<frozen importlib._bootstrap_external>", line 922, in create_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
ImportError: /home/balavivek/PycharmProjects/DeepMimic/DeepMimicCore/_DeepMimicCore.so: undefined symbol: _ZN11btMultiBody19setJointPosMultiDofEiPKf

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "DeepMimic.py", line 9, in <module>
    from env.deepmimic_env import DeepMimicEnv
  File "/home/balavivek/PycharmProjects/DeepMimic/env/deepmimic_env.py", line 3, in <module>
    from DeepMimicCore import DeepMimicCore
  File "/home/balavivek/PycharmProjects/DeepMimic/DeepMimicCore/DeepMimicCore.py", line 17, in <module>
    _DeepMimicCore = swig_import_helper()
  File "/home/balavivek/PycharmProjects/DeepMimic/DeepMimicCore/DeepMimicCore.py", line 16, in swig_import_helper
    return importlib.import_module('_DeepMimicCore')
  File "/home/balavivek/anaconda3/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named '_DeepMimicCore'

How to train the controller for new character and terrain

@xbpeng How to train the controller for new character and terrain using other motion data clips ?
Related files are in the ./Data file, but where to find new character and terrain files ? And how to process data to make it available for network inputs ?

Thank you very much !

CUDA enable

I compiled this project on Windows 10, with python 3.5 and tensorflow gpu 1.12.0.
Tensorflow work correctly with CUDA and GPU on my PC, but starting a train on this project seem the CUDA and GPU are disabled. There is a reason? Is it possible to enable it?

Association rotation in motion file

I have some issue to understand the association of rotations in motion file
Parsing the humanoid3d.txt model, starting from root till end i.e. for rigth leg i have follow chain:

root --> rigth_hip --> rigth_knee --> rigth_ankle

appying the rotations / traslation of file, i have for that chain follow chain of transformations:
root position (3D),
root rotation (4D),
right hip rotation (4D),
right knee rotation (1D),
right ankle rotation (4D),

My concern is that the latest one (right ankle rotation), haven't effect on any node position (because there is nothing connected to rigth_ankle). Did I miss something?

Build error on Ubuntu 18.04

Hello, thank you very much for making your code available.

I've read the DeepMimic paper and found it very interesting for my research. I would like to try the experiments myself.

After following the instructions I am currently stuck with the following build error and would like to ask for help. It may well be something trivial.

Thank you in advance.

Host system info

  • OS: Ubuntu 18.04 (bionic)
  • Kernel: 4.15.0-47-generic (#50-Ubuntu SMP Wed Mar 13 10:44:52 UTC 2019)
  • GCC Version: 7 (x86_64-linux-gnu)

C++

  • Bullet 2.87 ==> Built with USE_DOUBLE_PRECISION=OFF
  • Eigen OK
  • OpenGL >= 3.2 ==> OpenGL version string: 4.6.0 NVIDIA 415.27
  • freeglut OK
  • glew OK

Miscellanea

  • SWIG ==> SWIG Version 3.0.12; Compiled with g++ [x86_64-pc-linux-gnu]; Configured options: +pcre
  • OpenMPI ==> installed before MPI4Py

Python3

  • Python 3 ==> checked, Python 3.6
  • PyOpenGL OK
  • Tensorflow OK
  • MPI4Py OK

Source directories settings

As specified in https://github.com/xbpeng/DeepMimic#linux by the author of DeepMimic, i specified the following installation directories before running make python:

  • EIGEN_DIR: Eigen include directory ==> ../../eigen-git-mirror
  • BULLET_INC_DIR: Bullet source directory ==> ../../bullet3-2.87/src
  • PYTHON_INC: python include directory ==> /usr/include/python3.6m
  • PYTHON_LIB: python lib directory ==> /usr/lib/python3.6

Error

kammo@kammo-XPS-15-9560:~/repos/DeepMimic/DeepMimicCore$ make python
clang++ -c -g -std=c++11 -O3 -Wall -fPIC  -I./ -I../../eigen-git-mirror -I../../bullet3/src -o objs/Main.o Main.cpp
In file included from Main.cpp:3:
In file included from ./DeepMimicCore.h:3:
In file included from ./util/ArgParser.h:6:
In file included from ./util/MathUtil.h:5:
In file included from ../../eigen-git-mirror/Eigen/Dense:1:
In file included from ../../eigen-git-mirror/Eigen/Core:177:
../../eigen-git-mirror/Eigen/src/Core/arch/SSE/PacketMath.h:1056:23: error: 
      redefinition of '_mm_castpd_ps'
static inline __m128  _mm_castpd_ps   (__m128d x) { return ...
                      ^
/usr/include/clang/6.0.0/include/emmintrin.h:4833:1: note: 
      previous definition is here
_mm_castpd_ps(__m128d __a)
^
In file included from Main.cpp:3:
In file included from ./DeepMimicCore.h:3:
In file included from ./util/ArgParser.h:6:
In file included from ./util/MathUtil.h:5:
In file included from ../../eigen-git-mirror/Eigen/Dense:1:
In file included from ../../eigen-git-mirror/Eigen/Core:177:
../../eigen-git-mirror/Eigen/src/Core/arch/SSE/PacketMath.h:1057:23: error: 
      redefinition of '_mm_castpd_si128'
static inline __m128i _mm_castpd_si128(__m128d x) { return ...
                      ^
/usr/include/clang/6.0.0/include/emmintrin.h:4850:1: note: 
      previous definition is here
_mm_castpd_si128(__m128d __a)
^
In file included from Main.cpp:3:
In file included from ./DeepMimicCore.h:3:
In file included from ./util/ArgParser.h:6:
In file included from ./util/MathUtil.h:5:
In file included from ../../eigen-git-mirror/Eigen/Dense:1:
In file included from ../../eigen-git-mirror/Eigen/Core:177:
../../eigen-git-mirror/Eigen/src/Core/arch/SSE/PacketMath.h:1058:23: error: 
      redefinition of '_mm_castps_pd'
static inline __m128d _mm_castps_pd   (__m128  x) { return ...
                      ^
/usr/include/clang/6.0.0/include/emmintrin.h:4867:1: note: 
      previous definition is here
_mm_castps_pd(__m128 __a)
^
In file included from Main.cpp:3:
In file included from ./DeepMimicCore.h:3:
In file included from ./util/ArgParser.h:6:
In file included from ./util/MathUtil.h:5:
In file included from ../../eigen-git-mirror/Eigen/Dense:1:
In file included from ../../eigen-git-mirror/Eigen/Core:177:
../../eigen-git-mirror/Eigen/src/Core/arch/SSE/PacketMath.h:1059:23: error: 
      redefinition of '_mm_castps_si128'
static inline __m128i _mm_castps_si128(__m128  x) { return ...
                      ^
/usr/include/clang/6.0.0/include/emmintrin.h:4884:1: note: 
      previous definition is here
_mm_castps_si128(__m128 __a)
^
In file included from Main.cpp:3:
In file included from ./DeepMimicCore.h:3:
In file included from ./util/ArgParser.h:6:
In file included from ./util/MathUtil.h:5:
In file included from ../../eigen-git-mirror/Eigen/Dense:1:
In file included from ../../eigen-git-mirror/Eigen/Core:177:
../../eigen-git-mirror/Eigen/src/Core/arch/SSE/PacketMath.h:1060:23: error: 
      redefinition of '_mm_castsi128_ps'
static inline __m128  _mm_castsi128_ps(__m128i x) { return ...
                      ^
/usr/include/clang/6.0.0/include/emmintrin.h:4901:1: note: 
      previous definition is here
_mm_castsi128_ps(__m128i __a)
^
In file included from Main.cpp:3:
In file included from ./DeepMimicCore.h:3:
In file included from ./util/ArgParser.h:6:
In file included from ./util/MathUtil.h:5:
In file included from ../../eigen-git-mirror/Eigen/Dense:1:
In file included from ../../eigen-git-mirror/Eigen/Core:177:
../../eigen-git-mirror/Eigen/src/Core/arch/SSE/PacketMath.h:1061:23: error: 
      redefinition of '_mm_castsi128_pd'
static inline __m128d _mm_castsi128_pd(__m128i x) { return ...
                      ^
/usr/include/clang/6.0.0/include/emmintrin.h:4918:1: note: 
      previous definition is here
_mm_castsi128_pd(__m128i __a)
^
In file included from Main.cpp:7:
In file included from ./render/DrawUtil.h:6:
In file included from ./render/DrawMesh.h:21:
In file included from ./render/VertexBuffer.h:4:
./render/RenderState.h:87:44: warning: cast to 'void *' from
      smaller integer type 'unsigned int'
      [-Wint-to-void-pointer-cast]
                              mDataStride, (GLvoid *) mDataOffset);
                                           ^
In file included from Main.cpp:7:
In file included from ./render/DrawUtil.h:6:
In file included from ./render/DrawMesh.h:21:
./render/VertexBuffer.h:20:32: warning: field 'mRenderState' will
      be initialized after field 'mLocalData' [-Wreorder]
        cVertexBuffer():mRenderID(0), mRenderState(NULL), m...
                                      ^
./render/VertexBuffer.h:20:52: warning: field 'mLocalData' will be
      initialized after field 'mAttrInfo' [-Wreorder]
        cVertexBuffer():mRenderID(0), mRenderState(NULL), mLocalDat...
                                                          ^
./render/VertexBuffer.h:21:15: warning: field 'mAttrInfo' will be
      initialized after field 'mNumAttr' [-Wreorder]
              mAttrInfo(NULL), mNumAttr(0), mSize(0)
              ^
./render/VertexBuffer.h:21:32: warning: field 'mNumAttr' will be
      initialized after field 'mSize' [-Wreorder]
              mAttrInfo(NULL), mNumAttr(0), mSize(0)
                               ^
./render/VertexBuffer.h:23:77: warning: field 'mRenderState' will
      be initialized after field 'mLocalData' [-Wreorder]
  ...bufferID, cRenderState &r_state):mRenderID(bufferID), mRend...
                                                           ^
./render/VertexBuffer.h:23:101: warning: field 'mLocalData' will be
      initialized after field 'mAttrInfo' [-Wreorder]
  ...&r_state):mRenderID(bufferID), mRenderState(&r_state), mLoc...
                                                            ^
./render/VertexBuffer.h:24:40: warning: field 'mAttrInfo' will be
      initialized after field 'mNumAttr' [-Wreorder]
                                       mAttrInfo(NULL), mNu...
                                       ^
./render/VertexBuffer.h:24:57: warning: field 'mNumAttr' will be
      initialized after field 'mSize' [-Wreorder]
                                       mAttrInfo(NULL), mNu...
                                                        ^
./render/VertexBuffer.h:26:69: warning: field 'mRenderState' will
      be initialized after field 'mNumAttr' [-Wreorder]
  ...cVertexBuffer &old): mRenderID(old.mRenderID), mRenderState...
                                                    ^
./render/VertexBuffer.h:26:101: warning: field 'mNumAttr' will be
      initialized after field 'mSize' [-Wreorder]
  ...mRenderState(old.mRenderState), mNumAttr(old.mNumAttr),
                                     ^
In file included from Main.cpp:7:
In file included from ./render/DrawUtil.h:6:
In file included from ./render/DrawMesh.h:22:
./render/IBuffer.h:32:28: warning: field 'mRenderState' will be
      initialized after field 'mLocalData' [-Wreorder]
        cIBuffer(): mRenderID(0), mRenderState(NULL), mLoca...
                                  ^
./render/IBuffer.h:32:48: warning: field 'mLocalData' will be
      initialized after field 'mElemSize' [-Wreorder]
        cIBuffer(): mRenderID(0), mRenderState(NULL), mLoca...
                                                      ^
./render/IBuffer.h:32:66: warning: field 'mElemSize' will be
      initialized after field 'mSize' [-Wreorder]
  ...mRenderID(0), mRenderState(NULL), mLocalData(NULL), mElemSi...
                                                         ^
./render/IBuffer.h:34:73: warning: field 'mRenderState' will be
      initialized after field 'mLocalData' [-Wreorder]
  ...bufferID, cRenderState &r_state): mRenderID(bufferID), mRen...
                                                            ^
./render/IBuffer.h:34:97: warning: field 'mLocalData' will be
      initialized after field 'mElemSize' [-Wreorder]
  ...&r_state): mRenderID(bufferID), mRenderState(&r_state), mLo...
                                                             ^
./render/IBuffer.h:34:115: warning: field 'mElemSize' will be
      initialized after field 'mSize' [-Wreorder]
  ...mRenderState(&r_state), mLocalData(NULL), mElemSize(0), mSi...
                                               ^
Main.cpp:67:10: warning: unused variable 'reward_min'
      [-Wunused-variable]
                double reward_min = gCore->GetRewardMin(id);
                       ^
Main.cpp:48:7: warning: unused variable 'action_space'
      [-Wunused-variable]
                int action_space = gCore->GetActionSpace(id);
                    ^
Main.cpp:51:7: warning: unused variable 'action_size'
      [-Wunused-variable]
                int action_size = gCore->GetActionSize(id);
                    ^
Main.cpp:52:7: warning: unused variable 'num_actions'
      [-Wunused-variable]
                int num_actions = gCore->GetNumActions(id);
                    ^
Main.cpp:69:10: warning: unused variable 'reward_fail'
      [-Wunused-variable]
                double reward_fail = gCore->GetRewardFail(id);
                       ^
Main.cpp:68:10: warning: unused variable 'reward_max'
      [-Wunused-variable]
                double reward_max = gCore->GetRewardMax(id);
                       ^
Main.cpp:70:10: warning: unused variable 'reward_succ'
      [-Wunused-variable]
                double reward_succ = gCore->GetRewardSucc(id);
                       ^
Main.cpp:49:7: warning: unused variable 'state_size'
      [-Wunused-variable]
                int state_size = gCore->GetStateSize(id);
                    ^
Main.cpp:50:7: warning: unused variable 'goal_size'
      [-Wunused-variable]
                int goal_size = gCore->GetGoalSize(id);
                    ^
Main.cpp:111:12: warning: unused variable 'r' [-Wunused-variable]
                                double r = gCore->CalcReward(id);
                                       ^
27 warnings and 6 errors generated.
Makefile:50: recipe for target 'objs/Main.o' failed
make: *** [objs/Main.o] Error 1

How to create mocap motion file using SMPL params?

Hi, I'm trying to reproduce SFV, and now I got 3D poses of some actions like backflip. I tried to convert the 3D mesh to mocap data, and it seems the converted motion file is correct in the bullet simulator. However, I cannot get well trained model for backflip, I know that SFV uses ASI, but as you show in the demo, model can also be well trained using RSI.

So, is there anything I should pay attention to in converting SMPL mesh to mocap file? Should the feet of the robot be under the ground in the first frame?

Unable to compile DeepMimcCore on linux.

Hi, thank you for releasing the code for this cool project!

I'm running into an issue compiling the python binding for DeepMimcCore on linux. Here is my MakeFile

BIN=Main
OBJ_DIR = objs
MKDIR = mkdir -p

EIGEN_DIR = /home/yyuan2/Documents/repo/eigen
BULLET_INC_DIR = /home/yyuan2/Documents/repo/bullet3/src

PYTHON_INC = /home/yyuan2/anaconda3/include/python3.6m
PYTHON_LIB = /home/yyuan2/anaconda3/lib -lpython3.6m

INC = -I./ \
        -I$(EIGEN_DIR) \
        -I$(BULLET_INC_DIR)

LIBS = -lGLEW -lGL -lGLU -lglut -lBulletDynamics -lBulletCollision -lLinearMath

CC = clang++
CFLAGS = -std=c++11 -O3 -Wall -fPIC

SRC_DIRS = util/ \
        util/json/ \
        anim/ \
        sim/ \
        render/ \
        render/lodepng/ \
        scenes/ \
        scenes/arm/ \
        scenes/particle/ \
        scenes/pendulum/

SRC_FILES = $(BIN).cpp DeepMimicCore.cpp $(foreach dir, $(SRC_DIRS), $(wildcard $(dir)*.cpp))
OUT_DIRS = $(addprefix $(OBJ_DIR)/, $(SRC_DIRS))
OBJ = $(addprefix $(OBJ_DIR)/, $(patsubst %.cpp, %.o, $(SRC_FILES)))


default: build

build: $(BIN)

print:
        $(OUT_DIRS)

python: $(OUT_DIRS) $(OBJ)
        swig -c++ -python DeepMimicCore.i
        $(CC) -c -g $(CFLAGS) $(INC) $(LIBS) DeepMimicCore.cpp DeepMimicCore_wrap.cxx -I$(PYTHON_INC)
        $(CC) -shared $(CFLAGS) $(OBJ) $(LIBS) DeepMimicCore_wrap.o -o _DeepMimicCore.so -L$(PYTHON_LIB)

$(OBJ_DIR)/%.o: %.cpp
        $(CC) -c -g $(CFLAGS) $(INC) -o $@ $<

$(BIN): $(OUT_DIRS) $(OBJ)
        $(CC) -g $(CFLAGS) $(OBJ) $(LIBS) -o $@

$(OUT_DIRS):
        $(MKDIR) $(OUT_DIRS)

clean:
        - rm -f -r $(OUT_DIRS) $(BIN) $(OBJ) $(OBJ_DIR) DeepMimicCore_wrap.cxx _DeepMimicCore.so

And here is the error output:

g++ -shared -std=c++11 -O3 -Wall -fPIC  objs/Main.o objs/DeepMimicCore.o objs/util/IndexManager.o objs/util/Timer.o objs/util/Annealer.o objs/util/ArgParser.o objs/util/Trajectory.o objs/util/Rand.o objs/util/MathUtil.o objs/util/FileUtil.o objs/util/JsonUtil.o objs/util/BVHReader.o objs/util/json/json_value.o objs/util/json/json_reader.o objs/util/json/json_writer.o objs/anim/Shape.o objs/anim/KinTree.o objs/anim/Character.o objs/anim/KinCharacter.o objs/anim/Motion.o objs/sim/ExpPDController.o objs/sim/SimRigidBody.o objs/sim/ImpPDController.o objs/sim/PerturbManager.o objs/sim/RBDUtil.o objs/sim/SimObj.o objs/sim/SimBox.o objs/sim/SpAlg.o objs/sim/SimCapsule.o objs/sim/Controller.o objs/sim/CharController.o objs/sim/SimBodyLink.o objs/sim/GroundPlane.o objs/sim/CtVelController.o objs/sim/CtCtrlUtil.o objs/sim/AgentRegistry.o objs/sim/CtController.o objs/sim/SimSphere.o objs/sim/DeepMimicCharController.o objs/sim/ObjTracer.o objs/sim/CtPDController.o objs/sim/SimPlane.o objs/sim/SimBodyJoint.o objs/sim/GroundBuilder.o objs/sim/World.o objs/sim/MultiBody.o objs/sim/SimCharacter.o objs/sim/ContactManager.o objs/sim/SimCharBuilder.o objs/sim/CtrlBuilder.o objs/sim/PDController.o objs/sim/SimCylinder.o objs/sim/SimJoint.o objs/sim/Ground.o objs/sim/RBDModel.o objs/sim/SimCharGeneral.o objs/sim/Perturb.o objs/render/DrawMesh.o objs/render/DrawPerturb.o objs/render/DrawWorld.o objs/render/GraphUtil.o objs/render/DrawObj.o objs/render/VertexBuffer.o objs/render/TextureDesc.o objs/render/Camera.o objs/render/TextureUtil.o objs/render/MeshUtil.o objs/render/DrawKinTree.o objs/render/IBuffer.o objs/render/Shader.o objs/render/DrawUtil.o objs/render/DrawSimCharacter.o objs/render/ShadowMap.o objs/render/MatrixStack.o objs/render/DrawCharacter.o objs/render/DrawGround.o objs/render/lodepng/lodepng_util.o objs/render/lodepng/lodepng.o objs/scenes/DrawSceneSimChar.o objs/scenes/SceneImitate.o objs/scenes/Scene.o objs/scenes/SceneKinChar.o objs/scenes/DrawSceneKinChar.o objs/scenes/SceneSimChar.o objs/scenes/RLScene.o objs/scenes/RLSceneSimChar.o objs/scenes/DrawSceneImitate.o objs/scenes/DrawRLScene.o objs/scenes/DrawScene.o objs/scenes/SceneBuilder.o -lGLEW -lglut -lGL -lGLU -lBulletDynamics -lBulletCollision -lLinearMath DeepMimicCore_wrap.o -o _DeepMimicCore.so -L/home/yyuan2/anaconda3/lib -lpython3.6m
/usr/bin/ld: cannot find -lBulletDynamics
/usr/bin/ld: cannot find -lBulletCollision
/usr/bin/ld: cannot find -lLinearMath
collect2: error: ld returned 1 exit status
Makefile:43: recipe for target 'python' failed
make: *** [python] Error 1

I'm guessing it might have something to do with linking the static bullet libraries. Could you also let me know how do you compile the bullet libraries and link them?

Thanks again!

VS Build error, 'M_PI': undeclared identifier, and other strange error

Greetings friend, I don't know why I get all those error, can you help me with it? VS version I use is Visual Studio Community 2017, MSbuild version is 15.0;
if you don't have time, please at least tell me what tool you use to build DeepMimicCore. thank you
e_0
e_1
w_0
w_1
w_2
w_3
w_4
And I was just curious, why won't you just use pybullet instead rewrite all environment by youself ?

unresolved external symbol error

All include and lib directory is added, but seam like linker can find the Bullet lib, I don't know is the issue of build Bullet or the config issue in DeepMimic, I'm kind new to C++ frankly, always use the python, so, please help : )
wrong

Import Error Undefined symbol

After building, when run the Demo and came across this problem.
I'm using g++ on Ubuntu 16.04, I don't have the sudo privilege, so I install most of the dependencies manually. Don't know if this is the reason : (

Here is my error information:

$ python DeepMimic.py --arg_file args/run_humanoid3d_spinkick_args.txt

Traceback (most recent call last):
File "DeepMimic.py", line 9, in
from env.deepmimic_env import DeepMimicEnv
File "/h/jiaman/github/DeepMimic/env/deepmimic_env.py", line 3, in
from DeepMimicCore import DeepMimicCore
File "/h/jiaman/github/DeepMimic/DeepMimicCore/DeepMimicCore.py", line 28, in
_DeepMimicCore = swig_import_helper()
File "/h/jiaman/github/DeepMimic/DeepMimicCore/DeepMimicCore.py", line 24, in swig_import_helper
_mod = imp.load_module('_DeepMimicCore', fp, pathname, description)
File "/h/jiaman/anaconda3/lib/python3.6/imp.py", line 243, in load_module
return load_dynamic(name, filename, file)
File "/h/jiaman/anaconda3/lib/python3.6/imp.py", line 343, in load_dynamic
return _load(spec)

ImportError: /h/jiaman/github/DeepMimic/DeepMimicCore/_DeepMimicCore.so: undefined symbol: _ZN11btMultiBody22addJointTorqueMultiDofEiPKf

Compiling troubles

I stumbled upon some compilation problems with gcc-7:

  1. /usr/bin/ld: objs/util/IndexManager.o: undefined reference to symbol '_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11'
  2. /usr/bin/ld: objs/util/MathUtil.o: undefined reference to symbol 'acos@@GLIBC_2.2.5'

which can be solved by adding -lm and -lstdc++ :
LIBS = -lGLEW -lGL -lGLU -lglut -lBulletDynamics -lBulletCollision -lLinearMath -lm -lstdc++

I think it should be corrected in the code.

Error in `python': corrupted size vs. prev_size

hi, @xbpeng
Please help me with this error . I tried to reinstall complete NVIDIA driver and Bullet but still no change . I am stuck with this error.
python3.6 mpi_run.py --arg_file args/train_humanoid3d_run_args.txt --num_workers 4
Running with 4 workers
cmd: mpiexec -n 4 python DeepMimic_Optimizer.py --arg_file args/train_humanoid3d_run_args.txt --num_workers 4
Successfully to load args from: args/train_humanoid3d_run_args.txt
scene imitate

Error in python: corrupted size vs. prev_size: 0x0000563c02ad4060
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7fa2b12e47e5]
/lib/x86_64-linux-gnu/libc.so.6(+0x7e9dc)[0x7fa2b12eb9dc]
/lib/x86_64-linux-gnu/libc.so.6(+0x81cde)[0x7fa2b12eecde]
/lib/x86_64-linux-gnu/libc.so.6(__libc_malloc+0x54)[0x7fa2b12f1184]
/usr/lib/x86_64-linux-gnu/libLinearMath.so.2.83(+0x36d3)[0x7fa28b9716d3]
/usr/lib/x86_64-linux-gnu/libBulletDynamics.so.2.83(_ZN11btMultiBodyC1EifRK9btVector3bbb+0xe93)[0x7fa28bf1a9b3]
/home/deepmimic/DeepMimic/DeepMimicCore/_DeepMimicCore.so(_ZN10cMultiBodyC1EifRK9btVector3bbb+0x14)[0x7fa28cda9614]
/home/deepmimic/DeepMimic/DeepMimicCore/_DeepMimicCore.so(_ZN13cSimCharacter14BuildMultiBodyERSt10shared_ptrI10cMultiBodyE+0xa3)[0x7fa28cdafb33]
/home/deepmimic/DeepMimic/DeepMimicCore/_DeepMimicCore.so(_ZN13cSimCharacter12BuildSimBodyERKNS_7tParamsE+0x130)[0x7fa28cdaf430]
/home/deepmimic/DeepMimic/DeepMimicCore/_DeepMimicCore.so(_ZN13cSimCharacter4InitERKSt10shared_ptrI6cWorldERKNS_7tParamsE+0x118)[0x7fa28cdaaa68]
/home/deepmimic/DeepMimic/DeepMimicCore/_DeepMimicCore.so(_ZN13cSceneSimChar15BuildCharactersEv+0x19f)[0x7fa28ce190ff]
/home/deepmimic/DeepMimic/DeepMimicCore

======= Memory map: ========
[none:30562] Process received signal
[none:30562] Signal: Aborted (6)
[none:30562] Signal code: (-6)
[none:30562] [ 0] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f36a273c390]
[none:30562] [ 1] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38)[0x7f36a2396428]
[none:30562] [ 2] /lib/x86_64-linux-gnu/libc.so.6(abort+0x16a)[0x7f36a239802a]
[none:30562] [ 3] /lib/x86_64-linux-gnu/libc.so.6(+0x777ea)[0x7f36a23d87ea]
[none:30562] [ 4] /lib/x86_64-linux-gnu/libc.so.6(+0x7e9dc)[0x7f36a23df9dc]
[none:30562] [ 5] /lib/x86_64-linux-gnu/libc.so.6(+0x81cde)[0x7f36a23e2cde]
[none:30562] [ 6] /lib/x86_64-linux-gnu/libc.so.6(__libc_malloc+0x54)[0x7f36a23e5184]
[none:30562] [ 7] /usr/lib/x86_64-linux-gnu/libLinearMath.so.2.83(+0x36d3)[0x7f367ca9a6d3]
[none:30562] [ 8] /usr/lib/x86_64-linux-gnu/libBulletDynamics.so.2.83(_ZN11btMultiBodyC1EifRK9btVector3bbb+0xe93)[0x7f367d0439b3]
[none:30562] [ 9] /home/deepmimic/DeepMimic/DeepMimicCore/_DeepMimicCore.so(_ZN10cMultiBodyC1EifRK9btVector3bbb+0x14)[0x7f367ded2614]
[none:30562] [10] /home/deepmimic/DeepMimic/DeepMimicCore/_DeepMimicCore.so(_ZN13cSimCharacter14BuildMultiBodyERSt10shared_ptrI10cMultiBodyE+0xa3)[0x7f367ded8b33]
[none:30562] [11] /home/deepmimic/DeepMimic/DeepMimicCore/_DeepMimicCore.so(_ZN13cSimCharacter12BuildSimBodyERKNS_7tParamsE+0x130)[0x7f367ded8430]
[none:30562] [12] /home/deepmimic/DeepMimic/DeepMimicCore/_DeepMimicCore.so(_ZN13cSimCharacter4InitERKSt10shared_ptrI6cWorldERKNS_7tParamsE+0x118)[0x7f367ded3a68]
[none:30562] [13] /home/deepmimic/DeepMimic/DeepMimicCore/_DeepMimicCore.so(_ZN13cSceneSimChar15BuildCharactersEv+0x19f)[0x7f367df420ff]
[none:30562] [14] /home/deepmimic/DeepMimic/DeepMimicCore/_DeepMimicCore.so(_ZTv0_n304_N13cSceneImitate15BuildCharactersEv+0x34)[0x7f367df3b6d4]
[none:30562] [15] /home/deepmimic/DeepMimic/DeepMimicCore/_DeepMimicCore.so(_ZN13cSceneSimChar4InitEv+0x4c)[0x7f367df415dc]
[none:30562] [16] /home/deepmimic/DeepMimic/DeepMimicCore/_DeepMimicCore.so(_ZN15cRLSceneSimChar4InitEv+0x25)[0x7f367df3dc05]
[none:30562] [17] /home/deepmimic/DeepMimic/DeepMimicCore/_DeepMimicCore.so(_ZTv0_n40_N13cSceneImitate4InitEv+0x95)[0x7f367df3b225]
[none:30562] [18] /home/deepmimic/DeepMimic/DeepMimicCore/_DeepMimicCore.so(_ZN14cDeepMimicCore10SetupSceneEv+0x268)[0x7f367de19948]
[none:30562] [19] /home/deepmimic/DeepMimic/DeepMimicCore/_DeepMimicCore.so(+0x1f6d9a)[0x7f367df63d9a]
[none:30562] [20] python(_PyCFunction_FastCallDict+0x91)[0x5575a3148681]
[none:30562] [21] python(+0x19842c)[0x5575a31cf42c]
[none:30562] [22] python(_PyEval_EvalFrameDefault+0x30a)[0x5575a31f438a]
[none:30562] [23] python(+0x19253b)[0x5575a31c953b]
[none:30562] [24] python(+0x198505)[0x5575a31cf505]
[none:30562] [25] python(_PyEval_EvalFrameDefault+0x30a)[0x5575a31f438a]
[none:30562] [26] python(+0x191a76)[0x5575a31c8a76]
[none:30562] [27] python(_PyFunction_FastCallDict+0x1bc)[0x5575a31c9c4c]
[none:30562] [28] python(_PyObject_FastCallDict+0x26f)[0x5575a3148b0f]
[none:30562] [29] python(_PyObject_Call_Prepend+0x63)[0x5575a314d6a3]
[none:30562] End of error message


mpiexec noticed that process rank 1 with PID 30560 on node none exited on signal 6 (Aborted).

Process finished with exit code 0

error.txt

Complete error file has been attached for your reference . Looking forward for your reply

Thanks

problem occurs when running the DeepMimic.py

Hi,
"
*** Process received signal ***
Signal: Segmentation fault (11)
Signal code: Address not mapped (1)
Failing at address: (nil)
[ 0] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f67aba3d390]
"
On the other hand, I run the command "python3 mpi_run.py --arg_file args/train_humanoid3d_spinkick_args.txt --num_workers 4" and it worked well and began the training process.

The same bug occurs as in issue#10, and I commented the " glutInitContextVersion(3, 2)" in DeepMimic.py. But the bug still exists, Do I need some extra modifications?

Do I need to reset params in character file for different motions or terrains?

@xbpeng Hi, I am training with default configurations in this project. But trained policy only works for some motion.

With the humanoid character file, a good result reproduced for spinkick but not for walking. The final total sample number is around 70 millions (larger than 61e6 in the paper ), but the resulted policy simulator still slipped and fell down.

I want to ask if you changed character params or PDcontroller params for different motions? Or some other trick?

Thank you very much!

Windows build - minor issue

Hi - building on Windows under Visual Studio 2017 picks up a small issue in the DeepMimicCore project. In the properties Linker->General->Additional Include Directories the variable $(PYTHON_LIB) is referenced. This is expected to point to an actual "lib" file rather than a directory, and that causes a link error (it's a file, not a directory). In fact the PYTHON_LIB variable should be referenced as an "Input" on the Linker properties, or PYTHON_LIB should be a directory and Python36.lib explicitly referenced as an input.

Fantastic instructions - apart from this tiny glitch everything builds beautifully so thanks for all your hard work.

DeepMimicCore

Dont know if this is an issue but if your having issues linking with the Bullet libs by default the Bullet SLN has BT_USE_DOUBLE_PRECISION; defined whereas deep mimic core does not. Causing btScalar to be defined as a float in DeepMimic but a double in the Bullet Libs. This caused me some grief the other day.

Freeglut init failed in python

Hi
I ran into a "freeglut ERROR: Function called without first calling 'glutInit'." problem with DeepMimic.py. However, I can run DeepMimicCore.exe correctly.

`(tensor) E:\MyProject\DeepMimic\DeepMimic-master>python DeepMimic.py --arg_file args/kin_char_args.txt
Renderer: GeForce GTX 1050 Ti/PCIe/SSE2
OpenGL version supported 3.2.0 NVIDIA 397.31
Compiling shader: data/shaders/Mesh_VS.glsl
Compiling shader: data/shaders/VertColor_PS.glsl
Compiling shader: data/shaders/FullScreenQuad_VS.glsl
Compiling shader: data/shaders/DownSample_PS.glsl
Compiling shader: data/shaders/Mesh_VS.glsl
Compiling shader: data/shaders/DownSample_PS.glsl
Compiling shader: data/shaders/Mesh_VS.glsl
Compiling shader: data/shaders/Depth_PS.glsl
Compiling shader: data/shaders/Mesh_VS.glsl
Compiling shader: data/shaders/Lighting_Lambert_PS.glsl
Loaded scene: Kinematic Char

Num Agents: 0
freeglut ERROR: Function called without first calling 'glutInit'.`

How do I solve this problem? Thanks in advanced!

problem occurs when running the DeepMimic.py

Hi, peng ! Thank you very much for releasing the code and it is a great work.
I followed the instructions and generated DeepMimicCore.py successfully.
then I run the command "python3 DeepMimic.py --arg_file args/kin_char_args.txt" , it produced the result:
"
*** Process received signal ***
Signal: Segmentation fault (11)
Signal code: Address not mapped (1)
Failing at address: (nil)
[ 0] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f67aba3d390]
"

On the other hand, I run the command "python3 mpi_run.py --arg_file args/train_humanoid3d_spinkick_args.txt --num_workers 4" and it worked well and began the training process.

I check the related code, and guess that "enable_draw " in the "world = build_world(args, enable_draw=True)" maybe affect the bug.

thank you very much.

Velocity explosion

Hi, very grateful for your code. May I ask that what kind of circumstance will lead to the explosion of velocity?

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.