机器人中的坐标变化
线性代数部分基本知识
学习机器人导论相关基本原理
TF(transform)包
会记录10s范围内机器人所有坐标系之间的位置关系。
TF实现方式:
- 广播TF变换
- 监听TF变换
TF坐标变换:
海龟追逐示例:
# 安装必要包
sudo apt-get install ros-noetic-turtle-tf
# 启动海龟追逐仿真器 roslaunch可同时启动多节点
roslaunch turtle_tf turtle_tf_demo.launch
# 运行键盘控制节点
rosrun turtlesim turtle_teleop_key
#
rosrun tf view_fames
在节点运行过后,在键盘控制节点控制turtle1运动会发现turtle2会追逐turtle1进行对应的运动
view_frames
rosrun tf view_frames
Listening to /tf for 5.0 seconds
Done Listening
b'dot - graphviz version 2.40.1 (20161225.0304)\n'
Detected dot version 2.40
frames.pdf generated
view_frames监听5s中的数据,并输出pdf文件。
从这个图来看上述的示例中有3个坐标系,world坐标系以及turtle1和turtle2的坐标系,并且turtle1和turtle2的坐标系已经经过world坐标系建立起了对应的联系。
tf_echo
用法
tf_echo source_frame target_frame [echo_rate]
tf_echo会查询不同时间点 source_frame坐标系到target_frame坐标系之间的转换关系。
rosrun tf tf_echo turtle1 turtle2
At time 1663468743.495
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.228, 0.974]
in RPY (radian) [0.000, -0.000, 0.459]
in RPY (degree) [0.000, -0.000, 26.306]
At time 1663468936.326
- Translation: [-2.542, 0.006, 0.000]
- Rotation: in Quaternion [0.000, 0.000, -0.001, 1.000]
in RPY (radian) [0.000, 0.000, -0.003]
in RPY (degree) [0.000, 0.000, -0.171]
Translation:表示平移关系[x,y,z]
rotation:表示旋转关系 [x,y,z]
Quaternion:以四元数的形式表示旋转关系
RPY(radian):以弧度的形式表述旋转关系[x,y,z]
RPY(degree):以度数的形式表述旋转关系[x,y,z]
rviz
rviz是一个可视化的显示平台,运行命令如下
rviz
rviz运行后需要进行一系列配置
-
设置全局选项的固定帧为world
-
添加tf
-
手动控制节点,即可看到展示效果