首先安装小海龟实例的功能包ros-melodic-turtle-tf

 qqtsj  ~  sudo apt install ros-melodic-turtle-tf
[sudo] qqtsj 的密码:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
ros-melodic-turtle-tf 已经是最新版 (0.2.2-0bionic.20191008.205941)。
ros-melodic-turtle-tf 已设置为手动安装。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 111 个软件包未被升级。

我的ros系统已经安装好了

然后在启动launch文件,这个launch文件相当于一个脚本,可以一次性启动很多节点

 qqtsj  ~  roslaunch turtle_tf turtle_tf_demo.launch
... logging to /home/qqtsj/.ros/log/42e2c96a-42a0-11ea-b4ee-9822efa1466f/roslaunch-qqtsj-Nitro-AN515-51-8424.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB. started roslaunch server http://qqtsj-Nitro-AN515-51:34609/ SUMMARY
======== PARAMETERS
* /rosdistro: melodic
* /rosversion: 1.14.3
* /scale_angular: 2.0
* /scale_linear: 2.0
* /turtle1_tf_broadcaster/turtle: turtle1
* /turtle2_tf_broadcaster/turtle: turtle2 NODES
/
sim (turtlesim/turtlesim_node)
teleop (turtlesim/turtle_teleop_key)
turtle1_tf_broadcaster (turtle_tf/turtle_tf_broadcaster.py)
turtle2_tf_broadcaster (turtle_tf/turtle_tf_broadcaster.py)
turtle_pointer (turtle_tf/turtle_tf_listener.py) auto-starting new master
process[master]: started with pid [8435]
ROS_MASTER_URI=http://localhost:11311 setting /run_id to 42e2c96a-42a0-11ea-b4ee-9822efa1466f
process[rosout-1]: started with pid [8446]
started core service [/rosout]
process[sim-2]: started with pid [8449]
process[teleop-3]: started with pid [8450]
process[turtle1_tf_broadcaster-4]: started with pid [8451]
process[turtle2_tf_broadcaster-5]: started with pid [8452]
process[turtle_pointer-6]: started with pid [8453]
Reading from keyboard
---------------------------
Use arrow keys to move the turtle.
INFO: cannot create a symlink to latest log directory: [Errno 2] No such file or directory: '/home/qqtsj/.ros/log/latest'

小海龟跟随实验,有两只小海龟turtle1和turtle2,然后我们控制小海龟turtle1,通过turtle-tf功能包里面的坐标变换去实现小海龟turtle2的位置跟随,虽然角度和方向不一样,但是实现了坐标的跟随。

接下来介绍一下跟随的原理,以及一个小工具。

运行$ rosrun tf view_frames  他会先监听5秒钟的时间,然后会生成一个frames.pdf文件

view_frames是tf功能包里面的一个小工具,可以直接可视化看到整个系统中tf之间的关系。

 qqtsj  ~  rosrun tf view_frames
Listening to /tf for 5.0 seconds
Done Listening
dot - graphviz version 2.40.1 (20161225.0304) Detected dot version 2.40
frames.pdf generated

这是当前系统中tf之间的关系, 在当前的两只小海龟的仿真器中有三个坐标系 ,其中word坐标系是全局坐标系,两个小海龟是两个坐标系。

turtle1和turtle2两个坐标系不断的重合到一起,他们相对与word坐标系是不断变化的。

另外还有一个工具更加清楚的观察坐标系之间的关系 tf_echo   (可以直接查询坐标系之间的关系)

 qqtsj  ~  rosrun tf tf_echo turtle1 turtle2
At time 1580309473.964
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.999, -0.035]
in RPY (radian) [0.000, -0.000, -3.072]
in RPY (degree) [0.000, -0.000, -176.021]
At time 1580309474.700
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.999, -0.035]
in RPY (radian) [0.000, -0.000, -3.072]
in RPY (degree) [0.000, -0.000, -176.021]
At time 1580309475.691
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.999, -0.035]
in RPY (radian) [0.000, -0.000, -3.072]
in RPY (degree) [0.000, -0.000, -176.021]
At time 1580309476.699
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.999, -0.035]
in RPY (radian) [0.000, -0.000, -3.072]
in RPY (degree) [0.000, -0.000, -176.021]
At time 1580309477.692
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.999, -0.035]
in RPY (radian) [0.000, -0.000, -3.072]
in RPY (degree) [0.000, -0.000, -176.021]
At time 1580309478.700
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.999, -0.035]
in RPY (radian) [0.000, -0.000, -3.072]
in RPY (degree) [0.000, -0.000, -176.021]
At time 1580309479.691
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.999, -0.035]
in RPY (radian) [0.000, -0.000, -3.072]
in RPY (degree) [0.000, -0.000, -176.021]
At time 1580309480.699
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.999, -0.035]
in RPY (radian) [0.000, -0.000, -3.072]
in RPY (degree) [0.000, -0.000, -176.021]
At time 1580309481.691
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.999, -0.035]
in RPY (radian) [0.000, -0.000, -3.072]
in RPY (degree) [0.000, -0.000, -176.021]
At time 1580309482.700
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.999, -0.035]
in RPY (radian) [0.000, -0.000, -3.072]
in RPY (degree) [0.000, -0.000, -176.021]

通过控制小海龟,会观察到数据在不断地变化。

