Support connecting to flowstate bridge without ssh or port forwarding #62
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is initial work to make it easier for third party ROS developers to develop ROS-based HMIs for flowstate. This allows a local ROS node to subscribe to flowstate interfaces published by
flowstate_ros_bridge.To test:
Start a solution from flowstate portal.
Build and sideload new
flowstate_ros_bridge:On the flowstate portal, add
flowstate_ros_bridgeservice to the solution.Build and run
flowstate_credentials_proxy:Start
rmw_zenohd, telling it to connect to the local proxy.Try subscribing to flowstate topics
How it works
The updated
flowstate_ros_bridgelistens on websocket on a port given by flowstate in the runtime context. If enabled in a project, flowstate will forward connections towww.endpoints.{project}.cloud.goog/onprem/client/{cluster}/api/resourceinstances/{service}to the service. This allows HMIs to connect to flowstate without being on the same LAN or using ssh/port-forwarding.However, the endpoints exposed by flowstate is protected, we cannot connect zenoh directly to it as it does not support flowstate authentication.
flowstate_credentials_proxystarts a websocket proxy that injects the correct auth token.Caveats
rmw_zenoh_cppis supported and it must connect to the local proxy.Next Steps
flowstate_ros_bridgeto local side, we will use the service assets to expose a subset of intrinsic pubsub instead. This should allow all rmw to be supported.flowstate_ros_bridgewill do everythingflowstate_credentials_proxyis doing and publish on flowstate interfaces.