【机器人算法】机器人动力学、运动学和基于动力学模型的仿真与控制


本篇博客主要是从机器人学入门出发,以二连杆机构为例,对机器人运动学,动力学和控制进行说明。既是复习也算是科普。

因此都只给出结果,有问题欢迎评论私信。


运动学

运动学部分比较简单,本篇博文是基于DH参数进行建模的,二连杆的机械模型如下。关于DH建模的更多细节可以参考我的另一篇博文->【机器人学】机器人运动学基础

除此之外,为了计算的简便,越来越多的人开始使用PoE进行建模,关于PoE建模的方法可以参考我的这篇文章->【机器人学】基于PoE模型的串联机械臂UR5的正运动学、微分运动学和逆运动学,其中基于PoE模型对UR5进行了运动学分析。

说到DH参数就涉及到了机器人DH参数标定的问题。

机器人运动学参数标定(DH参数标定)

同时给出辨识后的结果:

可以清晰的看出,辨识后的机器人精度更高了。高自由度的机械臂,例如,六自由度且相邻转轴出现平行的情况,可以参考我的另一篇博文->【【机器人算法】机器人运动学参数辨识/DH参数校准/DH参数辨识

运动学逆解

由于是2自由度,因此只考虑位置。

解析解

一般都是用几何法求解。其中需要注意的是构型的选择,elbow up和elbow down两种,同时需要注意三角函数对解的范围的限制。高自由度的机械臂,例如,七自由度的可以参考我的另一篇博文->【机器人学】冗余七自由度机械臂的解析解逆解算法

数值解

一般都是用雅可比矩阵(广义逆)进行迭代。这里也不举例了。
具体算法可以参见我的另一篇博文->【机器人学】机械臂数值解逆解

工作空间分析

这里设关节限位为(-pi/2,pi/2)

关节限位为(-pi,pi)的情况:

可操纵性

可操纵性度量:

轨迹规划

这里给出一种在笛卡尔空间的轨迹规划,用的是数值解来迭代。

路径规划

这里直接给出一种,RRT算法在关节空间的路径规划(效率更高),其中包括了碰撞检测。其中关于RRT算法可以参考我的另一篇博文->【路径规划】RRT(Rapidly-exploring Random Trees)算法、关于碰撞检测算法可以参考我的另一篇博文->【算法】基于包围盒的机器人碰撞检测
RRT算法的展示如下:

实际运行效果如下:

关节轨迹:

静力学

静力学其实就是“虚功原理”,更多的体现在动力学中,这里没什么可展示的。

动力学

首先是动力学模型的建立,建立动力学方程推荐使用牛顿欧拉法,计算量更小,更方便计算机迭代运算。

动力学模型

拉格朗日法和牛顿欧拉法的结果是相同的,动力学方程如下:

但是在常见的控制及参数辨识过程中,方程通常写为如下形式:

这里我们暂且不考虑摩擦力。

C虽然是可以随便选择的,但是应当符合动力学模型的典型性质。
求得的离心力和科氏力相关的C及动力学模型的典型性质如下:

这个性质称之为动力学模型的反对称性。

得到动力学方程后,我们就可以利用动力学方程进行控制和优化了。

动力学仿真

根据机器人的动力学方程可以做动力学仿真如下:
这里主要给出2连杆在只受重力的作用下自由下落、遇到“跳床”和重力配平。

自由下落

可以看出在重力的作用下2连杆的自由下落过程。

遇到跳床

可以看出在重力的作用下2连杆的自由下落时遇到弹簧的运动过程。

重力补偿

可以看出在有重力的作用下,进行了重力配平,2连杆并没有落下。

说到动力学其中的一个难点就是动力学参数辨识。

动力学参数辨识

动力学参数辨识是一个比较复杂的难点,这里另开一章进行讲解->【机器人算法】二连杆机器人动力学参数辨识
高自由度情况可以参考我的另一篇博文->【机器人算法】机械臂动力学参数辨识仿真

控制

这里的控制都是基于机器人动力学。

位置控制

这里的位置控制是PD控制。

对比实际轨迹和期望轨迹可以看出,实际轨迹出现交大偏差,简单来说这主要是由于PD参数调的不好(这里的PD参数是根据经验调出的)。

