0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

开源七轴myArm协作机械臂正逆运动学威廉希尔官方网站 讲解

大象机器人科技 来源:大象机器人科技 作者:大象机器人科技 2023-11-06 14:58 次阅读

引言:
在本文中,我们将深入探讨机器人学的两个核心概念:正运动学和逆运动学。这两个概念是理解和控制机械臂运动的基础。通过一个具体的7轴机械臂实例,我们将详细介绍如何计算机械臂的正运动学和逆运动学。我们首先会解释正运动学和逆运动学的基本概念和数学原理,然后我们将展示如何应用这些原理来计算7轴机械臂的运动。我们的目标是让读者对机械臂的运动控制有一个深入的理解,并了解如何在实践中应用这些知识。

myArm 300
我们先来简要介绍我们待会会使用到的机械臂myArm 300.

myArm 300 Pi是一块全新的7自由度的中心对称构型协作机械臂,myArm搭载着7个高精度伺服电机,使得最大工作半径300mm,末端最大负载成都能够达到200g,重复定位精度最高达到了±0.5mm。

wKgaomVIjViACQsYAAGwA4WeJFo281.png

myArm 300 Pi的控制主板采用了树莓派4B 4G,这是一种广受欢迎的微型计算机,因其强大的性能和灵活的编程环境而备受赞誉。这意味着用户可以使用多种编程语言来控制myArm 300 Pi,包括PythonC++Java等,极大地提高了使用者的便利性和灵活性,它还支持ROS1/ROS2 在ROS操作系统中提供了许多功能,例如路径规划,避障,三维感知等。

wKgZomVIjWWANf0eAANWwcduIAw198.png

基本概念
我们要想控制机械臂,就得有一套关于机械臂运动控制的算法。正逆运动学是其中的重要组成部分。在介绍正逆运动学之前,我们想先介绍DH模型,这个模型使得正逆运动学的计算变得更加直接和简单。

DH模型
DH参数模型是机器人学中一种常用的描述机器人运动学的方法。它通过一组参数来描述机器人的关节连杆,从而方便地计算机器人末端执行器地位置和姿态。

wKgZomVIjXGAfrUFAAE7Fdnx6z0046.png

当使用DH模型用来描述机械臂时,我们将机械臂分解为一系列链接和关节,每个链接和关节都与一个坐标系相关联。我们选择一个基准坐标系,通常是机械臂的基座(底座)坐标系,然后,为每个链接和关节定义一个坐标系,我们定义两个坐标系:前一个链接的坐标系和当前链接的坐标系。这两个坐标系之间的变换由四个参数描述:

连杆长度(a):它表示相邻链接之间的距离,沿着前一个链接的法线测量。它通常指的是链接的长度或者链接轴线的长度。

连杆的旋转角度(α):它表示相邻链接之间的旋转角度,围绕前一个链接的法线旋转。它通常指的是链接轴线之间的旋转。

关节的长度(d):它表示链接的长度或者关节的长度,沿着当前链接的法线测量。它通常指的是关节轴线的长度。

关节的旋转角度(θ):它表示关节的旋转角度,围绕当前链接的法线旋转。它通常指的是关节的角度或者关节的转动。

通过组合这些参数,可以构建一个四维的变换矩阵,这个变换矩阵可以表示机械臂末端执行器的位置和姿态。

以myArm为例子,下图是myArm 300 的DH模型图以及SDH参数表。当我们有了一个机械臂的DH模型图我们具体能干些什么呢:

正向运动学:通过给定关节角度,可以使用DH模型图计算机械臂末端执行器的位置和姿态,从而进行路径规划和运动控制

逆向运动学:反过来,也可以用DH模型图来解决逆向运动学问题,即给定目位置和姿态,计算出关节角度的变化,从而实现平滑的运动轨迹。

路径规划:给定一个开始位置和一个结束位置,可以使用DH模型来规划机械臂的运动路径。这可能涉及到解决一系列的逆运动学问题。

