Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions dimos/robot/all_blueprints.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@
"openarm-planner-coordinator": "dimos.robot.manipulators.openarm.blueprints:openarm_planner_coordinator",
"teleop-phone": "dimos.teleop.phone.blueprints:teleop_phone",
"teleop-phone-go2": "dimos.teleop.phone.blueprints:teleop_phone_go2",
"teleop-phone-go2-agentic": "dimos.robot.unitree.go2.blueprints.agentic.unitree_go2_agentic_phone:teleop_phone_go2_agentic",
"teleop-phone-go2-fleet": "dimos.teleop.phone.blueprints:teleop_phone_go2_fleet",
"teleop-quest-dual": "dimos.teleop.quest.blueprints:teleop_quest_dual",
"teleop-quest-piper": "dimos.teleop.quest.blueprints:teleop_quest_piper",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/usr/bin/env python3
# Copyright 2025-2026 Dimensional Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from dimos.core.coordination.blueprints import autoconnect
from dimos.robot.unitree.go2.blueprints.agentic.unitree_go2_agentic import unitree_go2_agentic
from dimos.teleop.phone.phone_extensions import SimplePhoneTeleop

teleop_phone_go2_agentic = autoconnect(
SimplePhoneTeleop.blueprint(),
unitree_go2_agentic,
).remappings(
[
(SimplePhoneTeleop, "cmd_vel", "tele_cmd_vel"),
]
)

__all__ = ["teleop_phone_go2_agentic"]
10 changes: 10 additions & 0 deletions dimos/teleop/phone/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,21 @@ Phone Browser ──WebSocket──→ Embedded HTTPS Server ──→ Phone

```bash
dimos run teleop-phone-go2 # Go2
dimos run teleop-phone-go2-agentic # Go2 agentic stack with phone override
dimos run teleop-phone # Generic ground robot
```

Open `https://<host-ip>:8444/teleop` on phone. Accept cert, allow sensors, connect, hold to drive.

## Agentic Go2 Override

`teleop-phone-go2-agentic` adds the phone controller to the full agentic Go2
stack. Phone commands are remapped into `MovementManager.tele_cmd_vel`, so
holding the phone teleop button cancels active navigation goals and temporarily
takes over velocity control. Release the button to stop sending manual commands
and allow autonomous navigation commands to resume after the movement manager's
teleop cooldown.

## Subclassing

| Method | Purpose |
Expand Down
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,7 @@ agents = [

web = [
"fastapi>=0.115.6",
"python-multipart>=0.0.27",
"sse-starlette>=2.2.1",
"uvicorn>=0.34.0",
"jinja2>=3.1.6",
Expand Down
7 changes: 6 additions & 1 deletion uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.