xbpeng / DeepMimic

Motion imitation with deep reinforcement learning.
https://xbpeng.github.io/projects/DeepMimic/index.html
MIT License
2.33k stars 489 forks source link

Not 22 but 19? undefined symbol:_ZN11btMultiBody19setJointPosMultiDofEiPKf #108

Open hch1017 opened 4 years ago

hch1017 commented 4 years ago

I have tried #82 and make sure it's not the problem about USE_DOUBLE_PERCISION.

In fact, before I met this problem I was able to run the DeepMimic.py and mpi_run.py. I don't know what I had done to cause this problem.

This is the whole display: Traceback (most recent call last): File "DeepMimic_Optimizer.py", line 3, in from env.deepmimic_env import DeepMimicEnv File "/home/hch/Desktop/DeepMimic/DeepMimic/env/deepmimic_env.py", line 3, in from DeepMimicCore import DeepMimicCore File "/home/hch/Desktop/DeepMimic/DeepMimic/DeepMimicCore/DeepMimicCore.py", line 13, in from . import _DeepMimicCore ImportError: /home/hch/Desktop/DeepMimic/DeepMimic/DeepMimicCore/_DeepMimicCore.so: undefined symbol: _ZN11btMultiBody19setJointPosMultiDofEiPKf

Can someone help me please? Thx very much!!!

grossmanlev commented 4 years ago

Seconded! Having the same problem with my setup (also tried the USE_DOUBLE_PRECISION trick with installing bullet).

cyoahs commented 4 years ago

I met this problem too (not 22 but 19 too) and solved by adding correct library path in the Makefile of DeepMimicCore.

Origin lines about bullet in Makefile:

BULLET_INC_DIR = ../../../bullet3-2.88/src

LIBS = -lGLEW -lGL -lGLU -lglut -lBulletDynamics -lBulletCollision -lLinearMath -lm -lstdc++

Modified lines about bullet in Makefile:

BULLET_INC_DIR = ../../../bullet3-2.88/src
BULLET_LIB_DIR = /usr/local/lib

LIBS = -L$(BULLET_LIB_DIR) -lGLEW -lGL -lGLU -lglut -lBulletDynamics -lBulletCollision -lLinearMath -lm -lstdc++

This problem is caused by linking a false version of installed lib of bullet. To check which version is actually linked, use the following command line and you will see the exact path of the bulet lib you are linking as default.

ldconfig -p | grep Bullet

When you type sudo make install for bullet, the libs will be installed to /usr/local/lib by default. If you find the path of bullet libs from ldconfig -p command different from /usr/local/lib, this means you are linking a different version of bullet, and this can be solved by manual set the link path in DeepMimicCore Makefile.

Hope my solution works for your problem too.