双关节机械臂+机械爪运动控制
01控制调试基础
在博文两轴机械臂+机械爪整体控制板设计与机械爪控制调试 中给出了双轴机械臂整体控制电路板的设计以及初步调试的过程。本文则完成对于双臂运动的控制调试。
控制调试包括两部分的内容:
- 机械臂的运动动态性能:速度、稳定性、低过冲;
- 机械位置的运动精度:重复到达位置的位置精度;
02一体化控制电路安装
1.设置WiFi STC调试器
通过手机选择USR-WIFI232-195,选择10.10.100.254进行登录。然后选择STA的登录的WiFI的热点。
▲ 登录10.10.100.254进行设置WiFI接入热点
2.控制板与机械臂其它部件连接关系
下图显示了控制板与其它的机械臂的部件连接的关系。
▲ 控制电路板与机械臂其它部件连接关系
03初步测试
1.肘关节运动范围
- min = 3000
- max = 14000
- step range = 35000
▲ 肘关节线性增加的角度(逆时针旋转)
2.肩关节运动范围
对于肩关节的角度处理:
▲ 肩关节线性增加角度
3.测量双轴移动步数与角度比值
(1) 测试1
记录起始位置,然后使用m;l; move12正向移动20000步。
▲ 机械臂移动前后的位置
起始位置 | 关节1:1961 | 关节2:2672 |
---|---|---|
结束位置 | 10089 | 9072 |
变化数值 | δ1:8128 | δ2:6400 |
(2) 测试2
记录起始位置,然后使用m;l; move12正向移动20000步。
起始位置 | 关节1: 1972 | 关节2: 2659 |
---|---|---|
结束位置 | 10019 | 9062 |
变化数值 | δ1:8047 | δ2:6403 |
Δ1=δ11+δ122=8128+80472=8087.5\Delta_{1} = {{\delta _{11} + \delta _{12} } \over 2} = {{8128 + 8047} \over 2} = 8087.5Δ1=2δ11+δ12=28128+8047=8087.5
Δ2=δ21+δ222=6400+64032=6401.5\Delta _2 = {{\delta _{21} + \delta _{22} } \over 2} = {{6400 + 6403} \over 2} = 6401.5Δ2=2δ21+δ22=26400+6403=6401.5
由于 BH38旋转编码器初步测试 一周的数值为:NBH38=214=16384N_{BH38} = 2^{14} = 16384NBH38=214=16384。由此可以得到肩部(关节1),肘部(关节2)旋转一周的步数N1, N2:
N1=214×20000Δ1=214×200008087.5=40516.85N_1 = {{2^{14} \times 20000} \over {\Delta _1 }} = {{2^{14} \times 20000} \over {8087.5}} = 40516.85N1=Δ1214×20000=8087.5214×20000=40516.85
N2=214×20000Δ2=214×200006401.5=51188.0N_2 = {{2^{14} \times 20000} \over {\Delta _2 }} = {{2^{14} \times 20000} \over {6401.5}} = 51188.0N2=Δ2214×20000=6401.5214×20000=51188.0
N1,N2的比值符合 57HSXXXXEIS , 42HS48EIS 的步进细分表表格的设置。
为了统一两个电极的控制,将57HSXXXXEIS(肩部步进电机控制器)的细分设置也设置为512000。重新进行测定。
修改步进电机设置之后,重新上电启动系统。
起始位置 | 关节1:1984 | 关节2:2698 |
---|---|---|
结束位置 | 8327 | 9097 |
位置变化 | 6343 | 6399 |
经过测试可以看到,两者之间的步进角度比(RsaR_{sa}Rsa)都接近于:
Rsa=StepNumerAngle=51200214=3.125R_{sa} = {{{\rm{Step}}\,{\rm{Numer}}} \over {Angle}} = {{51200} \over {2^{14} }} = 3.125Rsa=AngleStepNumer=21451200=3.125
04位置闭环控制
1.一次运动误差
对应的一次运动误差是指,仅仅运动一次,然后测量静止时刻的误差。生成两个角度随机设定值,然后机械臂运行到相应的位置。读取角度取值,获取与设定值之间的差值。作为误差值进行统计。
计算的方式: 根据当前的角度误差,使用步进角度比(Rsa) 来计算每个关节的移动步距(即移动步骤脉冲个数)和具体的方向。
具体测试的结果见下面的曲线。统计值为:
- meanx = -0.15, Var(x) = 51.25
- mean(y) = 0.02; Var(y) = 64.66
delx=[7.0, 10.0, 10.0, 7.0, 3.0, 11.0, 17.0, 8.0, 3.0, 5.0, 6.0, 12.0, 12.0, 4.0, 6.0, 1.0, 1.0, 1.0, 8.0, 8.0, 2.0, 6.0, 0.0, 11.0, 8.0, 4.0, 9.0, 2.0, 5.0, 12.0, 5.0, 6.0, 9.0, 7.0, 1.0, 1.0, 2.0, 0.0, 2.0, 1.0, 7.0, 16.0, 2.0, 0.0, 3.0, 5.0, 7.0, 3.0, 12.0, 0.0]
dely=[12.0, 6.0, 8.0, 15.0, 1.0, 5.0, 1.0, 0.0, 7.0, 14.0, 10.0, 10.0, 6.0, 6.0, 2.0, 8.0, 0.0, 2.0, 6.0, 5.0, 5.0, 9.0, 1.0, 10.0, 6.0, 4.0, 1.0, 7.0, 10.0, 11.0, 6.0, 0.0, 6.0, 13.0, 12.0, 1.0, 2.0, 5.0, 16.0, 13.0, 8.0, 4.0, 5.0, 5.0, 6.0, 5.0, 0.0, 3.0, 1.0, 4.0]
2.二次运动误差
- mean(x) = -0.094; Var(x) = 4.08
- mean(y) = 0.031; Var(y) = 4.28
delx=[1.0, 1.0, 1.0, 2.0, 1.0, 1.0, 1.0, 1.0, 4.0, 3.0, 1.0, 0.0, 4.0, 3.0, 3.0, 0.0, 2.0, 2.0, 1.0, 1.0, 2.0, 2.0, 0.0, 0.0, 2.0, 3.0, 4.0, 0.0, 2.0, 2.0, 2.0, 1.0]
dely=[0.0, 1.0, 3.0, 2.0, 2.0, 3.0, 2.0, 1.0, 1.0, 3.0, 2.0, 0.0, 0.0, 2.0, 4.0, 2.0, 1.0, 4.0, 2.0, 2.0, 1.0, 3.0, 1.0, 3.0, 1.0, 2.0, 2.0, 1.0, 1.0, 1.0, 3.0, 1.0]
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY -- by Dr. ZhuoQing 2020-09-07
#
# Note:
#============================================================from headm import *
from random import *
from tsmodule.tsstm32 import *randpos = [(randint(3000,8000), randint(4000, 8000)) for s in range(50)]
printf(randpos)delxdim = []
delydim = []for p in randpos:stm32cmd('angle12 %d %d'%(p[0], p[1]))time.sleep(.5)while True:stm32cmd('CLEAR')stm32cmd('angle')time.sleep(.5)val = stm32memo(1)if len(val) != 4: continueif val[2] + val[3] == 0: breaktime.sleep(2)stm32cmd('angle12 %d %d'%(p[0], p[1]))time.sleep(.5)time.sleep(1)stm32cmd('CLEAR')stm32cmd('angle')time.sleep(.5)val = stm32memo(1)delxdim.append(p[0] - val[0])delydim.append(p[1] - val[1])tspsave('delta1', delx=delxdim, dely=delydim)printf(val)tspsavenew('delta1', delx=delxdim, dely=delydim)
plt.plot(delxdim)
plt.plot(delydim)
plt.xlabel("Sample")
plt.ylabel("DeltaX Y")
plt.grid(True)
plt.tight_layout()
plt.show()#------------------------------------------------------------
# END OF FILE : TEST1.PY
#============================================================
通过上面实验可以验证,使用二次位置校正,可以有效的的角度空间位置统计误差可以降低到±4左右。假设肩部的角度误差Δθshoulder=4214×2π=0.001534\Delta \theta _{shoulder} = {4 \over {2^{14} }} \times 2\pi = 0.001534Δθshoulder=2144×2π=0.001534
肩部的臂长Lshould=1L_{should} = 1Lshould=1米,那么中断对应的位值误差为:
ΔL=Δθshoulder×L=1.53mm\Delta L = \Delta \theta _{shoulder} \times L = 1.53mmΔL=Δθshoulder×L=1.53mm
对应的最坏的位置误差小于2mm。达到最初的设计精度要求。
05结论
根据对双关节+机械爪运动初步控制,运动中的主要矛盾还是出现在对肩部的动态控制方面。如果还是采用放缓输出角度,则无法达到运动速度和过冲之间的矛盾。
下面需要进一步同安肩部角度反馈来获得对肩部运动的高速稳定扫之。
另文给出:
- 肩部高速平滑控制方式;
- 机械爪带有力矩反馈的控制;
■ 相关文献链接:
- 两轴机械臂+机械爪整体控制板设计与机械爪控制调试
- BH38旋转编码器初步测试
- 57HSXXXXEIS一体化步进伺服驱动电机
- 42HS48步进电机实验
双关节机械臂+机械爪运动控制相关推荐
- 两轴机械臂+机械爪整体控制板设计与机械爪控制调试
简 介: 在实验室样品自动上样双轴机械臂调试之后,出现了肩关节的运动力矩不足,这里使用了57HSXXXX步进电机进行增加力矩.下面是相关的调试过程. 关键词: 两轴机械臂,机械爪,上样机械臂 01为什 ...
- 六轴机械臂机械臂人脸识别和跟踪
使用一个桌面型的六轴机械臂,在机械臂的末端安装一个摄像头,来进行人脸识别和跟踪的一个功能.该功能分为两个模块,一个是人脸识别模块,另一个是机械臂的运动控制模块. 在前文有介绍到怎么控制机械臂的基本运动 ...
- 机械臂--机械臂基本介绍
机械臂基本介绍 1 运动轴 2 坐标系 3 UR5介绍 参考 1 运动轴 6轴机械臂,3个主轴(基本轴)用以保证末端执行器达到工作空间的任意位置,3个次轴(腕部轴)用以返回实现末端执行器的任意空间姿态 ...
- 睿尔曼超轻量仿人机械臂--机械臂简介拖动示教
RM65系列机械臂 RM75系列机械臂 RML63系列机械臂 B超检查应用 监测应用 巡检应用 人形机器人应用 巡检应用 工作站应用 机械臂开箱与使用 本文以RM65-B便携套装为例,给大家分享一下初 ...
- 睿尔曼超轻量仿人机械臂--机械臂接口介绍
接口简介 此款机械臂不再像我们之前熟悉的机械臂那样,包含机器人本体.控制柜.示教器.通讯线缆等.而这款机械臂的集成程度很高,简单来说,它就只有一个机器人本体,即装即用. 话虽如此,可不是我们无法对它进 ...
- 双轴机械臂串口控制命令开发与测试:STM32F103控制板,简易调试命令集合
▌01 底层串口控制命令 1.调试说明 本文是继 调试机械臂一体化控制电路 博文中对于 两轴机械臂+机械爪整体控制板设计与机械爪控制调试 在 基于STM32F103双轴机械臂完整电路板 控制下进行串口 ...
- 对于STM32F103控制的三轴机械臂基本功能测试-关节转动控制
➤01 机械臂调试 1.简介 对于 基于STM32对于三轴机械臂控制器设计 的设计已经进行了如下的调试: 对于STM32F103三轴机械臂控制器进行基本功能测试-关节角度读取 对于STM32F103三 ...
- 组装肩部带有减速器双轴机械臂组装与调试
➤ 00背景 在 增加了机械爪的双轴机械臂 安装调试之后, 发现进行平顺控制效果不好 ,因此在原来的基础上进行了如下的改动: 肩部和肘部的角度传感器采用了: 角度编码器 ST-3806-15-RS 读 ...
- 双轴机械臂中的闭环步进电机平顺控制算法: 42HS48EIS,57HS
■ 实验背景 在 两轴机械臂+机械爪整体控制板设计与机械爪控制调试 的基础上对于机械臂各关节进行了 双关节机械臂+机械爪运动控制 ,其中存在的主要问题还是肩关节运动不平稳的情况. ▲ 机械臂肩部运动 ...
最新文章
- Adam那么棒,为什么还对SGD念念不忘 (3)—— 优化算法的选择与使用策略
- 大神们都在用的终端工具,多合一全能终端神器MobaXterm
- 面试无忧之Zookeeper总结心得
- php数组循环便利,浅析PHP中for与foreach两个循环结构遍历数组的区别
- java中document解析jsp,JSP基于dom解析xml实例详解
- mysql的sql经典写法收录
- android体系结构中每层的功能,Android体系结构
- stringstream常见用法介绍
- 智力题题目及答案【集合】
- Java实现学生管理系统代码
- 搜索引擎的查找算法实现
- 第7-5课:格式化文件读写与 PCX 图像文件
- VMI(供应商管理库存)模式及其改进方式探讨
- 关于Gitlab恼人的Git无权限访问问题解决
- linux deepin配置优化:解决deepin v20.5不能自动降频导致CPU风扇一直狂转吹热气的问题
- 头戴式耳机跑步方便吗、公认最好的跑步耳机排行榜
- 英语广播原声听力100篇MP3及听力原文
- 遍历二维数组(从外向内绕圈)
- VScode+texlive配置环境
- 股票分时成交明细接口的数据怎么看?