作者:缺心眼的小L | 来源:互联网 | 2023-09-07 12:05
1、问题描述PyKDL在装ROS的时候貌似也一起装上了,因此其路径默认在python2的环境中。由于各种需求,若要在python3的环境中运行PyKDL,需要重新编译,以下将以co
1、问题描述
PyKDL在装ROS的时候貌似也一起装上了,因此其路径默认在python2的环境中。由于各种需求,若要在python3的环境中运行PyKDL,需要重新编译,以下将以conda的python3.6环境为例。
2、源码下载
PyKDL下载地址,先git clone,就放到/home里面好了。源码也有安装指导,可以参考一下。
3、编译(参考博文)
C语言文件的编译步骤
进入 /orocos_kinematics_dynamics/orocos_kdl,输入如下命令:
mkdir build
cd build
cmake ../
make
sudo make install
python文件的编译步骤(先完成C语言文件的编译,然后才是python,两者不是平行的,而是先后的)
进入 /orocos_kinematics_dynamics/python_orocos_kdl,输入命令:
mkdir build
cd build
cmake ../ -DPYTHON_EXECUTABLE:FILEPATH=/home/wu/anaconda3/envs/mj/bin/python3.6
具体路径请按自己conda环境下的python路径修改,继续输入下列命令:
make
sudo make install
cmake那一步可能会报这样的错:
解决方法:在/orocos_kinematics_dynamics/python_orocos_kdl下,打开终端,输入命令:
git submodule update --init
这样会重新安装编译pybind11,问题解决。
ok,编译工作到此为止
4、copy PyKDL.so文件
编译完成后,copy ~/orocos_kinematics_dynamics/python_orocos_kdl/build/devel/lib/python3/dist-packages/PyKDL.so 到你的conda虚拟环境site-packages文件夹中,
我这边的路径是~/anaconda3/envs/mj/lib/python3.6/site-packages
5、添加路径到你的.bashrc文件中
打开你的.bashrc文件,即gedit ~/.bashrc,添加路径,我这边是这样:
export PYTHOnPATH="/home/wu/anaconda3/envs/mj/lib/python3.6/site-packages:$PYTHONPATH"
具体路径请修改
ok,顺利做到这一步,就可以在conda虚拟环境python3下运行PyKDL了!
6、简单解释一下第5步
如果不执行第5步,在我们import PyKDL时,还是会报错的,因为此时指向的还是python2下PyKDL,但只要添加好对应路径,就会优先指向我们编译时用到的虚拟环境,进而成功运行。
如果运行其他程序报错,可以考虑注释掉第5步中的路径。
官方安装教程