找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 10420|回复: 21

用光传感器制作的平衡小车程序

   火.. [复制链接]
发表于 2011-8-21 06:11:26 | 显示全部楼层 |阅读模式
程序使用乐高自带的NXT-G,实现了一个比例微分积分控制(PID)。如果用语言描述的话,是这样的:

用手将机器人保持平衡,读取光传感器平衡值;
程序进入循环:
读取光传感器值;
误差=光传感器值-平衡值;
计算误差的微分(即变化率),就是用当前读到的误差减去上一个循环中的误差;
计算误差的积分,就是把当前读到的误差加到所有以前的误差和里面去;
电机的驱动power=Kp*误差+Kd*误差微分+Ki*误差积分,其中Kp,Kd,Ki分别为比例放大系数,微分放大系数和积分放大系数;
程序结束。

其中三个放大系数的调整需要一些尝试。一般原则是:先将Kd和Ki设置为零,Kp可以为一个合理的值(电机power最大值为100),比如10,让后运行程序,用手扶着机器人看它的表现。如果不能够直立,就需要加大Kp。如果可以直立,但是抖动的厉害,就很好了,进入下一步。
下一步就是增加微分系数Kd,以求减少抖动,逐步增加,直到抖动非常小,不需要手辅助就可以自主直立的时候,就基本完成了。
增加一点点Ki可以使得机器人反应更快一点。但是要注意误差的积分有可能会变得很大(因为在不断累加),所以只需要非常小的值就可以了。比如0.1。

下面是程序的一部分截图。希望能有所帮助,又不影响各位自己尝试。当经过一番尝试,最终参数调整正确,机器人突然可以站立的时候还是很激动人心的。

1.jpg

2.jpg

评分

参与人数 1乐币 +10 收起 理由
阳糠 + 10 赞一个!

查看全部评分

如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
 楼主| 发表于 2011-8-21 08:24:20 | 显示全部楼层
多谢版主赞扬
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2011-8-21 08:49:47 | 显示全部楼层
好好拜读一下,谢谢。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2011-8-21 09:18:08 | 显示全部楼层
拜读 不过有好多地方不懂 我的水平没到哪里啊  希望加楼主好有QQ:553153699
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2011-8-21 22:30:05 | 显示全部楼层
我也是前几天也是先把I D弄成0先调P的...呵呵..最后也站起来了~~~当时确实很高兴地说~现在在尝试使用陀螺仪  搞不定呀~~
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2011-8-22 01:44:34 | 显示全部楼层
jiangqunfeng 发表于 2011-8-21 09:18
拜读 不过有好多地方不懂 我的水平没到哪里啊  希望加楼主好有QQ:553153699

多谢支持
我不方便用QQ,请在这里或者我的博客上留言,那样也可以讨论
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2011-8-22 09:03:49 | 显示全部楼层
aeinstein 发表于 2011-8-22 01:44
多谢支持
我不方便用QQ,请在这里或者我的博客上留言,那样也可以讨论

恩 好的
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2011-8-22 19:57:46 | 显示全部楼层
发个程序上来吧!有些看文字不明白
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2011-8-24 08:15:33 | 显示全部楼层
发个程序上来吧!有些看文字不明白
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2011-8-24 09:30:45 | 显示全部楼层
不是太明白楼主的意思。
如果能稍微解释一下最后实现的功能就好了(看介绍是让机器人“站”起来,但是,机器人最初是什么状态、通过什么动作、最终达到什么样的状态?)。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2011-8-25 00:48:06 | 显示全部楼层
whl 发表于 2011-8-24 09:30
不是太明白楼主的意思。
如果能稍微解释一下最后实现的功能就好了(看介绍是让机器人“站”起来,但是,机 ...

请参考我博客上的视频:http://blog.sina.com.cn/s/blog_71afdbfd0100t1vu.html

程序就在那两张贴图里(除了最开始的几个定义变量的block没有在图中显示以外,PID控制部分全部在图中)。大家照着图就可以自己编这个程序了。如果直接把程序放上来,可能会影响大家自己尝试的乐趣。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2011-8-25 09:20:06 | 显示全部楼层
aeinstein 发表于 2011-8-25 00:48
请参考我博客上的视频:http://blog.sina.com.cn/s/blog_71afdbfd0100t1vu.html

程序就在那两张贴图里 ...

明白了——自平衡小车。
感谢分享。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2011-9-8 13:55:19 | 显示全部楼层
浅显易懂,不错
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2011-9-11 09:42:55 | 显示全部楼层
{:soso_e115:}这个程序看不太懂!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-1-5 09:23:20 | 显示全部楼层
希望楼组提供一下最终的PID参数。
一般来说,不是温度等大滞后环节是不需要D调节的。P调节响应速度,I消除静差。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|中文乐高 ( 桂ICP备13001575号-7 )

GMT+8, 2024-5-10 12:24 , Processed in 0.102523 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

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