找回密码
 马上注册

QQ登录

只需一步,快速开始

楼主: asdf

求一个沿黑线走机器人程序

 火... [复制链接]
发表于 2010-4-19 18:56:50 | 显示全部楼层
很好
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2010-6-7 13:21:19 | 显示全部楼层
太好了,正在找。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2010-6-7 17:13:44 | 显示全部楼层
NXC的:

  1. // 取样时间
  2. #define dt 25

  3. // 定义颜色传感器
  4. #define COLORSENSOR SENSOR_2

  5. task main()
  6. {
  7. int error = 0;
  8. float previous_error = 0;
  9. float setpoint = 0;
  10. float actual_position = 0;
  11. float proportional = 0;
  12. int integral = 0;
  13. float derivative = 0;
  14. float output = 0;
  15. float left = 0;
  16. float right = 0;

  17. // 马达速度
  18. float speed=50;

  19. // 开传感器
  20. SetSensorColorFull(IN_2);

  21. // 传感器在黑线上方为启示状态
  22. TextOut(1,LCD_LINE1,"Setpoint");
  23. setpoint = COLORSENSOR;
  24. NumOut(50,LCD_LINE1,setpoint);

  25. // 循环
  26. while (true)
  27.   {
  28.    // 读取传感器实施数值
  29.    actual_position = COLORSENSOR;
  30.    TextOut(1,LCD_LINE2,"Actual");
  31.    NumOut(50,LCD_LINE2,actual_position);

  32.    // 计算误差值
  33.    error = setpoint - actual_position;
  34.    // Play a sound when the sensor is off the line
  35.    if (error <> 0) PlayTone(TONE_B7, 1);

  36.    // PID控制
  37.    proportional = Kproportional * error;
  38.    integral = integral + error;
  39.    derivative = (error - previous_error) / dt;
  40.    output = proportional + Kintegral * dt * integral + Kderivative * derivative;
  41.    previous_error = error;

  42.    // 左轮输出
  43.    left = speed - output;
  44.    
  45.    // 右轮输出
  46.    right = speed + output;

  47.    // 调整输出溢出
  48.    if (left >   100) left  =  100;
  49.    if (left <  -100) left  = -100;
  50.    if (right >  100) right =  100;
  51.    if (right < -100) right = -100;

  52.    if (left < 0 )
  53.      {
  54.       OnFwd(OUT_A,-left);
  55.       TextOut(1,LCD_LINE4,"Left  Rev");
  56.       NumOut(55,LCD_LINE4,-left);
  57.      }
  58.    else
  59.      {
  60.       OnRev(OUT_A,left);
  61.       TextOut(1,LCD_LINE4,"Left  Fwd");
  62.       NumOut(55,LCD_LINE4,left);
  63.      }

  64.    if (right < 0 )
  65.      {
  66.        OnFwd(OUT_B,-right);
  67.        TextOut(1,LCD_LINE5,"Right Rev");
  68.        NumOut(55,LCD_LINE5,-right);
  69.       }
  70.     else
  71.       {
  72.        OnRev(OUT_B,right);
  73.        TextOut(1,LCD_LINE5,"Right Fwd");
  74.        NumOut(55,LCD_LINE5,right);
  75.        }

  76.    // 等待取样时间
  77.    Wait(dt);
  78.    }
  79. }
复制代码
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2010-6-8 15:42:34 | 显示全部楼层
昨天试没有套循环,今天回去试试。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2010-6-9 16:02:44 | 显示全部楼层
已经试验成功,外套一个循环即可。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2010-6-10 13:12:44 | 显示全部楼层
来这个帖子看看啊:http://www.cmnxt.com/thread-199-1-2.html
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2010-6-10 13:19:04 | 显示全部楼层
两个光感在黑线的两旁
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2010-6-10 17:25:35 | 显示全部楼层
NXC的:
oalaio 发表于 2010-6-7 17:13



    该方案优点主要是采用PID控制。引入前后两次采样值对判断小车未来运动趋势判断,并可精细化的调整马达速度。用NXTG就没有这样方便了。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2011-1-29 11:52:42 | 显示全部楼层
看来我也没注意看说明,色感可以做光感用,实验下
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2011-1-29 14:00:47 | 显示全部楼层
如果只有一个的话,可以使用“扭屁股法”:一个光感检测到黑线,等一会,转n度角,再次向黑线驶去。有一次遇到黑线,等一会,再次扭屁股……等几秒是看你想让你的机器人走多歪,n与你想让机器人走的姿势是否好看。当然等的秒数过小,n也要适当减小,否则刚一转弯,就又把光感甩过黑线那边去了。于是你看到的只是机器人在原地狂扭屁股……语言较恶心,请别见怪
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2011-2-4 05:10:43 | 显示全部楼层
如何用Java程序实现这一功能呢?
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2011-2-5 15:38:00 | 显示全部楼层
精彩!我看过了还想看~~(⊙o⊙)
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2011-2-5 23:32:52 | 显示全部楼层
看到第二页已经解决了。
可以用Switch,条件用Sensor / Color Sensor,把颜色范围设成黑色,
然后true 左轮动右轮停
false 右轮动左轮停
就可以了。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2011-2-5 23:37:01 | 显示全部楼层
oalaio 发表于 2010-6-7 17:13
NXC的:

Color Sensor在NXC里可以读出光感值的啊?哪天试一下...在NXT-G里只能读出颜色的值,1-6代表不同的颜色。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2011-2-6 00:43:38 | 显示全部楼层
回复 oalaio 的帖子

试着写了一个最简单的读回ColorSensor的NXC程序,跑死掉了,而且死得很彻底...是否是因为NXT的Firmware要更新?谢谢。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 15:15 , Processed in 0.092472 second(s), 16 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

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