Skip to main content

机械臂的校准和基本控制

01. 机械臂的校准

适用设备

  • myCobot 280 Pi
  • myCobot 320 Pi
  • mechArm 270 Pi

操作步骤

Step 1: Atom 烧录最新版的 atomMain

Step 2: [编写机械校准的 GUI 程序] 在桌面新建一个 Python 文件为 *.py,将下列代码拷贝进去并保存

warning

庆幸的是,机械臂的校准程序已经由我们编写好了,你只需要把它复制粘贴到你的树莓派上就可以了。请放心使用。

请在桌面点击打开下图所示的图标,即可开始我们的机械臂校准和基本控制的测试。

@todo: 补充一副 mycobot_test_tool 的截图。

🔒

受保护的内容

请输入密码以查看此内容

Step 3: 打开终端(快捷键 CTRL+ALT+T),输入以下命令,然后点击回车

cd Desktop
python3 rasp_mycobot_test_gui.py
warning

庆幸的是,机械臂的校准程序已经由我们编写好了,你只需要把它复制粘贴到你的树莓派上就可以了。请放心使用。

请在桌面点击打开下图所示的图标,即可开始我们的机械臂校准和基本控制的测试。

Step 4: 选择相应的波特率,然后点击连接。

  • myCobot 280-Pi:1000000

连接界面

Step 5: 手动将各个机械臂各关节归于零位,点击开始校准。界面出现校准结束,机械臂校准完成。

校准完成界面

02. Python 开发环境准备

pymycobot 是一个和 myCobot 进行串口通讯的 Python 包,支持 Python2、Python3.5 及之后版本。在使用 pymycobot 控制机械臂之前需要搭建 Python 环境,下面就对 Python 的下载安装做出详细说明。

mycobot 280pi 机械臂内置 python 环境,您可以在 280pi 的 Ubuntu 系统里编写 python 代码,也可以在您自己的 PC 电脑里编写 python 程序,将编写好的 python 程序用 u 盘拷贝进机械臂的 Ubuntu 系统里进行运行。可以通过以下方法来对机械臂的 python 环境进行检查

python 包的检查。打开终端,输入

pip list

然后按下 enter 回车键,即可查看目前 python 环境内所安装的全部包。

在终端内输入

python --version

即可查询目前机械臂所使用的 python 版本。

在终端输入 python,然后回车,当显示了 >>> 后即代表进入了 python 编译环境,此时可以使用 python 来编写代码。

Python 版本查询

同时也可以使用 nano 命令来创立 python 文件。首先打开终端,输入

nano demo.py

然后按下回车键,即可创建名为 demo 的 python 文件。此处的 demo 为创立的 python 文件的文件名,您可以在此更改为任意名称。按下回车键后会进入代码编辑页面,您可以在此界面对进行 python 程序代码编写。

nano 编辑界面 1

nano 编辑界面 2

当编写好 python 程序后,按下 ctrl+s 来对已经编辑好的程序进行保存,再按下 ctrl+x 退出编辑器。

在打开的终端中输入

python demo.py

即可运行刚刚编写完成的 python 程序。

运行 python 程序

03. 机械臂关节的运动控制(Python)

对于串联式多关节机器人,关节空间的控制是针对机器人各个关节的变量进行的控制,目标是让机器人各个关节按照一定速度达到目标位置。

注意: 在设置角度时,不同系列的机械臂限位有所不同,具体可查看对应型号的参数介绍。

单关节控制

  1. send_angle(id, degree, speed)
  • 功能: 发送指定的单个关节运动至指定的角度
  • 参数说明:
    • id: 代表机械臂的关节,用数字 1-6 来表示。
    • degree: 表示关节的角度
    • speed:表示机械臂运动的速度,范围 1~100
  • 返回值: 1
  1. set_encoder(joint_id, encoder, sp)
  • 功能: 发送指定的单个关节运动至指定的电位值
  • 参数说明:
    • joint_id: 代表机械臂的关节,用数字 1-6 来表示。
    • encoder: 表示机械臂的电位值,取值范围是 0 ~ 4096
    • sp: 表示机械臂运动的速度,范围 1~100
  • 返回值: 1

