Closed nickswalker closed 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.
Tagging @yuqianjiang in case you want to follow whatever we develop here
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:
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
Hm why?
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.
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: