MATLAB Robotics System Toolbox学习(2)

您所在的位置:网站首页 urdf导入copp不显示 MATLAB Robotics System Toolbox学习(2)

MATLAB Robotics System Toolbox学习(2)

2024-07-14 06:14:12| 来源: 网络整理| 查看: 265

这个算是个开发备忘吧,搞不好以后又忘了呢(笑)。

创建并导入urdf文件

利用solidworks导出urdf文件

其实可以不使用solidworks导出urdf文件,没记错的话,ROS也有Inventor也有导出urdf的插件。如果使用Fusion360的朋友也可以使用GitHub上的一个项目,虽然这个插件有一定的限制,但是也可以导出urdf文件。但是solidworks中装配体的操作是明显好于Fusion360,除了大和难以白嫖正版,solidworks还是挺推荐的。

具体的内容可以参照ROS 用Solidworks插件生成URDF和导入Simscape URDF格式 这里主要强调一下几个操作:

关节的运动限制一定要添加,但是homeconfiguration可能会超出你的关节运动限制,所以还是推荐自己配置configuration。 最后导出时,要对文件进行重命名,不能用“xxxx.SLDASM”,不能和已有文件夹重名,不要有中文、标点,和变量命名一样就好。 导入urdf文件

MATLAB 中导入urdf文件有两种方式。一是利用SimScape多体工具箱进行导入,导入后可以进入Simulink进行仿真,其格式为:

1smimport("xxxx.urdf");

但是,不知道为啥,我死活下不下来,每次在安装35%就报错(摊手,因此就只能用第二种方式。 第二种方式是利用Robotics System工具箱,但是在利用Simulink仿真时没有多体工具箱方便。其格式为:

1robot = importrobot("xxx.urdf");

importrobot会返回一个刚体树模型,然后就可以利用Robotics System工具箱中的函数进行进一步操作。

其实还有第三种方式,就是手动导入(笑),这个方式适合自己写程序求封闭解的情况,因为谁都不想算惯性张量矩阵嘛。所以这里以基坐标系为例简单说明一下urdf中有用的参数:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546                                                                                                                      

我们感兴趣的参数是,也就是惯量,标签表示的是质心在连杆坐标系下的坐标,标签为连杆的质量,单位为kg,为相对于原点坐标系的惯性张量,剩下的参数与机器人的显示有关。 在导入后show(robot);的效果为: 如果没有stl文件的话,显示出来的只有几个坐标系。

机器人动力学

封闭解

MATLAB Robotics System 工具箱中的Dynamics和InvDynamics函数并不支持接收带有syms的变量的矩阵为参数,因此无法求得机器人动力学的封闭形式解,如果要求封闭解,自己写程序吧(lll¬ω¬)。

因为刚开始学习机器人学,理论力学基础又不咋的,所以这里拿牛顿-欧拉动力学递推方程来写算法,因为拉格朗日法不会啊(笑抽。由于程序现在写的有BUG,因此就留个坑,以后再填,具体可以参考牛顿-欧拉法,不过这篇博文只给出了转动关节的动力学递推方程,对于移动关节并没有给出(虽然只要改几个地方)。

数值解

因为只用过Robotics System Toolbox,所以只会用这个工具箱的逆动力学(笑)。 首先要设定重力加速度,因为默认状况下的重力加速度为0。 robot.Gravity = [0 0 -9.81]; 然后再进行逆动力学求解,其函数原型为jointTorq = inverseDynamics(robot,configuration,jointVel,jointAccel,fext) 第一个参数robot为一个刚体树模型构成的机器人;configuration为机器人的姿态,如果读取数据格式为行的话,是一个1xn的行向量,n为关节数,单位为rad或m;jointVel为关节的转动(移动)速度,也是个1xn矩阵,单位为rad/s或m/s;jointAccel为关节的加速度,单位为

rad/s2rad/s^{2}

rad/s2或者

m/s2m/s^{2}

m/s2;最后的fext为施加在连杆上的力和力矩,为6xn或者nx6矩阵(与你选择的dataformat有关),可以通过externalForce(robot,bodyname,wrench,configuration)来获得矩阵,第一项robot和逆动力学的第一个参数一样;第二个为在哪个连杆上施加的力与力矩,为一个字符串如“tool”,这个根据你自己的连杆命名来;wrench为施加的力与力矩,其格式为

[Tx,Ty,Tz,Fx,Fy,Fz][T_{x},T_{y},T_{z},F_{x},F_{y},F_{z}]

[Tx?,Ty?,Tz?,Fx?,Fy?,Fz?];最后是机器人的配置。 因为不太会使simulink,所以就自己手写代码去生成关节位置、关节速度、关节加速度,然后写循环导出个矩阵再画图,这里把代码给大家贴一下:

12345678910111213141516171819robot = importrobot('scararobotics.urdf'); show(robot); showdetails(robot); robot.DataFormat ='row'; robot.Gravity = [0 0 -9.81]; cd C:\Users\Lin\Desktop\dynamics [conf,JointVel,JointAccel,t]=stepper([0.04 -1.57 -2;0.2 1.57 2],1,100); %conf,Vel,Accel的行为关节的相关参数 [row,column] = size(t); %column为细分数 tau = zeros(column,3); %tau 的每列是单个关节的输出 for i=1:1:column     fext = externalForce(robot,'Tool',[0 0 0 0 0 -10],conf(i,:));     tau(i,:) = inverseDynamics(robot,conf(i,:),JointVel(i,:),JointAccel(i,:),fext); end subplot(2,2,1);plot(t,tau(:,1)');grid on;xlabel('t/s');ylabel('f/N');title('joint1'); subplot(2,2,2);plot(t,tau(:,2)');grid on;xlabel('t/s');ylabel('M/Nm');title('joint3'); subplot(2,2,3);plot(t,tau(:,3)');grid on;xlabel('t/s');ylabel('M/Nm');title('joint3');

stepper参数为[初始关节状态、末关节状态]、运动时间、细分点,返回依据轨迹规划算法得到的关节配置、关节速度、关节加速度、时间矩阵。 一开始使用梯形的加减速算法(因为项目实际采用步进电机进行驱动),得到的力/力矩变化图惨不忍睹,有明显的突变。 使用三次项轨迹规划之后力/力矩的过渡就平滑多了 这里第一个关节为移动关节,故输出为力;其余均为转动关节,输出为力矩。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