pinocchio动力学C++库安装与使用问题解决

pinocchio是基于Featherstone's的算法,为多关节系统实例化了最先进的刚体算法。 此外,匹诺曹还提供了主要刚体算法的解析导数,如递归牛顿-欧拉算法或铰接体算法。可以方便很多做机器人研究的同学求解机器人的动力学问题,比如常见的机器人拉格朗日动力学建模中对M,C,G矩阵的求解。并且官方有入门代码可供参考,入门上手相对简单。同时,pinocchio只需要导入urdf文件,就可以快速创建机器人模型。

pinocchio主要是在Linux系统中使用。本文帮助解决在Linux系统下安装可能遇到的问题。

官网安装链接:

Pinocchio (stack-of-tasks.github.io)https://stack-of-tasks.github.io/pinocchio/download.html 1.

 sudo apt install -qqy lsb-release gnupg2 curl

 2.

 echo "deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -cs) robotpkg" | sudo tee /etc/apt/sources.list.d/robotpkg.list

3.

 curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -
sudo apt update

4.

 sudo apt install -qqy robotpkg-py3*-pinocchio

5.添加环境变量,在home目录下,按Ctrl+H,显示隐藏文件.bashrc文件,将下面的代码复制进去

export PATH=/opt/openrobots/bin:$PATH
export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/opt/openrobots/lib/python3.10/site-packages:$PYTHONPATH # Adapt your desired python version here
export CMAKE_PREFIX_PATH=/opt/openrobots:$CMAKE_PREFIX_PATH

6.在终端中运行: ~source/.bashrc ,刷新环境变量。安装成功

当pinocchio安装成功后,在自己的项目文件夹下引用时,依然会找不到库的路径。需要在CmakLists中包含include和lib文件路径。pinocchio是基于eigen库的,因此,需要安装eigen库才能成功运行。eigen库的安装这里暂不概述。

在Pinocchio和eigen库安装成功后,你可能会遇到这样的错误:

07-Pinocchiotest1.cpp:(.text.startup+0x7f):对‘pinocchio::urdf::details::parseRootTree(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, pinocchio::urdf::details::UrdfVisitorBaseTpl<double, 0>&)’未定义的引用 collect2: error: ld returned 1 exit status ninja: build stopped: subcommand failed.

原因:

pinocchio的默认安装路径是,即使安装后,系统也不一定准确识别到

/opt/openrobots

 解决办法:

建议使用: 

sudo cp -r /opt/openrobots/include/pinocchio /usr/local/include

sudo cp -r /opt/openrobots/include/hpp /usr/local/include

sudo cp -r /opt/openrobots/lib/pkgconfig /usr/local/lib

sudo cp -r /opt/openrobots/lib/libhpp-fcl.so /usr/local/lib

sudo cp -r /opt/openrobots/lib/libpinocchio.so /usr/local/lib

....

及把 /opt/openrobots/include和lib文件夹下所有的文件拷贝到/usr/local/include和/usr/local/lib中

然后在CmakeLists中包含:

find_package(pinocchio REQUIRED)
include_directories(${Pinocchio_INCLUDE_DIRS})
link_directories(${Pinocchio_LIBRARY_DIRS})

 或者直接在CmakeLists中添加绝对路径,例如:

 link_libraries(/usr/local/lib/libhpp-fcl.so)
 link_libraries(/usr/local/lib/libpinocchio.so)

这里只给了两个包含的例子(懒得码字),实际中需要包含全所有pinocchio包,其他的包需要根据你的项目工程来决定是否有必要包含。

include_directories(/usr/local/include)

说明同上。

如果你上述步骤都做完了。在运行官方导入urdf的例子出现类似报错:urdf does not contain a valid URDF model.时,是由于没有及时修改官方例子中宏定义的路径:

把路径改为自己的路径即可。 

 官方参考文档:pinocchio: Overview (laas.fr)https://gepettoweb.laas.fr/doc/stack-of-tasks/pinocchio/master/doxygen-html/

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值