膨胀(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