作者是个乐子,有很多不成熟的想法。如有问题还请多多指教。
一、摘要
为了防止鸟类撞击以及其他异物对飞行器的撞击给人民的财产生活带来影响,并且为了保证飞行器的稳定性,我们在飞行器的部分加装了非常小的装置通过大量的数据测试以及减法,使飞行器的处理更小型化,更加安全。在此基础之上更能满足飞行器轻量化、低成本、低经济、高质量、高性能多元化发展。让互联网以及AI等更多的延伸产品加入飞行器的研究增大飞行器的安全性以及制作设计效率。让飞行器以及其他延伸产品走进千家万户。
二、项目概述
此项目的研究内容为一种放置于飞行器中可以根据识别以及大数据处理的避鸟的飞行装置,通过雷达的识别以及飞行器各系统的处理来达到一个自动化避障的目的。在保证人民生命财产安全的同时,也保障了鸟类的安全,能避免更多类似的事故发生。
项目目标与背景
项目背景
2012年至2016年间,英国领空发生了8000余鸟类撞机事件,而美国每年就有超过13000起鸟撞事件,因鸟撞事故形成的经济损失约为每年6.5亿元。全球每年因相关事故造成飞机破损或航班延误付出的代价则高达100多亿美元。据统计,我国在2006-2015年十年间共发生鸟击事件17135起、鸟击事故征候1125起。2015年,中国民航运输类飞机因鸟击导致的事故征候有185起,占全年各类型事故征候总数的49.47%,是第一大事故征候类型。
项目目标
该项目的目标以及产品旨在让各飞行器以及各通用航空等飞机能够进行自动化的躲避障碍物,能够辅助飞行器自动的或者辅助飞行员完成规避动作。避免飞行器与鸟类等其他异物碰撞挽回人民以及航空公司的经济损失,保障人民的生命安全以及飞行员的生命安全。并且在军事方面提升军用飞行器在野外的起降功能,能够非常好的避免军用飞机在野外撞击鸟的概率,从而提升军用飞机的一个综合能力。不会因为飞鸟以及其他在空中飘落的异物而耽误飞行时间。
项目的特点
项目的特点在于通过不断的迭代更新,产品升级,识别能力越来越好。通过AI训练已经能满足部分的基础要求。在产品方面通过一个产品延伸出其他的产品,形成一条完善的产品产业链结构。满足该项目的同时也能满足其他项目的部分需求。
产品介绍
该产品结合AI大数据来建立鸟类以及鸟类飞行轨迹的数据库,通过算法来使飞机能够自动避开鸟类以及障碍物,并且通过后期的AI训练来优化躲避鸟类的飞行轨迹,以及通过大数据模型与飞机上的传感雷达来对鸟类进行规避。并且将每一次鸟类飞行轨迹以及最优化的规避方式录入数据库中以便下一次使用。
第二是机载的避鸟以及避障措施,通过雷达以及超声波,激光雷达等方式来测量鸟的距离,通过esp 32 S3以及Mpu9250陀螺仪等传感器结合Madgwick算法来对飞行的姿态以及规避的路线进行规划
在飞机上加装新的装置,在之前飞机出任何故障需要飞行员手动去查找故障解决的说明书如何解决。后期我们将会制作以语音播报以及结合大数据为一体的AI语音播报查找的系统,飞行员说出自己所需的要求就可以通过AI大数据进行查找,通过语音播报反馈给飞行员当。
我们原本的思路是通过改进飞机发动机来解决相关的问题,通过对飞机发动机的流体力学部分进行改进并设计一个新的飞机发动机来解决该问题,但是所需要的时间过长,而且是在给飞机做加法,安全性极低,虽然通过流体力学仿真,但没有通过大量的风洞实验存在有极大的安全风险。
以下是从网上找的一些关于K201识别鸟类的代码
# generated by maixhub, tested on maixpy3 v0.4.8
# copy files to TF card and plug into board and power on
import sensor, image, lcd, time
import KPU as kpu
import gc, sys
input_size = (224, 224)
labels = ['鸟']
anchors = [5.44, 6.06, 6.81, 6.78, 4.81, 5.47, 6.06, 5.5, 6.22, 6.47]
def lcd_show_except(e):
import uio
err_str = uio.StringIO()
sys.print_exception(e, err_str)
err_str = err_str.getvalue()
img = image.Image(size=input_size)
img.draw_string(0, 10, err_str, scale=1, color=(0xff,0x00,0x00))
lcd.display(img)
class Comm:
def __init__(self, uart):
self.uart = uart
def send_detect_result(self, objects, labels):
msg = ""
for obj in objects:
pos = obj.rect()
p = obj.value()
idx = obj.classid()
label = labels[idx]
msg += "{}:{}:{}:{}:{}:{:.2f}:{}, ".format(pos[0], pos[1], pos[2], pos[3], idx, p, label)
if msg:
msg = msg[:-2] + "\n"
self.uart.write(msg.encode())
def init_uart():
fm.register(10, fm.fpioa.UART1_TX, force=True)
fm.register(11, fm.fpioa.UART1_RX, force=True)
uart = UART(UART.UART1, 115200, 8, 0, 0, timeout=1000, read_buf_len=256)
return uart
def main(anchors, labels = None, model_addr="/sd/m.kmodel", sensor_window=input_size, lcd_rotation=0, sensor_hmirror=False, sensor_vflip=False):
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_windowing(sensor_window)
sensor.set_hmirror(sensor_hmirror)
sensor.set_vflip(sensor_vflip)
sensor.run(1)
lcd.init(type=1)
lcd.rotation(lcd_rotation)
lcd.clear(lcd.WHITE)
if not labels:
with open('labels.txt','r') as f:
exec(f.read())
if not labels:
print("no labels.txt")
img = image.Image(size=(320, 240))
img.draw_string(90, 110, "no labels.txt", color=(255, 0, 0), scale=2)
lcd.display(img)
return 1
try:
img = image.Image("startup.jpg")
lcd.display(img)
except Exception:
img = image.Image(size=(320, 240))
img.draw_string(90, 110, "loading model...", color=(255, 255, 255), scale=2)
lcd.display(img)
uart = init_uart()
comm = Comm(uart)
try:
task = None
task = kpu.load(model_addr)
kpu.init_yolo2(task, 0.5, 0.3, 5, anchors) # threshold:[0,1], nms_value: [0, 1]
while(True):
img = sensor.snapshot()
t = time.ticks_ms()
objects = kpu.run_yolo2(task, img)
t = time.ticks_ms() - t
if objects:
for obj in objects:
pos = obj.rect()
img.draw_rectangle(pos)
img.draw_string(pos[0], pos[1], "%s : %.2f" %(labels[obj.classid()], obj.value()), scale=2, color=(255, 0, 0))
comm.send_detect_result(objects, labels)
img.draw_string(0, 200, "t:%dms" %(t), scale=2, color=(255, 0, 0))
lcd.display(img)
except Exception as e:
raise e
finally:
if not task is None:
kpu.deinit(task)
if __name__ == "__main__":
try:
# main(anchors = anchors, labels=labels, model_addr=0x300000, lcd_rotation=0)
main(anchors = anchors, labels=labels, model_addr="/sd/model-83507.kmodel")
except Exception as e:
sys.print_exception(e)
lcd_show_except(e)
finally:
gc.collect()参考材料
1 “愤怒的小鸟”频来袭 飞机如何解危_大陆_国内新闻_新闻_齐鲁网
2 鸟撞:飞鸟之殇 - 豆丁网
3 鸟击防范研究 - 道客巴巴
4 毕业论文(设计)-冲击载荷下油箱力学特性的有限元分析
5 北京首都国际机场鸟击物种鉴定及防控建议
6 南方日报
7 2024年全球及中国鸟类碰撞产品行业头部企业市场占有率及排名调研报告
最后感谢各位能阅读本文章,您的建议将会成为我学习的途径之一,谢谢
文中代码部分为为K210
确实,主要是现有的材料只有k210
好的,非常感谢您的评论