我正在与机器人NAO的真实的应用程序工作,我需要快速读取关节传感器,从ALMemory获取数据的功能太慢了。我已经看到了modue almemoryfastaccess的例子,但是当我运行. exe时出现了错误。
我已经阅读了有关almemoryfastaccess模块的信息,但当我尝试使用函数ConnectToVariables(getParentBroker(),fSensorKeys,false)连接到传感器时,我在函数getDataPtr中收到以下错误:“未捕获的错误指针序列化未实现”。有人在这方面有工作吗?谢谢。
我不能从ALMemory中获取数据,因为它对我的应用程序来说太慢了。
代码是这样的。它编译得很好,但当我运行.exe时,出现错误:
#include <almemoryfastaccess/almemoryfastaccess.h>
#include <boost/shared_ptr.hpp>
#include <string>
#include <vector>
#include <alcommon/albroker.h>
#include <qi/log.hpp>
using namespace AL;
using namespace std;
boost::shared_ptr<AL::ALMemoryFastAccess> fMemoryFastAccess;
vector<string> fSensorKeys;
fSensorKeys.clear();
fSensorKeys.resize(3);
fSensorKeys[0] = "Device/SubDeviceList/HeadPitch/Position/Sensor/Value";
fSensorKeys[1] = "Device/SubDeviceList/HeadYaw/Position/Sensor/Value";
fSensorKeys[2] = "Device/SubDeviceList/LAnklePitch/Position/Sensor/Value";
fMemoryFastAccess->ConnectToVariables(getParentBroker(), fSensorKeys, false); //in this line the error appears.
1条答案
按热度按时间ff29svar1#
这个“快速访问”API仅在您的模块与NAOqi在同一进程中运行时才有效。
当从远程客户端(此处为Windows PC)运行代码时,不可能实现实时数据收集。
有替代方案:
qi_create_lib
的用法)。我不知道如何找到跨工具链。您可能需要联系支持。ALMemory::getListData
降低轮询数据的频率(例如每隔100ms)qicli info --show-doc ALMemoryWatcher
来戳到名为ALMemoryWatcher
的模块。它捕获实时数据,但您需要以较低的频率批量收集数据。