ROS:坐标管理系统

目录

  • 一、机器人中的坐标变换
  • 二、TF功能包
    • 2.2TF功能包简介
    • 2.2TF坐标变换实现
    • 2.3TF案例
  • 三、小海龟跟随实验
    • 3.1打开小程序
    • 3.2查看当前的TF树
    • 3.3坐标相对位置关系可视化1(tf_echo)
    • 3.4坐标相对位置关系可视化2(rviz)

一、机器人中的坐标变换

机器人运动学的核心,描述任意两个坐标系之中任意两个向量之间的变换,可以用一个4×4的变换矩阵(Transformation Matrices)来描述它的平移和旋转变化。
变换矩阵中有包括旋转矩阵(Rotation Matrix)的信息和位置移动(Translation)的信息。
在这里插入图片描述

二、TF功能包

2.2TF功能包简介

一个机器人中,可以有很多坐标系,我们需要去描述任意两个坐标系之间的关系,涉及到大量的矩阵运算。我们可以用ROS中的TF(Transform)功能包来解决问题。
在这里插入图片描述
TF功能包的特点:默认能记录10秒内机器人所有坐标系之间的位置关系。
如:
5秒钟之前,机器人头部坐标系相对于全局坐标系的关系是什么样的?
机器人夹取的物体相对于机器人中心坐标系的位置在哪里?
机器人中心坐标系相对于全局坐标系的位置在哪里?

2.2TF坐标变换实现

实现机制:
广播TF变换
监听TF变换

这有别于之前topic和service的机制。
在ROS Master启动后,启动TF后,会在后台维护一个名为“TF树(TF Tree)”的数据结构。所有的坐标系都是通过树形结构保存在这个树结构当中,当有结点想查询某两个坐标系之间的关系的话,直接可以查询这个TF Tree来得到。

2.3TF案例

在这里插入图片描述
比如这辆带激光雷达的车,车体是以base_link为坐标系的,激光雷达是以base_laser为坐标系的,可以看到base_laser是base_link向x轴平移了0.1m,向z轴平移了0.2m,y轴没有平移。
当base_laser测到离墙面的距离为0.3m,即向量(0.3,0,0)时,就可以根据图下方的TF tree进行坐标系之间的数据变换的运算,从而算出base_link的相对与测距点的相对向量(0.4,0,0.2)。

三、小海龟跟随实验

3.1打开小程序

roslaunch turtle_tf turtle_tf_demo.launch

注:第一次运行可能会报错
报错的原因可能是Python解释器的指向问题。
打开终端依次输入:

cd /usr/bin/
sudo rm -r python
sudo cp python3 python

在这里插入图片描述
打开后就会有两只海龟,直接用键盘操作一只海龟前进,另一只会跟过来。
在这里插入图片描述

3.2查看当前的TF树

查看当前的TF tree,查看一下坐标系之间的关系。

rosrun tf view_frames

在这里插入图片描述
注:noetic直接运行可能会报错,无法生成pdf文件。解决方案:
先打开它指向的那个view_frames文件的修改权限:

sudo chmod a+w /opt/ros/noetic/lib/tf/view_frames

打开,88行后加上

vstr = str(vstr)

在这里插入图片描述
加上后重新运行。
可在用户文件夹下生成一个pdf文件:
在这里插入图片描述

可以看到有3个坐标系,除了两个海龟自身的坐标系,还有个world坐标系。
这颗TF树展示了当前的坐标间的位置关系,turtle1和turtle2是相对world坐标系变化的。
在这里插入图片描述

3.3坐标相对位置关系可视化1(tf_echo)

想看两个海龟的相对变换关系,输入:

rosrun tf tf_echo turtle1 turtle2

在这里插入图片描述
我们接着操控海龟1移动,相对关系就发生了变化:
在这里插入图片描述
这里包含了Translation和Rotation的信息。
Translation表示了相对位移的信息(是一个3×1的向量)。
Rotation表示了旋转矩阵的信息(一个3×3的矩阵,但自由度为3),它又有两种表示方式:
1.RPY表示法(pitch俯仰角、yaw偏航角、roll翻滚角)
2.四元数法(Quaternion)
都可以表示旋转矩阵的信息

Rotation和Translation合起来可以构成变换矩阵

3.4坐标相对位置关系可视化2(rviz)

rviz命令

rosrun rviz rviz -d `rospack find turtle_tf` /rviz/turtle_rviz.rviz

在这里插入图片描述
打开rviz界面。
上面Fixed Frame选 world。Add选添加TF,可以看到3个坐标系了。
在这里插入图片描述
控制海龟运动,坐标系发生改变,然后坐标系turtle2原点会靠近turtle1原点:
在这里插入图片描述
在这里插入图片描述
下图中左边变换矩阵的运算,其实就是坐标移动的本质。两个坐标系相对于world坐标系的变换的乘积可以求得两个坐标系相对的变换关系。
在这里插入图片描述
参考视屏:古月居ROS入门21讲
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

人事管理项目-前端实现

人事管理项目-前端实现 引入Element和Axios开发Login页面配置路由配置请求转发启动前端项目 引入Element和Axios 前端UI使用Element,网络请求则使用Axios,因此首先安装Element和Axios依赖,代码如下: 依赖添加成功后,接…

妖精的尾巴手游快速升级辅助 爱蜂窝自动新手挂机升级

