本文是关于第17讲的学习内容总结
本讲的主要讲解内容是了解和学习在ros中坐标变换工具的使用方法
TF功能包
作用:用来管理所有的坐标系,可以直接查询5s内各个坐标系之间的关系
实现机制:广播和监听
实例1:
老师所举的例子就比较简单,两个坐标系之间的关系是平移关系,当然还有更复杂的旋转关系等等。这些关系均可以在tf坐标系中得到。
实例2:小海龟跟随实验
代码:
我的版本是ubuntu20.08,老师的是18.04所以在下载TF功能包的时候代码不一样,中间的notetic根据自己的ros版本来进行对应的修改。
sudo apt-get install ros-noetic-tf
下载完安装包后,就运行ros的launch文件
roslaunch turtle_tf turtle_tf_demo.launch
输入代码后我遇到了 ImportError:No module named xx...的问题,解决方法:
sudo apt install python-is-python3
安装完成之后在输入roslaunch..代码就可以看到两只小海龟了。
可以看到界面一开启下面的海龟2就会自动跟随中间的海龟1,启动 键盘控制器来控制海龟1的位置时,能发现海龟2会始终在位置上跟随海龟1。而且在跟随的过程中海龟2会“抄近道”(并不是沿着海龟1的轨迹进行跟随的)
调出可视化工具view_frames来查看两个海龟的坐标和主坐标之间的关系
rosrun tf view_frames
在这一部读取frames文件出问题之后不要慌,解决办法:
在终端中输入 sudo gedit +后面的路径为你出问题的路径(在输入rosrun tf view_frames后报错的路径),我的路径如下
sudo gedit /opt/ros/noetic/lib/tf/view_frames
在弹出的文件中的找到第88行,在88行下面输入
vstr=str(vstr)
保存关闭后,重新运行iew_frames,就可以生成frames文件了。
在读取并保存5s内所有坐标系之间的关于,会生存一个frames文件(具体的路径取决于你在那个路径开启的终端)
调出命令行工具tf_echo
可以直接在tf tree中查询任意两个坐标系的位置关系
rosrun tf tf_echo turtle1 turtle2
tf_echo后面跟的就是想要查询坐标系的关系。
可以显示两坐标系之间的位置关系
translation后面显示的是(x,y,z)的关系
rotation后面分别显示的是四元数关系(Quaternion),弧度关系(radian),角度关系(degree)来描述两坐标系之间的位置关系。
可视化工具 rviz工具
rviz: 三维可视化平台
rosrun rviz rviz -d `rospack find turtle_tf`/rviz/turtle_rviz.rviz
可以很直观的看出主坐标系和两只海龟坐标系之间的位置关系,部分信息可以在左侧的Displays中调出来。