RoGo-Ops
RoGo-Ops 是机器人的运维与监控平台,当前版本通过 Python + Flask + WebRTC 实现。
架构
rogo-ops 下的 web_monitor 是一个基于 Flask 的 Python 应用,演示了如何通过 P2P 控制机器人。
技术栈
- Backend: Python Flask
- WebRTC:
unitree_webrtc_connect(基于 aiortc) - Frontend: HTML/JS (Simple Dashboard)
核心功能
- 视频流: 720p 实时回传
- 状态订阅:
sportmodestate(运动状态)lowstate(底层电机/电池)multiplestate(音量/灯光)
- 控制指令:
- 运动控制 (Move, Stand, Sit, etc.)
- VUI 控制 (TTS, Volume, Light)
API 端点
该 Demo 提供了一套 HTTP API 用于从前端控制机器人:
| 方法 | 路径 | 描述 |
|---|---|---|
| GET | /video_feed | 获取 MJPEG 视频流 |
| GET | /api/detailed_status | 获取机器人详细状态 (IMU, 电池, 关节) |
| POST | /api/command/<cmd> | 发送预定义指令 (stand, sit, dance, etc.) |
| POST | /api/move | 发送速度指令 {x, y, z} |
| POST | /api/speak | 发送 TTS 语音指令 |
| POST | /api/vui/color | 设置 LED 灯效 |
关键代码实践
连接逻辑位于 demos/web_monitor/app.py:
python
# 连接机器人
state.conn = UnitreeWebRTCConnection(WebRTCConnectionMethod.LocalSTA, ip=ROBOT_IP)
await state.conn.connect()
# 订阅数据通道
state.conn.datachannel.pub_sub.subscribe(RTC_TOPIC['LF_SPORT_MOD_STATE'], on_sportmodestate)
state.conn.datachannel.pub_sub.subscribe(RTC_TOPIC['LOW_STATE'], on_lowstate)