我正在编写一个java代码来控制一个相当简单的机器人,它应该执行以下操作:PID-线边框,超声波检测和颜色检测。
由于这是我在java中的第一个程序,我显然在OOP方面有很多需要学习的地方。
机器人在一条轨道上运行,在这条线路上伴随着道路上的颜色,机器人应该定期检查这些颜色,如果发现了,则根据它读取的颜色采取不同的行动。
因此,这个过程应该运行得有点类似于以下伪(Java)-code:
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的母亲。
发布于 2015-04-28 17:45:06
/u/邪恶_墨西哥玉米煎饼在/r/javahelp kindle上回答如下,工作建议:
首先,您可能需要考虑实时JVM,如果您还没有考虑的话。如果您的控制器必须不受干扰地运行,这可能是需要考虑的问题。FWIW,RT根本不是我的专业领域。但是,有关线程的基本问题更容易回答。为每个超声波传感器和颜色传感器创建一个内部类。让这些类实现Runnable。在run方法中,检查适当的传感器并更新外部类中的易失性变量。使用ScheduledExecutorService对每个类执行传感器检查(创建内部类的一个实例,并将其提交给执行器,每隔1ms或100微秒或任何时间运行一次)。主类只需监视易失性变量的值,并决定如何执行w/o中断。
https://stackoverflow.com/questions/29899270
复制相似问题