我是靠谱客的博主 潇洒跳跳糖,最近开发中收集的这篇文章主要介绍ACfly-T265程序调试记录,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我下7.21原始未更改的程序,ACfly屏幕就亮不了也启动不了。看来不是我改程序的问题。

 

我发现9.22的程序添加了我的改动之后屏幕也不亮了,看来是我的更改造成的问题。

 

后面都基于2020.9.22版本的ACfly程序来改的。

(应该是开始于2020.10.27)

我注释掉我加的第三部分,再编译烧录,屏幕就可以亮了,看来关键问题在于我写的这个传感器注册函数这里。

 

我改成这样也可以启用,也就是只注释掉那个设定串口波特率的函数,传感器注册函数写着,这样也是可以正常启动的

 

而且显示屏上第九个位置有了一个点,以前是个×,因为我这个传感器注册的序号就是9!!!!说明我注册成功了!!!!!!

 

这是我以前就是7月份那次烧也就是刚买来ACfly时烧的程序的屏幕显示,第九个的位置上是个×

 

 

我主要是对比了一下光流,TFmini的初始函数我发现设置波特率都是那么写的没有问题啊,我后来有点怀疑是不是9.22的drv_main.cpp没有调用init_commmulink初始函数(当然不是这个问题,主要是这个引导我去看drv_main.cpp,这是很关键一步),我打开drv_main.cpp,顿时很多明白了!!!!!!!

 

我下面这么改之后屏幕可以亮了但是屏幕卡在那个启动界面,就没有前进了。可能commulink初始化函数写那里是有理由的,要么我把串口初始化函数移动到前面。

然而我这样改之后屏幕也不亮了。

 

我把UART1的波特率设置放到drv_main.cpp的UART初始化函数后面,这样飞控可以正常启动,屏幕也是正常亮和显示了,不过我不知道这样有没有影响,不过我想想原本commulink任务创建就没有设置串口波特率啊,就是ACfly原本的程序就没有这样,我先这么弄试试,看看能不能通信成功。

 

 

(应该是2020.10.28,至少下面这步肯定是2020.10.28,28号是从上面哪里开始的暂时不确定)

波特率我改为了57600,这也是之前树莓派和APM通信的波特率,这上面有几个×应该没有影响,实际编译没有问题,我也没改动什么

 

 

 

 

 

目前来整个系统初步跑通

电脑上的操作有录屏

 

 

可以看到传感器9对应的位置是个对勾!!!

 

快闪的两个灯其实一个代表TX  一个代表RX  ,RX闪的频率可能比TX高些所以亮些,其实两个灯都是在快闪的。

 

 

更改显示屏的显示在GUI.cpp这里,我想让显示屏显示出ACfly接收到的T265的位置数据。我是通过在drv_Main.cpp里的init_GUI()顺着查看它的函数定义这样找到的。

获取信息的函数在这里,他们原本的GUI.cpp里面先获取信息,然后显示,获取信息的函数就是这里的,我也是通过跳转查看函数的定义找到的,不过可能这些函数没开源,跳转是调到下面这个地方,也正好可以看到ACfly提供了一系列获取信息的函数接口,这样我写起来应该也方便。不过这信息应该是它处理后的,那如何直接显示mavlink传过来的信息呢。这可能涉及到两个任务间的消息传递。我要不先用它的接口试试。因为我只接T265,没有其他位置传感器了。

 

我觉得就可以把Vx   Vy   Vz这三个数的显示改为  X  Y   Z ,我本身也觉得这三个数在这显示也没什么用,占地方。

 

 

截一张图,上午只录屏没专门截,这是整个系统跑起来的情形。

 

目前三个文件内有改动,commulink.cpp    drv_main.cpp   GUI.cpp,进到对应文件可以看到,但凡我改动过的地方我都会专门用注释行隔开。

然后猪哥在Debug.cpp给我改了点东西。

最简单你就去Github上看,改动了哪些也清楚了。https://github.com/maxibooksiyi/maxi-ACfly-T265-baseon2020.9.22

 

 