至于“调PID的东西”,属于机械臂的运动控制的范畴,大致可以分为:

其中电机建模的基础可以参见:-> 【运动控制】直流电机的建模与位置控制和力控制

力控制

机器人里力控主要可以归类为三个:

  • 力控制:给出目标力去跟踪;
  • 力位混合控制:力和位置相互正交,相互独立,控制律简单。
  • 阻抗控制:属于一种“没有目标”的控制,适用于人机交互。

力位置混合控制

根据仿真结果可以看出,机械臂末端在接触墙壁时,同时进行了力的控制(约200N)

控制力为:

阻抗控制

首先看结果,其中黄色虚线为指令轨迹,可以看出机械臂在撞击墙壁时,机械臂并没有出现不稳定的现象,这是由于阻抗控制的关系。
可以看出实际轨迹和指令轨迹误差较大,这是由于:

  • 阻抗刚度系数太小,但是太多在发生撞击时会不稳定。
  • 没有重力配平

再看整个运动过程:

  • 20
    点赞
  • 233
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
### 回答1: MATLAB移动机器人动力学模型是指在MATLAB环境下对移动机器人进行动力学建模和分析。动力学模型的目的是描述机器人运动学和力学特性,以便进行运动规划、轨迹生成、控制算法设计等工作。 MATLAB提供了强大的数学计算和仿真工具,因此可以利用其编程和仿真功能来实现移动机器人动力学模型。首先,需要定义机器人的连杆结构和关节类型。连杆结构由关节连接起来,关节类型包括旋转关节和平移关节。利用MATLAB提供的变量和数组功能,可以轻松地定义机器人的各个连杆和关节参数。 接下来,在MATLAB中可以使用欧拉角、四元数等方式来描述机器人的姿态。姿态描述了机器人在三维空间中的位置和方向。利用MATLAB的矩阵运算和变换函数,可以方便地计算机器人的位姿变换。 然后,根据机器人连杆和关节的几何参数以及运动学特性,可以推导出机器人的速度和加速度关系。这些关系可以建立在欧拉角、四元数或坐标变换的基础上。通过MATLAB中提供的运动学求解函数,可以方便地计算出机器人的速度和加速度。 最后,可以利用MATLAB的动力学仿真工具来进行机器人动力学分析。通过输入机器人动力学参数,可以得到机器人在不同条件下的运动响应,例如力或力矩。这样可以对机器人的性能进行评估,同时也可以用于移动机器人控制算法的设计和调试。 总之,MATLAB移动机器人动力学模型提供了一种方便、灵活和高效的方式来对移动机器人动力学特性进行建模和分析。通过使用MATLAB的工具和功能,可以方便地进行机器人系统设计、动力学仿真控制算法开发。 ### 回答2: Matlab是一种常用的科学计算软件平台,它可以方便地对移动机器人动力学模型进行建模和仿真。移动机器人动力学模型描述了机器人在不同状态下的运动行为,包括位置、速度、加速度等信息。 在Matlab中,可以通过定义机器人的运动方程以及约束条件来建立动力学模型机器人的运动方程通常采用牛顿-欧拉方程来描述,即机器人动力学模型可以通过运动学方程和动力学方程相结合得到。运动学方程描述了机器人各个运动关节之间的关系,而动力学方程则描述了机器人受到的各种力和力矩的作用下的运动行为。 在Matlab中,可以使用符号计算工具箱来处理机器人运动学动力学方程。通过定义机器人动力学参数、关节间的连接关系以及运动方程的形式,可以使用Matlab的符号计算工具箱来求解机器人运动学动力学方程。这样可以得到机器人在不同状态下的位置、速度、加速度等信息,从而对机器人的运动行为进行仿真和分析。 此外,在Matlab中还有一些机器人相关的工具箱和函数库,如机器人工具箱和运动学函数库,可以进一步简化机器人动力学模型的建立和仿真过程。这些工具箱和函数库提供了一些预定义的机器人模型和函数,可以直接使用和调用,从而方便地进行机器人动力学建模和仿真。 因此,通过Matlab可以方便地建立移动机器人动力学模型,并进行仿真和分析。这样可以帮助研究人员和工程师更好地理解和控制移动机器人的运动行为,为机器人的设计和控制提供有效的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值