2023 年电子设计大赛无人机
2023 年电子设计大赛无人机题
最终效果
硬件介绍
前置知识
通信协议说明
实现方法
问题
1 最终效果
使用 UWB + 光流基础部分全部完成,发挥部分发现火源后未能进入下一步动作。
2 硬件介绍
2.1 飞控
飞控使用匿名的凌霄飞控,凌霄飞控是半开源飞控,里面有两部分分别为凌霄 IMU 和单片机。IMU 闭源使用各种飞控算法对 IMU 传感器数据进行融合,用户可通过对单片机编程通过 API 向 IMU 发送指令,模拟遥控器对飞机控制。
2.2 T265
本来使用 T265 追踪摄像头上跑的 VINS 算法输出的位置坐标进行室内定位,但经过多次测试,稳定性较差,所以放弃使用该方案,改用 UWB 定位。
2.3 UWB
使用 NoopLoop 的 LTP-S 的基站和 LTP-SS 的标签。参考用户手册即可对其开发。
2.4 机架
F450,使用匿名上位机可以针对飞机飞行情况,调整单参数。
3 前置知识
3.1 C/C++ 编程
可以自己在网上找相关课程学习
3.2 单片机基础
可以学习 STM 32 单片机,懂得串口、时钟、中断等基础知识即可。
3.3 T265 使用方法
虽然最终没有使用 T265 ,但还是花了一定时间去了解这个摄像头,所以说一下。T265 使用是通过 SDK 获取摄像头上的图像,数据等。获取的数据包括 IMU 输出的姿态解算数据,融合图像 SLAM 算法处理后输出的坐标数据,速度数据等。SDK 有 Python,C++ 等接口很容易使用。
3.3 PID 算法
推荐教程:视频教程
4 通信协议说明
本代码中飞控与外设通信使用相同的协议。
| 帧头 | 功能码 | 数据长度 | 数据 | 校验和 | 附加校验和 |
|---|---|---|---|---|---|
| 0xbb | ID 号 | length | data | sum | add_sum |
| ID号 | |
|---|---|
| 树莓派 | 0x01 |
| 小车数传 | 0x02 |
| OpenMV | 0x03 |
| OpenMV命令编号 | |
|---|---|
| 开始识别 | 0x02 |
| 开警示灯 | 0x03 |
| 舵机旋转 | 0x04 |
| 关闭识别 | 0x05 |
5 实现方法
基本上是两个任务,一个是在 user_task.c 文件里,一个是在 ano_lx.c 文件里的定时器中断里每秒发送坐标。
5.1 用户任务状态机
1 | |-> 辅助通道 3 拨到 2000 且 openmv 任务开始 且 openmv 任务未结束 且 openmv 识别到火源。进入靠近火源任务。 |