ROS系统MoveIt玩转双臂机器人系列(六)--D-H逆运动学求解程序(C++)

注:本篇博文全部源码下载地址为:Git Repo

1.  源码是在 Ubuntu14.04 + Indigo 环境下编写。

一、转换矩阵

  经过上一篇博客介绍,我们已经获得了Rob一个手臂的D-H参数表,如上表所示,我们要把这些参数转换成相邻坐标系的转换矩阵,D和H两位老前辈已经推导出通用公式了,通用公式如图1,其中cθi = cos(θi) ,sθi =  sin(θi )。这是一个4x4的矩阵,它表征了相邻两个坐标系的位置和姿态两个维度的转换关系,具体说明见上一篇博文。

图1

  套用图1中的公式,我们分别得到坐标系{1}相对于坐标系{0}的转换矩阵T1如下:

  同理,我们得到坐标系{2}相对于坐标系{1}的转换矩阵T2,{3}相对于{2}的转换矩阵T3,{4}相对于{3}的转换矩阵T4,{5}相对于{4}的转换矩阵T5,{6}相对于{5}的转换矩阵T6,分别如下 :

至此,我们得到了所有相邻坐标系的转换矩阵,由于他们是串联的,我们可以得到坐标系{6}相对于坐标系{0}的转换矩阵T2:

式1

其中(s1指θ1,s2指θ2,以此类推):

  nx = - cos(s5)*(cos(s4)*(sin(s1)*sin(s3) - cos(s1)*cos(s2)*cos(s3)) + cos(s1)*sin(s2)*sin(s4)) - sin(s5)*(cos(s3)*sin(s1) + cos(s1)*cos(s2)*sin(s3));
  ny = cos(s5)*(cos(s4)*(cos(s1)*sin(s3) + cos(s2)*cos(s3)*sin(s1)) - sin(s1)*sin(s2)*sin(s4)) + sin(s5)*(cos(s1)*cos(s3) - cos(s2)*sin(s1)*sin(s3));

  nz = cos(s5)*(cos(s2)*sin(s4) + cos(s3)*cos(s4)*sin(s2)) - sin(s2)*sin(s3)*sin(s5);

  ox = sin(s5)*(cos(s4)*(sin(s1)*sin(s3) - cos(s1)*cos(s2)*cos(s3)) + cos(s1)*sin(s2)*sin(s4)) - cos(s5)*(cos(s3)*sin(s1) + cos(s1)*cos(s2)*sin(s3));

  oy = cos(s5)*(cos(s1)*cos(s3) - cos(s2)*sin(s1)*sin(s3)) - sin(s5)*(cos(s4)*(cos(s1)*sin(s3) + cos(s2)*cos(s3)*sin(s1)) - sin(s1)*sin(s2)*sin(s4));

  oz = - sin(s5)*(cos(s2)*sin(s4) + cos(s3)*cos(s4)*sin(s2)) - cos(s5)*sin(s2)*sin(s3);

  ax = sin(s4)*(sin(s1)*sin(s3) - cos(s1)*cos(s2)*cos(s3)) - cos(s1)*cos(s4)*sin(s2);

  ay = - sin(s4)*(cos(s1)*sin(s3) + cos(s2)*cos(s3)*sin(s1)) - cos(s4)*sin(s1)*sin(s2);

  az = cos(s2)*cos(s4) - cos(s3)*sin(s2)*sin(s4);

  Px = 40*cos(s1)*cos(s2) - (764*cos(s1)*sin(s2))/5;

  Py = 40*cos(s2)*sin(s1) - (764*sin(s1)*sin(s2))/5; 

  Pz = (764*cos(s2))/5 + 40*sin(s2);

由于时间关系,暂时先不把具体过程写下来,其实源代码里面全部都有,需要的请先去文章开头的代码仓下载代码来看。

<-- 未完待续 --> 

 

原文地址:https://www.cnblogs.com/shawn0102/p/9392884.html

时间: 2024-10-27 01:47:35

ROS系统MoveIt玩转双臂机器人系列(六)--D-H逆运动学求解程序(C++)的相关文章

ROS系统MoveIt玩转双臂机器人系列(五)--浅议机器人运动学与D-H建模

一.概述 机器人运动学研究的是机械臂各个连杆之间的位移关系.速度关系和加速度关系.比较经典的一本书推荐大家读读熊有伦的<机器人技术基础>下载网址在这.本篇博文将从刚体的位姿描述讲起,逐步过渡到D-H法运动学建模的方法与步骤,结合前几篇博客所树的Rob机器人的手臂建立D-H运动学模型,并编写一个逆运动学运动学求解的程序. (1)位姿描述 我们知道,刚体在世界坐标系里需要通过位置和姿态两个维度来描述.首先,位置描述很容易理解,就是坐标,例如点P的位姿通过坐标Px,Py,Pz来描述,如下所示. 目前

