由浅到深理解ROS(9)- 几个基本概念的理解 坐标系 包

1.坐标系

最常用的就是map,odom,base_link,base_laser坐标系,这也是开始接触gmapping的一些坐标系。

map:地图坐标系,顾名思义,一般设该坐标系为固定坐标系(fixed frame),一般与机器人所在的世界坐标系一致。

base_link:机器人本体坐标系,与机器人中心重合,当然有些机器人(PR 2)是base_footprint,其实是一个意思。(base_link坐标系原点一般为机器人的旋转中心,base_footprint坐标系原点为base_link原点在地面的投影,有些许区别(z值不同))

odom:里程计坐标系,这里要区分开odom topic,这是两个概念,一个是坐标系,一个是根据编码器(或者视觉等)计算的里程计。但是两者也有关系,odom topic 转化得位姿矩阵是odom-->base_link的tf关系。这时可有会有疑问,odom和map坐标系是不是重合的?(这也是我写这个博客解决的主要问题)可以很肯定的告诉你,机器人运动开始是重合的。但是,随着时间的推移是不重合的,而出现的偏差就是里程计的累积误差。那map-->odom的tf怎么得到?就是在一些校正传感器合作校正的package比如amcl会给出一个位置估计(localization),这可以得到map-->base_link的tf,所以估计位置和里程计位置的偏差也就是odom与map的坐标系偏差。所以,如果你的odom计算没有错误,那么map-->odom的tf就是0.

base_laser:激光雷达的坐标系,与激光雷达的安装点有关,其与base_link的tf为固定的。

 

参考:http://www.ros.org/reps/rep-0105.html

2.包

        在ROS中,进行导航需要使用到的三个包是:
      (1) move_base:根据参照的消息进行路径规划,使移动机器人到达指定的位置;
      (2) gmapping:根据激光数据(或者深度数据模拟的激光数据)建立地图;(gmapping是一个比较完善的地图构建开源包,使用激光和里程计的数据来生成二维地图。)
      (3) amcl:根据已经有的地图进行定位。

3.MoveIT

moveit是ros中一系列移动操作的功能包的组成,主要包含运动规划,碰撞检测,运动学,3D感知,操作控制等功能。

1.move_group:move_group是moveit的核心部分,可以综合机器人的各独立组件,为用户提供一系列的动作指令和服务。move_group类似于一个积分器,本身并不具备丰富的功能,主要做各功能包和插件的集成。它通过消息或服务的形式接收机器人上传的点云信息,joints的状态消息,还有机器人的tf tree,另外还需要ros的参数服务器提供机器人的运动学参数,这些参数会在使用setup assistant的过程中根据机器人的URDF模型文件,创建生成,包括SRDF文件和配置文件。

2.motion panning(运动规划):在moveit中,运动规划算法是由运动规划器(motion planner)完成,而规划器是作为插件来安装的,可以通过ROS的pluginlib接口来加载需要的规划器。运动规划算法有很多,每一个运动规划器都是moveit的一个插件,可以根据需求选用不同的规划算法,move_group默认使用的是OMPL算法。

3.Planning Scene(规划场景):可以为机器人创建一个具体的工作环境,加入一些障碍物。

4.Kinematics(运动学):运动学算法是机械臂各种算法中的核心,尤其是逆运动学算法IK(inverse kinematics)。什么是逆运动学(IK)?简单说,就是把终端位姿变成关节角度,q=IK(p)。p是终端位姿(xyz),q是关节角度。为什么要用IK?OMPL是采样算法,也就是要在关节空间采样。 这与无人车的规划有一个最明显的区别,无人车的目标就是在采样空间, e.g. 目标是(x,y), 采样空间也是(x,y). 但是对于机械臂,目标是终端空间位置(xyz), 但采样空间却是关节空间(q0,q1,…qN)。有了IK之后,我们就可以把三维空间的目标p转化为关节空间的目标q。那么这样就会让采样算法能算的更快,具体方法不赘述,这样的算法有RRT-Connect,BKPIECE等等双向采样算法。moveit使用插件的形式可以让用户灵活的选择需要使用的反向运动学算法,也可以选择自己的算法。moveit中默认的IK算法是numerical jacobian-base算法。

