(四)ROS坐标变换可视化(示例运行)

来源:互联网 发布:ios http网络协议 编辑:程序博客网 时间:2024/04/17 02:03

ROS中如何查看机器人的坐标变换呢?

使用《Learning ROS for robotic Programming second edition》中的示例
或维基百科http://wiki.ros.org/tf/Tutorials/Introduction%20to%20tf 中的示例
注意使用的是hydro版本的ros。

1.示例运行

1启动turtle_tf包下的启动文件。

roslaunch turtle_tf turtle_tf_demo.launch

可以发现,启动文件turtle_tf_demo.launch如下

<launch>  <!-- Turtlesim Node-->  <node pkg="turtlesim" type="turtlesim_node" name="sim"/>  <node pkg="turtlesim" type="turtle_teleop_key" name="teleop" output="screen"/>  <!-- Axes -->  <param name="scale_linear" value="2" type="double"/>  <param name="scale_angular" value="2" type="double"/>  <node name="turtle1_tf_broadcaster" pkg="turtle_tf" type="turtle_tf_broadcaster.py" respawn="false" output="screen" >    <param name="turtle" type="string" value="turtle1" />  </node>  <node name="turtle2_tf_broadcaster" pkg="turtle_tf" type="turtle_tf_broadcaster.py" respawn="false" output="screen" >    <param name="turtle" type="string" value="turtle2" />  </node>  <node name="turtle_pointer" pkg="turtle_tf" type="turtle_tf_listener.py" respawn="false" output="screen" >  </node></launch>

启动了turtlesim包的turtlesim_node,turtle_teleop_key,turtle1_tf_broadcaster,turtle2_tf_broadcaster,turtle_pointer节点等。ROS中节点具体是什么呢?是编译运行的可执行文件。roscd 到包下没有发现turtlesim_node程序。思考了以下,使用findfind / -name turtlesim_node 结果为/opt/ros/hydro/lib/turtlesim/turtlesim_node ,说明安装在别的文件夹下了。
小乌龟出来了。
这里写图片描述

2.使用键盘控制

由于在.launch文件中启动了键盘控制节点
<node pkg="turtlesim" type="turtle_teleop_key" name="teleop" output="screen"/>
所以直接控制箭头可以发现可以跑了。

3.打开rqt_rviz并加载配置文件(或手动配置)

(1)加载配置文件方法
使用如下命令打开rqt_rviz图像化显示工具

rosrun rqt_rviz rqt_rviz

发现Global status错误,说明世界地图没有加载
这里写图片描述
点击rqt_rviz的file菜单,open config 找到exampe_tf.rviz文件并打开。并在右边切换视角为XYOrbit
如图
或者使用命令行进行加载 rosrun rviz rviz -d rospack find turtle_tf/rviz/turtle_rviz.rviz

这里写图片描述

控制箭头移动,可以发现坐标在移动。
(2)手动配置方法
a.Global Options选项中的fixed frame 的下拉选项中选择world
b.点击左边的add,增加TF,,控制键盘可以发现红点在移动。

2.示例解析

1.节点图及各个节点的关系
a)查看节点
首先使用rqt_graph查看节点图
这里写图片描述
查看启动文件turtle_tf_demo.launch 发现启动的节点和加点图上相对应。启动的节点如下
turtlesim_node,turtle_teleop_key,turtle1_tf_broadcaster,turtle2_tf_broadcaster,turtle_pointer
b)控制运动的整个流程
使用rostopic echo 命令查看主题发布的消息。如查看主题turtle1/pose 发送的消息
rostopic echo turtle1/pose
示例运行的流程是这样的:首先键盘发出turtle1/cmd_vel控制消息给sim节点,turtle1节点根据收到的消息控制乌龟移动,turtle1程序记录当前的坐标,并通过turtle1/pose消息发送当前的位置给turtle1_tf_broadcaster节点,turtle1_tf_broadcaster节点不断的发送/tf消息给turtle_pointer节点。

0 0
原创粉丝点击