In an effort to get the Autoware.Auto implementation of NDT as high quality as possible, @yunus.caliskan and I have been hard at work coming up with an initial design and supporting documents for NDT. You can find them listed below:
- Literature review
- High level design
- Failure analysis
- APIs and architecture
- Psuedocode/Review of Autoware.AI implementation
- Metrics
Of these, I would 100% recommend anyone planning on working on NDT take a look at our currently proposed API and architecture (point 4, work in progress). The psuedocode (5), and high level localization architecture/design (2) might also be useful to skim through for a higher-level overview.
Further, if anyone has suggestions for improvements in any of these documents, those are super welcome too.
Finally, based on the proposed API (which is prospective; feel free to diverge or make or suggest changes), I would like to suggest the following work packages or parts of the proposed architecture that any one person can grab:
- Map publisher (pcd -> publish map)
- Map (format) validation
-
PointCloud2
-> NdtRepresentation
- Adapt voxel grid to make a plain
NdtRepresentation
- Some kind of simple
Point
representation for scan
- Newton’s method
- Simple line search
- Gradient and hessian computation in
P2D optimization problem
LocalizerBase
- initial guess stuff
LocalizerBaseNode
NdtLocalizer
NdtLocalizerNode
Where I would guess the first 11 or so items can be done independently, and the last two should be done jointly in the final integration.
For the map-related items (1-3), I would like to suggest the following format in PointCloud2
(there’s no other good place to document this):
// PointCloud2
fields = {
// centroid
PointField{"x", 8, FLOAT64, 1},
PointField{"y", 8, FLOAT64, 1},
PointField{"z", 8, FLOAT64, 1},
// covariance, row major
PointField{"cov_xx", 8, FLOAT64, 1},
PointField{"cov_xy", 8, FLOAT64, 1},
PointField{"cov_xz", 8, FLOAT64, 1},
PointField{"cov_yy", 8, FLOAT64, 1},
PointField{"cov_yz", 8, FLOAT64, 1},
PointField{"cov_zz", 8, FLOAT64, 1},
}
@Brian_Holt @Antonis_Skardasis @esteve If you could forward this information to anyone else who you know is attending the hackathon, that would be great!