学习视频:https://www.bilibili.com/video/BV1zt411G7Vn?p=17
一、机器人的坐标变换
A、B两个坐标系可以通过向量去描述,包含平移变换和旋转变换,任意两个坐标系的变换可以通过两个4*4的矩阵去描述他的平移和旋转。
参考书籍:《机器人导论》
TF功能包能干什么?
- 五秒种之前(10秒范围内),机器人头部坐标系相对于全局坐标系的关系三什么样的?
- 机器人夹取的物体相对于机器人中心坐标系的位置在哪里?
- 机器人中心坐标系相对于全局坐标系的位置在哪里?
TF坐标变换如何实现?
- 广播TF变换
- 监听TF变换
1.安装TF功能包
sudo apt-get install ros-noetic-turtle-tf
2.启动TF脚本文件,自动运行多个节点
roslaunch turtle_tf turtle_tf_demo.launch
运行这一步时,报错了,只产生一只小海龟,应该PYthon版本兼容问题,参考链接,解决如下
- 先运行以下指令,进入usr.bin目录
cd /usr/bin/
- 再运行以下语句,删除原默认编译器文件
sudo rm -r python
- 再运行以下语句,复制python3编译器设置为原编译器文件
sudo cp python3 python
- 然后再重新运行该roslaunch 命令,问题解决
roslaunch turtle_tf turtle_tf_demo.launch
3.运行小海龟键盘控制节点
rosrun turtlesim turtle_teleop_key
4.运行下面指令,可以看出整个系统中tf之间的关系
rosrun tf view_frames
发现这里又有报错
解决方法如下
- 用管理员身份运行指令打开报错的文件
sudo gedit /opt/ros/noetic/lib/tf/view_frames
- 修改第89行报错内容:m = r.search(str(vstr)),如下图,保存退出
- - 重新运行指令,报错成功解决,在主目录下生成pdf文件
rosrun tf view_frames
简化问题:turtle2坐标系向turtle1坐标系变换的底层原理,若world坐标系与turtle坐标系之间没有箭头相连,则两坐标系之间的位置关系没有建立成功
5.tf_echo工具,可以更加直接的查询两坐标系之间的位置关系
rosrun tf tf_echo turtle1 turtle2
Translation:坐标在XYZ方向上的平移
Rotation:坐标系的旋转
- Quaternion:四元数
- PRY(radian):弧度单位
- PRY(degree):角度单位
6.RVIZ工具,三维可视化平台
- 先安装rviz工具
sudo apt-get install ros-noetic-rviz
- 启动rviz可视化工具
rosrun rviz rviz -d `rospack find turtle_tf`/rviz/turtle_rviz.rviz
添加TF,显示TF位置关系。