我正在尝试使用rosjava获取所有正在运行的rosnode的列表。有人知道我是怎么做到的吗?我对rosjava是个新手,不幸的是文档并不是很有帮助。
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); } }
获取所有主题后,可以按
1条答案
按热度按时间kuuvgm7e1#
目前,无法直接获取节点。但是您可以尝试使用masterclient.getsystemstate,它返回主程序所理解的ros图的状态。它包含系统状态中的所有主题。您可以迭代这些主题的所有发布者和订阅者以获得所有节点。
下面是一个未经测试的代码段,它应该允许您通过发布者和订阅者获取主题。
获取所有主题后,可以按