ROS1快速入门学习笔记 - 12ROS中的坐标管理系统

2024-05-02 19:04

本文主要是介绍ROS1快速入门学习笔记 - 12ROS中的坐标管理系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、机器人作中的坐标变换

二、海龟案例


一、机器人作中的坐标变换

TF功能包能干什么?

  • 五秒钟之前,机器人头部坐标系相对于全局坐标系的关系是什么样子的?
  • 机器人夹取的物体i相对于机器人中心坐标系的位置在哪里?
  • 机器人中心坐标系相对于全局坐标系的位置在哪里? 
  • 具有时间属性,默认可以记录十秒钟之内机器人所有的坐标系之间的位置关系。

TF坐标转换如何实现?

  • 广播TF变换
  • 监听TF变换

例如移动机器人的本体坐标系与雷达坐标系

 

二、海龟案例

 1. 下载工具包(对应20.04版本的Noetic)

sudo apt-get install ros-noetic-tf

2. 运行launch文件

roslaunch turtle_tf turtle_tf_demo.launch 

(在这里可能会出现一段红色警告,我们通过下面指令可以消除)

sudo apt install python-is-python3

接下来再重新运行即可。

3. 运行海龟的键盘控制节点

rosrun turtlesim turtle_teleop_key

然后我们运行海龟,发现后面的海龟会一直跟着我们移动的海龟

4. 运行tf工具(第一个工具)

rosrun tf view_frames

可能会出现生成的pdf崩溃,报以下错误

Listening to /tf for 5.0 seconds
Done Listening
b'dot - graphviz version 2.43.0 (0)\n'
Traceback (most recent call last):File "/opt/ros/noetic/lib/tf/view_frames", line 119, in <module>generate(dot_graph)File "/opt/ros/noetic/lib/tf/view_frames", line 89, in generatem = r.search(vstr)
TypeError: cannot use a string pattern on a bytes-like object

这时我们运行以下指令:

sudo gedit /opt/ros/noetic/lib/tf/view_frames

然后搜索 m = r.search(vstr)(89行),在这行前面添加 vstr=str(vstr)即可。 

修改后再重新尝试就不会报错。

再次运行会在当前目录下生成PDF文件

当前系统中共有3个坐标系:

  1. 第一个是world坐标系,world是全局坐标系,表示的是以仿真器的左下角为零点的x轴和y轴的坐标系。
  2. turtle1和turtle2分别代表两只海龟(坐标系) 

还可以通过另一个指令查看两个坐标系之间的关系

例如我们想要查看turtle1和turtle2两个坐标系之间的关系(第二个工具)

rosrun tf tf_echo turtle1 turtle2

 

上面的数据包括两个部分:

  1. Translation表示的是平移
  2. Rotation表示的是旋转 

还可以通过Rviz查看两个坐标系之间的关系

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

显示结果如下所示:

 

中心点是world坐标点, 移动海龟时,相应的坐标系也会发生变化。

坐标系之间的位置关系也可以用下列公式来表示:

 

 

 

 

 

 

 

 

 

 

 

这篇关于ROS1快速入门学习笔记 - 12ROS中的坐标管理系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/954950

相关文章

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

一文教你Java如何快速构建项目骨架

《一文教你Java如何快速构建项目骨架》在Java项目开发过程中,构建项目骨架是一项繁琐但又基础重要的工作,Java领域有许多代码生成工具可以帮助我们快速完成这一任务,下面就跟随小编一起来了解下... 目录一、代码生成工具概述常用 Java 代码生成工具简介代码生成工具的优势二、使用 MyBATis Gen

使用animation.css库快速实现CSS3旋转动画效果

《使用animation.css库快速实现CSS3旋转动画效果》随着Web技术的不断发展,动画效果已经成为了网页设计中不可或缺的一部分,本文将深入探讨animation.css的工作原理,如何使用以及... 目录1. css3动画技术简介2. animation.css库介绍2.1 animation.cs

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

SpringBoot快速搭建TCP服务端和客户端全过程

《SpringBoot快速搭建TCP服务端和客户端全过程》:本文主要介绍SpringBoot快速搭建TCP服务端和客户端全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录TCPServerTCPClient总结由于工作需要,研究了SpringBoot搭建TCP通信的过程

POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能

《POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能》ApachePOI是一个流行的Java库,用于处理MicrosoftOffice格式文件,提供丰富API来创建、读取和修改O... 目录前言:Apache POIEasyPoiEasyExcel一、EasyExcel1.1、核心特性

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例