用六轴机械臂,推开机器人世界的大门
开源六轴机器人上位机控制程序
项目的 GUI 采用的是 PySide6 和 QFluentWidgets 组件库
可通过网络、WiFi、蓝牙、串口通讯方式,控制机械臂的六个关节进行复杂灵活的运动
- vs code - Visual Stdio Code 开源的代码编辑器
- qfluent widget - 在设计师中拖拖拽拽,无需书写 QSS,即可快速构建美观的界面
- PySide6 - python 桌面 GUI 框架
接下来,将为您说明如何在您的本地计算机上,启动并运行的机械臂上位机的项目源代码,以用于开发或教学目的。
如果您只需使用打包好的上位机程序,有关如何在您的操作系统上,安装打包好的上位机程序的说明,请参阅更详细的安装手册,上位机的安装包可在 Release 页面找到
打开下载好的项目文件,解压后进入项目的主目录
robot_arm_control 项目结构如下
├─app ---------------------------- // 上位机子页面源码
│ ├─command_page.py -------------- // 示教控制页面【 command_page.ui 生成】
│ ├─connect_page.py -------------- // 连接配置页面【connect_page.ui 生成】
│ ├─teach_page.py ---------------- // 示教控制页面【 teach_page.ui 生成】
│ └─__init__
├─assets ------------------------- // 存放静态资源的目录
│ ├─icons ------------------------ // 工具等自定义小图标
│ └─images ----------------------- // 背景等稍大一些的图片文件
├─common ------------------------- // 一些公共的函数或类
│ ├─robot_module.py -------------- // 六轴机器人的建模文件
│ ├─check_tools.py --------------- // 检查机械臂状态的一些装饰器函数
│ ├─settings.py ------------------ // 存放项目的路径配置信息
│ ├─socket_client.py ------------- // 机械臂的连接函数
│ ├─work_threads.py -------------- // 上位机的核心工作线程
│ └─__init__.py
├─componets ---------------------- // 自定义组件
│ ├─table_view_control.py -------- // 示教页面的表格内容控制器
│ └─__init__.py
├─config ------------------------- // 存放机械臂的连接信息
│ ├─robot_dh_parameters.yaml ----- // 六轴机器人 DH 参数
│ └─robot_mdh_parameters.yaml ---- // 六轴机器人 MDH 参数
├─docs --------------------------- // 上位机的文档
├─logs --------------------------- // 上位机的运行日志
├─main.py ------------------------ // 上位机主程序文件
├─README.md ---------------------- // 项目简要说明文档
├─requirements.txt --------------- // 运行上位机需要的第三方模块
├─tests -------------------------- // 测试代码存放目录
└─ui ----------------------------- // 上位机界面文件,用 Qt Designer 编辑
├─command_page.ui -------------- // 命令控制页面
├─connect_page.ui -------------- // 连接配置页面
└─teach_page.ui ---------------- // 示教控制页面为了避免与您当前操作系统中,已经存在的 python 模块冲突,建议使用虚拟环境,确保程序能够正常运行!否则造成的意外情况,后果自负!
新建 python 虚拟环境,python 版本需要 >= 3.8
# 进入到项目的根目录中
cd robot_arm_control
# 激活虚拟环境
python -m venv venv
# win
venv\Scripts\activate.bat
# unix 类系统
source venv/bin/acvitate
# 安装项目依赖
python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple完成环境的部署,接下来可以运行上位机的主程序
python main.py主程序的 UML 如下图所示
上位机的主窗口类 RobotArmControlWindow,由连接控制页面类 ConnectPage、示教控制页面类TeachPage、命令控制页面类CommandPage 组成
同时,三个子页面类,依赖于通讯类 ClientSocket 完成主要的与机械臂通讯的功能
---
title: OpenR6 GUI UML
---
classDiagram
class RobotArmControlWindow
class ConnectPage
RobotArmControlWindow *-- ConnectPage
ConnectPage --> ClientSocket
class TeachPage
RobotArmControlWindow *-- TeachPage
TeachPage --> ClientSocket
class CommandPage
RobotArmControlWindow *-- CommandPage
CommandPage --> ClientSocket
class ClientSocket
关于上位机的连接配置、以及详细操作说明请参阅:《六轴机器人用户手册》
下面是关于机械臂的一些电气物理参数介绍
| 轴数 | 6+1 |
|---|---|
| 有效负载 | 1000 g |
| 重复定位精度 | 0.1 mm |
| 通信接口 | 有线 / WIFI / Bluetooth / RS485 / Type-C |
| 电源电压 | 100 V- 240 V, 50/60 HZ |
| 电源输入 | 12 V / 5A DC |
| 功率 | 60W Max |
| 工作环境 | -10℃ - 80℃ |
| 轴 | 工作范围 | 最大速度(500 g负载) |
|---|---|---|
| 轴 1 | -136°to + 136° | 45°/ s |
| 轴 2 | -85°to + 97° | 45°/ s |
| 轴 3 | -91° to + 47° | 45°/ s |
| 轴 4 | -141°to + 182° | 45°/ s |
| 轴 5 | -220° to + 30° | 27°/ s |
| 轴 6 | -360° to + 360° | 45°/ s |
| 净重(机械臂) | 4.8 KG |
|---|---|
| 底座尺寸(长x宽x高) | 170mm x 135mm x 8mm |
| 材料 | 铝合金 高韧性树脂 |
| 控制器 | STM 32 |
| 机器人安装 | 桌面 |
| 关节 | alpha | a | d | theta |
|---|---|---|---|---|
| 1 | 0 | 0 | 153.50 | 0 |
| 2 | -pi / 2 | 24 | 0 | -pi / 2 |
| 3 | 0 | 160.72 | 0 | 0 |
| 4 | -pi / 2 | 0 | 223 | 0 |
| 5 | pi / 2 | 0 | 0 | pi/2 |
| 6 | pi / 2 | 0 | -108.79 | 0 |
| 关节 | alpha | a | d | theta |
|---|---|---|---|---|
| 1 | -pi/2 | 24 | 153.50 | 0 |
| 2 | 0 | 160.72 | 0 | -pi / 2 |
| 3 | -pi/2 | 0 | 0 | 0 |
| 4 | pi / 2 | 0 | 223 | 0 |
| 5 | pi / 2 | 0 | 0 | pi/2 |
| 6 | 0 | 0 | -108.79 | 0 |
先将屏幕面向操作者,将机械臂回零,再确定电机的角度正负值,以及对应的控制方向
需要与正逆解模型的角度方向一致
| 电机编号 | 方向 | 负值(度) | 正值(度) | 方向 | 备注 |
|---|---|---|---|---|---|
| 1 | 顺时针 | -136 | +136 | 逆时针 | 俯视 |
| 2 | 顺时针 | -85 | +97 | 逆时针 | 左视 |
| 3 | 顺时针 | -91 | +47 | 逆时针 | 左视 |
| 4 | 逆时针 | -141 | +182 | 顺时针 | 正视 |
| 5 | 顺时针 | -220 | +30 | 逆时针 | 左视 |
| 6 | 顺时针 | -360 | +360 | 逆时针 | 俯视 |


