公司有几个nao机器人,主要是挂载语音识别合成等功能为了对外演示之用。
最近几天帮忙修改一个功能时看了nao的文档,地址如下:
http://doc.aldebaran.com/2-1/getting_started/helloworlds.html
nao机器人的系统也是基于linux的,其设计思路跟ROS有很多类似的地方,可以对照着学习加深理解。
ROS中的主要概念有节点(node),主题(topic),消息(message),服务(serveice)。除此之外,还有一个中心节点,就是启动时运行的roscore,负责维护已经启动的节点,维护各节点之间的消息传递等。
对应到nao机器人的naoqi系统上,首先它也有一个主节点即Broker,默认的端口就是本机IP,端口9559。而机器人的具体一个个功能节点,称之为module,如果我们要在自己的程序中调用机器人内置的module或第三方的module,只需要连接上主Broker,并且用Proxy实例化这个module就可以,这里说实例化未必准确,感觉类似PRC协议的远程调用。
那么我们想开发一个module并运行,该如何处理?
其实很方便,只要继承module就可以开发一个实现自己功能的module,然后创建一个Broker并将上面提到的主broker指定为,这个Broker的父Broker就可以,这样当你运行这个broker之后,你的broker会负责将本module注册到主broker当中。使用这个module的方式也和使用nao内置的module没有