完成“LPS node 与Crazyflie在TWR协议下的成功双向测距”实现心路历程总结

  • 1.初识TWR协议
  • 2. TWR进阶1.0
  • 3.TWR协议进阶2.0
  • 4.TWR协议进阶3.0
  • 5.TWR协议进阶4.0
  • 6.总结

说来惭愧,这一点点东西做了快3个月[手动狗头.jpg]
但是这个协议的深入学习让我真正认识到研究生该怎样从零开始独自深入学习从未接触过的知识。一个人做科研确实很难。

1.初识TWR协议

暑假到9月中旬,在导师一点点引导下,我学习Crazyflie、TWR协议的一些基础知识。9月中下旬导师布置下来,希望我能实现lps node在TWR协议下同时作为anchor和tag通信,这个其实是已经实现的东西。在那之前我对TWR协议的了解只不过是lps固件中接收到report包的处理代码:


具体的测距计算公式代码:

于是,我的初步理解是,只要在接收和发送的两个回调函数里都写上四种数据包,不就能够实现lps node既能够作为tag发起测距,同时保持其作为anchor时的测距功能了?结果是,当然不可以!!![苦笑.jpg]

2. TWR进阶1.0

盯紧这个文件下的代码,我看了很久,发现实在是独自解决不了这个问题了,只能腾讯会议求助远在另一校区的师兄。其实都没和师兄见过面,很怕师兄不耐烦给我解答。还好师兄不仅给我解答了,还帮我拓宽了思路——我之前只局限于一个文件就是不对的,应该要从uwb这个模块出发,一点一点发掘。我这才发现我以前是多么傻,都读研究生了,还是会偷懒,自己觉得没有用的代码就没有看!

于是就从main开始,将整个uwb模块的逻辑梳理了一遍,终于理清了lps node中各个协议的调用逻辑!这对我了解整个模块的代码有很大的帮助。

当时画的结构图,现在看来好粗糙,并且没重点!!!

3.TWR协议进阶2.0

到这里,其实整体框架已经能够出来了。但是还有一些细节,并且lps node串口输出我一直都还没实现(现在想想好傻!应该第一步就去实现这个的!!!)代码烧录进去后,我无法调试这个模块,导致我做了很多无用功。

这期间,我又去问了两次实验室跟我同级的同门,他也给了我很多帮助,帮我拓宽了我的思路,使得我可以从无人机那一端通过console调试。但是依旧没实现!!!于是老师让我实先两个无人机之间同时作为anchor和tag。其实这个比较好实现,因为这个只要无人机那一端的代码就好了,并且在此之前老师把他之前改过的无人机 通信代码发给了我。我照着写了一下,实现了两个无人机之间的通信。

但是 lps node和无人机之间的通信依旧没有实现!

4.TWR协议进阶3.0

于是我跟老师说,我想先实现lps node的串口输出(这个任务本来应该在完成TWR协议改写之后再做的)。因为我发现我如果不实现串口输出,根本无法知道我在lps node那一端修改的代码起了什么作用!

于是首先从翻看STM32开发手册开始,这里不得不说,开发手册是个多重要的东西呀!期间也向同门求助啦,最后算是自己独立解决了串口输出这个问题。从这里开始写blog了,这样每周周报就不用自己特地整理了,平时整理好发到blog上就好了。

现在终于可以调试lps node端的代码啦~~~

5.TWR协议进阶4.0

有了串口输出,就可以通过printf来调试啦,这是个笨但是非常有用的方法,安利给大家。但是在这期间,期末考试接踵而至,导致没有一个可以安安生生做科研的时间,进度被拉慢了许多,然后又赶上放假回家,又耽误了两三天。

前两天调试一直找不到出错的原因,就在每周周报中表示,希望能跟老师沟通下,拓宽下思路,老师安排了周二交流。于是我就想着今天再梳理下我的思路,好明天跟老师交流的时候思路清晰一点。
但是!没想到,这一梳理就把问题给解决了!!!hhhhhhh
竟然是因为我没有把lps node端的协议选择写死…

6.总结

这算是科研小白一学期以来的科研历程总结啦。

一个任务一学期才完成,期间好怕导师因为我太菜而不要我。不过不可否认,我真的花了很久的时间才进入到:我是一个CS专业的研究生的状态。期间也因为没有做什么东西被导师敲打了(是我的问题,导师真的很好,室友很羡慕我有这么好的导师)。

总的来说,不要担心成果,只要你继续走在科研的路上就OK啦!老师不会因为你不会而怪你,但是会因为你不做东西而怪你。

