我总是使用KDL parser从URDF文件生成KDL::Tree。不幸的是,这一次由于项目限制,我无法使用KDL解析器。
因此,或者,我想到了在C ++中序列化和反序列化KDL::Tree
实例。我通过以下方式使用了boost序列化模块:
void save_tree(const Tree& s, const char* filename)
{
std::ofstream ofs(filename);
boost::archive::text_oarchive oa(ofs);
oa << s;
}
void restore_tree(Tree& s, const char* filename)
{
std::ifstream ifs(filename);
boost::archive::text_iarchive ia(ifs);
ia >> s;
}
save_tree(my_tree, filename.c_str());
Tree new_tree;
restore_tree(new_tree, filename.c_str());
由于类Tree
没有序列化方法,因此无法正常工作。
serialize_kdl_tree.cpp:72:11: required from here
/usr/include/boost/serialization/access.hpp:118:9: error: ‘class KDL::Tree’ has no member named ‘serialize’
t.serialize(ar, file_version);
^
请注意,我只需要机器人的骨架模型(没有任何图形),因为我只需要执行运动学即可。有人可以快速提及解决方法吗?