This is an old revision of the document!
Table of Contents
Modelling of Supermarket shelves
The shelves are composed of several parts, and we have meshes in different levels of complexity.
Finding a single reference frame for the parts of the shelves is hard because different actors that deal with the meshes have different needs:
- modelling: Prefer to have the reference frame at the center of the bounding box (can be automated)
- perception: prefers a reference frame placed on an easily detectable part of the object
- building the shelf from perceived data: would prefer a reference frame at the back of the shelf parts
So after discussing this with Andrei, Georg, and Alexis, our current proposal is the following:
- Shelf-parts get modelled and the frame of reference (origin) gets placed at the center of the bounding box.
- The orientation of that reference frame is chosen such that it is identity when placed on the real world. In practical terms, all the shelf floors will have the same orientation as the shelf system.
- We will extend the object-state-publisher to publish static-transforms for additionally defined frames that are useful for the other purposes
Shelf systems
The origin of the mesh of the shelf system will be on the center of the bounding box, but the shelf system will have an additional frame, placed on the lower-left-front corner, as can be seen in the next image (click to enlarge):
Shelf floors
Each shelf floor will also have an additional reference frame placed at the front-left corner, according to the following image (click to enlarge):
Map origin in Mockup Store
We will use a corner of the room, because it is an unmovable feature that we can find in the laser-scans, and we can measure from it in real life.
The origin should be the left-most corner of the back-wall, where it connects to the column next to the door: (Click on the image for full-size)
TF tree
What follows is the first suggestion by Alexis, please give me feedback. I am aware that it might require calculating some inverse-frames when saving the models from CAD or Unreal, but at the moment it seems like a good tradeoff to have a little complexity there, in order to get easy to mentally verify numbers for the perception of barcodes and separators.
Map to Shelf system
Each shelf system gets a frame relative to map.
map
→ shelf_system_0_lf_corner
→ shelf_system_1_lf_corner
→ shelf_system_2_lf_corner
→ shelf_system_3_lf_corner
Each shelf system
shelf_system_lf_corner → shelf_system_origin
shelf_system_lf_corner → shelf_floor_lf_corner
shelf_floor_lf_corner → shelf_floor_origin
shelf_floor_lf_corner → barcode_x
shelf_floor_lf_corner → separator_x



