MiniFly的学习经历
- 基于MiniFly的无人机编队系统
- 一台遥控器同步控制多台无人机
-
- 一台遥控器分布控制多台无人机
-
- 使用电脑的串口上位机控制无人机
-
基于MiniFly的无人机编队系统
刚上大二那个暑假,我加入了我们学院的物联网实验室,老师给的题目就是无人机,经过调研,我们选择了正点原子的Minifly 可二次开发的开源四旋翼无人机,从此项目开始研究,随后我们实现了:
1、一台遥控器同步控制多台无人机
2、一台遥控器分布控制多台无人机
3、使用电脑的串口上位机控制无人机
4、基于UWB的室内定位无人机编队
一台遥控器同步控制多台无人机
以下将对“一台遥控器同步控制多台无人机”简称为“一控多同步”。
一控多同步,即一台遥控器可以同时控制多台无人机进行起降、俯仰、横滚、航向。
无线通讯方面
要想实现一控多同步,首先要解决遥控信号通讯的问题,我们知道,初始的遥控无人机是一台遥控器控制一台无人机,那么我们就必须改变这个设定,使遥控器在宏观上能够与多台无人机通讯。实现这一目的有两种方式,遥控器处于广播模式或者遥控器实时跳频。
无线电广播的优势是无需跳频,但缺点是单向通信,而MiniFly是双向通信的,如果要利用广播实现一控多同步,那么遥控将损失无人机的回传信息,因此不做考虑。
遥控器跳频可以实现一控多同步,但目前还没实现自组网,因此缺点就是控制多台得修改代码配置。
遥控代码部分
首先我们必须知道遥控器的代码框架
经过研究代码,我发现控制无人机通信的信道和地址的配置参数变量在config_param.c中的configParam中,其中的configParam.radio.channl储存着无线通信的信道,configParam.radio.addressHigh 和configParam.radio.addressLow分别储存着地址的高位和低位,而地址就储存在RADIO_ADDRESS这个常量中
因此我决定多添加几个信道和地址,并在结构体中新增了一个.radio.number的数据,用于标记这一信道和地址是属于哪一台无人机。最终添加了四台无人机的信道和地址信息,此处我在跳频中只切换地址即可实现多台无人机的分时控制。
经此,我们只需要改变configParam.radio.channel 、addressHight和addressLow即可切换遥控控制不同的无人机,因此我将MiniFly中用于翻滚的按钮——KEY_R_SHORT_PRESS用于信道和地址的切换,并使用switch语句改变信道和地址。
无人机通信代码部分
经过开发指南,我们得知无人机的通信时由NRF51822负责的
因此我们只需要修改其中的代码,即可实现手动适配信道和地址。同样的,我通过搜索关键字发现其配置参数放在config_param.h中,通过改变地址即可实现多台无人机的信道和地址配置。
至此,即可通过按下右边的按钮切换控制无人机,但要实现同步控制还需要遥控器在选择控制所有无人机的时候处于循环跳频状态。
视频展示
一台遥控器分布控制多台无人机
以下将对“一台遥控器分布控制多台无人机”简称为“一控多分布”。
一控多分布,即一台遥控器可以同时控制多台无人机进行起降、俯仰、横滚、航向,并且可以在多台无人机飞行过程中单独控制一台无人机而其他保持静止。
无线通讯部分与上面的一控多同步类似,只是修改了跳频部分,需要不停的跳频。
无人机控制部分
之后就需要实现对某一台无人机进行单独控制,具体代码在remoter_ctrl.c中,当校验到控制的架次与当前频段和地址匹配时,发送遥控控制数据,否则发送悬停数据。
至此,即可实现一台遥控器在控制多台无人机做编队飞行,并且在集群飞行过程中单独对某一台进行位置调整。
视频展示如下
使用电脑的串口上位机控制无人机
要想实现无人机编队飞行,单靠人工的手动飞行是万万不能达到要求的,因此我们必须考虑使用电脑来控制无人机的飞行,那么最简单的方式就是电脑利用遥控器控制无人机,那么我们就需要发送指令到遥控器上,即串口通信。
由MiniFly的遥控器开发指南可知,上位机控制遥控器的函数是在Usblink.c中,而且原函数中就有开发出这一功能,我只是适当拓展,将对收到的某一个我设定的帧做出我想要的反应。
遥控串口通信接收指令
具体修改如下
将校验正确后的指令做个分类,如果是我发送的DOWN_FLY的指令,那么会置标志位为真。
从而驱动指令数据去到需要他的地方,比如起飞的指令数据:
或者是姿态飞行的指令数据
指令设计
最后就是需要我们使用正确的指令去发送给遥控器,这需要我们自行定义,我个人是这样定义的
至此,我们只需要在电脑上打开串口助手,发送控制指令,就可以控制无人机的飞行,当发送的指令足够快,就可以组成一场无人机的编队表演。
大概的效果如下
不过我们并无法精准控制无人机的位置,这将大大影响我们编队的效果,因此其实我们需要进一步升级,获取无人机的具体位置,这算是我留下的一个坑吧。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)