gpt4 book ai didi

Java Lejos 自主 NXJ 机器人线程造成麻烦

转载 作者:太空宇宙 更新时间:2023-11-04 13:55:12 28 4
gpt4 key购买 nike

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

由于这是我用 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 的线程?

最新实际代码位于here

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

最佳答案

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

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

关于Java Lejos 自主 NXJ 机器人线程造成麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29899270/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com