UR六自由度机械臂运动学正解、逆解及轨迹规划附带python和C源码+webots仿真

2024-06-04 1930阅读

UR六自由度机械臂运动学正解、逆解及轨迹规划附带python和C源码+webots仿真

  • (一) 准型DH参数建立坐标系
  • (二) 运动学分析
    • 1. 运动学正解分析
    • 2. 运动学逆解分析
    • (三) 轨迹规划
    • (四)源码

        前段时间做了两种类型的六轴机械臂,分别是UR型和PUMA型六轴机械臂。实践过程中,在运动学分析和轨迹规划中遇到了很多的坑。比如,运动学正、逆解的起始位姿和自己想要的不一样;逆解的时候遇到奇异解或者解不出来的解应该怎么避免等等;本文会对以上情况做一个总结。

        后续我还会写关于如何以STM32F407为核心板,通过运动学正、逆解和轨迹规划来控制UR型和PUMA型六轴机械臂完成作业任务。有舵机版本和步进电机版本。

        本文是以标准型DH法建立坐标系,若想了解改进型DH法建立坐标系,可以看我另一篇文章:六轴机械臂运动学正、逆解及轨迹规划带源码

      (一) 准型DH参数建立坐标系

      UR六自由度机械臂运动学正解、逆解及轨迹规划附带python和C源码+webots仿真 第1张

      图1 机械臂起始位置图

      UR六自由度机械臂运动学正解、逆解及轨迹规划附带python和C源码+webots仿真 第2张

      图2 机械臂正视图

      标准型DH建立坐标系方法:

      z轴:与旋转轴共线。

      x轴:Xi轴同时垂直于Zi轴和Zi-1轴。(x0可以任意选方向)

      y轴:使用右手定则确定。(大拇指指向x轴、中指指向z轴,食指的指向为y轴方向)

      标准型DH参数确定方法:

      UR六自由度机械臂运动学正解、逆解及轨迹规划附带python和C源码+webots仿真 第3张

      标准型 DH 参数表:

      UR六自由度机械臂运动学正解、逆解及轨迹规划附带python和C源码+webots仿真 第4张

      注:该表是以图 2 确定的 DH 参数。 θ \theta θ列代表着,第二关节、第四关节顺时针旋转 90°(以图 1 视角往里看顺时针旋转 90°),可以转换成图 1 所示姿态。

      重点(建议先看后面的运动学正解和逆解,然后在返回来看):

      求解运动学正解时,当给的各个关节角度分别为(0°,0°,0°,0°,0°,0°)时,求出的位姿对应的是图 1 的位姿。也就是说,通过标准 DH 参数法建立的坐标系,用运动学正解求解出的起始位姿为图 1 的位姿。如果想要转换成图 2 的位姿,则需要给各个关节角度分别为(0,-90,0,-90,0,0)。运动学逆解求出的角度值,也是基于图 1 起始位姿的角度值。比如,当你输入位姿:(-270.0, -100.59, 84.0, 1.5707963, -0.0, 0.0)时,运动学逆解求出的角度值为:(0°,0°,0°,0°,0°,0°);当你输入位姿:(0.0, -100.59, 504.0, -1.5707963, -0.0, 3.1415927)时,运动学逆解求出的角度值为:(0°,-90°,0°,-90°,0°,0°);

      总结:当你在实际项目中时,肯定使用的是图 2 所示的起始位姿。那么需要转换 一 下 起 始 位 姿 。 当 求 解 运 动 学 正 解 时 , 输 入 格 式(th1,th2-90°,th3,th4-90°,th5,th6);th1 到 th6 为我们想要机械臂以图 2 的起始位姿旋转的角度值。当求解运动学逆解时,输入格式不变(x,y,z,gama,beta,alpha),输出时需要在求得的第二角度和第四角度上分别加上 90°。那么最终得到的角度值是以图 2 为起始位姿的角度值。

      (二) 运动学分析

      1. 运动学正解分析

      UR六自由度机械臂运动学正解、逆解及轨迹规划附带python和C源码+webots仿真 第5张

      2. 运动学逆解分析

      UR六自由度机械臂运动学正解、逆解及轨迹规划附带python和C源码+webots仿真 第6张

      UR六自由度机械臂运动学正解、逆解及轨迹规划附带python和C源码+webots仿真 第7张

      UR六自由度机械臂运动学正解、逆解及轨迹规划附带python和C源码+webots仿真 第8张

      UR六自由度机械臂运动学正解、逆解及轨迹规划附带python和C源码+webots仿真 第9张

      UR六自由度机械臂运动学正解、逆解及轨迹规划附带python和C源码+webots仿真 第10张

      UR六自由度机械臂运动学正解、逆解及轨迹规划附带python和C源码+webots仿真 第11张

      UR六自由度机械臂运动学正解、逆解及轨迹规划附带python和C源码+webots仿真 第12张

      如果在遇到运动学逆解求不出来的情况下,①遇到了奇异解,解不出来;②超出了机械臂的工作空间,解不出来;

      解决办法:

      第一步:首先需要在运动学逆解函数Inverse_Kinematics(X, Y, Z, gama, beta, alpha)中,写判断语句。如果输入的位姿能够顺利的解出,那么函数返回八组(有可能不是八组,根据情况而定)角度值;如果输入的位姿无解,那么返回0;

      第二部:可以通过加或者减位姿的值来避开运动学逆解无法求出的情况,比如:

             当(x,y,z,gama,beta,alpha) = (x0,y0,z0,gama0,beta0,alpha0)时出现逆解无法求解的情况。那么,我们只需要写一个判断语句,判断逆解函数Inverse_Kinematics(X, Y, Z, gama, beta, alpha)的返回值是否等于0,若等于0,那么代表此次传入的位姿,运动学逆解解不出来。这个时候可以给X、Y、Z三者中的任意一个参数加0,01。可以这样做:

      (x0+0.01,y0,z0,gama0,beta0,alpha0)、(x0,y0+0.01,z0,gama0,beta0,alpha0)、(x0,y0,z0+0.01,gama0,beta0,alpha0)。虽然在数值上不同了,但是在现实生活中,0.01毫米的偏差肉眼根本看不出来。可以满足工业精度要求。

      (三) 轨迹规划

      UR六自由度机械臂运动学正解、逆解及轨迹规划附带python和C源码+webots仿真 第13张

      UR六自由度机械臂运动学正解、逆解及轨迹规划附带python和C源码+webots仿真 第14张

      (四)源码

      源码及仿真下载


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]