多关节控制

  1. get_angles()
  • 功能: 获取所有关节角度
  • 返回值: list 一个浮点值的列表,代表所有关节的角度
  1. send_angles(degrees, speed)
  • 功能: 发送所有角度给机械臂所有关节
  • 参数说明:
    • degrees: (List[float]) 包含所有关节的角度,表示方法为:[20,20,20,20,20,20]
    • speed: 表示机械臂运动的速度,取值范围是 1-100
  • 返回值: 1
  1. set_encoders(encoders, sp)
  • 功能: 发送电位值给机械臂所有关节
  • 参数说明:
    • encoder: 表示机械臂的电位值,取值范围是 0 ~ 4096,表示方法为:[2048,2048,2048,2048,2048,2048]
    • sp: 表示机械臂运动的速度,取值范围是 1-100
  • 返回值: 1
  1. sync_send_angles(degrees, speed, timeout=15)
  • 功能: 同步发送角度,到达目标点返回
  • 参数说明:
    • degrees: 每个关节的角度值列表 List[float]
    • speed: (int) 机械臂运动的速度,取值范围是 1-100
    • timeout:时间默认 15s
  • 返回值: 1
  1. get_radians()
  • 功能: 获取所有关节的弧度
  • 返回值: list 包含所有关节弧度值的列表
  1. send_radians(radians, speed)
  • 功能: 发送弧度值给机械臂所有关节
  • 参数说明:
    • radianslist 表示机械臂的弧度值列表,取值范围是 -5~5
  • 返回值: 1

案例使用

warning

在运行上述代码时,我们基本上都会遇到报错。请仔细阅读报错信息,思考一下:报错信息说明错误在哪里?

按照提示来解决问题。Solution 在下方代码直上的加密模块。请先尝试解决问题,如果实在无法解决,请查看 Solution。

密码是:2357

🔒

受保护的内容

请输入密码以查看此内容

from pymycobot.mycobot280 import MyCobot280
import time

# MyCobot280 类初始化需要两个参数:

# 初始化一个 MyCobot280 对象
# 这里为 PI 版本创建对象代码
mc = MyCobot280('/dev/ttyAMA0', 1000000)

# 通过传递角度参数,让机械臂每个关节移动到对应 [0, 0, 0, 0, 0, 0] 的位置
mc.send_angles([0, 0, 0, 0, 0, 0], 50)

# 设置等待时间,确保机械臂已经到达指定位置
time.sleep(2.5)

# 让关节 1 移动到 90 这个位置
mc.send_angle(1, 90, 50)
# 设置等待时间,确保机械臂已经到达指定位置
time.sleep(2)

# 以下代码可以让机械臂左右摇摆
# 设置循环次数
num = 5
while num > 0:
# 让关节 2 移动到 50 这个位置
mc.send_angle(2, 50, 50)

# 设置等待时间,确保机械臂已经到达指定位置
time.sleep(1.5)

# 让关节 2 移动到 -50 这个位置
mc.send_angle(2, -50, 50)

# 设置等待时间,确保机械臂已经到达指定位置
time.sleep(1.5)

num -= 1

# 让机械臂缩起来。你可以手动摆动机械臂,然后使用 get_angles() 函数获得坐标数列,
# 通过该函数让机械臂到达你所想的位置。
mc.send_angles([88.68, -138.51, 155.65, -128.05, -9.93, -15.29], 50)

# 设置等待时间,确保机械臂已经到达指定位置
time.sleep(2.5)

# 让机械臂放松,可以手动摆动机械臂
mc.release_all_servos()

附录:pymycobot API 说明

参见 MyCobot 280 version