除此之外还有很多,比如说碰撞检测和臂章,动画和可视化机械臂,仿真机械臂等等。

wKgZomVIjY-AbNkkAAC3Vnl4JMk807.png

wKgaomVIjY6AUU0zAABopTleA8E032.png

正运动学
正运动学是用来描述机械臂从基座到末端执行器的位置和方向的计算方法。给定每个关节的角度,我们可以计算出机械臂末端的位置和方向。这是一个基于几何和三角学的过程。

下面举一个简单的例子,在一个平面坐标系当中,已知连杆的感觉长度为l1和l2,并且已知两个关节的转动角度分别为θ1和θ2,那么其末端执行器的位置(x,y)可以根据三角函数求出。

x=l1cos(θ1)+l2cos(θ1+θ2)

y=l1sin(θ1)+l2sin(θ1+θ2)

就可以求出x,y的坐标了。

wKgZomVIjZ2ANeomAABkyA4W1aE325.png

在实际应用中,我们通常会直接在三维空间中直接进行计算,我们可以使用齐次坐标来进行转换,在齐次坐标中,一个二维点(x, y)可以表示为一个三维点(x, y, 1),一个三维点(x, y, z)可以表示为一个四维点(x, y, z, 1)。通过这种方式,我们可以使用相同的矩阵乘法操作来描述平移和旋转。

例如,一个二维的平移变换可以表示为以下形式的3x3矩阵:

[[1, 0, dx], [0, 1, dy], [0, 0, 1]]


其中,dx和dy表示在x轴和y轴方向上的平移距离。同样,一个二维的旋转变换可以表示为以下形式的3x3矩阵:

[[cos(theta), -sin(theta), 0], [sin(theta), cos(theta), 0], [0, 0, 1]]


其中,theta表示旋转角度,也就是DH参数中的θ。

通过将所有关节的变换矩阵相乘,我们就可以得到从机器人基座到末端执行器的总变换。这就是正运动学的基本计算过程。这个过程可以用以下的数学形式来表示:

T = A1 * A2 * A3 * ... * An


其中 T 是总变换矩阵,Ai 是第 i 个关节的变换矩阵,n 是关节的数量。注意,矩阵乘法不满足交换律,所以乘法的顺序很重要。最终得到的T总变化矩阵算出来的结果就是机械臂末端相对于基座的坐标。提前了解DH模型,对理解后面的矩阵变换很有帮助。

逆运动学
逆向运动学是指根据机械臂末端执行器的位置和姿态,计算机械臂各个关节的角度。刚好跟正运动学反过来,是求取各个关节的角度。逆运动学的计算通常要比正运动学复杂得多,这是一个从效果反推原因的过程,通常需要解决非线性方程组,而且解可能不唯一,或者根本不存在。我们还是举例说明,以2自由度的平面机械臂来做一个了解。我们已知(x,y)的值,要求出θ1和θ2的角度。

wKgZomVIjZ2ANeomAABkyA4W1aE325.png

首先我们可以x,y到原点的位置的距离d,这可以勾股定理得到(sqrt代表平方根)

d = sqrt(x^2 + y^2)


然后,我们可以使用余弦定理来求解第二个关节的角度θ2。余弦定理可以描述三个边长已知的三角形中,任何一个角的余弦值。在这里,我们可以将d,L1和L2看作是三个边长,然后求解θ2:

cos(theta2) = (L1^2 + L2^2 - d^2) / (2 * L1 * L2)


因为θ2可能有两个解(顺时针和逆时针),所以我们需要根据实际情况来选择合适的解。

最后,我们可以使用正弦定理或余弦定理来求解第一个关节的角度θ1。正弦定理可以描述三个边长和对应的角的正弦值之间的关系。在这里,我们可以将d,L1和θ1看作是三个已知的值,然后求解θ1:

theta1 = atan2(y, x) - atan2(L2 * sin(theta2), L1 + L2 * cos(theta2))


