首先安装小海龟实例的功能包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]

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

最新文章

  1. 答辩HTML5
  2. MFC工程资源相对路径
  3. AngularJS---自定义指令
  4. .Net 高效开发之不可错过的实用工具(转)
  5. callsession新功能版
  6. [POJ2398]Toy Storage(计算几何,二分,判断点在线段的哪一侧)
  7. [转]Maintain File Upload Control on Postbacks
  8. sql server中分布式查询随笔
  9. xp多网卡静态路由设置方法
  10. python笔记之bisect模块
  11. .c和.h文件的区别(头文件与之实现文件的的关系~ )
  12. C#编写WINNT服务
  13. 安卓自动化测试工具一:Monkey
  14. java操作mongodb——更新数据
  15. JS通过decodeURIComponent函数解码
  16. C++变量/函数命名规范
  17. Python学习(三十八)—— Djago之Ajax
  18. npm install 失败
  19. redis安装及错误排查
  20. 利用tcp三次握手,使用awl伪装MAC地址进行多线程SYN洪水攻击

热门文章

  1. __FILE__,__LINE__,__DATE__,__TIME__,__FUNCTION__的使用
  2. Python 打包——过去、现在与未来
  3. 机器学习之路--Pandas
  4. Spring中常见的设计模式——模板模式
  5. 1209. Construct the Rectangle
  6. 使用SqlDependency实时监听SQL server数据库变化并执行事件
  7. cogs 2632. [HZOI 2016] 数列操作d
  8. C#反射与特性(八):反射操作的示例大全
  9. NTT - 牛客
  10. 数据可视化之Matplotlib的使用