通过对比提供的ROS全覆盖规划算法:确定Boustrophedon Planner和Grid-based Local Energy Minimization Planner具备过程应用价值,这里选择后者进行重点研究。
参考:
官网 ipa_room_exploration - ROS Wiki
Indoor Coverage Path Planning: Survey, Implementation, Analysis
算法说明与翻译:
// Function that plans a coverage path trough the given map, using the method proposed in
//
// Bormann Richard, Joshua Hampp, and Martin H?gele. "New brooms sweep clean-an autonomous robotic cleaning assistant for
// professional office cleaning." Robotics and Automation (ICRA), 2015 IEEE International Conference on. IEEE, 2015.
//
// This method discretizes the free space, that should be covered, into several nodes. Each of the node has to be covered, in order
// to cover the whole area. The path starts at the node that is closest to the given starting position and chooses the next node as
// the one that minimizes the energy functional, provided in the paper above. To do this here the following steps are done.
// I. The free area gets discretized into several nodes, using the given cell_size parameter, starting at the upper left white pixel of
// the room. Whenever the overlaid grid then hits a white pixel, this point is added as a node. Then after all nodes have been found
// the direct 8 neighbors for each node are found, which will be used later in the energy functional.
// II. After all nodes have been found, the coverage path is computed.
// i. The start node gets chosen as the one that is closest to the given starting position and is an edge of the given room, i.e
// a node that has less than 4 neighbors.
// ii. The next node is then iteratively chosen from the directly neighboring ones, by finding the node that minimizes the given
// energy functional and wasn't visited before.
// iii.If in the neighborhood no accessible point could be found, search for the next node in the whole grid to continue the path.
// iv. This procedure is repeated, until all created nodes have been covered.
// III. If wanted use the given vector from the robot middlepoint to the fov middlepoint to map the fov poses to the
// robot footprint poses. To do so simply a vector transformation is applied. If the computed robot pose is not in the
// free space, another accessible point is generated by finding it on the radius around the fov middlepoint s.t.
// the distance to the last robot position is minimized. If this is not wanted one has to set the corresponding
// Boolean to false (shows that the path planning should be done for the robot footprint).
//
使用Bormann-Richard、Joshua Hampp和Martin H?gele提出的方法,通过给定的地图规划覆盖路径的函数。“新型扫帚清扫专业办公室清洁的自动机器人清洁助手。”机器人与自动化(ICRA),2015年IEEE国际会议。IEEE,2015。
该方法将应该覆盖的自由空间离散为几个节点。为了覆盖整个区域,每个节点都必须被覆盖。路径从最接近给定起始位置的节点开始,并选择下一个节点作为使能量函数最小化的节点,如上文所述。为此,请执行以下步骤。
I.使用给定的cell_size参数,从房间的左上角白色像素开始,将空闲区域离散为几个节点。每当覆盖的网格碰到一个白色像素时,就会将该点添加为节点。然后,在找到所有节点后,找到每个节点的直接8个邻居,这将在稍后的能量函数中使用。
II、 在找到所有节点之后,计算覆盖路径。
i.起始节点被选择为最接近给定起始位置并且是给定房间的边缘的节点,即具有少于4个邻居的节点。
ii.然后通过找到使给定能量函数最小化并且以前没有访问过的节点,从直接相邻的节点中迭代地选择下一个节点。
iii.如果在邻域中找不到可访问点,则在整个网格中搜索下一个节点以继续该路径。
iv.重复此过程,直到所有创建的节点都被覆盖为止。
III、 如果需要,使用从机器人中点到中心凹中点的给定矢量将中心凹姿态映射到机器人足迹姿态。要做到这一点,只需应用矢量变换。如果计算的机器人姿势不在自由空间中,则通过在中心凹中点s.t周围的半径上找到另一个可访问点来生成另一个点。到最后一个机器人位置的距离最小化。如果不需要,则必须将相应的布尔值设置为false(表明应该为机器人足迹进行路径规划)。