-
Notifications
You must be signed in to change notification settings - Fork 84
APP-8003 Add world state store service #695
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
proto/viam/service/worldobjectstore/v1/world_object_store.proto
Outdated
Show resolved
Hide resolved
Removing some folks from review while I tweak things to avoid noise. |
Was there a scope for this? Would be helpful to understand the thinking behind it |
Yes sorry, meant to add a link in the description. Here you go: https://docs.google.com/document/d/1ionvyBa7x3HZU_rwDPBvrAUrQjBrP6sJ10Z_xbBTue8/edit?tab=t.0#heading=h.tcicyojyqi6c The API design has been slightly tweaked based on testing @micheal-parks did, but for the most part things are the same. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks good to me from a code perspective based on what was decided on in the scope doc. I wonder though if it would be possible to put this under the app proto instead of the general service proto. I expect this API to change frequently and it seems like there is a lot more leniency towards making breaking changes to the App API as compared to resources
Fair point, I brought this up to steve and he suggested it could live here because it is a new service resource type, but we can mark it as experimental for now, and allow some level of leniency until we have published some Viam-supported visualization modules and are confident with the API. @micheal-parks has also been testing visualizations with the assumption that this is how the API will work, so we have some real-world proof of concepts to work from. I ended up writing the code to implement the I'd be happy to get some more opinions on this before moving forward, though, if you have anyone in mind. |
Note from @erh to use existing world object state |
…world-object-store-service
…viamrobotics/api into APP-8003-add-world-object-store-service
proto/viam/service/worldobjectstore/v1/world_object_store.proto
Outdated
Show resolved
Hide resolved
There are a few minor problems - and one bigger problem - with using the existing Minor issues:
The bigger issue is:
We could just make this a geometry list store if the minor issues are solved, but IMO it's still weird because geometries are only some of the things people visualize |
I noticed some of these issues and was thinking about how best to address them. We could flatten the world states into a single world state, then you have a single list of I may revert the changes, then we can sync over email to decide on this quickly. |
Updated per latest conversation:
|
Ok after reading deeper I understand more. I think initially I was just surprised by everything that was changing because that was not my read from the email for how the changes would need to be written. I think all we need to do here is add the metadata and UUID onto the GeometryInFrame object since PoseInFrame is a GeometryInFrame with a nil |
…viamrobotics/api into APP-8003-add-world-object-store-service
…world-object-store-service
Introducing a new service type, the
WorldStateStoreService
.This service will be used by visualization modules to return information about the machine's world object store to be rendered client-side.
List of changes:
Pose
message to include a labeluuid
andmetadata
to the commonPoseInFrame
messageGeometryInFrame
, which is similar to thePoseInFrame
message so we can use both consistentlyPoints
andLine
geometry types and added them to theoneof geometry_type
on theGeometry
messageWorldStateStoreService
with threerpc
s:ListWorldStateUUIDs
returns all world state objectuuid
sGetWorldStateObject
returns a world state object byuuid
oneof world_state_object
will be either aPoseInFrame
orGeometryInFrame
DoCommand
sends/receives arbitrary commandsScope doc: https://docs.google.com/document/d/1ionvyBa7x3HZU_rwDPBvrAUrQjBrP6sJ10Z_xbBTue8/edit?tab=t.0#heading=h.tcicyojyqi6c