标签存档: 机器人

NXT-G 2.0 的简易 PID 模块 ChloroPID

只能说NXT-G用得我各种不爽,明明用c十几行代码搞得定的事情要花掉我几个小时。

现在WRO做得虚啊,看着不断飙升的闪存占用量,那坑爹的64k闪存不知道能不能装下一个终版程序。真不知道WRO组委会怎么想的,c不让用就算了干嘛labview也禁掉。

以上为吐槽。

同时发布于:http://bbs.cmnxt.com/thread-8256-1-1.html

参考教程:http://bbs.cmnxt.com/thread-5688-1-1.html

(自带吐槽 :实在是找不到高端一点的教程了)

模块见附件。

(自带吐槽 :NXT-G用得我恶心死了,乱七八糟的走线,动不动卡机崩溃,用C十几行代码就能解决的事情居然要我那么长时间)

使用方法:

  1. 将附件中的 “ChloroPID.rbt” 拷贝到当前用户的 “My Blocks” 文件夹下;
  2. 建立一个循环,放入 ChloroPID 模块;
  3. 设置一个输入(如光感的读数),接入 “value” 输入端中;
  4. 输入其余各参数,详细如下:
    1. amend – 积分回零的方式:如果设置为0,当输入值从阀值一端跳到阀值另一端时积分值清零;如果设置为(0,1),则每次循环将积分值自乘该值;
    2. KP – 比例常数;
    3. KI – 积分常数;
    4. KD – 微分常数;
    5. offset – 阀值:平衡状态时输入值的理想值;
    6. timer# – 计时器编号:允许的值为1、2、3,代表 NXT-G 所允许使用的3个计时器,如果程序中已经使用了某计时器,请在此设置为一个不同的值;
  5. 将输出值(Result)处理后作为物理输出。

使用示例:

其他:

  1. 这个模块在一个程序中同一时间内只能使用一个(也就是请不要在多线程程序中同时使用),因为 NXT-G 不支持局部变量(自带吐槽:坑爹呢);
  2. 这个模块使用了计时器进行精确计算;
  3. 这个模块会自动初始化;
  4. offset值也可以是动态的,就像demo中的电机同步;
  5. 这东西是这届 WRO 的副产品, WRO 居然规定不准用 C 不准用 Labview ,异常痛苦;
  6. ChloroPID 遵循 GPLv2 协议,如需再开发请仔细阅读协议;

下载:ChloroPID.zip PID_demo.zip

Hello World

WordPress在SAE上架好好几天了,一直没空写博文。比赛似乎都扎堆在了这两天,又是赶论文又是做FTC的。昨天创新大赛的网络提交截止,明天是FTC的调试,后天比赛。

新浪个人觉得还是个良心企业,在国内的环境中各个产品都做得很厚道。渣浪视频是唯一一个上传不打水印的视频分享站点,渣浪微博是山寨twitter最到位的站点,SAE是国内最舒服的PHP云。SAE的确是便宜,而且用多少收多少,还不用考虑乱七八糟的事情,什么网速啊并发数啊之类。THBR转到SAE上来以后几个仅剩的忠实玩家表示体验很不错,看来十几个小时的移植没白费。顺带吐槽一下世纪初的PHP代码风格,想来我居然是看着这代码学的PHP甚至是HTML、CSS、JS。一直被vIstaswx吐槽说太落后,让我很怨念。拿到SAE的python测试资格以后果断开始学起了python,打算做一个云推送。无奈这东西理解起来比想象中的困难得多,而且SAE环境真心不适合用来学一门语言。本来以为python可以完成node.js一样的效果,但是看了几个用异步框架的comet,最终都还是靠延时触发的。鉴于这东西学起来实在太费劲,在用户量难以承受之前还是老老实实玩PHP吧。本来想看看SAE的追逐对象GAE的,结果发现这货不支持PHP。好吧作为一个不入流的业余PHP开发者,随你们鄙视好了= =

继续阅读 »