为什么这个程序在针对计算机但不针对NXT时可以在LabView中运行?

时间:2011-12-06 17:20:21

标签: labview nxt

我有一个用Labview编写的程序用于我的LEGO Mindstorms NXT 2.0。当目标设置为计算机时,程序运行正常。但是,当我将目标设置为NXT时,程序与目标计算机的工作方式不同。

该程序使机器人前进,直到距离物体30厘米,这是由NXT的超声波传感器检测到的。然后机器人就会停下来。如果移动物体并且在NXT超声波传感器的30厘米内没有物体,机器人将再次前进,直到它再次离物体30厘米。然后,它会停止。

当目标在Labview中设置为计算机时有效,但在设置为NXT时则无效。设置为NXT时,一旦检测到第一个对象,它将停止。但是,如果物体被移除并且超声波传感器30厘米内不再有任何物体,机器人将保持静止而不能向前移动。

以下是方框图的屏幕截图: block diagram

Here is a link to the source code for the program.

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

我对NXT的经验非常有限,但我建议您使用字符串VI在NXT屏幕上显示一些调试数据(例如i,距离等)。这将允许您确定程序的位置,并可能帮助您找到问题。

作为一个侧点,在LV中,通常不建议使用没有控制其执行速率的循环。对于在NXT上运行的代码,这可能会有所不同,但我仍然建议在循环中添加一个简单的等待。

答案 1 :(得分:1)

我没有在你的代码中看到错误,但是在部署到NXT目标时我会做的是我会使循环无限(用一个假常量替换Stop)并删除波形图。在NXT你不需要它们。

答案 2 :(得分:1)

我通过添加一个200ms的等待块来解决这个问题,以减缓NXT的速度。这很有效,看起来砖块已经超前了。