求解完之后就可以得知各个关节的角度了,这是在二维的空间中的求解方法,在三维空间中的计算方法也是一样的道理,在计算的时候得考虑机械臂关节的限制,以及其他的因素来决定最终的角度。

7轴机械臂实例
接下会用到python对myArm进行编程,用到的是pymycobot库。

正运动学关节控制
正运动学算法通常有一个确定的结果,正运动学的目标是根据给定的关节角度,计算机械臂执行器的位置和姿态,只存在唯一的结果。下面是使用角度控制的代码:

from pymycobot import Myarm import time # create myarm object ma = Myarm('/dev/ttyAMA0',115200) ma.send_angles([degree_list],speed) # send_angles function def send_angles(self, degrees, speed): """Send the degrees of all joints to robot arm. Args: degrees: a list of degree values(List[float]).n for mycobot: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0].n for mypalletizer: [0.0, 0.0, 0.0, 0.0] for mypalletizer 340: [0.0, 0.0, 0.0] for myArm: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0].n speed : (int) 1 ~ 100 """ # self.calibration_parameters(degrees=degrees, speed=speed) degrees = [self._angle2int(degree) for degree in degrees] return self._mesg(ProtocolCode.SEND_ANGLES, degrees, speed)

wKgZomVIjimARJzcADadlHDkoQo614.png


这就是最直观的正运动学算法的控制,关节角度控制机械臂运动。

逆运动学算法控制,坐标控制
前面也有提及到,你运动学算法相对来说复杂很多,可能存在多个解的情况,也可能存在无解的情况。逆运动学算法的控制是通过控制机械臂末端坐标的变化,让机械臂前往下一个坐标位置。我们用python编写控制坐标运动的代码:

from pymycobot import Myarm import time # create myarm object ma = Myarm('/dev/ttyAMA0',115200) ma.send_coords([coordinates_list],speed,mode) # mode: 0:linear motion,1:nonlinear motion def send_coords(self, coords, speed, mode=None): """Send all coords to robot arm. Args: coords: a list of coords value(List[float]). for mycobot :[x(mm), y, z, rx(angle), ry, rz]n for mypalletizer: [x, y, z, θ] for mypalletizer 340: [x, y, z] speed : (int) 0 ~ 100 mode : (int) 0 - angluar, 1 - linear (mypalletizer 340 does not require this parameter) """ # self.calibration_parameters(coords=coords, speed=speed) coord_list = [] for idx in range(3): coord_list.append(self._coord2int(coords[idx])) for angle in coords[3:]: coord_list.append(self._angle2int(angle)) # print(coord_list) if mode is not None: return self._mesg(ProtocolCode.SEND_COORDS, coord_list, speed, mode) else: return self._mesg(ProtocolCode.SEND_COORDS, coord_list, speed)


7轴机械臂又被称之为冗余机器人,多的一个轴通常用于提供更多的灵活性和运动自由度,所以就出现了这么一个现象,机械臂的末端坐标值保持不变的时候,会有许多不同的姿态。

wKgZomUU4cKAbUQIAFzR2MnEKW0206.png

这就是开头说到的逆运动学的特点,同一个坐标下有许多不同的解。在坐标控制中还有一个关键的信息就是线性运动和非线性运动,主要是指机械臂末端的运动路径的类型。

线性运动:在这种模式下,机器人末端执行器在两个点之间直线移动。这就意味着,无论机器人的关节如何移动,末端执行器都会沿着直线路径从一点移动到另一点。这种类型的运动通常在需要精确位置控制的应用中使用,例如在装配线上的装配任务。
非线性运动:在这种模式下,机器人末端执行器的路径不是直线,而是一条曲线。这种类型的运动可以使机器人在复杂的环境中更灵活地移动,例如在需要避开障碍物或在特定的路径上移动的情况下。
总结
在我们探讨了正逆运动学的基本概念以及数学原理后,我们可以看到这两个概念在机械臂中的控制是特别重要的。然而,正运动学和逆运动学只是机械臂控制的一部分。在实际应用中,我们还需要考虑到动力学、控制理论、传感器反馈、以及实际硬件的限制。