妖精的尾巴手游上线了,是一款特别火的手游,那么如果才能快速升级,迅速提升战斗力呢,主要依靠游戏里面的这些内容。 方式一:主线任务 主线任务是快速升级中速度最快的,能获得大量的经验和等级,后…

妖精的尾巴勇气之旅服务器维护,妖精的尾巴勇气之旅攻略大全 新手攻略开局发展技巧[多图]...

妖精的尾巴勇气之旅怎么玩,作为一个新手玩家来说的话,在开局的时候要做些什么会比较的好,如何能够更好的上手,带来一个比较好的发展,也可以为后续的阶段起到一个比较不错的铺垫呢?下面来了解下!…

【妖精的尾巴win7动漫主题】

主题描述:本主题是由主题世界win7主题下载独家原创制作而成 本地下载 迅雷下载 妖精的尾巴win7动漫主题介绍 妖精的尾巴卡通桌面壁纸下载《鼠标右键另存为本地》 妖精的尾巴卡通桌面主界面效果图 妖精的尾巴卡通桌面开始菜单效果图 妖精的尾巴卡通桌面图标效果图 妖…

智能算法实现PID智能车控制系统

目录 第一章 绪论 1.1 智能车概述 1.2 智能PID研究现状 1.3 本文工作 第二章 PID控制简介 第三章 内模PID简介 3.1 内模PID控制 第四章 内模智能PID智能车控制系统设计 4.1 系统设计 4.2 内模控制原理 第五章 系统仿真及结果分析 5.1 系统仿真分析 5.2 控制效…

Linux Shell 实现一键部署mariadb10.11

mariadb MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的Inno…

简单聊一聊数据库驱动

数据库驱动通常是数据库厂家提供的,他们按照jdbc协议对自家数据库封装了一套可对外调用的API。在应用程序和数据库之间起到了桥接的作用。它是一个软件组件,提供了与特定数据库系统进行通信的接口和功能。 1. 数据库驱动的作用: 连接数据库&…

科研工具-R-META分析与【文献计量分析、贝叶斯、机器学习等】多技术融合实践

Meta分析是针对某一科研问题,根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法,对来源不同的研究成果进行收集、合并及定量统计分析的方法,最早出现于“循证医学”,现已广泛应用于农林生态,资源环境等方面。…

如何查看文件的MD5值?

MD5 什么是MD5? md5是一种信息摘要算法,是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),它可以从一个字符串或一个文件中按照一定的规则生成一个特殊的字符串(这个特殊的字符串就被称之为摘要&…

查看文件的MD5 值

从网上下载到资源文件后,为了确保下载的文件没有被黑客非法篡改,一般都会校验一下MD5是否与最初上传的版本是否一致。查看两个文件的MD5 值可以判断文件在传输过程中有没有损坏,或者丢失字节。 Windows电脑 window(键盘左下角Ctr…

什么是md5

什么是md5? md5是一种不可逆的散列算法 不可逆:从明文可以得到密文,但是从密文不可以得到明文。散列:通过一种函数得到一个映射值,有可能是重复的!但重复的概率比较低,例如设置字符大小写字母数字的密码…

简单的MD5查询工具

这是一个MD5查询工具,输入将要加密的字符串,可以查询到其MD5值。 目前提供了32位和16位两种算法。 什么是MD5? Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数&a…

一文读懂md5,md5有什么用,什么是md5加盐

md5是一种密码散列函数,在计算机安全领域得到广泛的应用。本文将带大家了解一些md5的知识点,什么是md5,md5有什么用,什么是md5加盐,为什么md5不可逆,为什么md5可能会被解密?帮助大家快速了解md5…

MD5值的简介和查看

MD5值的简介和查看 MD5即Message-Digest Algorithm 5(信息-摘要算法第5版),用于确保信息传输完整一致。每个文件都可以用MD5验证程序算出一个固定的MD5码来。 MD5在论坛上、软件发布时经常用,是为了保证文件的正确性&#xff0c…

别小瞧,搬迁网络机房,讲究的可不少

大家好,我的网工朋友 最近围观咱们网工交流群,不少朋友提到机房搬迁这档子事,毕竟嘛,做到这方面项目的概率还是很高的。 别看机房搬迁很简单,其实可讲究了。 随着企业、单位的不断深入发展,机房搬迁&…

【JavaEE】网络编程之UDP套接字

目录 1、网络编程基础 2、UDP数据报套接字编程 2.1.DatagramSocket API(方法) 2.2、DatagramPacket API(方法) 2.3、InetSocketAddress API 3、基于UDP socket写一个回显服务器 3.1、服务器端 3.2 、客户端 3.3、完…

关于.CSV文件

什么是.CSV文件 csv是逗号分隔值文件格式,一般用WORDPAD或记事本(NOTE),EXCEL打开。csv(逗号分隔值)是一种用来存储数据的纯文本文件,通常都是用于存放电子表格或数据的一种文件格式。 .CSV文件的用途 比如在C语言程序中可以将数据输出到.csv文件中&a…

csv文件的简介

一、csv简介 在项目中看到了导出为.csv各式的文件格式好奇就百度了一下,然后做了一个小demo。 就是用逗号分割为一列。 CSV(逗号分隔值)(Comma-Separated Values,CSV,有时也称为字符分隔值,因…

CSV的简单用法

读文件 import csv with open(test.csv,rb) as myFile: linescsv.reader(myFile) for line in lines: print line 程序输出: [1, 2][3, a][4, b] 写文件 with open(rC:\Users\asus\Desktop\frank.csv,w) as myFile:writer csv.writer(myFile)writer.writero…