1 前言

为了快速搭建一个机器人控制器,方便后期进行机器人控制算法开发,需要用到 Orocos 的 KDL 库。本文将介绍一下 KDL 相关的基础知识。

2 Orocos

2.1 综述

“Orocos”代表“Open Robot Control Software”,即开源机器人控制软件。 Orocos 为软件开发人员提供了开源的机器人软件框架,提供了很多功能,方便开发人员快速的开发机器人软件模块。Orocos 由 Kinematics Dynamics Library(KDL),Bayesian Filtering Library 及 Orocos Toolchain 组成。 官方网站:https://orocos.org/

2.2 KDL

KDL(Kinematics and Dynamics):机器人运动学与动力学组件,为运动学提供了实时的动力学约束计算,这个组件非常有用,有了这个组件,很多机器人开发者可以快速地开发机器人算法。 这是本系列主要研究内容。

2.3 BFL

BFL(Bayesian Filtering Library):贝叶斯过滤库提供了一个独立于应用程序的动态贝叶斯网络推导框架,即基于贝叶斯规则的递归信息处理和估计算法,如卡尔曼滤波器,粒子滤波器法等。

2.4 Toolchain

Toolchain:Orocos工具链是使用模块化运行时可配置软件组件创建实时机器人应用程序的主要工具。工具链包含了实时工具集(Real-Time Toolkit)、Orocos组件库(Orocos Component Library)等。

3 KDL的安装

  1. 安装Eigen依赖库
    1
    sudo apt-get install libeigen3-dev
  2. https://github.com/orocos/orocos_kinematics_dynamics 下载源码,源码中包含 c++ 和 python 两个版本。
  3. 执行下列语句:
    1
    2
    3
    4
    5
    6
    cd orocos_kdl
    mkdir build
    cd build
    cmake ..
    make -j6
    sudo make install

4 PyKDL的安装

在安装好c++版本的kdl后,再安装Python版本的kdl。
https://github.com/pybind/pybind11/tree/e315e1fe2bad553ff541ce3bc00804e0e70583a2 下载pybind11,下载完成后解压,将其中的所有文件复制到 pthon_orocos_kdl/pybind11 目录下。

1
2
3
4
5
6
7
8
cd python_orocos_kdl
mkdir build
cd build
(if conda use)conda activate py37
cmake .. -DPYTHON_VERSION=3.7 -DCMAKE_BUILD_TYPE=Release # 注意指定Python版本,不一样的编译出来的未必能用。16.04默认python2.7,如果写成3,默认是3.5,3.7的虚拟环境不能用3.5编译好的结果
make -j
(if conda use)cp PyKDL.so /home/robot/anaconda3/envs/py37/lib/python3.7/site_packages/
sudo make install

如果是conda的虚拟环境,做如下设置将系统默认的Python版本修改。

1
2
3
sudo gedit ~/.bashrc
export PYTHONPATH="/home/robot/anaconda3/envs/py37/lib/python3.7/site-packages:$PYTHONPATH"
source ~/.bashrc

测试方法如下:

1
2
3
conda activate py37
python
import PyKDL

参考链接

  1. 机器人学与OROCOS-KDL(一)简介
  2. github源码
  3. 官网
  4. 安装PyKDL到虚环境
  5. 如何在基于python3的conda虚拟环境中从头编译PyKDL