父连杆、子连杆及关节
基于主动控制的双足机器人一般可以抽象为有可驱动关节相互连接的一系列刚性连杆构成的机械系统,机器人控制一般最终将生成的连杆末端轨迹映射为各个关节的旋转角度,并根据当前各关节角度估计机器人状态以实现反馈控制。子连杆和父连杆通过关节连接在一起,需要注意的是关节只有旋转运动。
通常要建立全局(世界)坐标系和局部坐标系。我们在父连杆、子连杆及关节上分别建立坐标系,子连杆的原点一般设定在其质心(COM)位置,子连杆距离关节的原点距离不变。假设X点在子连杆坐标系中的坐标为Xs,父连杆坐标系中的坐标为Xp,父连杆的位姿为(Pp,Rp),下面证明子连杆局部坐标和父连杆局部坐标之间的关系:
X=Pp+RpXp
Xp=Prs+RrsXs
其中(Prs,Rrs)为子连杆相对于父连杆的位姿,所以有:
X=Pp+Rp(Prs+RrsXs)
=Pp+RpPrs+RpRrsXs
即子连杆的位姿为:
Ps=Pp+RpPrs
Rs=RpRrs
因而在计算子连杆的位姿时,要首先知道其相对位姿(Prs,Rrs)。
=Rj(b+R's,jXs)
另外如果i个关节与(i-1)关节之间的坐标轴不平行的话,Ri=R'iRaxis,=其中R‘i表示i轴相对于(i-1)轴的旋转,Raxis表示轴的旋转.如果限定旋转轴总是关节坐标系的x轴,则:
| 1 0 0 |
Raxis= | 0 cosθ -sinθ |
| 0 sinθ cosθ |
其中θ是该关节的转角。
另外,关节处一般为组合关节,即实现了1~3自由度,通过1~3电机,分别实现Roll,Pitch和Yaw三种动作。Nao机器人一般每个关节实现2个自由度,除了胯关节以外,其余关节姿态都是三轴对应,即姿态矩阵为单位矩阵。对于胯关节,第一个轴是沿Y_Z方向的。采用欧拉角控制的方式要注意“万向节死锁问题” ,这可能也就是为什么Nao大部分关节为1~2自由度,而胯关节处其中之一有倾斜的原因吧。
在实现这三个旋转轴时一定是使它们两两垂直,所以在初始化时Rj为单位矩阵,a,b很容易获得,而连杆姿态转换矩阵也比较容易。
一般三个关节的原点是重合的,各个子关节转轴是相互垂直的,子连杆连接到组合关节处时可以看成通过一个个关节然后连接到父连杆上的,将其看成固定转换顺序
综上,描述子连杆时需要的内容如下:
前4项内容()不需要计算,系统初始化时设置;
xX yX zX
R= xY yY zY
xZ yZ zZ
将子坐标系x轴上单位长度向量向父坐标系三个轴投影的xX,xY,xZ
将子坐标系y轴上单位长度向量向父坐标系三个轴投影的yX,yY,yZ
将子坐标系z轴上单位长度向量向父坐标系三个轴投影的zX,zY,zZ
每个关节可动作顺序可变的前提是:其姿态变换矩阵可交换,即矩阵A,B有AB=BA,而当A , B 均为准对角矩阵(准对角矩阵是分块矩阵概念下的一种矩阵。即除去主对角线上分块矩阵不为零矩阵外,其余分块矩阵均为零矩阵),且对角线上的子块均可交换,则A , B 可交换。
矩阵可交换的条件
父连杆、子连杆及关节相关推荐
- 二连杆纯连杆动力学建模——LangrageEquation with Matlab
运用拉格朗日方程建立二连杆的纯连杆动力学方程,通过推导其过程明白原理.通过优化程序向多连杆动力学过度,方便后期计算n连杆动力学控制做基础. 我首先通过笔算整整算了10页纸,和参照书本结果一直.然后进行 ...
- 总结vue中父向子,子向父以及兄弟之间通信的几种方式
子向父方式1:通过props,如例子中子组件test1.vue向父组件App.vue传值 App.vue代码 <template><div id="app"> ...
- 强转类型,flash声音,父与子的交互
类名(对象)-->强转类型 每个MC都可以有自己的声音,并且被控制 Sound可播放声音 播放时返回声音控制类用于控制声音大小等 父与子 子swf.parent为顶级的情况下 swf.paren ...
- 父与子的编程之旅:与小卡特一起学Python.pdf
下载地址:网盘下载 编辑推荐 编程是一项充满乐趣的挑战,想要上手也非常容易!这本<父与子的编程之旅:与小卡特一起学Python>中,Warren和Carter父子以亲切的笔调.通俗的语言, ...
- angularjs中父,子,兄之间controller值得传递
使用angularjs,发现controller间的值传递,比较麻烦的,以后几篇文章会陆续说几种方法. 一,angularjs $broadcast $emit $on的处理思想 在一个control ...
- CSS父级子级学习总结
CSS 父级子级 http://www.divcss5.com/rumen/r239.shtml 1.认识了解 简单讲CSS父级 CSS子级是相对而言,如一个DIV "A"被另外一 ...
- 【讨论贴】关于父实子虚的疑问???
关于这篇文章,还没有得到最后答案,只是在这里记录一笔,但是欢迎讨论~~将来解决了问题,再专门出贴解答~ 父实子虚就是:父类非虚函数,子类继承变成虚函数,会发生什么 昨天就提问了,但是没有满意的答案,地 ...
- 父与子的编程之旅 python 3 pdf_《父与子的编程之旅》嵌套循环例题解析
<父与子的编程之旅>,11.4可变嵌套循环的问题解答. numBlocks 书里是Python2.X,我的是Python3.X,原理没有差别. 分析如下: 0.手动输入input 当 in ...
- Vue.js-Day04-AM【父子组件通信(父传子、子传父)、动态组件、组件的生命周期、动画】
Vue.js实训[基础理论(5天)+项目实战(5天)]博客汇总表[详细笔记] 目 录 1.复习父子组件通信 1.1.父传子(自定义属性) 1.2.子传父(自定义事件) 2.动态组件 2.1.实现 ...
最新文章
- 为什么要学习Python编程语言?哪些人适合学习Python?
- java nio 断开连接_浅尝Java NIO与Tomcat连接调优
- python输出程序运行时间_Python计算程序运行时间—time.time()、time.clock()
- listview 打开文件 c#_.NET CORE(C#) WPF简单菜单MVVM绑定
- 反制爬虫之Burp Suite RCE
- MySQL—通过Adjacency List(邻接表)存储树形结构
- apache启动报错记录
- 大数据学习(07)--MapReduce
- JQuery Datatables editor 行内编辑功能
- Ionic 框架宣布 2019 年将正式支持 Vue 和 React
- 黑马程序员_Java基础面向对象
- Java-Collections的sort方法对 list 进行排序
- [Active Learning] Multi-Criteria-based Active Learning
- java使用RunTime调用windows命令行
- SQLite之C++封装库CppSQLite使用方法
- linux内核编程之内核定时器
- opencv c++讲解jzg mxy tyd_python看代码就行
- 原生AJAX GET请求
- 用vue+vant框架写手机端
- android 打电话区号,Android Q新功能首曝:漫游自动加拨国际区号