Я всегда использую KDL-парсер для генерации KDL :: Tree из файла URDF.К сожалению, на этот раз из-за ограничений проекта я не могу использовать анализатор KDL.
Так что, в качестве альтернативы, я подумал о сериализации и десериализации экземпляра KDL::Tree
в C ++.Я использовал модуль ускоренной сериализации следующим образом:
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);
^
Обратите внимание, что мне просто нужна модель скелета (без какой-либо графики) робота, так как мне нужно только выполнять кинематику.Может кто-нибудь быстро упомянуть об обходном пути, пожалуйста?