OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 11076|回复: 19

不知道还有没有做自平衡小车的人。、、分享点点个人小心得

[复制链接]

25

主题

106

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
231
金钱
231
注册时间
2012-8-7
在线时间
1 小时
发表于 2015-11-30 12:45:50 | 显示全部楼层 |阅读模式

很久以前就想做个两轮平衡小车,当时在网络上搜了大把大把的资料,下载了大把大把的论文,包括sci的外文(当然大部分都是中国人写的),体会是,90%都是水文,说得头头是道,但是却于我根本都用不上,其实就是一个很简单的问题,却有如此多的论文来研究,瞬间觉得水太深。
在此狠狠批判国内论文水平,很多不及网络上的博客水平。

有幸在阿莫论坛里搜到了一篇绝对是精品之中的精品贴,我敢拍着胸脯说,这个帖子绝无任何水分,尤其里面老外写的一篇关于乐高机器人文章简直就是经典,看了这个帖子我立马找到了方向。
网络上说用PID调,有人说调了两天(肯定有更少或更多)能调到小车站立,以我对PID的了解,用这种方法的人肯定没有建模,这种调程序的方法属于鸟枪法,真的不靠谱。我用的方法,除去调底层驱动程序所花的时间外(这个因人而异),调直立算法只用了半个小时不到(无非就是四个系数稍微放大或缩小)。。。。

我想表明的是,借助于matlab或simulink,这个平衡算法(LQR)原理真的好简单,至于动力学建模,老外早已经做出来了,做得相当好,国内那些建模的期刊论文,完全没必要去理会,总是被我找出问题或者错误的一大堆,一点都不靠谱。数学和物理虽不能精确描述客观现象,但是描述客观现象的近似程度是惊人的。


希望给还处于迷茫中的人一些建议。同时也抱怨一下,之前在这上面浪费掉的时间实在是太多了。
分享一点经验,新手的话最好不要自己做小车的硬件,先在网上买现成的实体,算法自己调。我相信所有做平衡车的人都是冲着控制算法来的,而不是要设计一个两轮小车。。。。

最后如果有新手在在这方面遇到无法解决的困惑(算法或建模方面),可以和我交流。我自认为已啃透这块硬骨头

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

71

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
472
金钱
472
注册时间
2015-3-1
在线时间
123 小时
发表于 2015-11-30 14:29:02 | 显示全部楼层
- -个性的签名
回复 支持 反对

使用道具 举报

17

主题

237

帖子

0

精华

高级会员

Rank: 4

积分
925
金钱
925
注册时间
2012-2-27
在线时间
393 小时
发表于 2015-11-30 15:31:33 | 显示全部楼层
楼主就是牛!!!
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-11-27
在线时间
44 小时
发表于 2015-11-30 22:43:42 | 显示全部楼层
新人,毕业设计就准备做平衡小车,现在才搞好底层驱动,难点也就是在PID和MATLIAB,从来没接触过,做出来了可以提升下自己的能力
回复 支持 反对

使用道具 举报

25

主题

106

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
231
金钱
231
注册时间
2012-8-7
在线时间
1 小时
 楼主| 发表于 2015-12-1 09:27:21 | 显示全部楼层
回复【4楼】慢摇1991:
---------------------------------
matlab仅仅是个工具,不是难点。
PID控制的话特别注重经验,几个参数先调什么后调什么,网络上应该都有讲解,建议多参考。
不知你是什么专业,如果是控制专业,最好认真复习一下《现代控制理论》,这个实际运用得多。如果你学的还比较好的话,建议用LQR控制,不需要去深究LQR那些推导公式(当然如果你感兴趣而且数学功底可以就另外了),只要知道算法的思想,其他计算全交给matlab即可。
配合simulink仿真一下看看设置的参数是否合适(尤其是电机的饱和效应,比如电机最高电压12V,尽量使输出控制电压不要超过10V,保证线性度)。
如果你小车的数学模型搭得比较好(误差肯定是有的),在线调参数只需要微调一下小车就能立起来,很便捷的。
祝成功。
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2015-12-1
在线时间
0 小时
发表于 2015-12-1 10:38:01 | 显示全部楼层
我也在做平衡小车,电机驱动还没搞懂卡死在这了
回复 支持 反对

使用道具 举报

33

主题

310

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-12-31
在线时间
63 小时
发表于 2017-4-27 23:21:15 | 显示全部楼层
你好,能够请教一下一些问题吗
回复 支持 反对

使用道具 举报

33

主题

310

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-12-31
在线时间
63 小时
发表于 2017-4-27 23:30:03 | 显示全部楼层
慢摇1991 发表于 2015-11-30 22:43
新人,毕业设计就准备做平衡小车,现在才搞好底层驱动,难点也就是在PID和MATLIAB,从来没接触过,做出来了 ...

层主,你好做出来了吗?可以请教一下吗
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-11-27
在线时间
44 小时
发表于 2017-5-5 10:08:54 | 显示全部楼层
arao和xiaomi 发表于 2017-4-27 23:30
层主,你好做出来了吗?可以请教一下吗

你把问题详细说出来,应该有搞成功过的大神来给你解疑。

我之前做的是失败的,车子能稳住,但是只要一推,晃几下就倒,后来没再搞,隔了一年了,准备过一段时间会重新打板再做。我自己总结上次失败的问题(若有不对,还请大神指出来):

