概述
我下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程序调试记录所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复