如何 运行 机器人在多进程或多线程中的控制器?

How to run a robot's controller in multi processes or multi threads in webots?

我想要一个控制器以某种方式 运行s 3 处理 运行 机器人的代码。

我正在尝试在 webots 中模拟人形足球机器人。对于 运行 我们机器人的代码,我们 运行 3 个进程。一个用于伺服电机的电源管理,另一个用于图像处理和通信,最后一个用于运动控制。

现在我想要一个控制器,让我能够以某种方式模拟类似这样或至少类似的东西。有人知道我该怎么做吗?

好消息:Webots API 是线程安全的:-)

一般来说,我不会推荐使用multi-threads,因为编程线程是一个很大的问题来源。因此,如果您有可能将您的线程合并到 single-threaded 应用程序中,那就是正确的选择!

如果您想朝这个方向前进,最好的解决方案当然是创建一个控制器 运行 您的 3 个线程,并将它们与主线程(线程 0)同步。

棘手的部分是正确处理时间管理和模拟步骤。一种解决方案是将 Robot.synchronization 字段设置为 FALSE,并使用主线程每隔 duration 次(实时)调用 wb_robot_step(duration) 函数。