5.collision checking(碰撞检测):moveit使用CollisionWorld对象进行碰撞检测,采用FCL(Flexible Collision Library)功能包。碰撞检测是运动规划中最耗时的运算,往往会占用90%左右的时间,为了减少计算量,可用通过设置ACM(Allowed Collision Matrix)来进行优化,如果两个bodys之间的ACM设置为1,则意味着这两个bodys永远不会发生碰撞,不需要进行碰撞检测。

6.OMPL(open motion planning library):开源运动规划库,是一个运动规划的C++库,其中包含了很多运动规划领域的前沿算法。虽然OMPL里面提到了最优规划,但总体来说OMPL还是一个采样规划算法库。而采样规划算法中,最出名的莫过于RRT(rapidly-exploring random trees)和PRM(probabilistic roadmap)。 OMPL能做什么? 简单说,就是提供一个运动轨迹。给定一个机器人结构(假设有N个关节),给定一个目标(比如终端移到xyz),给定一个环境,那么OMPL会提供给你一个轨迹,包含M个数组,每一个数组长度是N,也就是一个完整的关节位置。沿着这个轨迹依次移动关节,就可以最终把终端移到xyz,当然,这个轨迹应当不与环境中的任何障碍发生碰撞。为什么用OMPL? 运动规划的软件库和算法有很多,而OMPL由于其模块化的设计和稳定的更新,成为最流行的规划软件库之一。很多新算法都在OMPL开发。很多其他软件(包括ROS/MoveIt)都使用OMPL做运动规划。

7.用moveit控制机器人大概分以下几步:
a.建立机器人URDF模型
b.建立机器人ros驱动
c.生成moveit配置文件
d.标定相机
e.修改moveit配置文件和launch文件
其中在进行仿真操作过程中,不需要b,d,e三个步骤。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/440018.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机常用技巧

windows禁用自带键盘命令(笔记本) 禁用:sc config i8042prt start disabled 恢复:sc config i8042prt start auto锁屏 win l

【POJ - 1698】Alice's Chance(网络流最大流,建图)

题干: Alice, a charming girl, have been dreaming of being a movie star for long. Her chances will come now, for several filmmaking companies invite her to play the chief role in their new films. Unfortunately, all these companies will start mak…

由浅到深理解ROS URDF教程

创建自己的URDF文件 1.1创建树形结构文件 在这部分教程中要创建的将是下面的图形所描述的机器人的urdf文件 图片中这个机器人是一个树形结构的。让我们开始非常简单的创建这个树型结构的描述文件,不用担心维度等的问题。创建一个my_robot.urdf文件,内容如…

wireshark基本使用及介绍

Wireshark使用 注:本文中使用的wireshark是3.2.2版本 捕获过滤器表达式 下面是常用的捕获过滤器,wireshark中:捕获->捕获过滤器 除此外,还可以指明传输方向,如:src(源方向), …

1.2)深度学习笔记------神经网络的编程基础

目录 1)Binary Classification 2)Logistic Regression 3)Logistic Regression Cost Function 4)Gradient Descent 5)Logistic Regression Gradient Descent(重点) 6)Gradient …

CS231n Convolutional Neural Networks for Visual Recognition------Python Tutorial

源链接为:http://cs231n.github.io/python-numpy-tutorial/。 这篇指导书是由Justin Johnson编写的。 在这门课程中我们将使用Python语言完成所有变成任务!Python本身就是一种很棒的通用编程语言,但是在一些流行的库帮助下(numpy&…

【HDU - 3081】Marriage Match II(网络流最大流,二分+网络流)

题干: Presumably, you all have known the question of stable marriage match. A girl will choose a boy; it is similar as the game of playing house we used to play when we are kids. What a happy time as so many friends playing together. And it is …

IP、TCP、UDP、HTTP头部信息

IP头部信息 ip报文段格式 版本: 占4位,表明IP协议实现的版本号,当前一般为IPv4,即0100。报头长度 : 占4位,因为头部长度不固定(Option可选部分不固定),所以需要标识…

ROS技术点滴 —— MoveIt!中的运动学插件

