ACfly-T265程序调试记录

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

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

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

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

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

而且显示屏上第九个位置有了一个点,以前是个×,因为我这个传感器注册的序号就是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原本的程序就没有这样,我先这么弄试试,看看能不能通信成功。

波特率我改为了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是用来进行确认的?

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

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

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

https://github.com/maxibooksiyi/vision_to_mavros

猜你喜欢

转载自blog.csdn.net/sinat_16643223/article/details/109320828