当前位置:   article > 正文

基于STM32的机械臂抓取系统【2】【机械臂板块】_stm32六轴机械臂

stm32六轴机械臂

哈喽鸭,据上一篇感觉过了好久了,因为平时工作下班很晚,周末也经常加班,所以更新的确实没有按照预期,所以跟那些对这个项目感兴趣的同学们!说声骚瑞啊~,所以需要资料的请私信我,虽然我可能不一定及时回复,但肯定都会回复的!好了,废话不多说,开始。

首先,提一下整个的逻辑
DJ
其实机械臂在整个系统里,起到的是一个执行作用,他的任务就是接收中控MCU的指令,并保质保量的完成(复位、抓取、放置)。

机械臂听起来高级,但其实在这个项目里很普通的,包括后面要讲的最优路径算法,其实真的都很简单,正如第一篇文章说的那样,这仅仅是个入门级别的小项目罢了,拿来玩儿玩儿,感受一下单片机就好。但学的是这个逻辑,养成一个好的代码习惯和思考方式、动手能力应该是你做完项目收获到的,这虽然是个很easy的小项目,但其实扩展性还很大的,比如可以加摄像头(跑视觉模型)、接入云平台完成批量设备控制、甚至不用MCU,而是用RTOS,甚至嵌入式AI的板子,也就是可以用LVGL写一个UI更酷的去控制机械臂啦。

又开始多说了,下面不会有废话了。

核心仅有下面两大板块:

  1. PWM控制
    明确PWM之前,理解一下咱们使用的六轴机械臂
    在这里插入图片描述
    对应的六个部位我已经很形象的做了比喻,不论几个自由度,不过都是由舵机来控制的,通过电压的不同,舵机的转动角度不同,因此各个部分就开始动起来了,也就可以完成抓取、放置等常规性动作了。

电平变化,对于GPIO的输出,无非只有高和低两种,也就是1和0,也就是说,你无法达到让IO口直接输出0.5v的效果,那么这时候PWM就派上用场了。
在这里插入图片描述
这张图是我从别的博主那里偷来的,博主我不记得了,骚瑞~,借用一下!
在单片机的定时器逻辑里,对的PWM的基础就是定时器,只是用到的定时器的PWM模式。

通俗的说下上图,ARR为顶端计数值,CCRX为比较寄存器值,举个栗子:你设定计数值为200(也就是ARR为200),设定CCRX为100,另外计数是自底向上,那么也就是说你将会得到一半高电平、一半低电平,可以理解为0.5v的电压,那么我们也就得到了除了0和1之外的电平值了。

在具体到代码,也就是你要确定PWM模式(1还是2)、有效状态是高电平还是低电平、舵机的精度参数,你就可以控制你的舵机转动范围内的任意角度了。

看一点代码。
在这里插入图片描述

我要是没记错的话,PWM1就是当前值<比较寄存器CCRX值,就为有效状态,再确定有效状态为高电平还是低电平就好了。

我的舵机是270°,PWM控制范围是0.5ms–2.5ms。
在这里插入图片描述
这里说明下我的机械臂复位状态,也就是竖直即为复位,因为这样对于范围内的任意方向都是运动同样的距离了,也就是上图中的中间箭头位置,比较寄存器值也就是1500啦。

看下代码。
在这里插入图片描述
理论上是1500才对,但因为安装等误差吧,和本身舵机的质量等等,所以不一定完全是1500。

  1. 最优路径算法
    会了怎么控制,也就可以思考下怎么实现抓取路径了。在这里呢,我感觉并不能把其称之为算法,也不能称之为最优路径,真正计算路径的话,还是比较复杂,会涉及正逆运动学的建系运算等等,但别怕,咱们的说法也可以说通。

接下来,我会用很通俗的话来讲解“最优路径算法”,不一定对,但目的是为了让有兴趣的小白更好的了解。

这样理解:你现在已经能用PWM去控制舵机的转动了,那理论上,咱们放一个物体在机械臂前面,那么是不是可以用笨方法,我手动调节每个舵机的值,总会让机械臂抓到物体,是不是!

但这样很麻烦,但如果你能这么样,那么你已经摸到了正向运动学的门了,如果是正经的机械臂正运动学里,我们需要建系,整体为世界坐标,每个舵机有自己的坐标系,通过两个坐标系的差别来确定机械臂的转动角度,计算方式就是一系列的矩阵运算了,但我不正经,咱们一个简单的几何算法就OK。

由于在此项目中,物体的位置不是固定的,我们不能直接让每个舵机转动角度,我们因该是反向操作,我们只需要知道一个物体的坐标点,那我们是不是可以让机械臂的机械爪达到其上的某个坐标,那么一个接一个的反推,是不是就可以得到每个舵机的转动范围了。
在这里插入图片描述
上图是2、3、4号舵机,我们只需要关注这三个舵机就好啦。

解释下为什么只有三个舵机,因为第一个舵机的只是控制整体的转动,每次都是转动在物体的面前罢了。另外提一下Pieper准则,也就是手腕准则(自己取的),也就是五号舵机,其只是控制机械爪的圆柱体内转动罢了,不能让其跟人类真正的手一样向下抓,只能模仿人类手腕的转动,因此并不影响,对于6号舵机就更不用说了,他只是控制机械爪的张开和闭合罢了,在路径计算中,考虑一下他的长度就好了,不用考虑他的坐标因素。

P点为机械臂末端(5号舵机位置或者将其看成物体位置也可以),橙色为世界坐标,也就是咱们看的坐标,是不动的,白色的和红色的是两种到达物体的路径,L0、L1为杆长,α是L2和世界坐标X轴的角度,θ是舵机和在世界坐标的转动角度(此时没有画出各舵机的坐标系,其x轴方向就是白线方向),而后便有了一个几何关系。

P(x,y)点坐标我们是知道,而且α我们也是知道的,为啥呢,因为L2也就是4号舵机的和5号舵机的连接杆,而5号舵机刚才说了,只能转动,不能偏移出其本身的圆柱体范围,也就是说,当我们L2这跟杆确定后,其实是机械爪的也就固定了。

我们需要求的是,三个θ值,也就是需要三个表达式,P的x和y在图中的几何关系很清晰了,还有个不太明显的几何关系就是θ和α的关系,其实三个θ加起来就是α的值,这一点大家可以稍微思考下,多看图,看看几何关系。

举个例子
在这里插入图片描述
我比较笨,就用的笨方法,就直接硬解的,但是有简单解法的,当时没看懂,加上参数也不多,反正又不是我手算,就硬解了。

今天差不都就说这些了,其实写的不好,没有排版内容也比较乱,本来说下午写的,但一直在躺平,哈哈哈哈骚瑞了~所以就着急的写了些,但重要的内容基本都说了,如果有哪个地方不理解或者有想法的都可以随时私信我,我看到了都会一一回复的,感谢大家的支持。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/405215
推荐阅读
相关标签
  

闽ICP备14008679号