这是本文档旧的修订版!


libfranka的库的版本适配问题-如何手动编译ubuntu的依赖和ros的依赖

有一些项目,强制依赖了ROS1,导致使用的是ubuntu20,进而导致 系统默认的so依赖 和Franka的平台不匹配,这里对遇到的问题进行整理。

首先,我们要了解兼容性标准: https://www.franka.cn/FCI/compatibility.html

Robot System Version libfranka Version Robot/Gripper Server franka_ros2 Version Ubuntu / ROS 2 franka_ros Version
>= 5.7.2 >= 0.15.0 9 / 3 >= v1.0.0 22.04 / humble >= 0.10.0
>= 5.7.0 >= 0.14.1 to < 0.15.0 8 / 3 >= v0.1.15 22.04 / humble >= 0.10.0
>= 5.5.0 >= 0.13.3 to < 0.14.1 7 / 3 >= v0.1.15 22.04 / humble >= 0.10.0
>= 5.2.0 >= 0.10.0 to < 0.13.3 6 / 3 >= v0.1.0 to >= v0.1.8 22.04 / humble >= 0.10.0

我们可以看到 对于 franka_ros 基本是不挑的,主要集中在 libfranka 的适配上。 而我们遇到的类似的报错,就是这个表格的映射:

Failed to initialize libfranka robot. libfranka: Incompatible library version (server version: 8, library version: 5)

frank的机器人用的版本是8版本,但是 目前的so库用的5版本。 在 ubuntu20上,直接在ros上 apt install ros-noetic-libfranka ros-noetic-franka-ros 就会是5版本,无法使用,直接报错

libfranka 对应于8版本的编译

这里我们选用 0.14.2版本编译,比推荐的最低版本稍微高一个版本,而且编译出的是8版本的。

# 下载老的自带的包,确保不会影响,默认的是5版本
sudo apt remove ros-noetic-libfranka ros-noetic-franka-ros

# ubuntu20 没有 pinocchio 的包,需要手动安装,而且官网被墙了,只能加速
sudo mkdir -p /etc/apt/keyrings
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.asc | sudo tee c
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/robotpkg.asc] https://748996.xyz/robotpkg.openrobots.org/packages/debian/pub focal robotpkg" | sudo tee /etc/apt/sources.list.d/robotpkg.list

# 安装必备的编译基础代码
sudo apt install build-essential cmake git libpoco-dev libeigen3-dev libfmt-dev

# github被墙了,从指定的加速站点下载,注意分支  fix-0.14.2 不要随便改,因有git 子模块,别的分支可能没处理子模块
mkdir gitfranka
cd gitfranka
git clone --recurse-submodules -b fix-0.14.2 https://gitee.com/caodev/mirror-libfranka libfranka
cd libfranka
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release .. -DCMAKE_PREFIX_PATH="/opt/openrobots"
make -j$(nproc)
sudo make install
sudo ldconfig

评论

请输入您的评论. 可以使用维基语法:
 
机器人/franka/libfranka/libfranka的库的版本适配问题-如何手动编译ubuntu的依赖和ros的依赖.1765871581.txt.gz · 最后更改: 2025/12/16 07:53