1

我正在编写一个 java 代码来控制一个相当简单的机器人,它应该执行以下操作;PID-linefollower,超声波检测和颜色检测。

由于这是我的第一个 java 程序,我显然在 OOP 方面有很多东西要学。

机器人在一条轨道上运行,这条线伴随着道路上的颜色,机器人应该定期检查,如果发现,根据它读取的颜色采取不同的行动。

所以这个过程应该有点像下面的伪(java)代码运行:

Initialize and calibrate sensors.
while (! Button.ENTER.isDown)
Run PID-controller
If (ColorSensorColor = 0 || ColorSensorColor = 2)
    if (color = 0)
        turn left
    if (color = 2)
        turn right
while (UltraSonicDistance < 30cm)
    free-roll motors

因此,我的问题是;如何构建两个线程,可以与主线程并行运行 ColorSensor 和 UltraSonicSensor?

最新的实际代码位于此处

最后,感谢您的所有输入 - 我已经在 interwebz 上搜索了很好的教程,但似乎我的脑细胞太少,无法理解所有 OOP 之母。

4

1 回答 1

0

/r/javahelp kindle 上的 /u/evil_burrito 回答了以下可行的建议:

首先,您可能需要考虑实时 JVM,如果您还没有的话。如果您的控制器必须不间断运行,则可能需要考虑这一点。FWIW,RT根本不是我的专业领域。但是,您关于线程的基本问题更容易回答。为每个超声波传感器和颜色传感器创建一个内部类。让这些类实现 Runnable。在 run 方法中,检查适当的传感器并更新外部类中的 volatile 变量。使用 ScheduledExecutorService 为这些类中的每一个执行传感器检查(创建内部类的实例并将其提交给执行器,以 1 毫秒或 100 微秒的间隔运行,或其他)。主类可以只监视 volatile 变量的值并决定在没有中断的情况下做什么。

于 2015-04-28T17:45:06.087 回答