ros中坐标系管理系统的更多相关文章

  1. ROS中利用V-rep进行地图构建仿真

    V-rep中显示激光扫描点  在VREP自带的场景中找到practicalPathPlanningDemo.ttt文件,删除场景中多余的物体只保留静态的地图.然后在Model browser→comp ...

  2. ROS中发布激光扫描消息

    激光雷达工作时会先在当前位置发出激光并接收反射光束,解析得到距离信息,而后激光发射器会转过一个角度分辨率对应的角度再次重复这个过程.限于物理及机械方面的限制,激光雷达通常会有一部分“盲区”.使用激光雷 ...

  3. ROS中msg和srv文件的区别

    1.msg和srv究竟有什么区别?? msg只是单向的发送和接受. srv包含两个部分:请求和响应. 2.msg和srv简介 msg:msg文件是描述ROS消息字段的简单文本文件.它们用于为不同语言( ...

  4. 将ROS中的/sensor_msgs/NavSatFix数据导入google earth显示轨迹

    将ros中的gps_msg数据导入google earth显示轨迹 [TOC] 1. 获取GPS数据 将ros中发布的gps topic输出到文本中 rostopic echo -p /gpsData ...

  5. ROS_Kinetic_27 在ROS中使用Cartographer进行SLAM

    ROS_Kinetic_27 在ROS中使用Cartographer进行SLAM Cartographer是谷歌新開源的通用的2D和3D定位與構圖同步的SLAM工具,並提供ROS接口. 论文Real- ...

  6. ROS_Kinetic_07 ROS中机器人三维物理引擎高保真仿真利器gazebo 7.0

    ROS_Kinetic_07 ROS中机器人三维物理引擎高保真仿真利器gazebo 7.0 ROS kinetic中的gazebo版本是7.0,有很多新的特性. 首先,启动gazebo: ~$ gaz ...

  7. ROS中的CMakeLists.txt

    在ROS的编程过程中,如果CMakeLists.txt如果写不好,编译就很难成功.如果看不懂CMakeLists.txt那么很多错误你也不知道时什么回事.所以深入了解它是很有必要的.现在我们就来看看它 ...

  8. 对比几种在ROS中常用的几种SLAM算法

    在此因为要总结写一个文档,所以查阅资料,将总结的内容记录下来,欢迎大家指正! 文章将介绍使用的基于机器人操作系统(ROS)框架工作的SLAM算法. 在ROS中提供的五种基于2D激光的SLAM算法分别是 ...

  9. 如何在ROS中使用PCL(2)

    记录关于我们运行roslaunch openni_launch openni.launch  命令时生成的话题以及这些话题的数据类型便于后期的处理,只有知道它们的数据结构,才能很好的对数据进行处理,我 ...

随机推荐

  1. Java提供的JDBC标准- 六大步骤

    JDBC 1.//加载驱动 class.forname 2.//创建连接connection 3.//创建 管道流 statement或  preparestatement预处理4.//执行sql语句 ...

  2. 不仅仅是双11大屏—Flink应用场景介绍

    双11大屏 每年天猫双十一购物节,都会有一块巨大的实时作战大屏,展现当前的销售情况. 这种炫酷的页面背后,其实有着非常强大的技术支撑,而这种场景其实就是实时报表分析. 实时报表分析是近年来很多公司采用 ...

  3. 洛谷$P$2575 高手过招 博弈论

    正解:博弈论 解题报告: 传送门! 阿西$gql$又双叒被题意杀辣,,,再不好好学语文吃枣药丸$TT$ 然后在$get$规则之后还有什么问题嘛,,, 就和这题差不多了,一个$easy$的阶梯问题罢辽, ...

  4. “Deep models under the GAN: information leakage from collaborative deep learning”阅读笔记

    一.摘要 指出深度学习在机器学习场景下的优势,以及深度学习快速崛起的原因.随后点出研究者对于深度学习隐私问题的考虑.作者提出了一种强力的攻击方法,在其攻击下任何分布式.联邦式.或者中心化的深度学习方法 ...

  5. Vue+Vant+Vuex实现本地购物车功能

    通常,我们做移动端商城的时候,通常会有购物车模块,那购物车模块有两种实现方式,一是储存在后台通过接口获取到购物车信息,二是存在用户手机本地,第一种方法只要调用接口获取比较简单,这里介绍的是第二种方法, ...

  6. linux的指令与文件的搜寻

    1.指令路径搜索which 用法:which [-a] command 选项或参数:-a :将所有由 PATH 目录中可以找到的指令均列出,而不止第一个被找到的指令名称  2.文件搜索 (1)wher ...

  7. 基于GPS北斗卫星授时系统和NTP网络授时服务器的设计与开发

    基于GPS北斗卫星授时系统和NTP网络授时服务器的设计与开发 安徽京准科技提供@请勿转载@@ 更多资料请参考——ahjzsz.com 天文观测设备对于控制系统的时间准确度有严格要求.为此,采用搭建高精 ...

  8. 关于MySQL幻读的实验

    该实验基于 CentOS 7 + MySQL 5.7 进行 打开两个窗口连接到MySQL 第一个连接的事务我们命名为  T1 第二个连接的事务我们命名为 T2 T2 发生在 T1 的 O1 操作结束以 ...

  9. ASCII、UNICODE、UTF

    在计算机中,一个字节对应8位,每位可以用0或1表示,因此一个字节可以表示256种情况. ascii 美国人用了一个字节中的后7位来表达他们常用的字符,最高位一直是0,这便是ascii码. 因此asci ...

  10. VS从标准输入读入文件

    1.点击[生成],在对应目标平台[64 or 32]文件夹下的[release]或[debug]下找到可执行文件 2.读取销售记录文件 1)打开cmd,将销售记录文件和可执行文件放在同一文件夹下 2) ...