随着威廉希尔官方网站 的发展,机械臂将在很多领域发挥越来越大的作用,包括制造业、医疗保健、家庭服务、搜索和救援等。通过深入理解这些知识,我们可以更加的了解什么是机械臂,让它在各种应用中发挥更大的作用。

如果你喜欢这篇文章的话欢迎在下方留言或者点赞,你的支持是我们更新的动力!

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    211

    文章

    28351

    浏览量

    206879
  • 开源
    +关注

    关注

    3

    文章

    3298

    浏览量

    42456
  • python
    +关注

    关注

    56

    文章

    4792

    浏览量

    84607
  • 机械臂
    +关注

    关注

    12

    文章

    513

    浏览量

    24542
收藏 人收藏

    评论

    相关推荐

    机械的高效运作,连接器起关键作用

    了众多危险、重复的工作。 机械的工作原理      机械运动控制是通过控制电机和传动装置来实现的。控制电机的作用是将电能转换为
    的头像 发表于 11-11 18:07 202次阅读

    大象机器人开源协作机械机械接入GPT4o大模型!

    和智能化的任务,提升了人机协作的效率和效果。我们个人平时接触不太到机械这类的机器人产品,但是有一种小型的机械我们人人都可以拥有它myCo
    的头像 发表于 07-03 14:09 844次阅读
    大象机器人<b class='flag-5'>开源</b><b class='flag-5'>协作</b><b class='flag-5'>机械</b><b class='flag-5'>臂</b><b class='flag-5'>机械</b><b class='flag-5'>臂</b>接入GPT4o大模型!

    国产Cortex-A55人工智能教学实验箱_基于Python机械跳舞实验案例分享

    发行包管理,它也提供一些工具和库用于获取、建立、编写和执行多机融合的程序。 机械通过ROS机器人操控系统,简化了6自由度串行总线舵机复杂运动控制,可实现机械
    发表于 06-28 14:37

    EtherCAT运动控制器Delta机械手应用

    运动ZMC406R运动控制器为例,讲解Delta机械运动控制应用开发。
    的头像 发表于 05-09 10:47 1591次阅读
    EtherCAT<b class='flag-5'>运动</b>控制器Delta<b class='flag-5'>机械</b>手应用

    大象机器人发布智能遥操作机械组合myArm M&amp;C,加速具身智能研究与发展!

    。 在此背景下,大象机器人myArm MC一经上市,已交付海内外数十台订单,收获开发者一致认可。这一系列的智能化6自由度遥操作机械,不仅达到了市场对高性能机器人的苛刻要求,更通过其前沿的遥操作
    的头像 发表于 04-14 16:44 740次阅读
    大象机器人发布智能遥操作<b class='flag-5'>机械</b><b class='flag-5'>臂</b>组合<b class='flag-5'>myArm</b> M&amp;C,加速具身智能研究与发展!

    机械威廉希尔官方网站 的前沿探索:年度案例回顾!

    在过去的几年里,机械威廉希尔官方网站 经历了前所未有的发展,其应用领域从传统的制造业扩展到了医疗、服务、物流等多个新兴行业。这种跨界扩展得益于科技的飞速进步,尤其是在传感器、控制系统和人工智能领域的突破。特别是
    的头像 发表于 03-12 15:14 1074次阅读
    <b class='flag-5'>机械</b><b class='flag-5'>臂</b><b class='flag-5'>威廉希尔官方网站
