一、任务
设计并制作一架带航拍功能的多旋翼自主飞行器。飞行区域俯视图和立体图分别如图 1 和图 2 所示。
二、要求
1. 基本要求
(1)多旋翼自主飞行器(下简称飞行器)摆放在图 1 所示的 A 区,开启航拍,一键式启动,飞行器起飞;飞向 B 区,在 B 区中心降落并停机;航拍数据记录于飞行器自带的存储卡中,飞行结束后可通过 PC 回放。飞行高度不低于 30cm;飞行时间不大于 30s。
(2)飞行器摆放在图 1 所示的 A 区,一键式启动,飞行器起飞;沿矩形 CDEF逆时针飞行一圈,在 A 区中心降落并停机;飞行高度不低于 30cm;飞行时间不大于 45s。
(3)制作一个简易电子示高装置,产生示高线 h1、h2 (如激光等),h1、h2 位于同一垂直平面,飞行器触碰 h1、h2 线时该装置可产生声光报警。示高线 h1、h2的高度在测试现场可以调整。调整范围为 30cm~120cm。
2. 发挥部分
(1)飞行器摆放在 A 区,飞行器下面摆放一小铁板 M1,一键式启动,飞行器拾取小铁板 M1 并起飞。飞行器携带小铁板 M1 从示高线 h1、h2间飞向B 区,并在空中将小铁板 M1 投放到 B 区中心;飞行器从示高线 h1、h2间飞回 A 区,在 A 区中心降落并停机。飞行时间不大于 30s。小铁板M1 形状不限,重量 20g、100g、200g 三挡自选,重量重得分高。h1、h2高度差小得分高。
(2)飞行器摆放在 A 区,小铁板 M2 摆放在 B 区任意位置;一键式启动,飞行器飞到 B 区寻找并拾取小铁板 M2,携带小铁板 M2 飞回 A 区,在 A区中心降落并停机。飞行高度不低于 30cm;飞行时间不大于 30s。小铁板 M2 为边长 5cm 的正方形,重量不限。
(3)其他。
三、说明:
1.飞行器桨叶旋转速度高,有危险!请务必注意自己及他人的人身安全。
2.飞行器的飞行控制板可自行选择,数据处理及导航板必须使用组委会统一下发的 2015 全国大学生电子设计竞赛 RL78/G13 开发套件中 RL78/G13MCU 板(芯片型号 R5F100LEA)。
3.飞行器可自制或外购,带防撞圈,外形尺寸(含防撞圈)限定为:长度≤50cm,宽度≤50cm。飞行器机身必须标注参赛队号。
4.多旋翼指旋翼数量不少于两个。
5.飞行区域地面为白色;A 区、B 区形状大小相同,由直径 20cm 黑色实心圆和直径 75cm 的同心圆组成,同心圆虚线线宽小于 0.1cm;引导线宽度5cm,可用黑色胶带;场地四周设 30cm 等高线;飞行区域不得额外设置任何标识、引导线或其他装置。
6.简易电子示高装置不得与飞行器间有任何形式的通讯。
7.每项允许测试 2 次,每次测试全程不得更换电池。2 次测试之间允许更换电池,更换电池时间不超过 2 分钟。
8.飞行器不得遥控,飞行过程中不得人为干预。
9.飞行器降落和小铁板 M1 投放于 A 区和 B 区以外,酌情扣分。
10.飞行器飞行期间,触及地面后自行恢复飞行的,酌情扣分;触地后 5s 内不能自行恢复飞行视为失败,失败前完成的动作仍计分。
11.飞行器起飞,距地面高度 30cm 以上视为飞离地面。
12.参赛队自备发挥部分所需小铁板 M1、M2,小铁板 M1 重量不得低于规定重量的 95%,M2 上不得附加任何其他装置,颜色不限。
13.一键式启动是指飞行器摆放在 A 区后,只允许按位于飞行器上的一个键启动。如有飞行模式设置应在飞行器摆放在 A 区前完成,不得使用可编程设备进行设置。
14.为保证安全,可沿飞行区域四周架设安全网(长 500cm,宽 400cm,高200cm),顶部无需架设。若安全网采用排球网、羽毛球网时可由顶向下悬挂不必触地,不得影响视线。安装示意图如图 3 所示。
GPT-4o给出的设计方案
设计并制作一架带有航拍功能的多旋翼自主飞行器,满足自动飞行任务,具备稳定的飞行控制和姿态保持能力。飞行器需依次按特定路径飞行,并在空中悬停,完成指示任务。
多旋翼飞行器:
导航和定位系统:
通信模块:
开机及自检:
自动起飞:
路径飞行:
悬停及任务执行:
返航及降落:
初始化及传感器读取
#include <AP_HAL/AP_HAL.h>
void setup() {
AP_HAL::hal.init(0, NULL);
// 初始化飞行控制器
setup_flight_controller();
// 传感器初始化
setup_sensors();
}
void loop() {
// 传感器数据读取
read_sensors();
// 自动飞行逻辑
auto_flight();
}
void setup_flight_controller() {
// 设置飞行模式
set_flight_mode(AUTO);
// 加载飞行任务
load_mission();
}
void setup_sensors() {
// 初始化GPS
GPS.init();
// 初始化IMU
IMU.init();
// 初始化高度传感器
AltitudeSensor.init();
}
void read_sensors() {
// 读取GPS
GPS.update();
// 读取IMU数据
IMU.update();
// 读取高度数据
AltitudeSensor.update();
}
自动飞行任务
void take_off(float altitude) {
// 起飞到指定高度
set_takeoff_altitude(altitude);
arm_motors();
while (current_altitude() < altitude) {
adjust_throttle();
}
hold_position();
}
void navigate_to(float x, float y) {
// 导航到指定坐标点
while (!at_position(x, y)) {
adjust_heading(x, y);
adjust_position(x, y);
}
hold_position();
}
void auto_flight() {
// 起飞到h1高度
take_off(100.0);
// 飞行到A点
navigate_to(A_X, A_Y);
// 悬停并执行任务,如悬停30秒
delay(30000);
// 飞行到B点
navigate_to(B_X, B_Y);
delay(30000);
// 返回起点并降落
navigate_to(LAUNCH_X, LAUNCH_Y);
land();
}
调试:
验证:
该设计方案涵盖了从硬件选择、传感器配置到控制算法实现的关键步骤,确保多旋翼飞行器能够自主完成指定的飞行任务。
本题目考察的主要知识点: