为了方便系统存储和处理,使用八叉树的方法进行数学建模,大大减小了系统的存储空间以及缩短了处理时长。我们使用octomap_sever 包去生成八叉树图。octomap_sever能加载3D 地图,并以紧凑的二进制格式将其分发到其他节点。它还允许增量构建3D OctoMaps, 并在节点octomap_saver 中提供地图保存。 当八叉树图生成之后,我们需要对生成的八叉树进行截取处理,去掉地面且去掉高千Roban 机器人身高的部分。首先借助octomap_sever 中的静态八叉树追踪的roslaunch, 如下图所示,我们可以直接将点云的二进制文件转化成八叉树:在转换的过程中需要自行配置参数,以截取合适的图层。
截取前的八叉树图
例如,通过考虑机器人的身高以及去除地面的影响,我们所选的roslaunch 参数如下所示:
之后,如下图所示,我们能够得到截取之后的八叉树图:
截取后的八叉树图
与此同时,我们可以在map 主题中订阅生成的平面地图,如下图所示:
生成的平面图
图中黑色部分代表不可进入的区域,白色部分代表镜头朝向(由千加载的是静态地图,此区域不会随着当前镜头的移动而改变,是由创建地图时最后的镜头位置所决定的),深绿色部分代表可以进入的区域。至此,如下图所示,得到了可以进行路径分析的平面地图,同时主题/map 由octomap_talker 节点发布:
rqt_graph 界面
|