</b>的前沿探索:年度案例回顾!

    如何去提升机械的位置控制性能?

    控制性能。   精度衡量:直接测量机械末端的位置比较困难,这里采用一种近似的方式,比较机械指令角度与实际编码器反馈角度间的偏差值。
    的头像 发表于 03-05 08:43 927次阅读
    如何去提升<b class='flag-5'>机械</b><b class='flag-5'>臂</b>的位置控制性能?

    【国产FPGA+OMAPL138开发板体验】(原创)2.手把手玩转游戏机械

    : 提高机械的定位精度是一个涉及多个方面的复杂问题。以下是一些建议,有助于进一步提高机械的定位精度: 离线标定与补偿 关节参数标定:对机械
    发表于 02-01 20:18

    大象机器人六协作机械myCobot 320 进行手势识别!

    引言 我是一名专注于机器学习和机器人威廉希尔官方网站 自由者。我的热情始于大学期间的人工智能课程,这促使我探索人机交互的新方法。尤其对于机械的操作,我一直想要简化其复杂性,使之更加直观和易于使用。 这个项目
    的头像 发表于 01-31 16:17 765次阅读
    大象机器人六<b class='flag-5'>轴</b><b class='flag-5'>协作</b><b class='flag-5'>机械</b><b class='flag-5'>臂</b>myCobot 320 进行手势识别!

    使用ChatGPT学习大象机器人六协作机械mechArm!

    调试的过程中,出现了一些问题,在识别收拾的时候,它是一直识别,这就意味着如果在1s中内识别了10次的话,会给机械发送10个命令,这样肯定不是我一开始所设想的。我一开始的想法是,当相机识别到手势的时候就会给机械
    的头像 发表于 01-31 14:39 653次阅读
    使用ChatGPT学习大象机器人六<b class='flag-5'>轴</b><b class='flag-5'>协作</b><b class='flag-5'>机械</b><b class='flag-5'>臂</b>mechArm!

    机器人运动学中的非完整约束与运动模型推导

    机器人运动学中的运动学约束是指机器人在运动过程中受到的限制,包括位置、姿态、速度和加速度等因素。这些约束会对机器人的自由度产生影响,从而影响机器人的运动和控制。
    的头像 发表于 01-18 16:45 1796次阅读
    机器人<b class='flag-5'>运动学</b>中的非完整约束与<b class='flag-5'>运动</b>模型推导

    宏集机械,以精准力控实现柔性抛光打磨!

    宏集推出都带有扭矩传感器的柔性机械,通过类人类触觉、力位控制策略与直观易用的打磨app,实现均匀一致的打磨效果,打破“被动柔顺”方案的不可控性与精度限制,使表面精加工
    的头像 发表于 01-03 13:36 611次阅读
    宏集<b class='flag-5'>七</b><b class='flag-5'>轴</b><b class='flag-5'>机械</b><b class='flag-5'>臂</b>,以精准力控实现柔性抛光打磨!

    开源获奖案例】四机械控制系统

    ——来自迪文开发者论坛本期为大家推送迪文开发者论坛获奖开源案例——四机械控制系统。工程师采用T5L智能屏,基于DGUS软件“旋转指示”控件实现
    的头像 发表于 12-23 08:13 1233次阅读
    【<b class='flag-5'>开源</b>获奖案例】四<b class='flag-5'>轴</b><b class='flag-5'>机械</b><b class='flag-5'>臂</b>控制系统

    LabVIEW的六工业机器人运动控制系统

    环境中,对机器人进行了运动学仿真测试。接着,对单和多伺服系统进行了控制测试,最终实现了机器人的轨迹规划实体控制。 在整个项目中,La
    发表于 12-21 20:03

    开源协作机械myArm视觉跟踪威廉希尔官方网站

    处理威廉希尔官方网站 ,使用ArUco标记的机械系统可以实现更高级的自动化功能,如精确定位、导航和复杂动作的执行。 本案例旨在展示结合ArUco标记和机械
    的头像 发表于 12-18 11:14 1191次阅读
    <b class='flag-5'>七</b><b class='flag-5'>轴</b><b class='flag-5'>开源</b><b class='flag-5'>协作</b><b class='flag-5'>机械</b><b class='flag-5'>臂</b><b class='flag-5'>myArm</b>视觉跟踪<b class='flag-5'>威廉希尔官方网站
</b>!