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

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

我的ros系统已经安装好了

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

  1.  qqtsj  ~  roslaunch turtle_tf turtle_tf_demo.launch
  2. ... logging to /home/qqtsj/.ros/log/42e2c96a-42a0-11ea-b4ee-9822efa1466f/roslaunch-qqtsj-Nitro-AN515-51-8424.log
  3. Checking log directory for disk usage. This may take awhile.
  4. Press Ctrl-C to interrupt
  5. Done checking log file disk usage. Usage is <1GB.
  6.  
  7. started roslaunch server http://qqtsj-Nitro-AN515-51:34609/
  8.  
  9. SUMMARY
  10. ========
  11.  
  12. PARAMETERS
  13. * /rosdistro: melodic
  14. * /rosversion: 1.14.3
  15. * /scale_angular: 2.0
  16. * /scale_linear: 2.0
  17. * /turtle1_tf_broadcaster/turtle: turtle1
  18. * /turtle2_tf_broadcaster/turtle: turtle2
  19.  
  20. NODES
  21. /
  22. sim (turtlesim/turtlesim_node)
  23. teleop (turtlesim/turtle_teleop_key)
  24. turtle1_tf_broadcaster (turtle_tf/turtle_tf_broadcaster.py)
  25. turtle2_tf_broadcaster (turtle_tf/turtle_tf_broadcaster.py)
  26. turtle_pointer (turtle_tf/turtle_tf_listener.py)
  27.  
  28. auto-starting new master
  29. process[master]: started with pid [8435]
  30. ROS_MASTER_URI=http://localhost:11311
  31.  
  32. setting /run_id to 42e2c96a-42a0-11ea-b4ee-9822efa1466f
  33. process[rosout-1]: started with pid [8446]
  34. started core service [/rosout]
  35. process[sim-2]: started with pid [8449]
  36. process[teleop-3]: started with pid [8450]
  37. process[turtle1_tf_broadcaster-4]: started with pid [8451]
  38. process[turtle2_tf_broadcaster-5]: started with pid [8452]
  39. process[turtle_pointer-6]: started with pid [8453]
  40. Reading from keyboard
  41. ---------------------------
  42. Use arrow keys to move the turtle.
  43. 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之间的关系。

  1.  qqtsj  ~  rosrun tf view_frames
  2. Listening to /tf for 5.0 seconds
  3. Done Listening
  4. dot - graphviz version 2.40.1 (20161225.0304)
  5.  
  6. Detected dot version 2.40
  7. frames.pdf generated

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

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

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

  1.  qqtsj  ~  rosrun tf tf_echo turtle1 turtle2
  2. At time 1580309473.964
  3. - Translation: [0.000, 0.000, 0.000]
  4. - Rotation: in Quaternion [0.000, 0.000, 0.999, -0.035]
  5. in RPY (radian) [0.000, -0.000, -3.072]
  6. in RPY (degree) [0.000, -0.000, -176.021]
  7. At time 1580309474.700
  8. - Translation: [0.000, 0.000, 0.000]
  9. - Rotation: in Quaternion [0.000, 0.000, 0.999, -0.035]
  10. in RPY (radian) [0.000, -0.000, -3.072]
  11. in RPY (degree) [0.000, -0.000, -176.021]
  12. At time 1580309475.691
  13. - Translation: [0.000, 0.000, 0.000]
  14. - Rotation: in Quaternion [0.000, 0.000, 0.999, -0.035]
  15. in RPY (radian) [0.000, -0.000, -3.072]
  16. in RPY (degree) [0.000, -0.000, -176.021]
  17. At time 1580309476.699
  18. - Translation: [0.000, 0.000, 0.000]
  19. - Rotation: in Quaternion [0.000, 0.000, 0.999, -0.035]
  20. in RPY (radian) [0.000, -0.000, -3.072]
  21. in RPY (degree) [0.000, -0.000, -176.021]
  22. At time 1580309477.692
  23. - Translation: [0.000, 0.000, 0.000]
  24. - Rotation: in Quaternion [0.000, 0.000, 0.999, -0.035]
  25. in RPY (radian) [0.000, -0.000, -3.072]
  26. in RPY (degree) [0.000, -0.000, -176.021]
  27. At time 1580309478.700
  28. - Translation: [0.000, 0.000, 0.000]
  29. - Rotation: in Quaternion [0.000, 0.000, 0.999, -0.035]
  30. in RPY (radian) [0.000, -0.000, -3.072]
  31. in RPY (degree) [0.000, -0.000, -176.021]
  32. At time 1580309479.691
  33. - Translation: [0.000, 0.000, 0.000]
  34. - Rotation: in Quaternion [0.000, 0.000, 0.999, -0.035]
  35. in RPY (radian) [0.000, -0.000, -3.072]
  36. in RPY (degree) [0.000, -0.000, -176.021]
  37. At time 1580309480.699
  38. - Translation: [0.000, 0.000, 0.000]
  39. - Rotation: in Quaternion [0.000, 0.000, 0.999, -0.035]
  40. in RPY (radian) [0.000, -0.000, -3.072]
  41. in RPY (degree) [0.000, -0.000, -176.021]
  42. At time 1580309481.691
  43. - Translation: [0.000, 0.000, 0.000]
  44. - Rotation: in Quaternion [0.000, 0.000, 0.999, -0.035]
  45. in RPY (radian) [0.000, -0.000, -3.072]
  46. in RPY (degree) [0.000, -0.000, -176.021]
  47. At time 1580309482.700
  48. - Translation: [0.000, 0.000, 0.000]
  49. - Rotation: in Quaternion [0.000, 0.000, 0.999, -0.035]
  50. in RPY (radian) [0.000, -0.000, -3.072]
  51. 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. Python学习3月5号【python编程 从入门到实践】---》笔记

    ---恢复内容开始--- 1.变量 一.只能包含字母.数字.下划线.****不能以数字开头作变量 二.不能包含空格, 三.不要将python关键字和函数名用作变量名 四.最好能有描述性和简短的特征 五 ...

  2. 004使用u-boot烧写裸版程序

  3. FPGA之IO信号类型深入理解

    在FPGA设计开发中,很多场合会遇到同一根信号既可以是输入信号,又可以是输出信号,即IO类型(Verilog定义成inout). 对于inout型的信号,我们既可以使用FPGA原语来实现,也可以使用V ...

  4. 【题解】有标号的DAG计数4

    [HZOI 2015] 有标号的DAG计数 IV 我们已经知道了\(f_i\)表示不一定需要联通的\(i\)节点的dag方案,考虑合并 参考[题解]P4841 城市规划(指数型母函数+多项式Ln),然 ...

  5. 02_jQuery 验证密码是6位或者8位纯数字

    var reg = new RegExp(/^\d{8}$/); //工作密码必须是8位数字 if(!reg.test("12544444").val())) { alert(&q ...

  6. Linux下卸载oracle需要删除的文件

    卸载oracle需要删除的文件 rm -rf /data1/oracle/app  #oracle安装目录在/data1/oracle中 rm -rf /usr/local/bin/dbhome rm ...

  7. 关于Itext 报错-java.lang.NoClassDefFoundError: org/bouncycastle/asn1/ASN1Encodable

    如果我们在用iText 做为java 为PDF 文档加水印的时候 报如下异常 java.lang.NoClassDefFoundError: org/bouncycastle/asn1/ASN1Enc ...

  8. ArcEngine语法笔记(VB)

    1.获取图层字段 Dim pTable As ITable = pLayer Dim pField As IField pField = pTable.Fields.Field(i) Next  2. ...

  9. css写斜角

    项目开发中遇到了这样的效果,百度了一波,可以使用css3的伪类实现: /*斜角公用*/1.外层的div加class='wrapper' 并需要设置相对定位 .wrapper:before { -moz ...

  10. MAVEN配置及Spring Tool Suite的Maven配置

    1.下载Maven http://maven.apache.org/download.cgi 如图点击下载即可 2.Maven配置 2.1配置本地仓库 创建目录maven-repository如图所示 ...