ACfly传感器二次开发

我看了下ACfly传感器二次开发的视频,感觉如果要用ACfly做SLAM,首先要自己写个驱动文件,串口驱动就可以,我估计应该有现成的。

 

然后是传感器的注册,

 

 

关键还是我怎么把位置坐标通过串口发给STM32,这个是关键,具体波特率的设置,发送频率的设置,格式,我在树莓派上或者TX2上是要写个什么程序呢,可执行程序么,然后让它死循环跑?

 

 

 

 

分为传感器注册函数和传感器更新函数。更新函数是写在传感器驱动里面的。

注册函数是写在sensor.c里面,更新函数是写在具体的传感器驱动里面。是好像先驱动获得传感器数据,然后用更新函数把这个数据给飞控处理。

注册函数和更新函数的声明写在sensorbackend.h里面

注册函数的声音也要写在驱动文件里面,而且都是写在传感器初始化函数里面,就是每个传感器的驱动文件里面的init函数

 

还有是可以普通串口通信还是必须说明mavlink协议?应该普通串口就可以了,你像超声波模块不可能带有什么mavlink协议,人家还以用在小车上,又不是只用在无人机上面。应该一个uart口就可以了。自己写个uart口的驱动。

 

看这是GPS的驱动文件,里面用了更新函数,更新函数的第二个输入是position,而position的值是GPS得到的数据赋的,分别赋给position.x  position.y  position.z    这个更新函数应该就是把这些值给飞控进行进一步处理,为什么要这么多此一举呢,可能是为了有统一接口,方便用户二次开发。

ACfly传感器二次开发

超声波的也是先把超声波的数据赋给position.z  再用传感器更新函数。

ACfly传感器二次开发

 

光流传感器的驱动文件,把光流得到的X和Y方向的速度赋给vel.x       vel.y            vel再作为参数传入到传感器更新函数里面。

ACfly传感器二次开发

 

北醒的激光雷达的驱动文件,也是一样。

ACfly传感器二次开发

 

 

 

 

 

一个传感器它用的哪个串口,就会include哪个uart串口的头文件,你不是想找数据读取的函数么,我觉得应该是在uart的驱动文件里。

像GPS驱动文件有个  Read_Uart8()   我估计就是

ACfly传感器二次开发

ACfly传感器二次开发

 

是的去看uart8的驱动文件,里面有专门的串口接收函数。所以传感器的驱动文件其实是调用的串口的驱动文件,所以关键还是那个串口驱动。别人嵌入式重点考察串口协议是有道理的。你会发现你如果要做无人机+SLAM,串口这块反而成了你开发的关键点,其他的都没什么,我感觉你做任何一个嵌入式系统这都是必不可少的,任何一个嵌入式系统肯定有传感器,肯定有串口通信,必不可少啊。这个是必须要掌握的。所以我现在很想自己写一个。所以啊,你弄那么多高大上的项目不如先做好这一个。

ACfly传感器二次开发