猪哥改了Debug.cpp之后可以在飞控运行时USB连ACfly地面站实时看T265传给飞控的X,Y,Z数据,

现在可以确定mavlink通信正常,我写得程序也OK,ACfly也是接收到了这些数据的,只是飞控端可能做了些处理没有用这些数据。下面github上这三个版本的程序都是OK的,在和树莓派的mavlink输出传输上是OK的,后面做的一些改动只是什么显示屏显示啊什么的,,也就是上午第一次和树莓派联合跑的程序就是对的!!!!!!也就是那个改了UART1波特率为57600之后的程序就是对的,是OK的。你可以随时回滚到那上面就OK。

https://github.com/maxibooksiyi/maxi-ACfly-T265-baseon2020.9.22/commits/master/2020.9.22

主要是不知道哪里蹦出那么多0,这个很奇怪。Z相对好些,X和Y的特别多。

其实Y的波形也是OK的,只是似乎某些跳变值过大,导致压扁了,我一开始还以为是不是Y什么没弄对,现在发现其实不是的。

 

讲道理X,Y,Z是同时一起发过来的,为什么X,Y这么多零呢,感觉不是什么有其他Mavlink消息包,其他mavlink消息包我那函数也解析不了。

 

 

我是不是得有个ACK要写,在mvalink通信的时候,因为MAVROS节点显示这个信息,然后后来我再ACfly的真正处理mavlink消息解析的代码里也看到ACK

 

似乎ACK是用来进行确认的?

 

 

 

 

2020.10.29

加了msg  id判断后那些0就没有了,上面说的那个ACK应该没什么影响。

真的加了消息判断之后就OK了。

 

 

 

 

我们来确认一下坐标系,首先我飞控端已经把NED改回ENU了,所以我只需要看ENU

 

https://github.com/maxibooksiyi/vision_to_mavros

 

 

 

我想起来了 之前APMT265树莓派无人机,我往摄像头前方移动无人机,地面站看到的轨迹是往北,这就是北东地。而且应该是x变大。

现在要确认是东北天,你就看我往摄像头前方移动,

坐标系变化只是代表xyz所代表的方向变化,实际方向没有变,摄像头还是朝北,只是这时摄像头向前移动,应该是y增大了,这样子的意思,别乱了。

摄像头它不知道北,但是它xyz方向已经定好了这样子。你需要把他们和现实中的东北天对应起来,而且建立好这种对应关系,以后上电都得朝向一个方向,这样子。

总算弄清了一点


你可以让摄像头默认朝北上电 也可以默认朝东上电,都可以,你自己定义,只是vision to mavros节点默认的是摄像头前方朝北,所以你用他们的程序摄像头上电时也得朝北,这样把摄像头的xyz和现实的方向绑定起来。因为飞控根据现实中的东北天籁判断方向的,而T265给出的是xyz,明白了这个本质你就可以自己灵活改动,比如你不是希望无人机朝南上电飞么,因为朝北是朝着窗帘 怕有影响对吧。自己可以在飞控程序处理一下就完了。
 

 

 

验证完毕,我的T265默认朝北上电的情况下,是符合东北天坐标系的!!!!!!!

 

 

 

目前四个文件内有改动,commulink.cpp    drv_main.cpp   GUI.cpp  Debug.cpp进到对应文件可以看到,但凡我改动过的地方我都会专门用注释行隔开。(这也是最终确认OK,准备下一步无人机实飞的代码版本)

 

 

 

 

实飞我需要确认一下一些东西需不需要重新校准,电调要不要校准,(不过我电调换了估计还是得电调重新校准一下,之前问的时候重刷固件说是不需要重新校准,但是我硬件换了应该需要)

还有强制挺停似乎是改了的

https://blog.csdn.net/sinat_16643223/article/details/107295986

还有之前改过的B参数是不是又要重新改。

 

 

最后

以上就是潇洒跳跳糖为你收集整理的ACfly-T265程序调试记录的全部内容,希望文章能够帮你解决ACfly-T265程序调试记录所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部