去年在CSDN上学会了怎么用SolidWorks制作urdf并且导入MATLAB中。学习过程走了不少弯路,前一段时间还有人在闲鱼让我教他怎么生成。
CSDN上的教程很丰富但也会有不少问题,当时花了两天的时间才制作出我想要的模型,因此在这里总结一些经验。
目录
一、SolidWorks软件安装 sw_urdf_exporter插件
这个过程有很多教程了,都很详细,我就不赘述了。
这里放一个教程详细的连接。
链接: 给SolidWorks软件安装 sw_urdf_exporte.
二、制作urdf文件
我以PUMA 560机械臂为例,生成一遍urdf文件。最好先将每个连杆上的零件生成一个整体零件以便于后续的选择。
1、建立基准轴和坐标系
(1)如图所示,将装配体按照初始位姿调整各零件的相对位置。
(2)如图所示,针对各个关节轴线插入基准轴。
(3)如图所示,3D草图画出各轴线交点。
(4)如图所示,根据自己建立好的DH或改进DH参数表插入坐标系。
2、打开插件制作urdf
(1)如图所示,在此处打开插件。
(2)如图所示,打开插件后会进入如图所示的界面。
(3)如图所示,先设置base_link。从上到下设置名字、选择坐标系、选择基座零件和设置后面的子杆。
(4)如图所示,点击此处进入1杆的设置。
(5)如图所示,1杆(link1)的设置和基座不一样了。从上到下为link名称、joint名称、坐标系选择、基准轴选择、关节类型、连杆零件和连杆子杆(一般为1,但在小车中四个轮子就是4)。
(6)如图所示,link2的设置和link1相似,一样的步骤。
(7)如图所示,到最后一个link时,前面的步骤一样,只需将子杆设为0。并点击箭头所指处进入urdf调整界面。
(8)如图所示,为urdf的调整界面。
(9)如图所示,点击joint1进行设置。
2方框内容为先前设置的信息,检查是否有误,可在此处更改。
3方框为关节角限制,必须添加,否则可能会出错。
(10)如图所示,joint2页进行如joint1的检查和修改。
(11)如图所示,将所有的joint设置完后,点击右下角箭头所指出,进入下一界面——link内容的修改。
(12)如图所示,link的设置界面。
(13)如图所示,首先点击base_link,进行修改。
划重点
2方框的内容有时会有个不为零的数,可以不用修改。但很多情况是0,因此必须进行修改,这在许多博客里面没提到,可能他们是导入的ROS,在导入MATLAB时,不设置会显示杂乱。
可以设为很小的值,但必须要有,我设置的是0.00001。因为我只用到了运动学的模拟,没用到动力学的部分,因此没有影响。
(14)如图所示,link1也进行如base_link的修改。
(15)如图所示,将所有的link修改完后,点击右下角的箭头所示的按钮Finish。
(16)如图所示,点击完成后,会出来一个文件保存。
划重点
文件的命名不能带汉字最好是英文加数字。我曾经就命名为H1,其他的也行。
这一点在许多大佬的博客里面也都有强调。
(17)如图所示,为我修改后的名称。
(18)如图所示,点击保存后会弹出一个小框,点击确定就行。到此就完成了 urdf文件的生成。
三、urdf文件的MATLAB的导入
1、MATLAB显示urdf
首先MATLAB2017以及之后的版本才支持导入urdf。
将刚刚制作的文件夹整个加入MATLAB路径。
运行如下所示代码。
robot=importrobot('puma560.urdf');
show(robot);
即可出现如图所示的可视化模型。
2、MATLAB控制urdf运动
运行如下所示代码
robot=importrobot('puma560.urdf');
robot.DataFormat='column';robot.DataFormat='column';%数据格式为列,row为行;为‘row'时q0要转置为q0’
show(robot,[-pi/4 pi/4 0 0 0]','PreservePlot',false);%机械臂演示
则可出现如图所示的效果。
想要这个urdf连续运动,可以写个for循环。还可制成GIF动图。
下面这个就是我去年做的那个模型的GIF,还挺流畅。
四、总结
必须注意的两个方面
1、连杆的moment of inertia(惯性矩)为零的话,必须得修改。
2、生成的文件命名不要带汉字,最好是字母和数字组合。
内容比较多,主要考虑到新手友好。
我把三维模型和制作的urdf传到下载资源里面了。
链接: puma560模型和urdf.zip.