solidworks导出urdf教程

solidworks导出urdf教程

1.安装solidworks

见网络教程:https://blog.csdn.net/qq_27139123/article/details/90382847?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161174106316780299043192%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=161174106316780299043192&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-2-90382847.pc_search_result_no_baidu_js&utm_term=%E5%AE%89%E8%A3%85solidworks2016&spm=1018.2226.3001.4187

2.安装solidworks插件

sw_urdf_exporter:http://wiki.ros.org/sw_urdf_exporter

3.在solidworks中选中此插件

solidworks导出urdf教程_第1张图片solidworks导出urdf教程_第2张图片

4.重新装配

将KUKA机器人模型导入solidworks,并将各个轴的连杆导出为零件,再重新导入solidworks进行装配,使其变为装配体,装配关系需要严格约束并且把机器人各个关节置于DH零点
solidworks导出urdf教程_第3张图片

5.创建每一个link的原点、基准轴和坐标系

solidworks导出urdf教程_第4张图片
坐标系的定义需要和DH参数建模的坐标系定义保持一致,创建坐标系时可以先创建点,基准面等参考几何体
solidworks导出urdf教程_第5张图片
solidworks导出urdf教程_第6张图片
solidworks导出urdf教程_第7张图片
solidworks导出urdf教程_第8张图片

6.在工具中选择导出urdf

solidworks导出urdf教程_第9张图片

7.设置base_link

solidworks导出urdf教程_第10张图片
Link Name可以随便设置

Global Origin Coordinate System选择刚刚创建的基坐标系

Link Components选择装配体中对应的连杆模型

Number of child links选择1,依次添加连杆

(注意:如果选择Automatically Generate就是系统自动生成基准轴和坐标系,这样的模型是错的)

8.设置后面的link1-link6

solidworks导出urdf教程_第11张图片
Link Name和Joint Name可以随便设置

Reference Coordinate System选择刚刚创建的对应连杆的坐标系

Reference Axis选择刚刚创建的对应连杆的基准轴

Joint Type选择revolute

Link Components选择装配体中对应的连杆模型

9.所有设置完毕后再选择Preview and Export

solidworks导出urdf教程_第12张图片
点击Next
solidworks导出urdf教程_第13张图片
坐标系是对的就不需要修改里面的运动学参数,另外一些是动力学参数,后面需要在ROS中做仿真的话需要设置,不然就需要在导出的URDF文件中进行设置,之前导出的时候我没设置,因此在matlab simulink中查看模型的时候因为重力,直接掉下去了

点击Export URDF and Meshes得到如下图所示的文件,导出的路径和文件名不能有特殊字符,因此需要修改文件名KUKA KR6 R900-2.SLDASM这种不可以,后面导入matlab的时候会出现问题,把后面的.SLDASM去掉就可以了
solidworks导出urdf教程_第14张图片

10.URDF文件导入matlab验证模型正确性

clc
clear
%%利用Robotics System工具箱,但是在利用Simulink仿真时没有多体工具箱方便
%robot = importrobot('/Users/zhouhaojun/Desktop/桌面 - 周皓骏的MacBook Pro/KUKA KR6 R900-2/urdf/KUKA KR6 R900_urdf.urdf');
robot = importrobot('/Users/zhouhaojun/Desktop/KUKA KR6 R900_2/urdf/KUKA KR6 R900_2.urdf');
robot.DataFormat='column';robot.DataFormat='column';
%s=randomConfiguration(robot);
s=[0 0 0 0 0 0]';
%L{0} = robot.getBody('base_link');
L{1} = robot.getBody('Link1');
L{2} = robot.getBody('Link2');
L{3} = robot.getBody('Link3');
L{4} = robot.getBody('Link4');
L{5} = robot.getBody('Link5');
L{6} = robot.getBody('Link6');
T1 = getTransform(robot,s,'Link1','base_link');
T2 = getTransform(robot,s,'Link2','Link1');
T3 = getTransform(robot,s,'Link3','Link2');
T4 = getTransform(robot,s,'Link4','Link3');
T5 = getTransform(robot,s,'Link5','Link4');
T6 = getTransform(robot,s,'Link6','Link5');
R{1}= T1(1:3,1:3)';  p{1} = T1(1:3,4);    
R{2}= T2(1:3,1:3)';  p{2} = T2(1:3,4);
R{3}= T3(1:3,1:3)';  p{3} = T3(1:3,4);
R{4}= T4(1:3,1:3)';  p{4} = T4(1:3,4);
R{5}= T5(1:3,1:3)';  p{5} = T5(1:3,4);
R{6}= T6(1:3,1:3)';  p{6} = T6(1:3,4);
T7=[1 0 0 0;0 -1 0 0;0 0 -1 -0.09;0 0 0 1];
T=T1*T2*T3*T4*T5*T6;
Tcp=T*T7;
Tbase=[1 0 0 0;0 0 -1 0;0 1 0 0;0 0 0 1];
Ttarget=Tcp*Tbase;


show(robot,[0 0 0 0 0 0]','PreservePlot',false);
showdetails(robot);

solidworks导出urdf教程_第15张图片
导入后可以使用Robotics System工具箱(不是DH参数建模用到的Robotic toobox工具箱):getBody函数得到连杆,getTransform函数得到变换矩阵,以此验证模型建立的是否正确

11.URDF文件导入matlab simulink

clc
clear
%%利用SimScape多体工具箱进行导入,导入后可以进入Simulink进行仿真
smimport('/Users/zhouhaojun/Desktop/桌面 - 周皓骏的MacBook Pro/KUKA KR6 R900-2/urdf/KUKA KR6 R900-2.urdf')

solidworks导出urdf教程_第16张图片
如果显示不出来模型报错,需要点击里面所有的Link模块,在File Name中选择之前导出文件中的模型文件

点击run就可以看到导入结果,但这样仿真出来的只是运动学模型,没有动力学参数

urdf文件中的参数还需要进一步研究,后面ROS仿真会用到

你可能感兴趣的:(经验分享)