机器人动力学是机器人学中最核心的部分,也是机器人力控制的基础。
matlab Robotics Toolbook 工具箱中有具体的动力学计算函数:
已知各关节上电机提供的力,求对应的各关节的角度、角速度、角加速度等信息。
用到的函数是:SerialLink.fdyn
具体的调用格式:
[T,q,qd] = R.fdyn(T, torqfun)
T 表示时间间隔,就是采样时间。根据给定的力矩函数 torqfun,求各关节的 q,qd
也可以设定关节角度、角速度的初值,并且确定力矩函数中所含的参数,如下
[T,q,qd] = R.fdyn(T, torqfun, q0, qd0, ARG1, ARG2, …)
如 PD 控制:
[t,q] = robot.fdyn(10, @mytorqfun, qstar, P, D); function tau = mytorqfun(t, q, qd, qstar, P, D) tau = P*(qstar-q) + D*qd; end
已知关节的角度、角速度、角加速度等信息,求各关节所需提供的力
用到的函数是:SerialLink.rne
具体的调用格式:
tau = R.rne(q, qd, qdd)
根据给定的 q, qd, qdd,求个关节需要提供的 tau
如果机器人末端受到力的作用 fext ,则可用以下形式:
tau = R.rne(q, qd, qdd, grav, fext)
其中,grav 是重力加速度;fext=[Fx Fy Fz Mx My Mz]。
一般关节空间控制的总体方案是:
1.确定末端操作器的初始位置和目标位置
2.根据逆运动学求出各关节的初始角度和目标角度
3.估计规划,求出各关节的角度变化曲线
4.进行运动控制,使机器人按照轨迹规划结果运动