【机器人位姿表示】好的、坏的、丑的机器人位姿表示

这篇具有很好参考价值的文章主要介绍了【机器人位姿表示】好的、坏的、丑的机器人位姿表示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于作者: Paul Furgale 是苏黎世联邦理工学院(ETH Zurich)自动化系统实验室的副主任。他的研究重点是移动机器人系统的长期自主性,包括在高度动态环境中长时间尺度的感知、建图、定位和规划。他是 V-Charge 的科学协调员,这是一个欧洲项目,同时也是工业/学术合作,旨在开发混合交通中的电动车自动代客泊车和充电。他于2011年获得多伦多大学航空航天研究所(UTIAS)的博士学位,在那里他开发了支持行星探测漫游者超视距样本返回的算法,作为自主空间机器人实验室(Autonomous Space Robotics Lab)的一部分。他的博士工作在加拿大高北极地区进行了实地测试,随后被整合到几个加拿大航天局的漫游者原型中。
原文链接: https://paulfurgale.info/news/2014/6/9/representing-robot-pose-the-good-the-bad-and-the-ugly

好的、坏的、丑的机器人位姿表示

2014年6月9日

上周我在 ICRA,并有幸在 Gian Diego Tipaldi 和 Cyrill Stachniss 组织的名为“机器人学中糟糕的东西及其解决方法:从构建复杂系统中学到的经验(What Sucks in Robotics and How to Fix It: Lessons Learned from Building Complex Systems)”研讨会上发言。这是一个真正特别的活动,人们坦诚地参加,挑战对方关于机器人作为科学和工程学科的看法。

我的演讲题目是"Representing Robot Pose: The good, the bad, and the ugly",在这里我试图给出一些基本建议,关于如何谈论、书写、编程机器人的姿态和位置。我看到我的实验室里的学生们试图使用开源软件包或处理数据集时,其中的机器人位姿的概念不够清晰,无法不经过试错(以及痛苦和苦难)而正确实现,导致很多有效时间被浪费了。

