我尝试做的事情和实际做的事情的简短总结。
在我的项目中,我有两个简单的节点:一个用于收听和发布,另一个用于说和订阅。我分别将它们命名为 listenerNode 和 speakNode。
我想要完成的任务非常简单,我会让用户说“记住我”,这将被识别为关键字并发布到voiceCommandCallback
说话节点中的方法,这样我的机器人就可以说“好的,请说出你的名字”。然后,回到侦听节点,除了发布该关键字短语之外,它还将调用recognize_from_mic_with_dict()
您可以猜到的将使用名称字典运行的方法。
此recognize_from_mic_with_dict()
方法将侦听名称并将尝试将该名称发布到namesCallback()
侦听节点中,这是我检查发布的内容是实际名称还是只是胡言乱语的地方,在这种情况下,我会问用户重复他/她的名字并再次订阅,recognize_from_mic_with_dict()
以便它可以再次收听。
这听起来可能更复杂,但这是我能想到的实现这种“模式切换”的唯一方法。问题是,如果它听到胡言乱语,它会说“对不起,我没听清楚。请重复一遍!” 我想知道是否有办法让监听节点忽略机器人所说的任何内容,因为它试图从自己的句子中识别名字。