Skip to content

About

Mobile App for 3rd Eye Control

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

SatoriManager 项目

Flutter/Android 重构与三页界面位于 flutter_app。旧 Qt 工程仍保留;Flutter 版的真实设备与锁屏运行尚待验收。

项目简介

SatoriManager 是一个基于 Qt 和 QML 的小型机器人控制项目,用户可以通过移动端远程操控机器人。项目支持模式切换(如自动模式、睡眠模式、人脸识别等)以及机器人头部的旋转和眨眼控制,包含移动端控制客户端和机器人服务器端的通信功能。

技术栈

  • C++ & Qt:实现移动客户端及通信功能
  • QML:用于 UI 设计,提供用户交互
  • UDP:实现客户端与服务器之间的实时通信

系统要求

  • Qt 6.8 或更高版本
  • C++17 或更高版本
  • 支持 UDP 的网络环境

SatoriManager 前端描述

SatoriManager 前端部分基于 Qt Quick 和 QML 实现,提供用户友好的界面来控制机器人眼部运动、模式切换、手动操作等功能。

主要页面与功能概述

  1. 主控制页面:

    • 模式切换:提供多个按钮用于切换不同工作模式,如“自动模式”、“睡眠模式”、“人脸识别模式”和“手动模式”,方便用户选择适合的操作模式。
    • 连接/断开连接:通过按钮与机器人建立或断开通信。
    • 摇杆控件与呼吸效果及电池进度指示器:
      • 摇杆控制:内圈为可拖动的摇杆,用户可以在外圈内自由移动。
      • 电池进度指示器:外圈显示环形进度条,反映电池电量(范围:0到1)。
    • 播放预设动画:
      • 用户可以选择并播放预设的机器人动作序列。每个动作包含多个关键帧,关键帧中包括眼球和眼皮的 PWM 控制值及动作持续时间。
      • 支持通过读取本地 JSON 文件中的数据来选择并播放预设动画。
      • 用户选择动作名称(例如lookUp或lookDown)即可触发对应的动画播放。
      • 系统按顺序执行关键帧中的 PWM 值和持续时间,实现平滑的眼部运动。
  2. 眼部控制页面:

    • 拨盘控件:用户可以通过拨盘实时调节眼皮的开合角度和瞳孔大小,精准控制眼部状态。
    • 描述文本:界面上清晰标示每个拨盘的功能,例如“眼皮角度”和“瞳孔大小”,帮助用户了解调节项。

安装与使用

克隆项目

git clone https://github.com/3rdEyez/SatoriManager.git
cd SatoriManager

编译项目

  1. 使用 Qt Creator 或命令行进入项目根目录。
  2. 配置 Qt Kit,选择适合的目标平台(如 Android 或 Desktop)。
  3. 编译并运行项目。

项目配置

确保服务器和客户端在同一局域网内,以便客户端能够自动发现服务器。

使用说明

模式切换

UI 提供模式切换按钮,用户可选择不同的工作模式。切换后,当前模式按钮高亮显示:

  • 自动模式:机器人自动导航。
  • 手动模式:用户手动控制机器人。
  • 睡眠模式:机器人进入低功耗状态。
  • 人脸识别模式:机器人开启人脸识别功能(当前未实装)。

控制机器人旋转与眨眼

UI 提供了控制机器人头部的操作按钮,用户可以实现机器人向上、向下、向左、向右旋转及眨眼操作。

连接与重连

初次连接时,客户端发送广播发现消息,寻找局域网内的机器人服务器。服务器响应后,客户端自动连接并发送心跳消息。如果网络中断,客户端会自动重连。

以下是包含头文件说明的更新版报文格式表格,帮助开发者清晰了解这些报文内容已集中定义在 ProtocolMessages.h 中:

报文格式

所有报文类型和内容均在 ProtocolMessages.h 头文件中定义,以便集中管理和维护。每个报文类型对应的常量定义在 ProtocolMessages 命名空间中,方便在代码中引用。

报文类型 报文内容 说明
发现请求 SatoriEye_DISCOVERY_REQUEST 客户端发送的请求,寻找可用的机器人服务器。
发现响应 SatoriEye_DISCOVERY_RESPONSE,<电量信息> 服务器的响应,包含电量信息(如 85 表示 85%)。
心跳请求 SatoriEye_HEARTBEAT_REQUEST 客户端发送的心跳请求,确保连接的有效性。
心跳响应 SatoriEye_HEARTBEAT_RESPONSE,<电量信息(可选)> 服务器的响应,可能包含电量信息,表示连接正常。
设置模式命令 SET_MODE:<模式> 客户端发送的请求,用于设置机器人工作模式(如 Auto)。 但是在自动和手动之间切换不需要觉之瞳回复
设置模式成功响应 SET_MODE_SUCCESS:<模式> 服务器确认模式设置成功(如 SET_MODE_SUCCESS:Auto)。
断开连接 SatoriEye_DISCONNECT 客户端发送的请求,通知服务器断开连接。
PWM 控制消息 CH1:<值>CH2:<值>CH3:<值> 发送通道 PWM 值,用于控制眼部运动(范围 500-2500 微秒)。
PWM 平滑控制消息 SMOOTH:CH1:<值>CH2:<值>CH3:<值> 发送通道 PWM 值,用于控制眼部运动(范围 500-2500 微秒)。

PWM 控制消息示例

假设要设置通道 PWM 值如下:

  • CH1: 600(水平眼球运动)
  • CH2: 2200(垂直眼球运动)
  • CH3: 1600(上眼皮运动)

发送格式为:

CH1:600CH2:2200CH3:1600

预设动画的数据结构

预设动画数据结构位于 JSON 文件 PresetActions.json 中,每个预设动作包含多个关键帧,格式如下:

  • -1 为不做修改
  • 每个PWM值用比例表示(0 - 1)。
{
    "wink": [
        { "CH1": -1, "CH2": -1, "CH3": 0.0, "duration": 200 },
        { "CH1": -1, "CH2": -1, "CH3": 1, "duration": 200 }
    ],
    "wink2": [
        { "CH1": -1, "CH2": -1, "CH3": 0.0, "duration": 200 },
        { "CH1": -1, "CH2": -1, "CH3": 1, "duration": 200 },
        { "CH1": -1, "CH2": -1, "CH3": 0.0, "duration": 200 },
        { "CH1": -1, "CH2": -1, "CH3": 1, "duration": 200 }
    ]
}

常见问题

Q: 无法连接到机器人?

  • 确保客户端和服务器在同一网络内。
  • 检查 IP 和端口配置。
  • 确认防火墙未阻止 UDP 广播。

贡献

欢迎贡献代码和提出改进建议。请提交 Issue 或 Pull Request。

许可证

项目采用 GPL 许可证。详细信息请查看 LICENSE 文件。

联系方式

About

Mobile App for 3rd Eye Control

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages