Недавно я изучаю структуру naoqi для робота nao. Ниже приведен пример доступа к настроенному модулю в его документации.
(https://community.aldebaran-robotics.com/doc/1-14/dev/cpp/examples/core/helloworld/example.html#cpp-examples-helloworld)
#include <iostream>
#include <alerror/alerror.h>
#include <alcommon/alproxy.h>
int main(int argc, char* argv[]) {
if(argc != 2)
{
std::cerr << "Wrong number of arguments!" << std::endl;
std::cerr << "Usage: testhelloworld NAO_IP" << std::endl;
exit(2);
}
const std::string robotIP = argv[1];
int port = 9559;
try {
boost::shared_ptr<AL::ALProxy> testProxy
= boost::shared_ptr<AL::ALProxy>(new AL::ALProxy("HelloWorld", robotIP, port));
/** Call the sayHello method from the module using its bound name.
* Since it returns nothing, use the callVoid method.
*/
testProxy->callVoid("sayHello");
testProxy->callVoid("sayText", std::string("This is a test."));
int sentenceLength = testProxy->call<int>("sayTextAndReturnLength",
std::string("This is another test"));
std::cout << "Sentence length is " << sentenceLength << std::endl;
}
catch (const AL::ALError& e) {
std::cerr << e.what() << std::endl;
}
}
Этот код использует «прокси» для вызова некоторых функций, определенных в другом модуле. И модуль загружается в другом процессе. Поэтому я думаю, что это должно иметь дело с проблемой RPC. Кто-нибудь знает о базовом механизме (например, CORBA или XML-RPC)? Я пытаюсь реализовать подобный механизм в моем собственном проекте. Любая подсказка будет в порядке. Заранее спасибо!
Задача ещё не решена.
Других решений пока нет …