用六轴机械臂,推开机器人世界的大门
开源六轴机器人上位机控制程序
项目的 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°C - 80°C |
| 轴 | 工作范围 | 最大速度(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 | 逆时针 | 俯视 |