当前位置: 首页 > news >正文

【故事】无人机学习之旅

今天是清明假期最后一天,晚上在看无人机的东西,翻到了欣飞鸽的知乎主页,读了他的一些文章。虽不曾相识,但感觉我们有很多相似的经历,也想记录一下自己的无人机学习之旅。

青铜:从使用开源飞控开始

我在大三的时候,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源代码地址 后端代码&#xff1a…...

掌握网络抓取技术:利用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语言描述该程序流程&#xff1a; #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); }汇编语言&#xff1a; include irvine32.inc .data arr dword 11…...

在 CentOS 7 上安装 Redis

在 CentOS 7 上安装 Redis 可以通过几个简单的步骤完成。以下是一种常用的方法&#xff1a; 更新系统&#xff1a; 在安装任何新软件之前&#xff0c;最好先更新系统的软件包列表&#xff0c;以确保安装的软件版本是最新的。可以使用以下命令来更新&#xff1a; sudo yum up…...

『51单片机』蜂鸣器

&#x1f6a9; WRITE IN FRONT &#x1f6a9; &#x1f50e; 介绍&#xff1a;"謓泽"正在路上朝着"攻城狮"方向"前进四" &#x1f50e;&#x1f3c5; 荣誉&#xff1a;2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…...

计算机视觉 | 基于二值图像数字矩阵的距离变换算法

Hi&#xff0c;大家好&#xff0c;我是半亩花海。本实验基于 OpenCV 实现了二值图像数字矩阵的距离变换算法。首先生成一个 480x480 的黑色背景图像&#xff08;定义黑色为0&#xff0c;白色为1&#xff09;&#xff0c;在其中随机选择了三个白色像素点作为距离变换的原点&…...

Arcgis windows webadaptor配置

注意windows下安装细节 1、电脑必须添加限定域名及dns后缀。 准备工作 a、安装webadaptor&#xff0c;获取jar文件 b、tomcat中部署两个jar&#xff0c;名字不相同&#xff0c;一个用server配置&#xff0c;一个用于portal配置 c、geoserver用来配置server d、geoscene用来配置…...

对接阿里云实时语音转文字的思路

将上述概念转化为详细代码需要一定的步骤。这里&#xff0c;我们将根据之前讨论的服务划分&#xff0c;创建一个简化的框架来模拟这个流程。注意&#xff0c;由于空间限制和简化目的&#xff0c;某些实现细节会被省略或简化&#xff0c;你可能需要根据实际情况进行调整。 1. 配…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

Python 高效图像帧提取与视频编码:实战指南

Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...

day51 python CBAM注意力

目录 一、CBAM 模块简介 二、CBAM 模块的实现 &#xff08;一&#xff09;通道注意力模块 &#xff08;二&#xff09;空间注意力模块 &#xff08;三&#xff09;CBAM 模块的组合 三、CBAM 模块的特性 四、CBAM 模块在 CNN 中的应用 一、CBAM 模块简介 在之前的探索中…...

可视化预警系统:如何实现生产风险的实时监控?

在生产环境中&#xff0c;风险无处不在&#xff0c;而传统的监控方式往往只能事后补救&#xff0c;难以做到提前预警。但如今&#xff0c;可视化预警系统正在改变这一切&#xff01;它能够实时收集和分析生产数据&#xff0c;通过直观的图表和警报&#xff0c;让管理者第一时间…...