当前位置: 首页 > news >正文

房山区做网站辽源网站建设公司

房山区做网站,辽源网站建设公司,电子商务网站建设发展报告,关于网站建设的期刊文献ros的tf库 为了这个题目#xff0c;我是拿出了挤沟的精神挤时间#xff0c;是下了功夫的#xff0c;线性代数、矩阵论复习了#xff0c;惯性导航里的dcm、四元数也了解了#xff0c;刚体力学也翻了#xff0c;wiki里的欧拉角也读了#xff0c;tf的tutorial、paper、sou…ros的tf库 为了这个题目我是拿出了挤沟的精神挤时间是下了功夫的线性代数、矩阵论复习了惯性导航里的dcm、四元数也了解了刚体力学也翻了wiki里的欧拉角也读了tf的tutorial、paper、source code也都看了。说实在的经过这次努力我是有点了然于胸了我也非常想了然于纸上与小伙伴们分享但尝试了几次失败了我也不跟自己过不去了还是扯吧。 1tf不是坐标变换那么简单。 很多小伙伴认为tf的作用是便捷的进行坐标变换。这个没错但没这么简单。 在很多api中存在着target framesource frameparent framechild frame这些名字的参数。 看起来很让人糊涂也很让让人烦但里面隐藏着很多信息。source、target frame是在进行坐标变换时的概念source是坐标变换的源坐标系target是目标坐标系这个时候这个变换代表的是坐标变换。 parent、child frame是在描述坐标系变换时的概念parent是原坐标系child是变换后的坐标系这个时候这个变换描述的是坐标系变换也是child坐标系在parent坐标系下的描述。如果把child固结于一个刚体那么这个变换描述的就是刚体在parent坐标系下的姿态。这个用处就大多了可以用它来描述刚体的运动了。 这里有个巧合当然也不是巧合那就是从child到parent的坐标变换等于从parent到child的frame transform等于child在parent frame的姿态描述。这里牵扯到了线性代数里的基变换、线性变换、过渡矩阵的概念。 2简单的说 在线性空间里一个矩阵不但可以描述在同一个基下把一个点运动到另一个点的线性变换还可以描述一个基在另外一个基下的表示也可以表示一个基到另一个基的线性变换。还是比较复杂呀。那就看书吧这样比较简单。 不过如果单说坐标变换就简单了。所谓坐标变换就是把一个点在某个坐标系的描述变换成在另外一个坐标系下的描述。 要实现这个变换比较简单的做法就是用当前坐标系在参考坐标系下的描述一个矩阵去描述乘以这个点在当前坐标系下的描述坐标。 所以只要我们能够知道当前坐标系在参考坐标系的描述我们就可以把当前坐标系里任何一个点的坐标变换成参考坐标系里的坐标。 好吧不考虑平移只考虑旋转参考坐标系换个名字叫固定坐标系当前坐标系叫动坐标系那么该如何得到这个描述呢 用矩阵。矩阵的各列分别是动坐标系在固定坐标系上的投影。当然如果你喜欢用坐标向量右乘矩阵你也可以把在各轴的投影放在各行上。 一个基本的旋转关系构成的矩阵是很好描述的。那么多次旋转呢 3多次旋转、三次旋转、欧拉角、四元数 经过多次旋转的坐标系该怎么在固定坐标系下描述呢。这里有一个前乘和后乘的问题。什么时候前什么时候后很简单绕固定坐标系的轴旋转就前乘绕定坐标系就后乘。为什么是这样呢解释起来很复杂但可以这样理解绕固定轴旋转时你把这个旋转看做是线性变换这个变换把原来的矩阵里的各列向量旋转变换成了新的向量所以前乘。当绕动坐标系旋转时你把这个旋转矩阵看做是一个描述了并且这个描述是在未乘之前的矩阵这个描述下的描述所以要放到后面。 刚体的任一姿态任一动坐标系可以经由三次基本旋转得到用三个角来描述这就是欧拉角。在tf里eulerYPR指的是绕动坐标系的zyx旋转RPY指的是绕固定坐标系xyz旋转这二者等价坐标系定义为右手x前y左z上。 四元数是刚体姿态的另一种描述方式理论基础是刚体姿态可以经过某一特定轴经一次旋转一定角度得到等价于欧拉角等价于旋转矩阵。一个四个参数一个三个参数一个九个参数之所以等价是因为四个参数里有一个约束九个参数里有六个约束。 ps这次就这样了下次再说tf的机制吧。 8.2ros的tf库 4tf的实现机制 4.1有一棵树 tf库的目的是实现系统中任一个点在所有坐标系之间的坐标变换也就是说只要给定一个坐标系下的一个点的坐标就能获得这个点在其他坐标系的坐标。 为了达到这个目的就需要确定各个坐标系之间的关系也就是获得任一坐标系在其他任一个坐标系下的描述。 假设有n个坐标系那么他们之间的组合关系有cn2个如果n4那就是6种如果n100那就是4950个好多呀。不过世界没那么复杂我们可以给这些坐标系之间构建一个结构比如单叉树或者单层多叉树那么100个坐标系之间的关系就可以用99个树杈搞定。tf里的选择则是多层多叉树。 树的结构特点是单亲一个孩子只有父亲没有母亲不允许两个树枝搞对象长出果实这也是tf里说的没有回路的意思为什么这样呢因为怕矛盾有孩子的都知道对孩子的问题上两口子很难一致不一致时孩子会比较茫然但每个小孩子都会趋利避害它们往往会选择比较厉害的一方那就是母老虎把不厉害的一方灰太狼屏蔽忽略掉。坐标变换里可没有主体和选择机制所以还是傻傻的单亲比较好处理。不过有利必然有弊弊端后面再说。 4.2维护一颗树 维护一颗树需要先设计一个树的结构也就是一定要在树被风吹来吹去变换的时候让小树杈找个大树杈依附让大树杈找个树干依附让树干有个根固定。这里提一下我的建议免得一会忘了建议是如果打算用tf解决你的坐标变换问题请一定要先清晰的画出这棵树的结构再开始写程序因为这个结构是维护和使用的基础。 这个结构的建立和维护靠的是tf提供的tfbroadcastor类的sendtransform接口。在tb第一次发布一个从已有的parent frame到新的child frame的坐标系变换时这棵树就会添加一个树枝之后就是维护。 这里提醒一下在用tf时一定要细心照料整棵大树时刻保持这棵大树能够描述整个外部世界里的关系不能有断裂。这样才能保证在风吹时整个树都摆来摆去还保持稳定。 4.3使用这棵树 很简单用tf的tflisener监听某一个指定的从一个a frame到b frame的变换即可当然前提是树上的树杈们能把ab联通并已经准备好。再重复一次这个变换是a frame到b frame的变换也表示了b frame在a frame的描述也代表了把一个点在b frame里的坐标变换成在a frame里的坐标的坐标变换。有了这个变换你就可以尽情的变换了。 4.4实现的原理 实现的原理非常简单也非常粗暴。 基本原理是tb的类里有个publishertl的类里有个subscriber一个发布叫/tf的topic一个订阅这个topic传送的消息tfmessage里包含了parent frameid和child frameid的信息。 这个机制意味着所有的tb会发布某一特定的parent到child的变换而所有tl会收到所有的这些变换然后tl利用一个tfbuffercore的数据结构维护一个完整的树结构及其状态。基于此tl在使用这棵树时会用lookuptransform或waitfortransform来获得任意坐标系之间的变换。 非常简单对吧但粗暴的也非常显然。那就是只要是一个tl就要跟所有tb建立连接就要收取所有的/tf消息来维护一棵完整的树并且还要负责搜索这棵树找到一条变换的路径然后乘呀乘并且每次都要如此。太粗暴了粗暴到一定程就是愚蠢了可是为了活得简单我们往往会玩粗暴。 下一节8.3里再扯第5节tf库的优缺点。 还是写完再补觉吧晚上还有其他作业。 8.3ros里的tf库 5tf库的优缺点 先说优点能用且易上手。 a、各种数值计算的细节你不用考虑tf库可以帮你 b、接口很简洁会广播和监听就ok c、问题找的很准那就是需要维护坐标系之间的关系 d、提供了很多工具程序 e、考虑了与时间相关的变换 f、支持tf-prefix可以在多机器人上用 g、基本能用且不需要深入理解死搬硬套就能用起来。 当然还有很多优点我就不说了不太擅长还是说缺点吧。 还是那句话简单粗暴 a、树的结构很简单但有时候很笨拙。举个例子吧。有部电影叫手机葛优扮演的叫石头范伟演的叫砖头两个人是叔伯兄弟从小到大的小伙伴应该很熟悉关系也很明确但要放到树的结构下就需要从下到上找共同先辈然后从这个先辈再往下找进而确定二者的关系这个比较笨拙。于是有了范伟坐在门槛上的一句台词恁这是弄啥勒恁奶不是俺奶 b、每个tl都要维护同一颗树这样的开销太大主要是网络传输的负荷比较大。这一点tf的设计者是完全承认的。举个例子吧北方的有些地方的农村过年时要拜年拜年要磕头磕头的对象是写有逝去的先辈名字的树状图一个同姓大家族里有很多小家庭每个家里都有那么一张图挨家拜年街上人来人往每个人都磕了很多头磕的其实是同一张。如果有个祠堂集中处理维护一张图就不用看到早早起床、满街跑的情况效率也会高多了。 c、很难满足实时性的要求这一点比较显然。要不tf也不会每个变换存10秒钟的数据不过源码里好像是开了一个存100个消息的队列。 d、还有很多细节不易理解。比如now和time0比如技术文档里的一些术语名词比如采用了机器人里的习惯与飞行器惯导车辆里的习惯区别较大使用时不能相当然。 综上用不用tf需要平衡那里用那里不用用什么代替也需要平衡不是一件很轻松愉快的事。 6扯点其他的 有个我最喜欢的系列电影叫黑客帝国英文名字叫matrix也就是矩阵。之所以喜欢是因为从一开始到现在我都没看懂。 一个矩阵实际上定义了一个描述的视角。对空间里的一个点做描述一个点比较绝对的描述是MX其中M是坐标系的姿态X是坐标向量MX的含义就是在坐标系M里坐标为X的那个点。对于YMX你可以看作是IYMX。也就是说在I坐标系里坐标为Y的一个点和在M系里坐标为X的是同一个点。 所以虚拟世界里的工程师安德森与锡安里的尼欧是同一个点在不同坐标系下不同的坐标描述。 问题的核心是这两个坐标系没有一个是I系所以尽管你清楚N安德森M尼欧但在N的世界里却不能确定N是什么仅知道M是什么在M的世界则相反。所以在锡安链接虚拟世界时实际上是用N的逆乘以M尼欧得到了安德森。 问题来了当the one I 出现的时候变成了NtheoneM尼欧既NIM尼欧也就是NM尼欧所以M世界里就知道了M的绝对意义就会认为M是真实世界。也获取了通过改变尼欧的坐标属性然后使得N逆乘以M再乘以尼欧变成N世界里最牛的人。不过这个M只有尼欧和the one在变换过程中才能知道。 随着尼欧在锡安这个真实世界里也把自己当作了the one奇迹发生了。那就是NIMI既NM锡安和虚拟世界没有区别都在同一个坐标系下这样尼欧在锡安世界里也具备了在虚拟世界里的超能力以the one的身份展开了与机器人的对话告诉机器人别太认真了大家都tm的是程序。 以上纯属闲扯不许反驳不是我怕反驳而是我更喜欢听到您的闲扯。
http://www.zqtcl.cn/news/556200/

