刚来新公司不久,部门给安排了新人作业,我被分到的任务是求标准6轴机器人的正反解,以及利用就近原则选择最优解。从今天开始,逐步将这部分内容总结出来;

本文以及后续文章均使用改进DH法;

连杆坐标系:

坐标系的建立方法(摘自机器人学导论):

  1. 找出各个关节轴,并标出这些轴线的延长线;
  2. 找出关节轴i和i+1之间的公垂线或者关键轴i和i+1的交点,以关节轴i和i+1的交点或者公垂线与关节轴i的交点作为连杆坐标系{i}的原点;
  3. 规定Z(i)轴沿关节轴i的指向;
  4. 规定X(i)轴沿公垂线的指向,如果关节轴i和i+1相交,则规定X(i)轴垂直于关节轴i和i+1所在的平面;
  5. 按照右手定则确定Y(i)轴;
  6. 当第一个关节变量为0时,规定坐标系{0}和{1}重合;对于坐标系{N},其原点和X(n)的方向可以任意选取。但是在选取时,通常尽量使连杆参数为0;

建立连杆坐标系:

公司的工业机器人都是6轴,并且都是旋转轴,基坐标系位于1轴轴线和2轴x负方向交点,4,5,6轴轴线交于一点,对其建立改进DH坐标系如下图所示(不知道为什么变形了,后面再替换原图):

MDH参数表:

MDH的确认方法(摘自机器人学导论):

a(i) = 沿X(i)轴,从Z(i)移动到Z(i+1)的距离;
alpha(i) = 绕X(i)轴,从Z(i)移动到Z(i+1)的角度;
d(i) = 沿Z(i)轴,从X(i-1)移动到X(i)的距离;
theta(i) = 绕Z(i)轴,从X(i-1)移动到X(i)的角度;

MDH参数表:

按照上述规则,形成的MDH参数表如下:

标准6轴机器人正反解(1)-坐标系和MDH参数表的更多相关文章

  1. c/c++ 标准库 插入迭代器 详解

    标准库 插入迭代器 详解 插入迭代器作用:copy等函数不能改变容器的大小,所以有时copy先容器是个空的容器,如果不使用插入迭代器,是无法使用copy等函数的. 例如下面的代码就是错误的: list ...

  2. c/c++ 标准库 bind 函数 详解

    标准库 bind 函数 详解 bind函数:接收一个函数名作为参数,生成一个新的函数. auto newCallable = bind(callbale, arg_list); arg_list中的参 ...

  3. ES6标准入门之变量的解构赋值简单解说

    首先我们来看一看解构的概念,在ES6标准下,允许按照一定模式从数组和对象中提取值,然后对变量进行赋值,这被称作解构,简而言之粗糙的理解就是变相赋值. 解构赋值的规则是,只要等号右边的值不是对象或者数组 ...

  4. C++标准库vector类型详解

    Vector简介 vector是定义在C++标准模板库,它是一个多功能.能够操作多种数据结构和算法的模板类(关于模板类我们后面会介绍,如何创建自己的模板类).vector是一个容器,能够像容器一样存放 ...

  5. 继续node爬虫 — 百行代码自制自动AC机器人日解千题攻占HDOJ

    前言 不说话,先猛戳 Ranklist 看我排名. 这是用 node 自动刷题大概半天的 "战绩",本文就来为大家简单讲解下如何用 node 做一个 "自动AC机&quo ...

  6. C++的iostream标准库介绍+使用详解(转)

    0 为什么需要iostream 我们从一开始就一直在利用C++的输入输出在做着各种练习,输入输出是由iostream库提供的,所以讨论此标准库是有必要的,它与C语言的 stdio库不同,它从一开始就是 ...

  7. Python标准异常和异常处理详解

    python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 1.异常处理: 本站Python教程会具体介绍. 2.断言(Asserti ...

  8. 数据加密标准(DES)详解

    1 简介 1.1 历史 DES(Data Encryption Standard)是由IBM公司在1974年提出的加密算法,在1977年被NIST定位数据加密标准.随后的很多年里,DES都是最流行的对 ...

  9. Linux服务器架设篇,DNS服务器(三),正反解区域的配置

    一.大体架构 DNS服务器其实只有一个"真正"的配置文件,即 /etc/named.conf .其他的配置文件都是依据此配置展开的.每个域都需要两个配置文件,即正解文件和反解文件. ...

随机推荐

  1. LNMP环境搭建wordpress博客及伪静态

    WordPress是使用PHP语言开发的博客平台,是一款开源的软件,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当作一个内容管理系统(CMS)来使用 ...

  2. Android 通过资源名,获取资源ID

    有时候我们知道一个图片的文件名,我们需要知道在R文件中,该资源的ID,使用如下方法: public static int getIdByName(Context context, String cla ...

  3. Java Data JPA +hibernate 保存或者是查询遇到的坑

    由于项目需求,接触了Java Data JPA +hibernate,它的调用方式是controller调用service,service有实现的接口serviceimpl,serviceimpl调用 ...

  4. Linux命令——ldd和ldconfig

    转自:Linux系统中“动态库”和“静态库”那点事儿 前言 在调试lua脚本的时候,报错. 我已经再lua脚本中更改了cpath package.cpath = package.cpath .. &q ...

  5. Django:CSRF(Cross-request forgery)跨站请求伪造

    一.CSRF是什么 二.CSRF攻击原理 三.CSRF攻击防范 一.CSRF是什么 CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Atta ...

  6. Eclipse安装scala插件

    1.下载插件 http://scala-ide.org/download/current.html ​ 2.将下载的压缩包解压,拷贝到eclipse\dropins目录下 3.启动eclipse,安装 ...

  7. 【转】Python源码学习Schedule

    原文:https://www.cnblogs.com/angrycode/p/11433283.html ----------------------------------------------- ...

  8. Robot Framework--用例、数据、流程分离例子

    如果想改变输入框的输入词,则需要不停的复制case,为了减少冗余,可以做一个简单的分层,把搜索流程剥离成一个关键字,然后再不同的case中调用这个关键字,然后传递不同的参数,以进行不同数据在同一流程下 ...

  9. ASP.NET MVC 入门6、TempData

    TempData用来给控制各Action间传递值,或Action给View传递临时值时使用. TempData实际是将值临时存储于Session中. TempData中存储的值只能供一次访问使用, 即 ...

  10. Linux下干净卸载mysql

    1.首先查看mysql的安装情况 rpm -qa|grep -i mysql 显示之前安装了: MySQL-client-5.5.25a-1.rhel5 MySQL-server-5.5.25a-1. ...