# Autoware Hackathon - London

**URL:** <https://discourse.openrobotics.org/t/autoware-hackathon-london/10270>\
**Category:** Autoware\
**Created:** [August 13, 2019, 1:52pm UTC](https://discourse.openrobotics.org/t/autoware-hackathon-london/10270 "2019-08-13T13:52:51Z")\
**Posts on this page:** 1\
**Showing post:** 9

<div class="post-metadata">

**Author:** ![cho3](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/cho3/32/3714_2.png) [@cho3](https://discourse.openrobotics.org/u/cho3)\
**Post date:** [September 23, 2019, 7:18pm UTC](https://discourse.openrobotics.org/t/autoware-hackathon-london/10270/9 "2019-09-23T19:18:07Z")

</div>

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:

1. [Literature review](https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto/merge_requests/81)
2. [High level design](https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto/merge_requests/90)
3. [Failure analysis](https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto/blob/master/src/localization/ndt/design/ndt_failure_analysis.md)
4. [APIs and architecture](https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto/merge_requests/94/diffs)
5. [Psuedocode/Review of Autoware.AI implementation](https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto/merge_requests/92/diffs)
6. [Metrics](https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto/merge_requests/93)

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](https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto/merge_requests/94/diffs) (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:

1. Map publisher (pcd → publish map)
2. Map (format) validation
3. `PointCloud2` → `NdtRepresentation`
4. Adapt voxel grid to make a plain `NdtRepresentation`
5. Some kind of simple `Point` representation for scan
6. Newton’s method
7. Simple line search
8. Gradient and hessian computation in `P2D optimization problem`
9. `LocalizerBase`
10. initial guess stuff
11. `LocalizerBaseNode`

* * *

1. `NdtLocalizer`
2. `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):

```auto
// 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!

---

_[View the full topic](https://discourse.openrobotics.org/t/autoware-hackathon-london/10270)._
