膨胀(inflation)为被占据栅格(障碍物)按照距离向其周边栅格传播的过程。按照栅格对机器人的影响,可分为5类:
1. “Lethal”代价表明该栅格包含障碍物,如果机器人的中心在此类栅格中,则机器人发生碰撞。
2. “Inscribed”代价表明某栅格距离机器人小于机器人本体的内切圆,如果机器人中在此类栅格中,则机器人肯定发生碰撞。
3. “Possibly circumscribed” 代价与“Inscribed”代价相似,但是其依据为机器人本体的外接圆的半径。当机器人在此类栅格中时,很有可能发生碰撞。
4. “Freespace”代价为零,在此类栅格中,机器人绝对不会发生碰撞。
5. “Unknown”代价。
除此之外的其它代价都介于“Freespace”代价与"Possibly circumscribed"代价之间。
高斯膨胀函数:
exp(-1.0 * cost_scaling_factor * (distance_from_obstacle - inscribed_radius)) * (costmap_2d::INSCRIBED_INFLATED_OBSTACLE - 1)
其中,costmap_2d::INSCRIBED_INFLATED_OBSTACLE 为 254. NOTE: 因为 cost_scaling_factor is multiplied 被乘上负号, 所以增大该因子,将减小障碍物对周围栅格的影响
所以我的送货机器人配置, 在JY狭窄通道内.
-
inflation_layer:
-
enabled: true
-
cost_scaling_factor: 0.5 # exponential rate at which the obstacle cost drops off (default: 10)
-
inflation_radius: 1.35 # 通道才1.2米.
-
实测出来竟然在通道则最中间通过. 太神奇了.
参考 https://blog.csdn.net/u013468614/article/details/85602141
阅读(1915) | 评论(0) | 转发(0) |