参考文章:grbl控制3轴机械臂 原理 实现 (二) 之3D机械臂模拟及实现_ourkix的博客-CSDN博客
一、机械臂的D-H表示
参考博客
描述两个关节轴线之间的位置关系用他们之间的距离和角度就可以了:
1.转角α的定义是关节轴i-1绕着公垂线ai-1转动到和关节轴i平行是所转过的角度αi-1
2.杆长ai-1就是两条空间直线的公垂线。如果杆是直的,杆长就等于连杆长度;如果不是直的,杆长等于公垂线长度。
通过连杆偏距和关节角就可以将两个相邻连杆之间的相对位置描述清楚:
1.关节角θi反映了两个连杆在关节轴处的夹角
2.连杆i-1的长度ai-1移动到和连杆i的长度ai的距离叫做连杆偏距di。如果正常连接di=0,如果两个关节之间有偏移,则根据上面说的求di。
二、机械臂正解
三、机械臂的逆解
1.机械臂逆解顾名思义就是通过机械臂末端与机械臂原点的相对坐标,来求解机械臂两个臂的转动角度。
原理就是通过末端坐标(X,Y)得到斜边长度,再根据余弦公式
算出角1和角2
2.既然二维机械臂逆解已经解决,那么转到三维环境,不过就是底座的转动角度而已。可以通过一个简单的反正切求解。
3.由于本次使用的机械臂为并联机械臂,应该根据平行机构连杆进一步为正解与反解添加约束
四、强化学习控制机械臂
这部分的内容主要是跟着莫烦大神学的
从头开始做一个机器手臂4 加入强化学习算法 - 机器学习实战 | 莫烦Python
1.超参数的设置,给随机生成的点设计限制
(1) 在强化学习训练模型时,为了得到较快的收敛效果和更好的泛化性能,超参数设置的好尤为重要。
在用DDPG算法对机械臂进行训练的时候,遇到的第一个问题是,机械臂一直无法抓取到物体,甚至在500轮的训练结束后还是没有收敛。经过排查后,发现是因为有些随机生成的点是机械臂末端无法达到的范围,这导致模型一直学不到东西。
遇到的第二个问题是,机械臂的学习效率很慢,要600个回合才能收敛。这有两个方面的原因,一是学习效率的设置,学习效率设置的过小,模型会一直学不到东西;但是学习效率设置的太大,会导致收敛后出现震荡,不稳定(也就是会一下子抓得到东西,一下子抓不到)。二是记忆池大小的设置,记忆池设置的太大,会导致收敛速度慢。
2. 因为我平常会比较关注国际形式,不禁想到如果强化学习等类似优化方法能用于分析国际形式,做出有利于全体国民利益的决策吗?好像需要的输入量会非常多诶
五、配置Linux、vscode和opencv的环境
关于opencv的安装,可以参考这篇博客