Commit Graph

11 Commits

Author SHA1 Message Date
hexone2086 9b8cd09929 feat: 右上角添加软急停滑块(平行四边形风格)
新增 EmergencyStopSlider 组件,水平滑到右侧触发软急停指令,
滑到左侧仅 UI 复位,等待机器人状态上报自动归位。非拖动时
跟随 motionState 状态同步滑块位置。

ControlCommands 新增 softEmergencyStop() 便捷函数。

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-07-18 14:59:22 +08:00
hexone2086 d4db91235b fix: 点击连接按钮后立即启动心跳线程,不再等待数据包接收
ProtocolClient.connect() 现在立即启动心跳循环(1Hz),而不是
等到 receiveLoop 首次收到数据包后才启动。心跳在 CONNECTING 和
CONNECTED 状态下均正常运行,确保连接建立过程中机器人能持续收到
心跳包。

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-07-18 14:58:19 +08:00
hexone2086 fbc3f1529f fix: 连接状态判定修复 — 收到首个数据包后才标记已连接,CONNECTING 5秒超时回退
- ProtocolClient: 仅收到首个有效数据包后设置 CONNECTED,不再 socket 创建后立即标记
- ProtocolClient: timeoutCheckLoop 在 connect() 中立即启动,覆盖 CONNECTING(5s) 和 CONNECTED(3s)
- RobotConnection: 允许 CONNECTING → TIMEOUT 合法转换
- MainScreen: CONNECTING 时点击连接按钮仅断开回到 DISCONNECTED,不再自动重连

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-07-18 12:15:43 +08:00
hexone2086 b2adf46957 refactor: 功能按钮全面布局优化 — 均布四周+平行四边形样式+互斥合并
- 起立/趴下合并为切换按钮,移至左上角
- 模式选择器(3个互斥无缝隙)移至左上角最上方
- 步态切换(4个互斥无缝隙)移至模式选择器下方,仅普通模式可点击
- 照明/休眠/充电移至右上角,紧凑排列
- 所有功能按钮使用平行四边形形状(左侧向右倾斜,右侧向左倾斜)
- 底部控制区移除更多展开区域,仅保留摇杆
- 所有控制按钮未连接时灰色不可点击

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-07-18 01:58:11 +08:00
hexone2086 df35ff3b05 feat: 状态栏优化 — 背景吸附+连接按钮合并+隐藏系统状态栏
- StatusBar 重构为 Box + Row 双层结构,背景延伸到屏幕顶端
- 连接按钮合并到顶部 ConnectionIndicator,删除底部独立连接按钮
- ConnectionIndicator 改为按钮形态(Surface + 圆角边框)
- 隐藏系统状态栏(WindowInsetsControllerCompat),压缩 StatusBar 高度

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-07-18 00:54:13 +08:00
hexone2086 1b5bc582b9 feat: 状态栏增加 WiFi 信号强度图标 + ICMP 延迟显示
- 新增 PingMonitor.kt:系统 ping 命令测量 ICMP 延迟,每 3 秒一次
- 新增 WifiSignalMonitor(内联在 MainViewModel):WiFiManager 读取 RSSI,
  按阈值映射为 0-5 格信号强度
- MainViewModel 改用 Application 注入以访问系统服务;PingMonitor 和 WiFi
  监测均独立于 UDP 连接生命周期(init 启动,onCleared 停止)
- MainScreen StatusBar 重新布局:
  连接状态文字 | WiFi 信号柱图标 | Ping 延迟 ms | 电量% | 运动状态 | Info | Settings
- AGENTS.md 待办项移至已完成

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-07-18 00:13:42 +08:00
hexone2086 f055777a6f feat: 底图bg1.png+开关灯合并按键+默认IP更新
- 添加 bg1.png 作为底层背景图,视频未播放时透出
- PlayerView 仅在视频播放中时渲染,避免黑色 SurfaceView 遮挡底图
- 开关灯合并为前灯/后灯两个按键,依据 LED 回报状态显示琥珀色/暗色
- 默认 IP 改为 10.21.41.1,RTSP 地址改为 rtsp://10.21.41.1:8554/video1

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-07-17 21:27:11 +08:00
hexone2086 23babb867b fix: 状态机修复 — 趴下状态下允许切换站立
趴下状态(MOTION_LIE_DOWN)同样可点击"起立"按钮下发站立指令。
机器人站立后自动进入 RL 控制,无需 App 额外下发。

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-07-17 21:07:11 +08:00
hexone2086 d563585cd5 UI: 增大摇杆尺寸至180dp;视频全屏延展(ZOOM模式)并加入缩放模式设置项
- 左右摇杆 Modifier.size 140dp -> 180dp (MainScreen.kt)
- RtspVideoPlayer 新增 resizeMode: VideoResizeMode 参数,默认 ZOOM
- 新增 VideoResizeMode 枚举 (FIT/ZOOM/FILL) 及 Media3 常量映射
- 设置界面新增"视频缩放模式"下拉选项,持久化到 DataStore
- AGENTS.md 更新已完成项和配置项表格

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-07-17 20:54:03 +08:00
hexone2086 6d7231b064 AGENTS.md: 添加待办事项列表 2026-07-17 19:45:55 +08:00
hexone2086 04afb3331f Initial commit: M20 Gamepad control app
山猫 M20 四足机器人手柄控制 Android App,使用 UDP + JSON 协议控制机器人运动。

- 协议层:16 字节小端 Header + JSON ASDU 编解码
- 网络层:UDP 客户端,心跳 1Hz,断线检测 3s
- 连接状态机:空闲/连接中/已连接/断线 + 运动状态机:空闲/站立/RL 控制
- 虚拟摇杆:Compose 原生摇杆库,angle/power -> X/Y/Yaw 映射
- 视频播放:Media3 ExoPlayer RTSP,支持 AUTO/FORCE_HW/FORCE_SW_H264/FORCE_SW_H265
- 设置界面:机器人 IP/端口、RTSP 地址、编码器选择,DataStore 持久化
- 状态面板:异常列表、运控状态、设备温度、电池信息
- 控制按钮:模式/步态/照明/充电/休眠

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-07-17 19:24:39 +08:00