【故事】无人机学习之旅
今天是清明假期最后一天,晚上在看无人机的东西,翻到了欣飞鸽的知乎主页,读了他的一些文章。虽不曾相识,但感觉我们有很多相似的经历,也想记录一下自己的无人机学习之旅。
青铜:从使用开源飞控开始
我在大三的时候,2019年吧,因为一个省级大创项目,开始接触无人机。当时要做多无人机的集群控制,还记得名字叫《仿昆虫趋光效应的集群无人机驱动方法》。现在想想真的是不知者无畏,那时啥都敢想敢做。大三立项,大四结题。当时买了三架无人机,买的是开源飞控,那时Pixhawk2.4.8只要两百多,真便宜。第一架飞机组装起来,330的机架,第一次这么大的飞机,不敢飞,五花大绑在凳子上,解锁让螺旋桨转起来。记得那天晚上,去了实验室背后,也是食堂门口的空地起飞,毫无意外地炸机了,还好不严重。
大四保研,刚好去了研究生的学校,跟一个师兄说了我的飞机情况,他带我去飞。我一直以为飞机有问题,跟他说很难飞,但是,他竟然把飞机飞起来了,虽然有点难控制,但还是安全起飞与着陆。后面我自己也飞过,但是炸机是常见的事。还有当时买的最便宜的电调,XXD的,10多块钱一个,便宜的东西的唯一优点就是便宜吧,动不动就烧了。前些天我在bilibili上看见一个道友的飞机还用那电调,仍不住吐槽一下电调质量。回到飞飞机上,飞的多了,也逐渐有感觉了,至少完成飞起来这一门槛。
最后项目要到deadline了,大约是2020年5月份吧。我感觉没有达到预期,我跟指导老师说了下情况。没想到指导老师说已经做的很好了。让我整理下资料,可以提交结题了。现在想想,那时真的做得很好了,至少对于一个本科生,单枪匹马做完这么多事,已经尽力了。那时候我真的飞起来过三架无人机了,在自己的电脑端开了三个putty终端,连接三架飞机的树莓派,让三架飞机都能同时起飞。由于使用自己的手机热点,连接不是很稳定,有时候某一架总是连不上飞不起来。想想很多研究生得毕设,或许都没有真的让三架飞机自动飞起来吧。
白银:代码期
后面研究生,到了教研室之后,开始正式写飞控。刚开始画电路板,写传感器驱动,写互补滤波,写PID,然后调PID。这个阶段用的时间远比我预期的多得多。我本以为三个月就可以解决的问题,没想到一年后都没有得到完全的解决。不过飞机还是从最初的完全飞不起来,到摇摇晃晃喝醉了一样,到最终的有一个较为稳定的效果。这时候主要完成了姿态控制。研究生第一年课程还是比较多的,特别是第一学期,因此能完全花在飞控上的时间也不多。当时最羡慕研二研三的师兄师姐了,不用上课,只用做想做的事。
第二年开始,没有课程,可以放开做了。不过现在想想,好像没有什么印象特别深刻的事情,应该主要是添加了位置控制。添加位置控制的难度也比我想象的大很多。当时我以为回了姿态估计与姿态控制,做位置估计和位置控制应该很类似。但是遇见了很多新的问题,有新的传感器GPS与相机,得加对应的驱动。算法也不断优化,使用卡尔曼滤波。
第二年,我跟老师说在项目中应用自己的飞控,不用之前一直在用的PX4。由于老师不太懂技术,也对我很信任,这个想法也就很快落地。现在想想自己当时还是不知者无畏。当时飞控功能不够完善,很多也是在项目中根据需求添加。补充一句,这个项目我走的时候还没结题,后面又换回PX4飞控了。很多事,就是这样,来来回回,非人力所能及。
第二年下半年,就开始找工作,如愿以偿的去了一家无人公司,也就是当前所在公司。
第三年,除了项目上一些事,毕业设计也是大事。当时本来只想做四旋翼的,但是又感觉没什么创新。加上自己之前的一些想法,最终变成《四足四旋翼机器人》。没错,就是加了四条腿,用舵机做的关节。这个创意曾经忽悠过不少人,拿了一个机器人创新的国二奖项,8k奖金,当时也算不少。由于连锁效应,后面又得到两个学校奖学金,1.2w左右吧。
不过话说回来,这个东西当我毕设,是个坑。一是舵机做关节,实在太拉了。又买不起贵的电机,毕竟要真做机械狗那样的关节,估计得几万甚至几十万的成本。二是以前只做四旋翼,现在做这种机器人,理论差异挺大的。不过无论怎样,最终还是做出了个能够看得过去的东西。它真的能动能走能飞,达到毕业水平绰绰有余。不过距离我的预期还是挺远,因此我也很少真正的快乐满意过。
现在想想,做四足还是有些不值的,毕竟四旋翼里还有很多东西没弄懂。
第三年,也从模型的角度对无人机下手了。到毕业前,我最大的目标是建立一个精确的无人机模型。但是这个模型需要很多专业的设备,本来是寄希望于去公司做的。但是公司也没有这样的设备。
经历了三年的学习,我本以为自己已经对四旋翼有较为深刻的理解。记得一次打电话和我弟说,我觉得自己在这个领域应该在前20%的行列了,现在想想,可能还是有失偏颇。不过即使20%的价值也不大,差不多能去前20%的无人机公司,还是去不了最好的公司。前20%和10%还是云泥之别,就像斗罗大陆,前期段位升得很快,后期每升一级都难如登天。
黄金:算法实现期
毕业后,开始工作。在嵌入式,导航算法,控制算法间选择了最喜欢的一个方向——控制算法。工作了9个月,还是在不断成长的阶段。
先写到这儿,以后再来补充——
相关文章:
【故事】无人机学习之旅
今天是清明假期最后一天,晚上在看无人机的东西,翻到了欣飞鸽的知乎主页,读了他的一些文章。虽不曾相识,但感觉我们有很多相似的经历,也想记录一下自己的无人机学习之旅。 青铜:从使用开源飞控开始 我在大…...
torch.mean()的使用方法
对一个三维数组的每一维度进行操作 1,dim0 a torch.Tensor([0, 1, 2, 3, 4, 5,6,7]).view(2, 2, 2) print(a) mean torch.mean(a, 0) print(mean, mean.shape) 输出结果: tensor([[[0., 1.], [2., 3.]], [[4., 5.], [6., 7.]]]) tensor([[2., …...
windows安装Redis,Mongo,ES并快速基本掌握开发流程
前言 这里只是一些安装后的基础操作,后期会学习更加深入的操作 基础操作 前言RedisRedis启动idea集成Redisjedis技术 Mongodbwindows版Mongodb的安装idea整合Mongodb ES(Elasticsearch)ESwindows下载ES文档操作idea整合ES低级别ES整合高级别ES整合 Redis Redis是…...
ruoyi-nbcio-plus基于vue3的flowable的自定义业务提交申请组件的升级修改
更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码:…...
掌握网络抓取技术:利用RobotRules库的Perl下载器一览小红书的世界
引言 在信息时代的浪潮下,人们对于获取和分析海量网络数据的需求与日俱增。网络抓取技术作为满足这一需求的关键工具,正在成为越来越多开发者的首选。而Perl语言,以其卓越的文本处理能力和灵活的特性,脱颖而出,成为了…...
典型新能源汽车热管理系统方案分析
目前行业具有代表性的热管理系统有PTC电加热方案、热泵方案(特斯拉八通阀热泵、吉利直接式热泵)、威马的柴油加热方案以及以理想为代表的插电式混动车方案。 小鹏P7整车热管理方案分析(PTC电加热方案) 小鹏P7作为小鹏汽车的第2款…...
使用Docker部署开源项目FreeGPT35来免费调用ChatGPT3.5 API
Vercel部署FreeGPT35有严重限制,玩玩就好,真用还是得docker。 限制原因: Vercel的流式响应并不是一开始写流,客户端就能立刻收到响应流,而是先写到一个缓冲区,当流关闭才一股脑的流式响应回来(不是实时流) 因此导致: …...
《Linux运维实战:Kylin V10操作系统开启安装软件保留缓存设置》
总结:整理不易,如果对你有帮助,可否点赞关注一下? 更多详细内容请参考:Linux运维实战总结 一、操作步骤 1、改系统/etc/yum.conf配置文件,开启安装软件保留缓存设置 [rootecs-90c2-0003 ~]# vim /etc/yum.…...
视频生成技术:从GAN到Latte
GANs Diffusion Model...
机器学习中的激活函数
激活函数存在的意义: 激活函数决定了某个神经元是否被激活,当这个神经元接收到的信息是有用或无用的时候,激活函数决定了对这个神经元接收到的信息是留下还是抛弃。如果不加激活函数,神经元仅仅做线性变换,那么该神经网…...
LinuxAndroid: 旋转编码器input输入事件适配(旋转输入)
rk3588s: 旋转编码器input输入事件适配 基于Android 12 kernel-5.10版本 参考文档: https://blog.csdn.net/szembed/article/details/131551950 Linux 输入设备调试详解(零基础开发)Rotary_Encoder旋转编码器驱动 通用GPIO为例 挂载input输…...
机器学习和深度学习-- 李宏毅(笔记与个人理解)Day10
Day 10 Genaral GUidance training Loss 不够的case Loss on Testing data over fitting 为什么over fitting 留到下下周哦~~ 期待 solve CNN卷积神经网络 Bias-Conplexiy Trade off cross Validation how to split? N-fold Cross Validation mismatch 这节课总体听下来比较…...
perl 交叉编译
前言 Perl是一种高级、通用、解释型、动态的编程语言。Perl设计的初衷是为了更好地处理文本处理任务,但随着时间的发展,现在它已经变成了一种强大的一般目的编程语言。Perl支持面向过程和面向对象的编程风格。 Perl的特点: 强大的字符串处…...
浅谈.版本管理工具
定义: 版本控制是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。 特点: 1、方便用于管理多人协同开发项目 2、并行开发,可实现跨区…...
【汇编语言实战】已知10个整数求最大值
C语言描述该程序流程: #include <stdio.h> int main() {int a[]{11,33,23,54,12,51,2,4,34,45};int maxa[0];for(int i1;i<9;i){if(a[i]>max){maxa[i];}}printf("%d",max); }汇编语言: include irvine32.inc .data arr dword 11…...
在 CentOS 7 上安装 Redis
在 CentOS 7 上安装 Redis 可以通过几个简单的步骤完成。以下是一种常用的方法: 更新系统: 在安装任何新软件之前,最好先更新系统的软件包列表,以确保安装的软件版本是最新的。可以使用以下命令来更新: sudo yum up…...
『51单片机』蜂鸣器
🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…...
计算机视觉 | 基于二值图像数字矩阵的距离变换算法
Hi,大家好,我是半亩花海。本实验基于 OpenCV 实现了二值图像数字矩阵的距离变换算法。首先生成一个 480x480 的黑色背景图像(定义黑色为0,白色为1),在其中随机选择了三个白色像素点作为距离变换的原点&…...
Arcgis windows webadaptor配置
注意windows下安装细节 1、电脑必须添加限定域名及dns后缀。 准备工作 a、安装webadaptor,获取jar文件 b、tomcat中部署两个jar,名字不相同,一个用server配置,一个用于portal配置 c、geoserver用来配置server d、geoscene用来配置…...
对接阿里云实时语音转文字的思路
将上述概念转化为详细代码需要一定的步骤。这里,我们将根据之前讨论的服务划分,创建一个简化的框架来模拟这个流程。注意,由于空间限制和简化目的,某些实现细节会被省略或简化,你可能需要根据实际情况进行调整。 1. 配…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
