膨胀(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狭窄通道内.

点击(此处)折叠或打开

  1. inflation_layer:
  2.   enabled: true
  3.   cost_scaling_factor: 0.5 # exponential rate at which the obstacle cost drops off (default: 10)
  4.   inflation_radius: 1.35 # 通道才1.2米.
  5. 实测出来竟然在通道则最中间通过. 太神奇了.

参考 https://blog.csdn.net/u013468614/article/details/85602141
01-08 15:04