文章目录
- 1、机器人坐标变换
- 2、TF功能包
- 3、TF工具
- 3.1、安装工具包
- 3.2、运行脚本
- 3.3、生成TF 树的框架图
- 3.4、打印坐标系变换关系
- 3.5、可视化工具
1、机器人坐标变换
2、TF功能包
1、TF功能包能干什么?
- 五秒钟之前,机器人头部坐标相对于全局坐标系的关系是什么样的?
- 机器人夹取的物体相对于机器人中心坐标系的位置在哪?
- 机器人中心坐标系相对于全局坐标系的位置在哪?
2、TF坐标变换如何实现
- 广播TF变换
- 监听TF变换
3、TF工具
3.1、安装工具包
首先输入下列命令安装工具包,我这里之前安装过了,蓑衣提示为是最新版本。
sudo apt-get install ros-noetic-turtle-tf23.2、运行脚本
在ros包中提供了一个关于TF演示的脚本
我们这里输入
roslaunch turtle_tf2 turtle_tf2_demo.launch就会出现两个海龟跟随的画面
(我最开始运行该脚本时,报了下面的错误:
Use arrow keys to move the turtle. ‘q’ to quit.
process[turtle2_tf_broadcaster-5]: started with pid [7483]
/usr/bin/env: “python”: 没有那个文件或目录 /usr/bin/env: “python”: 没有那个文件或目录
process[turtle_pointer-6]: started with pid [7486]
[turtle1_tf_broadcaster-4] process has died [pid 7478, exit code 127,
cmd /opt/ros/noetic/lib/turtle_tf/turtle_tf_broadcaster.py
__name:=turtle1_tf_broadcaster __log:=/home/yang/.ros/log/aa10d01c-b3ad-11f0-a144-77641f2868bc/turtle1_tf_broadcaster-4.log].
log file:
/home/yang/.ros/log/aa10d01c-b3ad-11f0-a144-77641f2868bc/turtle1_tf_broadcaster-4*.log
[turtle2_tf_broadcaster-5] process has died [pid 7483, exit code 127,
cmd /opt/ros/noetic/lib/turtle_tf/turtle_tf_broadcaster.py
__name:=turtle2_tf_broadcaster __log:=/home/yang/.ros/log/aa10d01c-b3ad-11f0-a144-77641f2868bc/turtle2_tf_broadcaster-5.log].
log file:
/home/yang/.ros/log/aa10d01c-b3ad-11f0-a144-77641f2868bc/turtle2_tf_broadcaster-5*.log
[turtle_pointer-6] process has died [pid 7486, exit code 127, cmd
/opt/ros/noetic/lib/turtle_tf/turtle_tf_listener.py
__name:=turtle_pointer __log:=/home/yang/.ros/log/aa10d01c-b3ad-11f0-a144-77641f2868bc/turtle_pointer-6.log].
log file:
/home/yang/.ros/log/aa10d01c-b3ad-11f0-a144-77641f2868bc/turtle_pointer-6*.log
然后询问AI:ROS 某些 Python 脚本的第一行通常是 #!/usr/bin/env python,它会寻找系统中的 python 命令。但现代 Linux 系统默认可能只安装 Python 3(命令为 python3),没有 python 这个命令,导致脚本无法执行。
解决方法:sudo ln -s /usr/bin/python3 /usr/bin/python)
继续回到这个脚本,当你鼠标放在终端上,控制上下左右键可以控制一只海龟进行移动,并且零一只海龟会跟随,这里就是用到了TF坐标。
3.3、生成TF 树的框架图
打开一个新的终端,输入
rosrun tf view_frames监听5s钟,把5s内所有坐标关系都保存下来
并输出一个pdf,默认保存在终端目录下
打开frames.pdf
world时全局坐标系
turtle1和turtle2是两个海龟的坐标系
3.4、打印坐标系变换关系
rosrun tf tf_echo turtle1 turtle2Translation(平移):turtle2 原点相对于 turtle1 原点的位置,单位为米(m)。格式:[x, y, z],分别对应 x 轴、y 轴、z 轴方向的偏移。
Rotation(旋转):turtle2 坐标系相对于 turtle1 坐标系的姿态,有三种表示方式:
Quaternion(四元数):[x, y, z, w],ROS 中默认的旋转表示方式,避免万向锁问题。
RPY(欧拉角):分别对应 Roll(横滚)、Pitch(俯仰)、Yaw(偏航),分为弧度(radian)和角度(degree)两种单位。
3.5、可视化工具
rosrun rviz rviz-d rospack find turtle_tf/rviz/turtle_rviz.rviz进入可视化页面工具后,按以下操作新建一个TF坐标系
此时,再把鼠标放到刚运行脚本的终端上,移动小海龟,你会发现页面里的坐标图标也在移动,黄线的左边两个坐标系代表两个海龟,黄线右边的处在地图中间的是world坐标。