【Nao-04】Naoqi Framework & Broker & Proxy & Modules
概述
尚在更新
一、NAOqi Framework
1. 什么是 NAOqi Framework
Naoqi 是运行在我们的机器人上并对机器人实现控制的主程序,而 Naoqi Framework 则是为 SoftBank Robotics 机器人所设计的编程框架。通过这个框架,我们可以解决我们对机器人的常见需求,包括:并行性、资源、同步和事件。
Naoqi Framwork 允许不同模块(运动、音频、视频)之间同构通信、同构编程以及同构信息共享。同时 Naoqi Framework 支持跨平台、跨语言。
2. 跨平台:
Naoqi Framwork 同时兼容 Windows, Linux 和 Mac,因此我们在 Windows, Linux 和 Mac 环境下都可以利用 Naoqi Framework 进行相关开发。
- Python:可以轻松地在电脑上运行代码。也可以直接在机器人上运行代码。
- C++:和 Python 不同的是,由于 C++ 是一种编译语言,因此如果想要在机器人上运行 C++ 代码的话,需要先要在目标操作系统上完成代码的编译,需要使用交叉编译工具来生成能在机器人操作系统上(Naoqi OS)运行的代码。
要使用 C++ 进行开发的话,请按照 C++ SDK 安装指南 以确保安装了所有所需的工具
3. 跨语言:
在机器人上运行的软件既可以用 Python 来开发,也可以用 C++,并且在两种语言上开发方法是完全相同的。
推荐初学者从 Python 开始学习,因为 Python 更好入门,进而更好更快的完成需求。 熟练的 C++ 开发人员应当花更多的时间来开发: 1. Python 中的 behavior 2. C++ 中的 Modules。
4. 分布式:
Naoqi Framework 的分布式主要体现在以下两点:
1. 一个实时的应用程序不仅可以是一个可执行文件,还可以是分布在几个机器人上的多个进程或模块。无论你选择哪一个,调用的方法都是一致的。
2. 使用一个机器人通过 IP 和端口将可执行文件连接到另一个机器人上时,调用来自其它可执行文件的 API 方法与调用本地的方法是完全一致的。
在连接时 Naoqi 会自动选择使用快速直连(LPC)还是远程呼叫(RPC)。
5. 如何使用:
Introspection
Introspection 是机器人 API、能力、监控和被监控功能的基础,通过 Introspection 机器人可以知道自身可用的所有 API 函数,若是卸载一个库文件,那么机器人就会自动删除相应的 API 函数,同时,在 module 中所定义的函数可以通过 BIND_METHOD 来将其添加到 API 中。(BIND_METHOD 定义于 almodule.h)
如果你通过 BIND_METHOD 绑定了一个函数,尽管这个函数只有三行,你也将受益于以下几点:
- 这个函数既可以在 C++ 中调用,也可以在 Python 中调用。(Naoqi Framework 的跨语言特性)
- 可以知道这个函数是否被调用了。
- 不仅可以在本地调用这个函数,还可以通过远程的方式调用该函数。(Naoqi Framework 的分布式特点)
- 可以在函数中使用 wait, stop, isRunning 函数。
Naoqi 进程
在机器上运行的 Naoqi 可执行文件其实相当于一个代理人,当 Naoqi 启动时,它将会加载一个名为 autoload.ini 的首选项文件,并从中读取应当加载哪些库,每一个库都包含了一个或多个模块,这些模块都使用代理的方式来对外开放。
而且这个代理提供了查找功能,这样就方便我们在树或者说是 API 网络上找到对应的方法。
每当加载一个模块的时候,都会建立一棵方法树来与这个模块进行关联,并且将模块与代理也进行关联。
二、Broker
Broker 其实就是一个对象,这个对象提供了:
- 目录服务:允许你查找所有的模块和方法。
- 网络访问:允许附加模块的方法从外部进程调用。
在大多数时间里,我们并不需要去关注这个代理,因为它们只是在透明地执行他们的工作,来帮助你写出具有分布式特性的函数。
三、Proxy
博主已弃文而去
四、Modules
博主已弃文而去
- 感谢你赐予我前进的力量