相关文章:

  • 用哪个网站做相册视频文件夹谷歌ads
  • 注册top域名做公司网站男女做暖网站是什么
  • 郴州本地网站建设高端网站设计多少钱
  • 此网站域名即将过期广告制作属于什么行业
  • 牛牛襄阳网站建设wap网站asp源码
  • 信用网站建设招标书建网站需要什么手续
  • 重庆建网站方法网站开发和维护
  • 做网站需要什么人活动策划流程及细节
  • wordpress企业网站seo上海市
  • 北京建外贸网站公司网络域名是什么
  • 聚美优品网站建设方案上市公司的信息网站
  • 济南做网站比较好的公司知道吗为什么做美食视频网站
  • 药店网站源码宣传方式
  • word如何做网站链接淘宝客建站需要多少钱
  • 凡科网免费建站步骤及视频logo设计网页
  • 天梯网站建设软件开发公司职位
  • 建站公司外贸东方购物网上商城
  • 白银做网站企业免费网站模板
  • 网络公司给我们做的网站_但是我们不知道域名是否属于我们湖北正规网站建设质量保障
  • 本地网站asp iis团队展示网站
  • 企业网站管理系统cmswordpress知识管理系统
  • 创建一个网站需要怎么做销售平台公司
  • 网站域名实名认证吗做斗图的网站
  • 公司在兰州要做网站怎样选择做网站数据库表各字段详情
  • 营销型网站建设的要素搭建本地网站
  • 深圳网站建设V芯ee8888ewordpress瀑布流主 #65533;
  • 股票交易网站开发angular2做的网站有
  • 如何建立免费个人网站angularjs 网站开发
  • 湖南信息网官方网站安徽省房地产开发项目管理系统
  • a5建站无限动力网站