基于吸盘的scara机械臂

15 篇文章 6 订阅
2 篇文章 0 订阅
本文介绍了基于STM32F103ZET6的SCARA机械臂设计,通过逆解算法计算出机械臂关节角度,并用Python验证了算法。在实际操作中遇到的问题包括步进电机同步、角度补偿和OPENMV摄像头坐标转换。建议编写绝对定位函数并记录关节位置,以方便校准和定位。提供了项目图片和经验分享。
摘要由CSDN通过智能技术生成

基于吸盘的scara机械臂


`正如题目所示,这次是一个scara机械臂。上一篇博客也是文章后提到这个,具体的话是用了stm32F103ZET6来做主控的,下面先贴整体图片吧。


前言

正如题目所示,这次是一个scara机械臂。上一篇博客也是文章后提到这个,具体的话是用了stm32F103ZET6来做主控的,下面先贴整体图片吧。


一、整体图片

在这里插入图片描述

二、使用步骤

1.引入库

代码如下(示例):

import math
l1 = 87.7
l2 = 106.2
PI = 3.14159265
# 注意此时的坐标系主要是y,x
target_coordinate = [-78, 82]
val = 180.0 / PI
# 计算出角度2的cos值
c2 = target_coordinate[1]*target_coordinate[1] + target_coordinate[0]*target_coordinate[0]
c2 = c2 - l1*l1 - l2*l2
c2 = c2 / (2*l1*l2)
# 计算出角度2的sin值 因为给定的坐标值为左手坐标系所以改值为负值
s2 = 1 - (c2*c2)
s2_Val = math.sqrt(s2)
if target_coordinate[0] > 0:
    s2_Val = -s2_Val
else:
    s2_Val = s2_Val
# 计算出角度2的值 通过atan2()的计算函数得出反正切函数
O2 = math.atan2(s2_Val, c2)
O2 = O2 * val
# 计算出a角度的值也是通过atan2反正切函数求出,该角度为原点O到目标位置的总角度
a = math.atan2(target_coordinate[0], target_coordinate[1]) * val
# 此时我们建立新的三角形,为OBC为一个直角正方形,通过改三角形来求出改角度通过a角度减去该角度得出第一自由度机械臂需要转过的角度
obc_sinVal = l2 * s2_Val
obc_cosVal = (l1 + l2 * c2)
# 计算出角度B也就是上面所说的的小角度
B = math.atan2(obc_sinVal, obc_cosVal) * val
# 计算出角度1
O1 = a - B
print(O1)
print(O2)

具体算法就是这个,用python写了一下验证算法版本,具体的算法推演过程可参考这个博客:scara机器人运动学正逆解
通过逆解来进行求取机械臂一和机械臂二的角度,再去驱动步进电机转动多少脉冲就好了。
稍微贴一下我验证的图片
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述这个就是我机械臂具体模样

坑一

在驱动后臂的步进电机的时候会带动起前臂转动,所以这里如果需要到某一个目标点位的话,要么一起运动,给相应的脉冲,要么就进行角度补偿。

坑二

因为涉及到使用对角度的解算,所以我比较推荐,写一个绝对定位的函数,来进行记录每一个机械臂转动过后的位置,这样无论是对机械臂的一个整体校准还是去转动某一个地方都是很方便的。

坑三

从最上方的摄像头不难看出是OPENMV,这里坑也很多,识别出来进行距离换算成像素点得到的比例值,无法用到对机械臂的臂一和臂二的放缩,因为那个计算两个转动角是需要直到L1和L2的对应着机械臂的臂一和臂二,最后是通过运动学的正解,也就是通过测定角度来反推演L1和L2的;因为还需要划分左右手坐标系,即还需要对OPENMV传回来的坐标进行变换才能使用。


总结

最后因为是使用吸盘来进行对色块的抓取,因为吸盘比较大,虽然计算出来的角度值稍微还是有误差的,但是抓取倒也没有失败过,具体就这样了。有小伙伴做这个东西的话,私信或者评论区发一下邮箱,我把我的代码发你。

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐乐小工厂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值