记一次擦窗机器人项目的拯救(1)

我也是临危受命,在北京联系导师的时候,学校的老板就催我早点回去。其实,我心知肚明,那就是一个烂摊子,一个有关擦窗机器人的项目。

老师们做的更多的是模仿,缺少思考,更缺少工程思维。

起初拿到这个项目,我就断言,这是一个几近于废掉的项目。混乱的代码,幼稚的算法,不经考虑的硬件,甚至没有调好的底层。

我只好给自己定一个需求目标:

做出机器人在窗户上的运动和路径规划。

越到后来,就越觉得气愤和困难。

第一天:

第一天先来重构程序结构,原来的程序是这样的:

暂且不提代码质量,混乱的结构,完全没有主次:

那么先把传感器的拿出来,再拿出控制层,哦,没有控制层,只好重建,这个工程完全没有闭环控制,那么,怎么可能走得直线吗!怎么可能按照一定的角度走,怎么可能路径规划!

再就是线程管理层,暂时先用比较简单地结构来重新写。结果发现,原来的人写了一堆的中断,根本没有系统意识,一个随便运行着的程序,正在等待着各种卡死。最后,通信层,也就是上位机交互调试,如果没有上位机配合,怎么调波形呢。

1.User - 调度管理,这一部分要详细说下。原来的作者几乎就是一个LOOP()解决所有问题,控制和各种资源调度全在这一个周期的循环里面,完全没有时序感,基本就是GG,所以我就做了这样的简单处理。

main:

Duty_Loop:

通过systick时钟来确定不同周期的任务

Duty_1ms:传感器处理部分,语音芯片,姿态器件,按键啦,气压计等等;

Duty_10ms:控制层,控制机器人的两个参数:basefly:油门也就是前进后退的基础速度;angel:机器人的角度;

Duty_50ms:任务调度器;

Duty_100ms:上位机通信;

这样,整个系统就建立起基础架构了!

MPU_lib - 姿态解算

(操蛋了,硬件设计第一大失误,就是采用了103c8t6,一款128k的芯片,更本顶不住计算量,而且这个系列,没有浮点数计算优化,所以只好通过配置mpu6050DMP解决问题,不过这也导致了后面的问题)

第一天,解决了姿态这一块的问题,原来的作者就是通过简单融合滤波,角度不稳定也不够准。陀螺仪求角度的问题主要是存在零点漂移,加速度计的问题就是有迟滞性。因此需要做融合滤波,不详细讲这里了。但是,这个片子的资源太小,做计算加上卡尔曼根本顶不住,只好用DMP模式,但是DMP模式也存在漏洞,进而导致后面不得不推倒重来。

DMP是啥?DMP就是MPU6050内置的计算单元,使用了官方的姿态计算算法,效果并不如人意。

以前做过DMP配置,配置完毕,读取四元数,通过四元数计算角度:

这里埋下了隐患。好,得到角度了。

直接上玻璃,不好调参数,那么先在地上调。其实效果是一样的。

第二天:

下面,就解决第二大问题,控制问题:

这就是控制层的函数,ElecPID.fdb是控制器的目标角度值。yaw_control就是PID控制函数了。

Control:

这一部分就很有难度了。我个人认为,我的PID函数是最简直漂亮的。采用了C语言 的指针函数这一技巧,非常的适合PID控制。还可以灵活切换不同的控制函数。

时间: 2024-07-28 18:54:02

记一次擦窗机器人项目的拯救(1)的相关文章

记2014年暑假,一个项目,三个框架

在开始动笔之际,看了下博文的标题,突然觉得欠妥,"记2014年暑假,一个项目,三个框架",既然是暑假说明还是学生,今年的6月我已经毕业了,但还在学习,并且在向一名合格的架构师狂奔.你说我矫情也好,做作也罢,现实就是这样的,厚着脸说:咱也矫情一回. 整个暑假,总共四十天,从7月中旬开始到8月底,从技术上看,整个假期都处于看视频,做项目,作总结的过程中,前二十天跟着视频做了DRP的项目,后二十天(到8月26日),看完了三个框架的视频,总结还在继续:从英语上看,这个假期是从听走向说的开始:从

Unity Networking教程翻译(一)由零开始设置一个多人项目

?? Setting up a Multiplayer Project fromScratch 由零开始设置一个多人项目 This document describes steps to setup anew multiplayer project from nothing using the new networking system. Thisstep-by-step process is generic, but can be customized for many types ofmul

【实习记】2014-08-20实习的mini项目总结

实习项目总结文档 项目介绍 项目逻辑很简单,只有几个页面,只能登录,查看,支付和退款.主要作用是熟悉C++的cgi的web服务开发方式. 项目页面截图 图一:登录页面 图二:买家查看 图三:买家支付 图五:卖家查看 图六:卖家退款 准备:一个星期 8月28日,第1天,入域,安装rtx,qq,wps,管家.不太顺利,可能我比较笨,用了半天.安装git,vim,firefox,chrome.发现git必须配置http://web-proxy.oa.com:8000代理.颇不如意,挺折腾人.导师根据实

三部四人项目的评价

第一个四人项目:调查问卷 网址:http://www.cnblogs.com/C705/p/4084324.html 该问卷已在问卷星上发布:http://www.sojump.com/jq/3991512.aspx 反馈:http://www.sojump.com/report/3991512.aspx 这组的同学开了好多次的站立会议,一点点的完善不断改进,最后做到了这样的效果.页面设计非常的漂亮,值得学习. 第二个四人项目:Crawling is going on 随笔连接:http://w

剑指offer-机器人的运动范围

剑指offer--机器人的运动范围 题目描述 地上有一个m行和n列的方格.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子. 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18.但是,它不能进入方格(35,38),因为3+5+3+8 = 19.请问该机器人能够达到多少个格子? 题解: 使用BFS,从[0, 0] 开始bfs. class Solution { public: cons

Gazebo機器人仿真學習探索筆記(三)機器人模型

gazebo_models:https://bitbucket.org/osrf/gazebo_models 模型庫下載,可以參考如下命令: ~/Rob_Soft/Gazebo7$ hg clone https://bitbucket.org/osrf/gazebo_models 下載更改目錄下載到指定文件夾中. 模型庫的結構 目錄 配置等可以參考官方文檔,注意model.sdf. 當然也可以將自己制作的模型上傳到庫中,文檔中也有具體說明. code$ hg clone https://[ema

面试题13-机器人的运动范围

面试题13-机器人的运动范围 题目描述 地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] .一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左.右.上.下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子.例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18.但它不能进入方格 [35, 38],因为3+5+3+8=19.请问该机器人能够到达多少个格子? 示例 1: 输入:m = 2, n = 3, k

KB奇遇记(6):搞笑的ERP项目团队

早在我们来之前,KB公司这边就已经组建了ERP项目组了,当时IT就仅仅有一个人.属网管出身.而关键用户分两种类型:专职关键用户和兼职关键用户. 专职关键用户组织结构上已经调动到信息部,常驻在项目组里工作.財务模块2个人,採购模块1个人.其它模块没有.兼职关键用户平时都是在各自部门里,平时该做什么还是什么.仅仅有ERP项目组有须要的时候才会让他们过来处理一下,几个小时之后然后就回各自部门了,每一个模块大概有1-2个人员组成. 后来我们入职了,開始扩充人员.因为KB公司极度压缩ERP项目的成本.连人

KB奇遇记(7):不靠谱的项目实施计划

在ERP项目启动前期,项目组两方项目经理和我等几个人单独跟总裁开会,讨论了初步的ERP实施计划,本来第一期上线只是考虑上其中一家工厂而已,结果临时加入了深加工的工厂.本来项目组预定计划是2017年1月1号上线的,结果到总裁那边就被裁定为2016年11月1号,足足提前了2个月.同时第二期上线要在明年半年的时间里上线剩余的分出全国不同地区的六家子公司,其中一家还是在海外.很惊讶的是甲方乙方的项目经理均对总裁提出的ERP上线日期并没有提出什么交涉和异议. 在我看来对于一家没用ERP系统,全部手工Exc