机器人学与OROCOS-KDL(一)简介

一、概述

本系列文章主要研究机器人学的基础理论,以及研究开源机器人库OROCOS-KDL对机器人算法的实现。本文所有错误不足欢迎指正或讨论。

二、机器人学

机器人学是人们设计和应用机器人的技术和知识。机器人系统不仅由机器人组成,还需要其他装置和系统连同机器人一起来共同完成必须的任务。1
机器人学内容主要有:运动学、动力学、轨迹规划、速度规划等。

三、开源机器人控制软件OROCOS

“Orocos”代表“Open Robot Control Software”,即开源机器人控制软件。
Orocos 为软件开发人员提供了开源的机器人软件框架,提供了很多功能,方
便开发人员快速的开发机器人软件模块。2
Orocos 由 Kinematics Dynamics Library,Bayesian Filtering Library 及 Orocos Toolchain 组成。
官方网站:orocos.org
OROCOS的组成
KDL(Kinematics and Dynamics):机器人运动学与动力学组件,为运动学提供了实时的动力学约束计算,这个组件非常有用,有了这个组件,很多机器人开发者可以快速地开发机器人算法。
BFL(Bayesian Filtering Library):贝叶斯过滤库提供了一个独立于应用程序的动态贝叶斯网络推导框架,即基于贝叶斯规则的递归信息处理和估计算法,如卡尔曼滤波器,粒子滤波器法等。
Toolchain:Orocos工具链是使用模块化运行时可配置软件组件创建实时机器人应用程序的主要工具。工具链包含了实时工具集(Real-Time Toolkit)、Orocos组件库(Orocos Component Library)等。
本文主要研究与机器人学相关的机器人运动学与动力学组件KDL。

四、OROCOS-KDL安装

1.参考平台

Windows 10 操作系统
MinGW 编译器
CMake 3.1.2 工具

2.源码下载

Eigen3源码下载

git clone https://github.com/eigenteam/eigen-git-mirror.git

KDL源码下载

git clone https://github.com/orocos/orocos_kinematics_dynamics.git

3.解压Eigen3和KDL

Eigen3是一个C++的线性代数模板库,包括矩阵、向量及相关算法。KDL库的底层计算用到Eigen库,因此KDL编译时要加入Eigen的路径。
解压Eigen3和KDL后:
解压文件

4.编译KDL

  • 打开orocos_kinematics_dynamics-master/D:\workspcae\orocos_kinematics_dynamics-master\orocos_kdl 目录
  • 新建build文件夹
  • 打开CMake GUI软件,按下图步骤:①加入源码位置;②加入刚才新建的build文件夹作为生成目录;③点击Configure按钮;④选择编译器,点击完成。
    cmake gui‘
  • 未加入Eigen的路径一般会出现错误,在CMake界面中加入Eigen的路径。按照以下步骤生成Makefile。(建议自己定义安装路径:修改CMAKE_INSTALL_PREFIX)
    CMake 错误处理
    如一切顺利,则出现以下结果:
    成功生成Makefile
  • 打开CMD命令提示符,进入已生成Makefile的build的路径,输入make编译KDL库:
    make
  • 编译完成后,输入make install 安装KDL库:
    make install
  • 安装完成后,在CMAKE_INSTALL_PREFIX设置的路径找到以下目录:
    最终目录
  • 另外,编译后在build/src目录中生成了liborocos-kdl.dll动态库文件,而make install后并没有安装到目标目录中,可能是cmake配置没配置到。但是动态库非常有用,需要使用liborocos-kdl.dll库时,可以手动复制到目标目录。

  1. SaeedB.Niku. 机器人学导论:分析、系统及应用:analysis,systems,applications[M]// 机器人学导论:分析、系统及应用:Analysis, Systems, Applications. 2004. ↩︎

  2. 陈坚鸿. 基于Orocos的工业机器人轨迹跟踪研究[D]. 2017. ↩︎

  • 7
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 CPP 中使用 Orocos KDLKDL Parser,需要先安装 Orocos KDL KDL Parser 。下面是安装步骤: 1. 安装 Orocos KDL : ``` sudo apt-get install liborocos-kdl-dev ``` 2. 安装 KDL Parser : ``` sudo apt-get install libkdl-parser-dev ``` 安装完成后,可以在 CPP 中使用这两个。使用 Orocos KDLKDL Parser 的示例代码如下: ```cpp #include <kdl/chain.hpp> #include <kdl/chainfksolver.hpp> #include <kdl/chainfksolverpos_recursive.hpp> #include <kdl/chainjnttojacsolver.hpp> #include <kdl_parser/kdl_parser.hpp> int main(int argc, char** argv) { // Load the robot description from the parameter server. std::string robot_description; ros::param::get("robot_description", robot_description); // Parse the robot description into a KDL tree. KDL::Tree robot_kdl; if (!kdl_parser::treeFromString(robot_description, robot_kdl)) { ROS_ERROR("Failed to construct KDL tree from robot description."); return 1; } // Create a solver for computing the forward kinematics of the robot. KDL::Chain robot_chain; robot_kdl.getChain("base_link", "end_effector_link", robot_chain); KDL::ChainFkSolverPos_recursive fk_solver(robot_chain); // Compute the forward kinematics of the robot for a given joint configuration. KDL::JntArray joint_positions(robot_chain.getNrOfJoints()); for (size_t i = 0; i < robot_chain.getNrOfJoints(); ++i) { joint_positions(i) = i * 0.1; } KDL::Frame end_effector_pose; fk_solver.JntToCart(joint_positions, end_effector_pose); // Create a solver for computing the Jacobian of the robot. KDL::ChainJntToJacSolver jac_solver(robot_chain); // Compute the Jacobian of the robot for a given joint configuration. KDL::Jacobian jacobian; jac_solver.JntToJac(joint_positions, jacobian); return 0; } ``` 这段代码演示了如何使用 Orocos KDLKDL Parser 实现机器人的正运动学和雅克比矩阵计算。需要注意的是,这段代码是在 ROS 中编写的,如果在其他环境中使用,需要根据需要进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值