让我们说,我有一个或多个机器人乌龟,每个都有左右轮,左右轮上都有一个编码器。车轮可能配有PID控制电机。在像ROS这样的系统中,可以通过分层命名系统访问系统和子系统:即/ turtle_1 / lwheel / pid / kp设置左轮PID控制器的Kp参数或/ turtle_3 / lwheel / encoder获取车轮的编码器读数。海龟将是局域网上的节点。
由于Erlang有一个用于注册进程的平面名称空间,应该如何实现这样的分层视图?我想可以为层次结构中的每个级别注册一个进程,其名称为子系统的完全限定名称,如(顶部进程的/ turtle_1,控制轮子的进程的/ turtle_1 / lwheel)/ turtle_1 / lwheel_1 / pid等 是否有一些使用全局模块维护分层视图的最佳实践?
答案 0 :(得分:3)
解决此问题的最简单方法是引入路由进程或路由映射,将可以将层次结构绑定到Pid
。您有几种选择:
gproc
提供了很好的基于ETS的注册表什么是最好的取决于您在分布式设置中达成共识的需要和/或路由查找所需的速度。此外,无论有没有,您都可以缓存路由查找。