---
# System prepended metadata

title: 李肖飏-第十四次周报

---

# 李肖飏-第十四次周报

周报日期：2022.10.3-2022.10.7
本周预定完成内容：
    1.看tf原理
    2.看加载模型相关教程

每日具体安排：
**10.3周一：**
    今天打算去学习tf原理，本想顺着代码去看看坐标转换函数的具体代码实现，但是并未找到
    ![](https://i.imgur.com/EIXp3JV.png)
    与老师联系后，目前打算去读一下tf论文，该论文在维基百科中的ros tf下已经找到，打算看看。paper连接（http://wiki.ros.org/Papers/TePRA2013_Foote） 完后抽时间再去看看这个坐标转换函数的定义到底在那里，现在打算继续去看看加载模型的一些个教程。明日打算读读论文，代码暂时看不到，但是tf论文中一定有坐标转换原理。
    
**10.4周二：**
    今天主要是读了下维基百科上提供的tf论文，这篇文章主要是介绍了tf运行原理及tf的数据结构，对于坐标转换细节并未给出，但大致流程通过阅读论文已明白其流程。
        tf中包含两个模块，一个是广播器，一个是监听器。tf的数据结构是一课树。解决的是在请求的时间提供两个坐标系之间的转换。其论中主要思想就是这些：
1. 广播器
        向整个系统传播转换信息
2. 监听器
        接受转换信息并将其存储以供以后使用，这部分能够响应关于不同坐标之间的结果转换查询
3. 转换计算
        为了计算任意两个节点之间的变换，计算生成集，然后根据该生成集计算网络变换。要计算源坐标徐和目标坐标系之间的生成集，监听器沿着树的边缘向上移动，直到找到一个共同的父节点，形成生成集。如果找不到公共父级，查找将失败并返回错误。如果查找成功，侦听器将计算沿生成集从源帧到目标帧的边的变换。当向上移动树中的某条边时，使用逆变换，而向下移动边时，则使用变换的值。
    当计算两个frame（坐标）之间的变换时，a和c与b之间的变换是相对直接的，可以将变换链接在一起：![](https://i.imgur.com/2gpZtJh.png)

    
询问学伟师哥，师哥说代码应该是封装起来了，暂时还没想到怎么搞，打算还是再巩固下坐标转换的基础知识，今天还看了看关于建模的教程，虽然讲的主要是urdf，但基本内容通过学习这个教程，也能对飞机模型sdf进行简单阅读。
**10.5周三**
    将b站上关于加载模型的一些教程看完了，讲的是urdf、xacro模型文件配置，如何将这些模型文件加载到gazobo仿真环境中,与gazebo中的sdf文件不太一样，但大致思路都是通着的，在网上搜了一些sdf与urdf的联系和区别，有做简单了解。还看了看欧拉角到四元数的转化，以及各自定义。
**10.6周四**
    找了一些坐标变换的视频进行学习，之前遗留下来的bug——三驾飞机在outdoor1世界中无法正确加载的问题，经各种尝试，发现换一个world就可以正常显示了，但是具体原因还是不清楚。
**10。7**周五
    打算继续看坐标相关的东西，加深理解。
    
**总结**
    这周主要是偏理论学习，主要是欧拉角、四元数、tf、坐标变换、加载模型文件的学习，尝试着解决之前遗留下的bug，通过换world得到解决。