Skip to main content

Introduction

Ray casting for z^\hat z

For an occupancy grid with cell size cc:
  1. Transform the beam direction: θk=θt+ϕk\theta_k = \theta_t + \phi_k.
  2. Step along the ray with DDA or Bresenham’s algorithm until:
    • The ray reaches an occupied cell (the endpoint).
    • The distance exceeds zmax⁡z_{\max}.
Return the Euclidean distance from the sensor origin.

Pseudocode

The inverse sensor model

To update a cell’s occupancy, we need p(mi∣zt,xt)p(m_i \mid z_t, \mathbf x_t). The simplified inverse beam model applies these updates:
  • For cells before the measured endpoint, increase the probability that they are free.
  • For the cell at the endpoint, increase the probability that it is occupied if z<zmax⁡z < z_{\max}.
  • Do not update cells beyond the endpoint.
In log-odds form, the update is: Lt(i)=Lt−1(i)+ℓi−L0,L_t(i) = L_{t-1}(i) + \ell_i - L_0, where ℓi=log⁡p(mi=1∣zt,xt)1−p(mi=1∣zt,xt),L0=log⁡p(mi=1)1−p(mi=1).\ell_i = \log \frac{p(m_i=1 \mid z_t, \mathbf x_t)}{1 - p(m_i=1 \mid z_t, \mathbf x_t)}, \quad L_0 = \log \frac{p(m_i=1)}{1 - p(m_i=1)}. Recover the probability with: p(mi=1)=11+e−Lt(i).p(m_i=1) = \frac{1}{1 + e^{-L_t(i)}}.

Approximate inversion

Exact inversion requires: p(mi∣zt,xt)∝p(zt∣mi,xt)p(mi),p(m_i \mid z_t, \mathbf x_t) \propto p(z_t \mid m_i, \mathbf x_t) p(m_i), but coupling among cells makes the calculation intractable. The beam-based inverse model is a heuristic that is consistent with the forward geometry. —>

Occupancy updates with multiple beams

For each beam:
  1. Use ray tracing to find the traversed cells.
  2. Update the free cells: L+=ℓfreeL \mathrel{+}= \ell_{\text{free}}.
  3. If the beam hits an endpoint, update that cell: L+=ℓoccL \mathrel{+}= \ell_{\text{occ}}.
Clip the log-odds values to avoid saturation. Key references: (Qi et al., 2016)

References

  • Qi, C., Su, H., Mo, K., Guibas, L. (2016). PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation. arXiv [cs.CV].