上篇推文中(机器人控制系列教程之Simulink中模型搭建(1)),我们将机器人的模型进行封装,但是,我们并不知道搭建的机器人模型是否准确,本节笔者将结合逆向运动学模块验证所搭建的模型。
Robotics System Toolbox简介
Manipulator Algorithms—机械臂算法子库
Forward Dynamics—正向动力学模块
正向动力学模块可根据机器人的关节扭矩、关节状态和外力,来计算机器人模型的关节加速度。在Rigid body tree
参数中将机器人模型指定为rigidBodyTree
对象,并在该对象上设置重力属性。可使用 importrobot
从 URDF文件中导入机器人模型。
Inverse Dynamics—逆向动力学模块
逆向动力学模块可根据机器人配置(关节位置)、关节速度、关节加速度和外力,返回机器人维持指定机器人状态所需的关节力矩。
Velocity Product Torque—离心力或哥氏力项模块
离心力或哥氏力项模块可根据机器人配置(关节位置)和关节速度,返回的离心力或哥氏力矩项。等同于下图所示:
Gravity Torque—重力项模块
重力项模块可根据当前机器人配置的重力和关节配置,返回关节力矩。等同于下图所示:
Get Jacobian—获取雅可比矩阵模块
获取雅可比矩阵模块可根据输入的关节信息返回在rigidBodyTree
机器人模型的给定配置下,指定末端执行器相对于基座的几何雅可比矩阵。
雅可比系数将关节空间速度映射为相对于基座坐标系的末端执行器速度。末端执行器速度等于:
Get Transform—获取变换矩阵模块
计算给定对象的两个部件坐标之间的变换矩阵
返回刚体树机器人模型体坐标系之间的homogeneous transformation。为机器人模型指定一个rigidBodyTree
对象,并在程序块中选择一个源部件和目标部件。
Joint Space Mass Matrix—关节空间质量矩阵
返回串联机器人模型中给定机器人配置(关节位置)的关节空间质量矩阵。
Inverse Kinematics—逆向运动学
根据指定的机器人模型计算所需末端执行器姿势的关节位置。使用rigidBodyTree类为机器人创建刚体树模型。刚体树模型定义了求解器执行的所有关节约束。
Joint Space Motion Model——关节空间运动模型
关节空间运动模型块可模拟机械手的闭环关节空间运动。运动模型行为由运动类型参数定义。
Task Space Motion Model——任务空间运动模型
任务空间运动模型块对机械臂的闭环任务空间运动进行建模。运动模型可通过PD控制器来定义。
下一篇推文将重点讲解关节空间运动模型和任务空间运动模型两种模型的区别。
Mobile Robot Algorithms—移动机器人算法子库
这个子库主要是移动机器人的子库,其中包括有:独轮车运动学模型、自行车运动学模型、阿克曼运动学模型、差动传动运动学模型、线\角速度控制指令集合。本次不做详细介绍,需要了解的读者可直接在MATLAB官方网站查看。
Gazebo Co-Simulation—Gazebo联合仿真子库
这个子库中,主要是Gazebo联合仿真子库,主要有Gazebo步长器、Gazebo消息读取、Gazebo应用指令、Gazebo空白消息、Gazebo步行者Gazebo实体选择、Gazebo消息订阅和Gazebo消息发布模块。后续的章节中将重点进行讲解这个子库中的模块。
Utilities—设置子库
这个子库中,主要是Gazebo联合仿真子库,主要包含了各种轨迹规划的模块,主要有:多项式轨迹规划模块、梯形速度轨迹规划模块、旋转轨迹规划器、坐标系转换模块、最小急动度(加速度的一阶导数)的多项式轨迹规划模块、最小Snap(加速度的二阶导数)多项式轨迹规划模块等。
实例
接上次的的模型文件(https://pan.baidu.com/s/1gXF2CQCOh4MKeGZ6aa9Egg?pwd=tech,提取码:tech,若链接失效,可进群咨询获取!)。
从图中看出,加入了逆向运动学模块,通过输入机器人的末端位置、误差情况以及初始值等数据,即可求解出机器人的关节位置(角度),需要注意的是此处的末端位置需要经过坐标转换模块,逆向运动学模块中End effector设置为末端部件iwwa_link_7,表示将输出全部关节的位置,
单击仿真之后,即可看到该机器人末端位姿运行到指定位置,至此验证了该机器人模型搭建准确,可进入下一步的控制系统设计。