当前位置: 首页 > news >正文

GUI简介 - OpenExo

在这里插入图片描述

本文所有图片来自官方教程

简介

  • OpenExo GUI 是一个跨平台、开源的外骨骼系统控制和可视化应用程序。

  • 基于 OpenExo API,可用于设备搜索、连接、参数调节与实验数据实时显示。

  • 完全开放源码(MIT License),支持自由修改与二次开发。

  • 仅需 Python 3.12 环境,所有依赖库可通过 pip 一键安装。

最低系统要求:

  • 操作系统:

    • Windows 7 或更高版本

    • macOS 10.9 或更高版本

  • Python 版本:

    • Python 3.2 及以上(建议使用 3.12)
  • 硬件配置:

    • 处理器:双核(如 Intel Core i3 或同等级 AMD)

    • 内存:最少 2 GB,推荐 4 GB

    • 存储:至少 100 MB 可用空间(建议 1 GB 以便于大数据集存储)

    • 显示:最低分辨率 768×1024

安装指南(Installation Guide)

蓝牙连接说明:

OpenExo GUI 通过 BLE(蓝牙低功耗,Bluetooth Low Energy)与外骨骼设备通信。
所有 BLE 操作由 Bleak 库实现,支持 Windows、macOS 和 Linux。

所需 Python 库(依赖包):

  • matplotlib —— 绘图与数据可视化

  • async_tkinter_loop —— 异步 tkinter 图形界面支持

  • pygame —— 声音和多媒体支持

  • numpy —— 科学计算

  • bleak —— BLE 蓝牙通信

  • pandas —— 数据处理

  • scikit-learn —— 机器学习支持

  • micromlgen —— 机器学习模型导出

  • pillow —— 图像处理

一键安装方法:

  1. 进入 GUI 文件夹
    打开命令行(Windows 可用“命令提示符”,macOS/Linux 可用终端),进入项目的 Python_GUI 文件夹。

  2. 运行安装脚本

python install_dependencies.py

该脚本会自动通过 pip 安装所有所需库。

视频安装教程:

如果是首次操作或遇到依赖安装问题,可以先观看官方提供的视频。

总结

只需运行一次 install_dependencies.py,环境即配置完成,后续可直接运行 GUI 程序。
如有 pip 或 Python 环境问题,也可以手动单独安装各库,例如:

pip install matplotlib async_tkinter_loop pygame numpy bleak pandas scikit-learn micromlgen pillow

工作流

在这里插入图片描述

1. 启动应用

  • 确保蓝牙已开启。

  • 打开命令行,切换到项目 Python_GUI 目录。

  • 运行:

python3 GUI.py
  • GUI 界面将自动打开,出现多个交互页面(frames)。

2. 扫描并连接设备

  • 在主界面点击 Scan 按钮,程序会自动搜索周围可用的外骨骼设备。

  • 如果蓝牙未开启,界面会弹出错误提示。

  • 扫描到设备后,选择设备进行连接。

3. 界面导航说明

  • Scan Window(扫描窗口): 用于查找和连接外骨骼设备。

  • Active Trial(试验监控): 实时监测与控制试验进程。

  • Biofeedback(生物反馈): 获取、展示传感器实时反馈,用于训练或评估。

  • Machine Learning(机器学习): 训练/测试个性化控制模型(可选功能)。

  • Update Torque(扭矩参数设置): 修改外骨骼扭矩与控制参数。

4. 操作小结

  • 一切正常后,你即可用 GUI 实时操控并监测 OpenExo 设备。

  • 各页面切换与主要按钮均有提示或文档说明。

5. 视频演示

建议参考项目主页或 YouTube 的 Example Video,可以直观了解每个功能的实际操作流程。

添加一个按钮(views/ 文件夹里的 Frame 页面)

