如何使用rosjava获得所有正在运行的ros节点的列表?

f1tvaqid  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(369)

我正在尝试使用rosjava获取所有正在运行的rosnode的列表。有人知道我是怎么做到的吗?我对rosjava是个新手,不幸的是文档并不是很有帮助。

kuuvgm7e

kuuvgm7e1#

目前,无法直接获取节点。但是您可以尝试使用masterclient.getsystemstate,它返回主程序所理解的ros图的状态。它包含系统状态中的所有主题。您可以迭代这些主题的所有发布者和订阅者以获得所有节点。
下面是一个未经测试的代码段,它应该允许您通过发布者和订阅者获取主题。

MasterClient masterClient = MasterClient(masterUri);
Response<SystemState> systemState = masterClient.getSystemState(GraphName.of("WHATEVER"));
Collection<TopicSystemState> topicList = systemState.getResult().getTopics();
for (String topic : topicList) {
    Set<String> publishers = topic.getPublishers();
    for (String publisher : publishers) {
        System.out.println(publisher);
    }
    Set<String> subscribers = topic.getSubscribers();
    for (String subscriber : subscribers) {
        System.out.println(subscriber);
    }
}

获取所有主题后,可以按

相关问题