记录在RDK X5开发板上使用机器人多刚体动力学模块Pinocchio的逆天问题
事情起因
事情的起因是笔者需要使用RDK X5开发板部署强化学习算法,笔者已经在自己的电脑上sim2real部署成功了,但是为了小型化和轻量化的准备,笔者打算使用RDK X5的板子为机器人部署强化学习。
整体部署过程还比较顺利,笔者没想到RDK 板子自带ROS2 humble环境,省去了一大堆配环境的时间,直到笔者需要通过运动学计算机器人正解的时候出现了问题,ImportError: pinocchio not found
事情结尾
经常使用python的小朋友们大家好啊,importerror是非常常见的错误,只需要安装这个模块便可以了。此时CLI使用
pip install pinocchio
应该会解决问题,笔者也是这样干的。顺便笔者也问了deepseek,他坚持让我使用这个命令。OK事情解决了,大功告成!
事情还没有结尾
然而并没有解决,仍然显示ImportError: pinocchio not found,这时笔者抛弃deepseek,按照官网的说法应该是使用
pip install pin
关于这个包可以在pypi的网站上看到,确实是我们需要的包 pypi.
查看pinocchio的github网站,确实他也建议我们这样干
事情还没有结束
笔者这时已经使用上述命令装好了pinocchio,照理说没有问题了,可是此时仍然报错ImportError: pinocchio not found。作为经验丰富色bug工程师遇到这类问题肯定是不会慌张的,笔者镇定地查看了安装的目录,使用
pip show pin
找到安装目录然后使用
export LD_LIBRARY_PATH="pip show pin 中的位置":$LD_LIBRARY_PATH
将依赖库传递给终端,这时继续运行,发现新的报错ImportError: libeigenpy.so: cannot open shared object file: No such file or directory
解决方案也很简单,使用 csdn.同款方案输入
// 先使用find找到丢失的libeigenpy.so动态链接库
// find 目录 -name “文件名字”
sudo find / -name "libeigenpy.so"
//sudo cp 源文件路径 目标文件路径
sudo cp /opt/ros/humble/lib/x86_64-linux-gnu/libeigenpy.so /opt/ros/humble/lib/
这里笔者使用暴力cp命令,使用软连接ln命令也是可以的
** ln -s 源文件 目标文件 **
照理来说会解决99%的问题,可如果解决了我也不会写这篇文章了。
百分之一的可能性
这时正当笔者觉得没有问题之时,出现了神奇的报错
熟悉C++的小朋友们大家好啊,我是段错误,这种错误常见于C++中指针乱飞的情况,但是哥们写的是python啊。这时才猛然发觉pinocchio就是基于C++写的,是我在import的时候出现了这个错误,那既然python这条路不通,咱们的pinocchio库还有这么多方式可以安装,咱们一个个尝试。图为官网安装步骤。
笔者毕竟是基于ROS2 humble版本,于是使用如下命令试图解决
sudo apt-get install ros-humble-pinocchio
安装结束之后,继续运行出现新的报错
很好,出现新的报错至少说明笔者的安装是没问题的,那么只需要找到这个文件就可以了
使用
sudo cp /usr/local/lib/python3.10/disk-packages/cmeel.prefix/lib/python3.10/site-packages/libboost_python310.so.1.87.0 /opt/ros/humble/lib/
问题依旧没有解决,仍然是段错误,此时笔者有点坐不住了
那么删了使用robotpkg的方式重新装一下
sudo apt install -qqy lsb-release curl
sudo mkdir -p /etc/apt/keyrings
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.asc \
| sudo tee /etc/apt/keyrings/robotpkg.asc
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/robotpkg.asc] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -cs) robotpkg" \
| sudo tee /etc/apt/sources.list.d/robotpkg.list
sudo apt update
sudo apt install -qqy robotpkg-py3*-pinocchio
安装的时候使用官网的命令是无法找到软件包的,使用
sudo apt install -qqy robotpkg-py310-pinocchio
但是好像由于RDK X5的网络问题一直找不到这个软件包,此时笔者已经有点崩溃了
打算使用最后的源码编译
git clone https://github.com/stack-of-tasks/pinocchio.git
cd pinocchio
mkdir build
cd build
源码编译出现一大串错误
随着make的报错笔者的心理防线也即将崩溃了,只想对着电脑屏幕大喊一句我上早八。此时问deepseek也无果。于是开始去github上有没有受难同胞。果然让我发现了。
笔者啥也没看懂,就只有"old version"看懂了,安装个老版本呗,这里作者建议使用robotpkg安装旧版本,因为ros只有最新版本:
sudo apt-get cache policy ros-humble-pinocchio
但是我用的RDK X5找不到robotpkg的源啊。两条路都给我堵死了属于是。这时笔者想起来可以使用最开始的pip安装。
pip install pin==2.6.21

报错依旧出现,但是不慌,使用
sudo vim ~/.bashrc
//末尾添加依赖库地址
export LD_LIBRARY_PATH="find之后的位置":$LD_LIBRARY_PATH
source ~/.bashrc
// 工作空间也source一下
source install/setup.bash
echo $LD_LIBRARY_PATH
//验证一下
python
import pinocchio
//没出现报错
pinocchio.__version__
//打印版本
2.6.21
大功告成,果然不能安装太新的版本,官方赶紧救一下啊
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)