1.MPU6050只能用其中一个方向来做调平衡(也可能是MPU6050的程序滤波不是完美,我是移植别人空中鼠标的代码,因为我后来实际液晶屏看过,只有一个方向是稳定的,别的两个方向,a.一个是直接跳动,b.另一个是刚上电时候跳动,大约10s左右慢慢平稳,然而我当时板子就是用的是b)。

2.电源我是直接锂电池供电,并没有升压稳压处理,这也是个失误的地方,我自己认为这样会导致当我调好一组PID参数后,电机转一会,电池电压下去了,这样电机的力就不一样了,之前的PID参数就不适用了。

3.得再深入理解PID算法,这样该调什么,怎么调,心里才有低,不然自己瞎搞半天也是云里雾里的。

4.个人觉得PID参数最好搞个卡尔曼之类的来个自适应,这样可能更好点。
回复 支持 反对

使用道具 举报

33

主题

310

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-12-31
在线时间
63 小时
发表于 2017-5-5 16:41:49 | 显示全部楼层
慢摇1991 发表于 2017-5-5 10:08
你把问题详细说出来,应该有搞成功过的大神来给你解疑。

我之前做的是失败的,车子能稳住,但是只要一 ...

你好,谢谢你的解答,当遇到问题有热心的人给予帮助哪怕是一点点提示也是极好的,我最近也在弄这个。有两个疑问:第一个就是整套我用了两个stm32,其中一个小的stm32是用来专门检测姿态数据的,然后通过串口把检测到的数据传给大的stm32,测试的时候发现一个问题:如果我单独用一个stm32检测姿态,通过液晶显示的话,三个姿态角数据都是挺稳的,但是用一个小的检测,传给大的stm32过后,开机发现一上电,数据会飘,要到一段时间才会稳定下来。这个是什么原因呢?
回复 支持 反对

使用道具 举报

33

主题

310

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-12-31
在线时间
63 小时
发表于 2017-5-5 16:45:30 | 显示全部楼层
arao和xiaomi 发表于 2017-5-5 16:41
你好,谢谢你的解答,当遇到问题有热心的人给予帮助哪怕是一点点提示也是极好的,我最近也在弄这个。有两 ...

还有一个疑问就是:我当前的想法是通过一个姿态角俯仰角来作为PID的输入,要达到的目标就是保持最终的俯仰角为0, 经过增量式PID来计算,得到电机的PWM输出,以此来得到小车的平衡,你好,我想问一下我这个方案是否可行呀?
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-11-27
在线时间
44 小时
发表于 2017-5-6 09:37:16 | 显示全部楼层
arao和xiaomi 发表于 2017-5-5 16:45
还有一个疑问就是:我当前的想法是通过一个姿态角俯仰角来作为PID的输入,要达到的目标就是保持最终的俯 ...

3个方向数据都飘?如果可以,你可以在从机那里加个显示什,这样可以简单验证下一方面的问题。具体原因你得自己验证排除

你的方案思路和我之前的一样。能站立只是第一步,还有前后、转弯之类的后续得考虑考虑
回复 支持 反对

使用道具 举报

33

主题

310

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-12-31
在线时间
63 小时
发表于 2017-5-6 16:28:30 | 显示全部楼层
慢摇1991 发表于 2017-5-6 09:37
3个方向数据都飘?如果可以,你可以在从机那里加个显示什,这样可以简单验证下一方面的问题。具体原因你 ...

不是三个方向的都飘,就是开始一上电那一会数据会飘,后来就能稳定住。我是这样想的,先来实现小车的直立,然后一步一步的实现前后转弯这些的,我在上面加了一个显示屏的。我用增量式的PID控制刚才试的时候有一个现象就是当我与水平面夹角增大时,pwm输出变大,变化率较快,速度较快,但是我调整角度变小时,pwm输出变小,变小得较慢,这个是什么原因呀?
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2018-5-21
在线时间
0 小时
发表于 2018-5-21 17:28:37 | 显示全部楼层
你好,我想请问一下怎么用matlab 进行平衡小车的仿真
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2019-4-19
在线时间
1 小时
发表于 2019-5-11 14:32:39 | 显示全部楼层
请问平衡小车matlab仿真程序能分享一下吗
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2019-7-26
在线时间
0 小时
发表于 2019-7-26 10:02:32 | 显示全部楼层
楼主能发一下SIMULINK的程序吗,现在调试PID也是遇到困难,解决不了

回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2019-7-26
在线时间
3 小时
发表于 2019-7-29 19:33:20 | 显示全部楼层
所以,楼主,pid怎么调呢???怎么没看到?
回复 支持 反对

使用道具 举报

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2017-10-28
在线时间
27 小时
发表于 2019-9-5 21:06:20 | 显示全部楼层
请问楼主有基于C语言的LQR程序吗
回复 支持 反对

使用道具 举报

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2017-10-28
在线时间
27 小时
发表于 2019-9-5 21:46:19 | 显示全部楼层
你好,楼主,请问有LQR的C编程吗
回复 支持 反对

使用道具 举报

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2017-10-28
在线时间
27 小时
发表于 2019-9-6 10:28:07 | 显示全部楼层
您好,请问可以学习下您的LQR算法的源代码吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-12 19:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表