首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拯救MoveIt!八面图

拯救MoveIt!八面图
EN

Stack Overflow用户
提问于 2017-03-08 21:11:54
回答 1查看 664关注 0票数 0

我运行的是Ubuntu 14.04和ROS Indigo。我想访问通过MoveIt生成的OctoMap!并将其转换为标准OctoMap格式并保存/处理。下面这段代码应该可以做到这一点:

代码语言:javascript
复制
void cloud_cb(const moveit_msgs::PlanningScenePtr& input)
{
moveit_msgs::PlanningScene::Ptr my_planning_scene(new moveit_msgs::PlanningScene);
*my_planning_scene = *input;
moveit_msgs::PlanningSceneWorld my_world = (*my_planning_scene).world;
moveit_msgs::PlanningSceneWorld::Ptr real_map(&my_world);
octomap_msgs::OctomapWithPose octomap_pose_content = (*real_map).octomap;
octomap_msgs::OctomapWithPose::Ptr octomap_pose(&octomap_pose_content);
octomap_msgs::Octomap octomap_content = (*octomap_pose).octomap;

octomap::AbstractOcTree* my_map = octomap_msgs::binaryMsgToMap(octomap_content);
}

请原谅这些名字的混乱和缺乏想象力。它可以工作,直到转换成AbstractOcTree。当我执行catkin_make时,我会遇到很多引用未定义的错误,例如对octomath::Quaternion::Quaternion(octomath::Quaternion const&的引用。即使我包含了可用于octomap和octomath的所有头文件,错误仍然是一样的。我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-09 00:59:46

好吧,我的问题实际上很愚蠢:我没有包括OctoMap目录,也没有像http://wiki.ros.org/octomap中所说的那样在CMakeList中链接库。愚蠢的我。无论如何,我都会在这里发布我的解决方案。我不知道是否有更聪明/更快的方法,但这一种方法有效:

代码语言:javascript
复制
using namespace octomap;

void cloud_cb(const moveit_msgs::PlanningScenePtr& input)
{
// Extracting the MoveIt! planning scene world published by /move_group
moveit_msgs::PlanningScene::Ptr my_planning_scene(new moveit_msgs::PlanningScene);
*my_planning_scene = *input;
moveit_msgs::PlanningSceneWorld my_world = (*my_planning_scene).world;

// Extracting only the OctoMap
octomap_msgs::OctomapWithPose octomap_pose = my_world.octomap;
octomap_msgs::Octomap octomap = octomap_pose.octomap;

// Conversion from octomap_msgs to octomap
AbstractOcTree* my_abstract_map = octomap_msgs::msgToMap(octomap);

// Obtaining the actual OctoMap tree
OcTree* my_map = (OcTree*)my_abstract_map;
OcTree tree = *my_map;

tree.writeBinary("my_tree.bt"); //if you want to save the OcTree in a file
}

记住要包含所有需要的头文件,比如octomap/Conversions.h等等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42672307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档