class YourFrame(tk.Frame):def __init__(self, parent):super().__init__(parent)self.create_widgets()def create_widgets(self):my_button = tk.Button(self,text="My New Button",          # 按钮上显示的文字command=self.my_button_action  # 按下后的回调函数)my_button.pack(pady=10)            # pady=10 是上下间隔def my_button_action(self):print("My New Button was clicked!") # 这里定义按钮功能

说明:

  • 在 create_widgets() 里创建并添加按钮;

  • 在 my_button_action() 里定义按钮功能(比如 print、弹窗、跳转页面等)。

修改图表绘制/显示的数据数量、坐标轴等

以 BasePlot.update_plot 为例:

def update_plot(self, xValues, yValues, secondY, title):max_points = -20  # 改成你想显示的最后N个点,比如 -50xValues = xValues[max_points:]yValues = yValues[max_points:]secondY = secondY[max_points:]# ...数据截断完再画图self.ax.set_title(title)self.ax.set_xlabel("Time")self.ax.set_ylabel("Value")

说明:

  • max_points 为负数时,显示最近 N 个点;

  • set_title、set_xlabel、set_ylabel 可自定义图表标题和坐标轴说明。

每个绘图类都有 animate(),该方法负责定时刷新数据和重绘,想要改变数据源或表现,直接在 animate() 里改即可。

添加一个新 Frame 页面

1. 创建 Frame 类

  • 在 views/ 文件夹下新建文件,比如 newFeature.py:
import tkinter as tkclass NewFeature(tk.Frame):def __init__(self, parent, controller):super().__init__(parent)self.controller = controllerlabel = tk.Label(self, text="New Feature Frame", font=("Arial", 24))label.pack(pady=20)button = tk.Button(self,text="Go to Scan Window",command=lambda: controller.show_frame("ScanWindow")   # 跳转到ScanWindow)button.pack(pady=10)

2. 注册新 Frame 到主程序

  • 在主 app 文件(一般是 GUI.py 或 main.py),导入新页面,并添加到 Frame 列表:
from views.newFeature import NewFeaturefor F in (ScanWindow, ActiveTrial, UpdateTorque, BioFeedback, MachineLearning, NewFeature):# 按照现有结构注册各页面

3. 添加跳转新页面的按钮

例如在任意已有页面加:

button = tk.Button(self,text="Go to New Feature",command=lambda: controller.show_frame("NewFeature")   # 注意和类名一致
)
button.pack(pady=10)

备注

  • controller.show_frame(“NewFeature”) 中的字符串需和 Frame 类名一致。

  • 页面之间跳转用这种方式很方便。

  • 新页面可添加自己的组件、布局和功能逻辑。

Biofeedback Frame 简明功能说明

用途

  • 在实验过程中为用户实时显示和声音反馈,辅助其达到预设运动目标(如压力/功率)。

信号源

  • FSRs(力敏电阻),用于检测足底压力,或用于估算踝功率。

数据访问方式

  • 获取实时数据的路径(假设你在 Biofeedback 页面代码内):
chart_data = self.master.controller.deviceManager._realTimeProcessor._chart_data
# 分别获取左右脚FSR信号
left_fsr_data = chart_data.leftFsr
right_fsr_data = chart_data.rightFsr

切换显示左右脚

  • 只需切换 chart_data.leftFsr 或 chart_data.rightFsr。

修改信号源

  • 找到 chart.py 里的 FSRPlot 类,把其数据源变量设置为上述 _chart_data 路径。

主要功能与控件

  • 图形显示

    • 实时显示压力(或踝功率)变化曲线

    • 目标线(用户设定目标时显示)

  • 主要按钮

    • Back:返回 Active Trial 页面

    • Left/Right Leg Toggle:切换左右脚显示

    • Set Target Value:输入并显示训练目标

    • Reset Target Value:重置(清除)目标

    • Mark Trial:打标签,便于后续数据分析

    • Recalibrate FSRs:重新校准 FSR 传感器

快速小结

  • 核心逻辑就是不断从 chart_data.leftFsr/rightFsr 读取最新数据刷新图表,其它控件处理目标/标签/校准等。

  • 页面框架和按钮基本都在 views/BioFeedback.py 内,图形渲染靠 chart.py。

http://www.dtcms.com/a/294978.html

相关文章:

  • 回顾 Palantir:八年之旅的反思
  • ​​SBOM 软件供应链安全(转)
  • haproxy的七层代理
  • Day01_C++编程
  • Ollama(3)模型迁移和API使用
  • Modbus协议详解与c#应用
  • 重写 与 重载
  • pig cloud框架中引入websocket
  • nginx websocket 代理 断网后 再联网 不能连接
  • Windows下编译UTF8-CPP
  • 前端学习 5:DFT
  • 云效CI/CD教程(PHP项目)
  • 如何提升连带消费?从新零售“人-货-场”模型拆解
  • 220V降5V,输出100MA,为家电电器消费类产品提供电源WD5202L
  • OpenCV+Python
  • WebGIS 常用坐标系
  • 真的假的?CISP认证考试将全面推行线下机考?
  • 我考PostgreSQL中级专家证书二三事
  • ubuntu24.04 nvidia driver无效///重装驱动
  • MYOJ_8513:CSP初赛题单6:竞赛要求相关
  • Java基础夯实——泛型全解析
  • Excel导入SQLServer报错
  • 炬森精密:缓冲滑轨的创新力量,重塑家居静音与安全新体验
  • SSM框架中关于Spring MVC的技术问题
  • 智能迎宾的认知革命:Deepoc具身智能如何让机器人读懂人类微语言
  • 论文略读: Howto Merge Your Multimodal Models Over Time?
  • IGM弧焊机器人气体节约
  • SwiftUI 实战:构建一个复杂的图书首页长页面
  • 本地部署 Stable Diffusion:零基础搭建 AI文生图模型
  • Linux中scp命令传输文件到服务器报错