【原理分析】Google炫炸天的平衡自行车仅仅是概念吗?来看看惯性轮自行车吧...
1、聊一聊
今天分享一曲经典的bgm,至少90%的人听过,应该只有10%的人知道它的名字,听完以后精神倍佳,听的时候记得闭上眼睛想象一下这个浩大的乐队,也许这才是音乐的魅力!
好了,今天为大家带来一些机器人制作的原理知识讲解,因为最近很多小伙伴问作者有什么可以锻炼自己的、又非常有意思的小项目吗?想来想去想了很久,大家感兴趣一方面就是GUI了,另一方面就是运动控制了,于是便有了今天的文章。
2、Google平衡自行车
下面是从谷歌平衡自行车宣传视频截图,大家可以欣赏一下谷歌的自平衡车:
分析分析:
大伙看完应该会不禁惊叹,真的太厉害了,终于可以解放双手了,甚至还会想着什么时候普及上架,遗憾的是,最后谷歌出了解释视频其实全是后期剪辑,大家认为是电影特效就好,仅仅是4月1日愚人节那天的一个玩笑。
其实作者在最初看到这个视频的时候特别惊讶,总是会考虑自行车的每个动作应该用什么样的理论去解释,也许这就是工科男的思维吧。第2张可以通过调整车身重心使得其平衡,第3、4张也就是模拟人的一个正常骑行过程和自动导航功能,之前有百度无人车驾驶技术也就不奇怪了,原理上都说得通,然而第一张真的就有点夸张了吧。
那到底第一张这种自平衡效果能不能实现呢?
3、Motor-Bike Robot
下图来源于Motor-Bike Robot视频截图,该项目是一个国外学生竞赛的作品视频介绍:
分析分析:
这个视频中的自行车平衡效果与之前谷歌第一张图的平衡效果非常接近了。
大家应该发现了该自行车有一个明显的特点就是其上面有一个轮盘随着车身角度在不断的来回转动,其实原理上该轮盘的转动就维系着自行车的自平衡,至于前后进退通过后轮驱动电机正反转实现,其转向是有对应的伺服电机进行转动。
下面我们就看看这个小车自平衡原理到底是怎样的。
4、惯性轮平衡自行车原理与控制分析
我们一般叫该自行车上的那个轮盘叫惯性轮,电机对其进行驱动便会产生对应的力矩,有点类似于两个齿轮咬合进行转动的原理。
不过对于运动控制算法按照正常的开发流程首先我们应该对该自行车进行数学建模,使用的一般就是物理力学定理定律等等,所建立的现实模型都是强耦合、非线性的数学模型,这样就需要进行解耦和线性化从而简化物理模型来便于分析系统稳定性和控制器设计,然后获得初步整定参数,最后基本上就是优化参数和调节了,作者以后会再具体跟你们讲讲建模与控制的,这里就先不啰嗦。
惯性轮自行车基本原理:
对于自行车仅仅只有左右方向一个自由度,前后方向是受约束稳定的,所以我们只需要控制左右方向,即可控制平衡,然而自行车左右摆动主要是因为其自身重心没有稳定在其机械结构的中心位置,所以需要有一个力来抵消重力的分力,并把系统拉回到中心位置,那么惯性轮通过电机进行驱动就提供了这样一个力,如下图简化模型所示:
由于轮盘通过电机加速转动,会产生一定的力矩,进而产生与重力分量相反的回复力,这样当回复力>重力分量便能够使得平衡车恢复到平衡状态。
同时注意其倾角的不同,对应的轮盘转动的方向不同,最终实现相应控制。
如果大伙仅仅只是DIY,其实这点知识足够了,如果需要深入研究,就需要用matlab进行仿真设计,获得其简化模型,并求出传递函数,进行系统矫正,同时实际实现过程中需要对信号进行处理也是值得注意的。
惯性轮自行车控制简图:
由于其平衡涉及到左右方向的姿态角,我们也叫横滚角(roll angle),所以需要姿态模块测量角度和角速度,然后进行数据融合,进而计算出系统与垂直方向的角度差来作为误差量输入到所设计的控制器进行控制计算,最后获得输出驱动电机控制轮盘转动提供回复力,维持自行车自平衡。
5、最后小节
惯性轮自平衡自行车原理就讲到了,简单的玩起来还是不难的,毕竟简单的控制器就可以实现,如何需要更高的性能就需对其模型进行深入分析,并对控制器等进行优化了,获得更快的响应速度和抗干扰能力,大家感兴趣可以自己DIY一个,还是非常有意思的作品,通过整个制作的过程也能提升大家分析解决问题的能力。
好了,这里是公众号:“最后一个bug”,一个为大家打造的技术知识提升基地。同时非常感谢各位小伙伴的支持,我们下期精彩见!
推荐好文 点击蓝色字体即可跳转
☞【重磅】【完全解读】RTOS中的任务是线程?进程?还是协程?
☞【涨知识】OS下的内存使用原来这么复杂
☞【OS】原来应用是这样访问到底层(系统调用)
☞【重磅】剖析MCU的IAP升级软件设计(设计思路篇)
☞ 【典藏】别怪"浮点数"太坑(C语言版本)
☞GUI必备知识之“告别”乱码(浅显易懂)
☞【典藏】大佬们都在用的结构体进阶小技巧
☞听说因为代码没"对齐"程序就奔了?(深度剖析)
☞【典藏】自制小型GUI界面框架(设计思想篇)
【原理分析】Google炫炸天的平衡自行车仅仅是概念吗?来看看惯性轮自行车吧...相关推荐
- Linux服务器开发【有用知识】—MySQL事务原理分析
前言 今天的目标是学习MySQL事务原理分析,但是却似乎总是非常不顺利,概念和实操实在多到令人发指,故干脆轻松学完一节课,等到时机到了再重新刷一遍吧! 一.事务是什么? 将数据库从一致性状态转化成另一 ...
- 表格行与列边框样式处理的原理分析及实战应用
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:韩宇波 导语:table之间的边框存在共用问题,自然而然就存在冲突.既然存在冲突,那么就势必涉及到最后渲染哪一个样式的问题.本文就主要研 ...
- XSS的原理分析与解剖
http://netsecurity.51cto.com/art/201408/448305_all.htm XSS的原理分析与解剖 xss是一门又热门又不太受重视的Web攻击手法,为什么会这样呢,原 ...
- Redis数据持久化机制AOF原理分析一---转
http://blog.csdn.net/acceptedxukai/article/details/18136903 http://blog.csdn.net/acceptedxukai/artic ...
- HTTPS协议原理分析
HTTPS协议原理分析 HTTPS协议需要解决的问题 HTTPS作为安全协议而诞生,那么就不得不面对以下两大安全问题: 身份验证 确保通信双方身份的真实性.直白一些,A希望与B通信,A如何确认B的身份 ...
- Android JNI原理分析
引言:分析Android源码6.0的过程,一定离不开Java与C/C++代码直接的来回跳转,那么就很有必要掌握JNI,这是链接Java层和Native层的桥梁,本文涉及相关源码: frameworks ...
- Elasticsearch实现原理分析
介绍 本文是分析Elasticsearch系列文章中的一篇,是一个译文.共有三个部分,每部分讲解部分Elasticsearch的实现原理. 在翻译的过程中,也需要查看对应部分的源码,来加深对实 ...
- hidl 原理分析_一个 health service 不生效问题引出的一点知识
从 Android P 开始,Google 开始推荐厂家再定制一个 health .前不久遇到一个定制 health 中的信息未成功反应到 Framework 的问题,在分析解决问题的过程中,学习到了 ...
- Android 兼容 Java 8 语法特性的原理分析
本文主要阐述了Lambda表达式及其底层实现(invokedynamic指令)的原理.Android第三方插件RetroLambda对其的支持过程.Android官方最新的dex编译器D8对其的编译支 ...
最新文章
- eclipse调试详解
- Creational模式之Builder模式
- Scala的类和对象
- IName 与 IQueryName2
- tcp/ip 协议栈Linux源码分析二 IPv4分片报文重组分析二
- avenue在科研文章中的意思
- 阿里云云效技术专家:一文详解kubernetes下5种常见发布模式如何选择
- ajax 获取openid,纯前端获取当前用户的openid(微信小程序)
- 【Flink】Flink CDC 数据同步 【视频笔记】
- excel删除行 uipath_工作再忙,也要学会这10个最经典的Excel小技巧
- SQL Server 2005 Beta 2 Service Broker: Stored Procedure acts as a service program
- 微信小程序的事件冒泡和捕获
- 积化和差公式记忆口诀
- MATLAB分集接收技术仿真,分集接收技术.doc
- 找工作杂谈(一)2019年春招复习资料总结
- Uva 10158 War
- 一些Mac OS X的使用技巧
- 实现挂视频的三种方法
- 树莓派mongodb实战
- 上海BFC外滩金融中心潮流新店,aaddd揭秘全新生活美学