solidworks导出gazebo模型
前言
整理了solidworks导出gazebo模型并上色、贴图、修改位姿的大致流程.
1.利用solidworks导出URDF文件
- 一个link对应一个零件(或者一个部件),两个link之间通过joint连接
- 一个link只能上一种颜色,需要区别开的地方在solidworks里面是上色,为了在gazebo里区分,就必须做成俩零件,变成俩link
- 注意装配体命名,最好别有中文,导出的文件也留简单点,不要字符大写字母
2. 导入gazebo
将到处的urdf文件夹作为功能包放在/catkin_ws/src目录下,编译后运行gazebo.launch文件,即可在gazebo中显示导入的模型。问题是没有颜色。
2.1 上色
修改urdf文件,下拉到最后,修改指定link的颜色。
<gazebo reference="base_link">
<material>Gazebo/Black</material>
</gazebo>
2.2 贴图
不知道为啥添加的texture文件没有用,只好用blender添加贴图,参考文章
需要注意的是,我直接把需要贴图的stl文件导入blender,然后添加的贴图,但是还不知道如何修改贴图的大小,有个展开选项,可以让图片适应目标零件大小。
按教程中的方法得到的文件夹可以直接放在urdf文件夹中,修改mesh路径即可。
至此,完成上色与贴图。
2.3 修改初始位置
修改launch文件,设置模型初始位置
<launch>
<!--设置模型初始位置的参数-->
<arg name="x_pos" default="0"/>
<arg name="y_pos" default="0"/>
<arg name="z_pos" default="0.1"/>
<arg name="R_pos" default="3.1415926"/>
<arg name="P_pos" default="0"/>
<arg name="Y_pos" default="0"/>
<include
file="$(find gazebo_ros)/launch/empty_world.launch" />
<node
name="tf_footprint_base"
pkg="tf"
type="static_transform_publisher"
args="0 0 0 0 0 0 base_link base_footprint 40" />
<!--加载模型时调用位置参数-->
<node
name="spawn_model"
pkg="gazebo_ros"
type="spawn_model"
args="-file $(find dock)/urdf/dock.urdf -urdf -model dock
-x $(arg x_pos) -y $(arg y_pos) -z $(arg z_pos)
-R $(arg R_pos) -P $(arg P_pos) -Y $(arg Y_pos)"
output="screen" />
<node
name="fake_joint_calibration"
pkg="rostopic"
type="rostopic"
args="pub /calibrated std_msgs/Bool true" />
</launch>
总结
实现了预期效果,有点麻烦,可能有更好的方法。