ROS系统玩转自主移动机器人(5)-- ROS系统建模

注:本篇博文全部源码下载地址为:Git Repo传送门. 1. 下载到本地后解压到当前文件夹然后运行:catkin_make 编译. 2. 源码是在 Ubuntu14.04 + Indigo 环境下编写. 前面博文已经介绍了机器人平台的机械结构设计.嵌入式硬件平台的搭建等内容,从本片开始介绍本开源机器人平台ROS系统的相关程序,主要有: ROS系统建模: Gazebo仿真: ROS系统机器人SLAM框架: SLAM中Gmapping和地图构建: SLAM中AMCL算法: 机器人正逆运动学: 路径

V-rep学习笔记:机器人逆运动学解算

IK groups and IK elements VREP中使用IK groups和IK elements来进行正/逆运动学计算,一个IK group可以包含一个或者多个IK elements: IK groups: IK groups group one or more IK elements. To solve the kinematics of a simple kinematic chain, one IK group containing one IK element is need

ROS系统玩转自主移动机器人(3)-- 开源机器人结构介绍

本机器人机械结构设计相关的所有设计文件下载地址为:传送门  其中包含:三维造型设计文件(所有零件+装配效果)(tips:基于Solidworks 2015 绘制) 非标加工的零件图纸(PDF格式+Dwg格式) 本开源机器人项目首要目的是让感兴趣的朋友花很少的钱就能玩转功能简单的机器人,了解机器人的搭建过程并学习ROS系统(如机器人SLAM),因此结构设计的目标和原则很明确:设计一款轮式机器人,满足功能要求的基础上尽量做到成本低廉,总之花小钱多办事. 例如,最终笔者在非标准金属加工件的的总投入是1

【探索之路】机器人篇-ROS系统并创建工作空间和项目

在ROS官网,已经给出了详细的教程.下面我就般一下砖,把相应的操作写到这里.官方网址:http://wiki.ros.org/cn/ 安装ROS系统 indigo在ubuntu上的安装教程.官网:http://wiki.ros.org/cn/indigo/Installation/Ubuntu 1. 添加sources.list 配置你的电脑使其能够安装来自 packages.ros.org的软件. ROS Indigo 仅 支持 Saucy (13.10) 和 Trusty (14.04).

ROS机器人程序设计(原书第2版)补充资料 (贰) 第二章 ROS系统架构及概念

由于工作事物繁忙,更新有些慢,抱歉. 已经完成的各章节补充说明,会依据反馈意见持续更新,希望大家多提宝贵意见,非常感谢. 在完成了第一章的学习实现之后,基本已经掌握了ROS系统的安装,那么如何使用ROS,理解系统架构和概念,这是第二章的内容.hydro-indigo-kinetic通用概念不做区分. 如果使用IDEs进行ROS开发环境构建,推荐:http://wiki.ros.org/IDEs RoboWare Studio:http://www.roboware.me 补充参考:http://

机器人ROS系统学习随笔-&gt;2《ROS机器人系统设计Gazeb模型建立》

什么是机器人 机器人的组成: 控制系统 系统实现 外部传感器 系统构建--摄像头的实现 参数的设置: kinet链接 lunch文件: 激光雷达的连接 注意想要显示在rviz中要在命令行输入: 1 roslaunch rplidar_ros view_rplider.launch 系统架构完整示例 URDF机器人建模 <link>标签 <joint>标签 <roboot>标签 功能包创建 launch文件配置 在做自己模型的时候基本是只需要修改第一行. 机器人创建一 机

完毕port(CompletionPort)具体解释 - 手把手教你玩转网络编程系列之三

手把手叫你玩转网络编程系列之三    完毕port(Completion Port)具体解释                                                              ----- By PiggyXP(小猪) 前 言 本系列里完毕port的代码在两年前就已经写好了,可是因为许久没有写东西了,不知该怎样提笔,所以这篇文档总是在酝酿之中--酝酿了两年之后,最终决定開始动笔了,但愿还不算晚-.. 这篇文档我很具体而且图文并茂的介绍了关于网络编程模型中完毕

玩转大数据系列之Apache Pig高级技能之函数编程(六)

原创不易,转载请务必注明,原创地址,谢谢配合! http://qindongliang.iteye.com/ Pig系列的学习文档,希望对大家有用,感谢关注散仙! Apache Pig的前世今生 Apache Pig如何自定义UDF函数? Apache Pig5行代码怎么实现Hadoop的WordCount? Apache Pig入门学习文档(一) Apache Pig学习笔记(二) Apache Pig学习笔记之内置函数(三) 玩转大数据系列之Apache Pig如何与Apache Lucen