这个算是个开发备忘吧,搞不好以后又忘了呢(笑)。
创建并导入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进行仿真,其格式为:
smimport("xxxx.urdf");
但是,不知道为啥,我死活下不下来,每次在安装35%就报错(摊手,因此就只能用第二种方式。
第二种方式是利用Robotics System工具箱,但是在利用Simulink仿真时没有多体工具箱方便。其格式为:
robot = importrobot("xxx.urdf");
importrobot会返回一个刚体树模型,然后就可以利用Robotics System工具箱中的函数进行进一步操作。
其实还有第三种方式,就是手动导入(笑),这个方式适合自己写程序求封闭解的情况,因为谁都不想算惯性张量矩阵嘛。所以这里以基坐标系为例简单说明一下urdf中有用的参数:
<?xml version="1.0" encoding="utf-8"?>
<!-- This URDF was automatically created by SolidWorks to URDF Exporter! Originally created by Stephen Brawner (brawner@gmail.com)
Commit Version: 1.5.1-0-g916b5db Build Version: 1.5.7152.31018
For more information, please see http://wiki.ros.org/sw_urdf_exporter -->
<robot
name="projectsc">
<link
name="base_link">
<inertial>
<origin
xyz="-1.29442810636871E-12 -4.50542381180696E-14 -0.0113556220689463"
rpy="0 0 0" />
<mass
value="0.613721030933878" />
<inertia
ixx="0.000281205784910106"
ixy="-1.05466034417193E-15"
ixz="-1.73668470889167E-14"
iyy="0.000281205784891428"
iyz="-1.37615762175481E-14"
izz="0.000140875891353705" />
</inertial>
<visual>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<geometry>
<mesh
filename="package://projectsc/meshes/base_link.STL" />
</geometry>
<material
name="">
<color
rgba="0.776470588235294 0.756862745