不写了不写了,中间有很多细节,以后慢慢补充。

完成“LPS node 与Crazyflie在TWR协议下的成功双向测距”实现心路历程总结相关推荐

  1. TCP协议下 Socket 与 ServerSocket

    不多bb. package c_20_1_5;import java.io.FileInputStream; import java.io.FileOutputStream; import java. ...

  2. python实现端口转发_Python TCP/IP协议下实现端口转发及重定向菜鸟教程

    对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! 首先,我们用webpy写一个简单的网站,监听8080端口,返回"Hello,EverET ...

  3. python端口转发_Python实现TCP/IP协议下的端口转发及重定向示例

    首先,我们用webpy写一个简单的网站,监听8080端口,返回"Hello, EverET.org"的页面. 然后我们使用我们的forwarding.py,在80端口和8080端口 ...

  4. windows下安装node版本管理工具及nvm use切换不成功问题解决

    windows下安装node版本管理工具及nvm use切换不成功问题解决 参考文章: (1)windows下安装node版本管理工具及nvm use切换不成功问题解决 (2)https://www. ...

  5. python 下载文件-Python实现HTTP协议下的文件下载方法总结

    本文介绍了几种常用的python下载文件的方法,具体使用到了htttplib2,urllib等包,希望对大家有帮忙. 1.简单文件下载 使用htttplib2,具体代码如下: h = httplib2 ...

  6. HTTP协议下GET与POST的区别

    HTTP协议下的两种请求方式GET和POST当然不止GET和POST两种请求方式还有PUT.DELETE,这里只介绍常用的GET和POST! 一般在HTTP协议规定GET用来请求网页资源,POST用来 ...

  7. 百度富文本编辑器ueditor在https协议下无法正常插入动态地图

    在浏览器https协议下,百度富文本编辑器ueditor有可能会无法正常插入动态地图.所谓"动态地图",就是在插入地图的时候,勾选右上角的"动态地图"选择框: ...

  8. 出租权不适用于计算机软件,TRIPS协议下我国软件产业知识产权保护问题研究

    [摘要] TRIPS协议中有关软件知识产权保护的内容是国际软件保护适用最广泛的规则.我国现行相关法律与TRIPS协议在相关权利上.某些权利保护方式以及保护水平上还没有实现充分对接,需要进步修订以适应T ...

  9. 记一次折腾可移动式Ubuntu 20.04 安装在折腾折腾系列的WD p50上(即移动式挂在nvme协议下的移动固态硬盘以uefi模式启动的Ubuntu20.04 (to go))

    搜索了好久没搜到把ubuntu装到nvme移动硬盘盒里当移动式系统的教程 所以尝试折腾一下看看能不能成功使用 下面让我开始折腾吧! 第一步 肯定是下载iso包了. 下载地址:Download Ubun ...

最新文章

  1. 如何发现数据中的异常值?对异常值是怎么处理的?
  2. python小程序-【Python精华】100个Python练手小程序
  3. SAP以创新提升极限帆船赛
  4. linux多进程知识汇总
  5. maven 学习---Maven添加远程仓库
  6. Web安全之拖放劫持
  7. 最佳调度问题(SSOJ-2367)
  8. 深度解读CSS3 position的属性
  9. SLAM_关于VIO中IMU预积分的讲解
  10. XNA开发—渲染对象
  11. 定积分求导例题_高中数学导数简单题——定积分、导数、导数的几何意义等解题方法...
  12. 牛客网--15894--WWX的520
  13. 几何画板用迭代法作图的技巧
  14. 北美科技公司“隐藏福利”大盘点:看完我彻底酸了...
  15. 电磁感应、电感与变压器
  16. AtCoder Grand Contest 012 B Splatter Painting (反向处理 + 记忆化)
  17. text-decoration
  18. 什么是横向课题和纵向课题?
  19. 四、MT8168 音频驱动之Microphone
  20. 面试linux中sed的用法,linux中sed命令的使用与注意小结

热门文章

  1. 虹科Linux远程桌面服务器助力工业生产管理
  2. 删除的android电话怎么找回,通话记录删除了怎么恢复?安卓手机通话记录恢复方法...
  3. 【 unity3d 】Transform.LookAt()方法
  4. LED指示灯在常见网络设备故障诊断中的应用
  5. UVA815 洪水Flooded
  6. 微信公众号网页授权登陆
  7. 手写数字识别系统(python+K-近邻完整代码)
  8. wpf APlayer 播放
  9. runtime Caller 方法再封装
  10. 在VMware ESXi中使用固态硬盘