MoveIt!是ROS中一个重要的集成化开发平台,由一系列移动操作的功能包组成,提供运动规划、操作控制、3D感知、运动学等功能模块,是ROS社区中使用度排名前三的功能包,目前已经支持众多机器人硬件平台。 MoveIt!中的众多功能都使用插件…

1)机器学习基石笔记Lecture1:The Learning Problem

网上关于机器学习的课程有很多,其中最著名的是吴恩达老师的课程,最近又发现了NTU林轩田老师的《机器学习基石》课程,这门课也很好。课程总共分为4部分,总共分为16节课,今天来记录第一节课。 When Can Machines Learn?…

MMS协议

MMS格式解析 简介: MMS是微软的私有流媒体协议。 它的最初目的是通过网络传输多媒体广播、视频、音轨、现场直播和一系列的实时或实况材料。 MMS建立在UDP或TCP传输/网络层上,是属于应用层的。使用TCP的MMS上URL是MMS://或者MMST://&#x…

【HDU - 6118】度度熊的交易计划(最小费用可行流,网络流费用流变形 )

题干: 度度熊参与了喵哈哈村的商业大会,但是这次商业大会遇到了一个难题: 喵哈哈村以及周围的村庄可以看做是一共由n个片区,m条公路组成的地区。 由于生产能力的区别,第i个片区能够花费a[i]元生产1个商品&#xff0…

老王说ros的tf库

ros的tf库 为了这个题目,我是拿出了挤沟的精神挤时间,是下了功夫的,线性代数、矩阵论复习了,惯性导航里的dcm、四元数也了解了,刚体力学也翻了,wiki里的欧拉角也读了,tf的tutorial、paper、sou…

Apollo进阶课程 ③ | 开源模块讲解(中)

目录 1)ISO-26262概述 2)ISO-26262认证流程 3)ISO-26262优点与缺陷 原文链接:Apollo进阶课程 ③ | 开源模块讲解(中) Apollo自动驾驶进阶课程是由百度Apollo联合北京大学共同开设的课程,邀请…

python 问题集

打开文件是报:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xe9 in position 0: unexpected end of data UnicodeDecodeError:“utf-8”编解码器无法解码位置0中的字节0xe9:unex 在open中加入encodingunicode_escape 如: with open(file_n…

【HDU - 6447】YJJ's Salesman(降维dp,树状数组优化dp)

题干: YJJ is a salesman who has traveled through western country. YJJ is always on journey. Either is he at the destination, or on the way to destination. One day, he is going to travel from city A to southeastern city B. Let us assume that A …

由浅到深理解ROS(5.1)- roslaunch 学习

oslaunch 用处&#xff1a;将多个rosnode 结合起来&#xff0c;一起运行。这样就不需要一个个的运行。 roslaunch格式 &#xff08;add_two.launch&#xff09; <launch> <arg name"a" default"1" /> <arg name"b&q…

CS231n Convolutional Neural Networks for Visual Recognition------Numpy Tutorial

源链接为&#xff1a;http://cs231n.github.io/python-numpy-tutorial/。 这篇指导书是由Justin Johnson编写的。 在这门课程中我们将使用Python语言完成所有变成任务&#xff01;Python本身就是一种很棒的通用编程语言&#xff0c;但是在一些流行的库帮助下&#xff08;numpy&…

【CodeForces - 1047C】Enlarge GCD(数学,枚举,预处理打表,思维)

题干&#xff1a; F先生有n个正整数&#xff0c;a1&#xff0c;a2&#xff0c;...&#xff0c;an 他认为这些整数的最大公约数太小了,所以他想通过删除一些整数来扩大它 您的任务是计算需要删除的最小整数数,以便剩余整数的最大公约数大于所有整数的公约数. Input 3 1 2 4…

TS解析文档

TS格式解析 简介&#xff1a; ts文件为传输流文件&#xff0c;视频编码主要格式h264/mpeg4&#xff0c;音频为acc/MP3。 ts的包是一个一个188字节的包组成&#xff0c;这188字节里面由一个0x47开头的包作为同步。 也就是说&#xff0c;如果你找到了0x47&#xff0c;如果与它相…