这里是讲座的幻灯片(https://web.archive.org/web/20221206023913/https://paulfurgale.info/s/Workshop-Rotations_v102key.pdf)。为了易于访问,我在下面写了一个简短的概述。如果有任何不清楚的地方或发现笔误,请告诉我!

概述

机器人学的实践很大一部分基本上是关于开发能够感知和与真实物理世界互动的机器。为此,我们需要谈论、书写、编程,来表示机器人姿态。大多数情况下,我们在这方面做得非常糟糕。有数百种方法可以将一些标量转换成变换矩阵——除非我们非常清楚如何做到这一点以及结果如何应用,否则我们就在互相谴责浪费时间和努力,试验不同的可能性,直到我们找到合适的一个。与其进行关于哪种表示法正确的宗教讨论,不如提出最少的文档量以避免歧义。

我写这篇文章的目的是说服你回到你的文档、论文、数据集和开源软件中,更新文本,使得帧变换的解释对用户来说完全没有歧义。换句话说,我希望你能帮助我减少世界上的痛苦。在机器人学中,我们仍然需要解决许多有趣的问题,看到学生和工程师在基础知识上挣扎几天,这让我感到痛苦,这些可以通过一些简单明了的文档来避免。

我将使用我们为软件库 “Kindr” 提出的符号。我们追溯这个符号到 H. Bremer 的书 “Elastic Multibody Dynamics – A Direct Ritz Approach”。我会尽量找时间再发一篇关于在机器人学中使用的主要风格的符号的文章。

1. 始终提供一幅坐标系图

【机器人位姿表示】好的、坏的、丑的机器人位姿表示,机器人,算法,线性代数,矩阵
关于帧变换的任何文档都依赖于一个好的坐标系图,显示坐标系如何放置在机器人上。我遵循的约定是坐标系颜色为 x=红色,y=绿色,z=蓝色(即RGB对应xyz)。如果你不提供坐标系图,任何人都不会清楚这些坐标系如何安置在机器人上。看看这个维基百科页面(https://en.wikipedia.org/wiki/Axes_conventions ),了解陆地和航空航天车辆广泛不同的约定。

讨论向量(vectors)时,清楚提供的是哪些向量

即平移向量

Al Kelly 的关于轮式运动学的技术报告(http://www.ri.cmu.edu/publication_view.html?pub_id=6669 )介绍得很好,说明了为什么你需要三个脚标元素(three elements of decoration)来清楚地描述向量的属性。这里提供了一份图解备忘单:
【机器人位姿表示】好的、坏的、丑的机器人位姿表示,机器人,算法,线性代数,矩阵(注: A t B C _{\mathtt{A}}\mathbf{t}_{\mathtt{BC}} AtBC中的 t \mathbf{t} t表示物理量, A \mathtt{A} A表示该物理量所在的坐标系)

很多人不相信我们总是需要三个脚标来“装饰”。我认为角速度是说明该动机的很好的例子:
【机器人位姿表示】好的、坏的、丑的机器人位姿表示,机器人,算法,线性代数,矩阵
(注: A ω B C _{\mathtt{A}}\mathbf{\omega}_{\mathtt{BC}} AωBC表示在坐标系 A \mathtt{A} A中表示从坐标系 B \mathtt{B} B看坐标系 C \mathtt{C} C的角速度)

这些术语实际上在计算轮式机器人或机械臂运动学方程时出现,拥有足够表达的符号来简洁地写下它们非常有用。

3. 讨论方向(orientation)时,非常清楚地说明你提供的是什么方向

即旋转矩阵

在这里要考虑两个重点。首先,确保你指定了如何从你提供的任何标量转换为完整的旋转矩阵。其次,清楚地指定这是哪个旋转矩阵(例如,世界坐标系到机器人坐标系,或机器人坐标系到世界坐标系)。如果你提供像这样的文本,将会更清楚:
【机器人位姿表示】好的、坏的、丑的机器人位姿表示,机器人,算法,线性代数,矩阵(注:旋转矩阵 C W B \mathbf{C}_{\mathtt{WB}} CWB表示机器人坐标系 F B \mathcal{F}_{\mathtt{B}} FB相对于世界坐标系 F W \mathcal{F}_{\mathtt{W}} FW的方向(记住脚标从右到左读),使得在机器人坐标系中表示的向量 B v _{\mathtt{B}}\mathbf{v} Bv可以通过 W v = C W B B v _{\mathtt{W}}\mathbf{v}=\mathbf{C}_{\mathtt{WBB}}\mathbf{v} Wv=CWBBv旋转到世界坐标系中。)

在文档中包含一些建议的短语,并在你的工作中始终使用这些短语也是很好的。这里有一个图解备忘单,带有一些建议的短语。请注意,机器人学中对这些短语没有统一意见,所以请不要期望其他人像我一样使用它们!
【机器人位姿表示】好的、坏的、丑的机器人位姿表示,机器人,算法,线性代数,矩阵(注: C A B \mathbf{C}_{\mathtt{AB}} CAB表示坐标系 B \mathtt{B} B相对于(with respect to)坐标系 A \mathtt{A} A的旋转矩阵。 C A B \mathbf{C}_{\mathtt{AB}} CAB将坐标系 B \mathtt{B} B中的向量旋转到坐标系 A \mathtt{A} A中。)

4. 讨论位姿(pose)时,非常清楚地说明你提供的是什么位姿

即4x4的齐次变换矩阵,包含旋转矩阵和平移向量

这个建议几乎与我之前对旋转矩阵所给的建议完全相同。再次,有两个重要点需要考虑。首先,确保你指定了如何从你提供的任何标量转换为完整的变换矩阵。其次,清楚地指定这是哪个变换矩阵。这是我的建议文本:
【机器人位姿表示】好的、坏的、丑的机器人位姿表示,机器人,算法,线性代数,矩阵

(注:变换矩阵 T W B \mathbf{T}_{\mathtt{WB}} TWB表示机器人坐标系 F B \mathcal{F}_{\mathtt{B}} FB相对于世界坐标系 F W \mathcal{F}_{\mathtt{W}} FW的位姿,使得在机器人坐标系中表示的点 B p _{\mathtt{B}}\mathbf{p} Bp可以通过
W p = T W B B p _{\mathtt{W}}\mathbf{p}=\mathbf{T}_{\mathtt{WBB}}\mathbf{p} Wp=TWBBp变换到世界坐标系中。)

我在图解示例中再次包含了一些建议的短语。
【机器人位姿表示】好的、坏的、丑的机器人位姿表示,机器人,算法,线性代数,矩阵

(注: T A B \mathbf{T}_{\mathtt{AB}} TAB表示坐标系 B \mathtt{B} B相对于(with respect to)坐标系 A \mathtt{A} A的变换矩阵。 T A B \mathbf{T}_{\mathtt{AB}} TAB将坐标系 B \mathtt{B} B中的点变换到坐标系 A \mathtt{A} A中。对于字体,此处使用\mathbf{p}表示3维坐标( B p _{\mathtt{B}}\mathbf{p} Bp),使用\boldsymbol{p}表示4维齐次坐标( B p _{\mathtt{B}}\boldsymbol{p} Bp))

对于该示例有一些额外的说明:

  1. 再次强调,对于这些短语没有统一意见,所以请不要假设人们以同样的方式使用它们。
  2. 我引入了带有单个左下标的简化符号表示点。如果你的论文或数据集只涉及点和姿态(而不涉及向量),这可以大大简化符号。
  3. 自从我的博士论文以来,我一直使用齐次坐标来表示点。为了区分齐次坐标(4x1)和欧几里得坐标(3x1),我使用不同的字体;齐次是粗斜体,欧几里得是粗直立体。

5. 如果不是100%清楚,就要有所畏惧。使用3D绘图工具来检查你的猜测

大多数时候,如何从提供的标量转换为变换矩阵并不完全清楚。如果你不是100%确定答案,最不痛苦的做法是启动你最喜欢的3D绘图工具,绘制答案,直到事情看起来正确。然后写信给作者,向他们解释你需要什么文档才能在没有猜测的情况下做对。

编码风格建议

在自动化系统实验室(Autonomous Systems Lab),我们尝试将您在上面看到的符号直接转换为代码,以便在多人共同处理同一功能时清楚。
【机器人位姿表示】好的、坏的、丑的机器人位姿表示,机器人,算法,线性代数,矩阵

重要的点:文章来源地址https://www.toymoban.com/news/detail-771990.html

  1. 为变换矩阵、点和向量定义标准符号代码。
  2. 用使用的坐标系列表对每个函数或类进行注释。
  3. 采用某种时间索引的符号。在这里,我用“kp1”表示 k+1,用“km1”表示 k-1。

到了这里,关于【机器人位姿表示】好的、坏的、丑的机器人位姿表示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nav_msgs/Odometry.h发布机器人位姿(位置和方向)和线速度、角速度

    在 ROS(Robot Operating System)中, #include nav_msgs/Odometry.h 是一个用于处理和发布里程计数据的头文件。这个头文件定义了 nav_msgs/Odometry 消息类型,它广泛用于在 ROS 中表示机器人或其他移动实体的运动学和位置信息。以下是 nav_msgs/Odometry 消息类型的一些主要功能和组成部分:

    2024年02月12日
    浏览(36)
  • 机器人控制算法——移动机器人横向控制最优控制LQR算法

    1.Introduction LQR (外文名linear quadratic regulator)即线性二次型调节器,LQR可得到状态线性反馈的最优控制规律,易于构成闭环最优控制。LQR最优控制利用廉价成本可以使原系统达到较好的性能指标(事实也可以对不稳定的系统进行整定) ,而且方法简单便于实现 ,同时利用 Matlab 强

    2024年02月04日
    浏览(47)
  • 扫地机器人(二分算法+贪心算法)

    1.  if(robot[i]-len=sweep)这个代码的意思是——如果机器人向左移动len个长度后,比现在sweep的位置(现在已经覆盖的范围)还要靠左,就是覆盖连续不起来,呢么这个len就是有问题的,退出函数,再继续循环。 2.  显然当每个机器人清扫的范围相同时,所用时间最小,所以这时

    2024年01月20日
    浏览(43)
  • 基于C#的机器人仿真平台和机器人运动学算法实现

    一、平台搭建 1.利用wpf自带的库进行机器人各关节导入 相关代码段: 导入效果如图: 效果视频: 2.通过正运动学显示机器人当前位置信息 拖动机器人并且实时改变其位置信息: xaml代码部分: 算法部分:  3.功能实现(在X/Y/Z轴上设置一个移动距离,然后机器人自动移动该

    2024年02月16日
    浏览(53)
  • 机器人集群控制算法概述

    机器人集群控制算法是指一组算法,用于协调和控制多个机器人协同工作,以完成特定任务或达到特定目标。以下是一些常见的机器人集群控制算法: 集群协同行为算法: 领航者/跟随者(Leader/Follower): 一个机器人被指定为领导者,其他机器人跟随领导者的运动。这种方法

    2024年03月15日
    浏览(52)
  • 机器人控制算法——TEB算法—Obstacle Avoidance and Robot Footprint Model(避障与机器人足迹模型)

    1.1处罚条款 避障是作为整体轨迹优化的一部分来实现的。显然,优化涉及到找到指定成本函数(目标函数)的最小成本解(轨迹)。简单地说:如果一个计划的(未来)姿势违反了与障碍物的期望分离,那么成本函数的成本必须增加。理想情况下,在这些情况下,成本函数值

    2024年02月06日
    浏览(46)
  • 微服务的影响:好的、坏的和未来

    ​探索微服务的各个方面,包括其优势、潜在风险以及有效利用它们的最佳实践。 自 COVID-19 大流行开始以来,对技术的依赖已经完全循环。在过去三年中,数字应用程序越来越多地用于银行,购物,尤其是医疗保健服务等需求,这引起了消费者对技术的需求,以帮助他们解

    2024年02月13日
    浏览(30)
  • 算法题——机器人的运动范围

    声明 该系列文章仅仅展示个人的解题思路和分析过程,并非一定是优质题解,重要的是通过分析和解决问题能让我们逐渐熟练和成长,从新手到大佬离不开一个磨练的过程,加油! 原题链接 机器人的运动范围 https://leetcode.cn/leetbook/read/illustration-of-algorithm/9h6vo2/ 算法分析 图

    2024年02月11日
    浏览(43)
  • 【多机器人】基于A_Star算法实现多机器人路径规划附Matlab代码

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年02月04日
    浏览(51)
  • 遨博协作机器人高级编程 - 遨博机器人SDK用户自定义算法接口介绍与使用

    目录 一、简介 二、环境版本 三、开发环境部署 1.二次开发资料下载 2. AUBO PE编程仿真环境配置 四、linux C++ SDK示例 1. 编程环境 2. 加载C++ SDK工程 3. linux C++ SDK 文件构成 4.运行SDK示例 五、构建用户自定义算法SDK示例工程 1.Linux C++ SDK透传接口 2.  创建新项目 3.导入遨博机器人

    2024年02月14日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包