feat(nav): add clicked_point input to replanning planner and rerun clicking blueprint #1394
Merged
spomichter merged 9 commits intodevfrom Mar 4, 2026
Merged
feat(nav): add clicked_point input to replanning planner and rerun clicking blueprint #1394spomichter merged 9 commits intodevfrom
spomichter merged 9 commits intodevfrom
Conversation
leshy
previously approved these changes
Mar 1, 2026
Contributor
Greptile SummaryThis PR adds Key changes:
Implementation quality:
Confidence Score: 5/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant Rerun as Rerun Viewer
participant LCM as LCM Transport
participant Planner as ReplanningAStarPlanner
participant Handler as GlobalPlanner.handle_goal_request
Rerun->>LCM: publish PointStamped to /clicked_point
LCM->>Planner: clicked_point.subscribe()
Planner->>Planner: pt.to_pose_stamped()
Note over Planner: converts PointStamped to PoseStamped<br/>with identity quaternion [0,0,0,1]
Planner->>Handler: handle_goal_request(pose_stamped)
Note over Handler: processes navigation goal
Last reviewed commit: 5f9845e |
12e95bf to
63e1d53
Compare
subscribe to PointStamped clicks from rerun viewer, convert to
PoseStamped via .to_pose_stamped() and feed to goal handler.
wire with: LCMTransport("/clicked_point", PointStamped)
DIM-643
runs Go2 smart blueprint with viewer_mode=none, connects to custom rerun viewer on gRPC port 9877, wires /clicked_point LCM transport to planner's clicked_point input. DIM-643
supports --simulation (mujoco), --robot-ip, --viewer-url args
rr.init + rr.connect_grpc must happen before the bridge starts, otherwise rerun disables itself with no active sink
the bridge calls rr.init('dimos') in start(). calling rr.init before
that resets the recording stream. now we connect_grpc after start()
so the bridge's rr.init creates the stream, then we add our gRPC sink.
the bridge runs in a worker subprocess (multiprocessing), so its rr.init() only affects that subprocess. the main process needs its own rr.init() + connect_grpc() for data to reach the viewer. also adds --replay flag for headless testing.
adds connect mode to rerun bridge — connects to an external viewer via grpc instead of spawning a new one. needed for custom viewers like the click-to-navigate fork. example script now works like a normal blueprint. DIM-643
proper blueprint registered in all_blueprints. run with: dimos run unitree-go2-click-nav --simulation --viewer-backend rerun-connect adds rerun-connect viewer backend that connects to an external rerun viewer (custom fork) instead of spawning a new one. DIM-643
63e1d53 to
5df284c
Compare
Comment on lines
+31
to
+35
| .transports( | ||
| { | ||
| ("clicked_point", PointStamped): LCMTransport("/clicked_point", PointStamped), | ||
| } | ||
| ) |
Contributor
There was a problem hiding this comment.
No need for this since it's the default.
Suggested change
| .transports( | |
| { | |
| ("clicked_point", PointStamped): LCMTransport("/clicked_point", PointStamped), | |
| } | |
| ) |
Contributor
Author
There was a problem hiding this comment.
just for visability
paul-nechifor
approved these changes
Mar 3, 2026
RadientBrain
pushed a commit
to RadientBrain/dimos
that referenced
this pull request
Mar 4, 2026
…icking blueprint (dimensionalOS#1394) * feat(nav): add clicked_point input to replanning planner subscribe to PointStamped clicks from rerun viewer, convert to PoseStamped via .to_pose_stamped() and feed to goal handler. wire with: LCMTransport("/clicked_point", PointStamped) DIM-643 * feat(examples): add rerun click-to-navigate test script runs Go2 smart blueprint with viewer_mode=none, connects to custom rerun viewer on gRPC port 9877, wires /clicked_point LCM transport to planner's clicked_point input. DIM-643 * fix(examples): add --simulation flag to click test supports --simulation (mujoco), --robot-ip, --viewer-url args * fix(examples): init rerun and connect grpc before coordinator.start rr.init + rr.connect_grpc must happen before the bridge starts, otherwise rerun disables itself with no active sink * fix(examples): connect grpc after bridge start to avoid double rr.init the bridge calls rr.init('dimos') in start(). calling rr.init before that resets the recording stream. now we connect_grpc after start() so the bridge's rr.init creates the stream, then we add our gRPC sink. * fix(examples): init rerun in main process before connect_grpc the bridge runs in a worker subprocess (multiprocessing), so its rr.init() only affects that subprocess. the main process needs its own rr.init() + connect_grpc() for data to reach the viewer. also adds --replay flag for headless testing. * feat(rerun): add viewer_mode=connect for external viewer support adds connect mode to rerun bridge — connects to an external viewer via grpc instead of spawning a new one. needed for custom viewers like the click-to-navigate fork. example script now works like a normal blueprint. DIM-643 * fix(examples): use build().loop() per readme convention * feat(blueprints): add unitree-go2-click-nav blueprint proper blueprint registered in all_blueprints. run with: dimos run unitree-go2-click-nav --simulation --viewer-backend rerun-connect adds rerun-connect viewer backend that connects to an external rerun viewer (custom fork) instead of spawning a new one. DIM-643
RadientBrain
pushed a commit
to RadientBrain/dimos
that referenced
this pull request
Mar 4, 2026
…icking blueprint (dimensionalOS#1394) * feat(nav): add clicked_point input to replanning planner subscribe to PointStamped clicks from rerun viewer, convert to PoseStamped via .to_pose_stamped() and feed to goal handler. wire with: LCMTransport("/clicked_point", PointStamped) DIM-643 * feat(examples): add rerun click-to-navigate test script runs Go2 smart blueprint with viewer_mode=none, connects to custom rerun viewer on gRPC port 9877, wires /clicked_point LCM transport to planner's clicked_point input. DIM-643 * fix(examples): add --simulation flag to click test supports --simulation (mujoco), --robot-ip, --viewer-url args * fix(examples): init rerun and connect grpc before coordinator.start rr.init + rr.connect_grpc must happen before the bridge starts, otherwise rerun disables itself with no active sink * fix(examples): connect grpc after bridge start to avoid double rr.init the bridge calls rr.init('dimos') in start(). calling rr.init before that resets the recording stream. now we connect_grpc after start() so the bridge's rr.init creates the stream, then we add our gRPC sink. * fix(examples): init rerun in main process before connect_grpc the bridge runs in a worker subprocess (multiprocessing), so its rr.init() only affects that subprocess. the main process needs its own rr.init() + connect_grpc() for data to reach the viewer. also adds --replay flag for headless testing. * feat(rerun): add viewer_mode=connect for external viewer support adds connect mode to rerun bridge — connects to an external viewer via grpc instead of spawning a new one. needed for custom viewers like the click-to-navigate fork. example script now works like a normal blueprint. DIM-643 * fix(examples): use build().loop() per readme convention * feat(blueprints): add unitree-go2-click-nav blueprint proper blueprint registered in all_blueprints. run with: dimos run unitree-go2-click-nav --simulation --viewer-backend rerun-connect adds rerun-connect viewer backend that connects to an external rerun viewer (custom fork) instead of spawning a new one. DIM-643
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
adds
clicked_point: In[PointStamped]toReplanningAStarPlanner. subscribes and converts to PoseStamped via.to_pose_stamped(), feeds to existing goal handler.what
3 lines of code in the planner module — no new modules, no new blueprints, no custom transports.
why
the rerun viewer fork (dimensionalOS/dimos-viewer#1) publishes click coordinates as PointStamped to
/clicked_pointvia LCM. this lets the planner receive those clicks as navigation goals.usage
any blueprint using the planner can wire it:
To run with rerun manually compiled binary:
dimos --simulation --viewer-backend rerun-connect run unitree-go2-click-navdepends on
part of DIM-643