c++运动学正反解 ros_ROS系统MoveIt玩转双臂机器人系列(六)–D-H逆运动学求解程序(C++)...
注:本篇博文全部源码下载地址为:Git Repo。
一、转换矩阵
经过上一篇博客介绍,我们已经获得了Rob一个手臂的D-H参数表,如上表所示,我们要把这些参数转换成相邻坐标系的转换矩阵,D和H两位老前辈已经推导出通用公式了,通用公式如图1,其中cθi = cos(θi) ,sθi = sin(θi )。这是一个4×4的矩阵,它表征了相邻两个坐标系的位置和姿态两个维度的转换关系,具体说明见上一篇博文。
图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);
由于时间关系,暂时先不把具体过程写下来,其实源代码里面全部都有,需要的请先去文章开头的代码仓下载代码来看。
tip:
源码是一个VS工程,基于VS2010创建。
c++运动学正反解 ros_ROS系统MoveIt玩转双臂机器人系列(六)–D-H逆运动学求解程序(C++)...相关推荐
- ROS系统MoveIt玩转双臂机器人系列(五)--浅议机器人运动学与D-H建模
ROS系统MoveIt玩转双臂机器人系列(五)--浅议机器人运动学与D-H建模 一.概述 机器人运动学研究的是机械臂各个连杆之间的位移关系.速度关系和加速度关系.比较经典的一本书推荐大家读读熊有伦的& ...
- ROS系统MoveIt玩转双臂机器人系列(二)--生成MoveIt配置包
ROS系统MoveIt玩转双臂机器人系列(二)--生成MoveIt配置包 注:本篇博文全部源码下载地址为:Git Repo. 1. 下载到本地后解压到当前文件夹然后运行:catkin_make 编译. ...
- ROS系统MoveIt玩转双臂机器人系列(三)--利用controller控制实际机器人
ROS系统MoveIt玩转双臂机器人系列(三)--利用controller控制实际机器人 注:本篇博文全部源码下载地址为:Git Repo. 1. 下载到本地后解压到当前文件夹然后运行:catkin_ ...
- ROS系统MoveIt玩转双臂机器人系列(一)--ROS机器人建模
ROS系统MoveIt玩转双臂机器人系列(一)--ROS机器人建模 注:本篇博文全部源码下载地址为:Git Repo. 1. 下载到本地后解压到当前文件夹然后运行:catkin_make 编译. 2. ...
- c++运动学正反解 ros_朔州智能【机器人关节臂】哪家强
朔州智能[机器人关节臂]哪家强,郑州思想车间智能科技有限公司,成立于2013年,是一家立足于中原地区的专业工业机器人集成应用服务商,专注于机器人焊接.搬运.码垛.打磨.喷涂等应用场景,为客户提供单个工 ...
- Delta机器人:运动学正反解分析
Delta机器人:运动学正反解分析 一.Delta机构简介 Delta机构是并联机构中的一种典型机构,起原始结构如图1所示.Delta机构由R.Clavel 博士在 1985年发明,是现在并联机器人中 ...
- (转载)完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三
手把手叫你玩转网络编程系列之三 完成端口(Completion Port)详解 ----- By PiggyXP(小猪) 前 言 本系列里完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了, ...
- UR机械臂学习(7-1):MoveIt简单编程实现机械臂运动(正逆运动学)
主要参考: MoveIt编程实现关节空间机械臂运动(正运动学) https://blog.csdn.net/zzu_seu/article/details/90611186 MoveIt编程实现关节空 ...
- 完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三 1-转
完成端口(Completion Port)详解 本系列里完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了,不知该如何提笔,所以这篇文档总是在酝酿之中--酝酿了两年之后,终于决定开始动笔了, ...
最新文章
- Dubbo标签解析原理
- 人脸Pose检测:ASM、AAM、CLM方法总结
- 使用SAP Cloud Platform Leonardo机器学习的测试控制台
- Css3实现波浪线效果1
- linux 下的init 0,1,2,3,4,5,6知识介绍
- 视频专辑:Web Service视频教程
- AcWing 892. 台阶-Nim游戏(nim博弈变种)
- 第二次公共考试,判断错题集
- ASCII、Unicode、GBK和UTF-8字符编码的区别联系[转]
- Visual Studio2017 MSDN安装
- jaxl php,php – jaxl无法连接到Prosody
- 关于程序员抵制996的一些想法
- 南佛罗里达大学计算机科学硕士,去南佛罗里达大学读硕士好吗
- 谷歌 TensorFlow Roadshow 北京站
- 计算机体系结构:系统平均无故障时间(MTTF)计算例题
- disallow: /index.php?,那位高手知道robots文件的正确写法。我在网上看到两种说法。一种是 user-agent:* Disallow:/flims...
- c语言s型曲线方程,电机控制 | S曲线加减速
- 卸载Win10右下角资讯和兴趣(天气)
- DSPE-PEG-SP2-AA,二硬脂酰基磷脂酰乙醇胺-聚乙二醇-SP2-AA,具有较好的生物相容性和被动靶向性,可应用于药物输送系统
- H5-input弹起键盘遮盖输入框(Android)、键盘弹起后不恢复(IOS)
热门文章
- 公司绝不会告诉你的20大秘密
- 一本通网站 1378:最短路径(shopth)
- iOS高仿微信悬浮窗、忍者小猪游戏、音乐播放器、支付宝、今日头条布局滚动效果等源码...
- Codeforces 510 E. Fox And Dinner
- 大数据之-Hadoop之HDFS_hadoop集群中的安全模式_操作案例---大数据之hadoop工作笔记0075
- 大数据之-Hadoop之HDFS_HDFS组成架构---大数据之hadoop工作笔记0050
- k8s核心技术-Ingress(对外暴露应用实施)---K8S_Google工作笔记0042
- STM32工作笔记0016---MDK开发环境安装
- C#.NET验证码智能识别学习笔记---01C#.NET验证码识别介绍
- android学习笔记---64_ListView数据异步加载与AsyncTask