homeskies / uw_common

Skills and non-robot dependent code
0 stars 0 forks source link

Map point of interest annotation #8

Closed nickswalker closed 4 years ago

nickswalker commented 4 years ago

Most navigation in @Home is to predefined locations, which we'll annotate on top of the robot's pgm map. We want the ability to:

There is no widely adopted standard for how to do this, so everyone rolls their own stack:

I think we should plan to leverage RWS (since homeskies/uw_fetch#2 seems to be going well) to serve an interface for live modifications, but how we represent, store and use the annotations in the rest of the system still needs to be resolved. And there still needs to be a way for developers to create and store annotations without an RWS instance or even ROS at all. I'm thinking:

nickswalker commented 4 years ago

I verified that Inkscape could work in this setting. Open it up, import the the PGM as a referenced image, resize the artboard to fit, then draw polygons. Use object properties to name them. Can put polygons on layers with different names (e.g. "rooms"). Poses can work as lines with custom markers on the ends. Doors as lines, though matching them with approach poses may mean manually matching their name with the door. All of this bakes to markup we can parse easily, and that we can show and edit in any other SVG friendly tools, including web browsers.

Screenshot from 2020-02-10 22-20-34

Tagging @yuqianjiang in case you want to follow whatever we develop here

nickswalker commented 4 years ago

After realizing that database systems already handle the basic geometric operations that we'd need for working with annotations at runtime, I started implementing map types in knowledge representation. Poses and points are working now as of https://github.com/utexas-bwi/knowledge_representation/commit/b9b3fe9154efd51a550c21ae7ad59beb2c2caeb1. The work for loading in annotations remains to be done.

I also found this photo I took during the 2019 competition showing @YuqianJiang working with BWI's tool to annotate an arena map, to attach some visual context for this stuff: 21

WxyElaine commented 4 years ago

I think the map annotator might probably depends on fetch_api, so I will develop it in the rws-app branch inside uw_fetch for now

nickswalker commented 4 years ago

Hm why?

WxyElaine commented 4 years ago

I’m thinking maybe we want some fetch-specific functions on the interface in the future. But for map annotation itself it shouldn’t rely on fetch stuff.