A Collada or STL file by itself won't give you Gazebo links, you must put each "node" of your mesh into a separate <link>
in your model's SDF description.
I recommend you first get familiar with links, joints, collisions and visuals in Gazebo. This tutorial should give you a good idea.
After you've understood those concepts, let's go through an example of creating separate links for each node
on a COLLADA mesh.
Let's take the zephyr_delta_wing model as an example.
Open the collada file and look for <node>
elements (they should be inside <visual_scene>
. This is what they look like for the Zephyr wing:
<node name="EnvironmentAmbientLight">
(...)
</node>
<node id="node-Wing_Bone" name="Wing_Bone">
(...)
<node id="node-Wing" name="Wing">
(...)
</node>
<node id="node-Flap_Left_Bone" name="Flap_Left_Bone">
(...)
<node id="node-Flap_Left" name="Flap_Left">
(...)
</node>
</node>
<node id="node-Flap_Right_Bone" name="Flap_Right_Bone">
(...)
<node id="node-Flap_Right" name="Flap_Right">
</node>
</node>
<node id="node-Prop_Bone" name="Prop_Bone">
(...)
<node id="node-Prop" name="Propeller">
(...)
</node>
</node>
</node>
On our SDF file, where we reference the COLLADA file, if we don't choose a submesh, all the nodes will be used together. But if we want only one node, we can refer to its name
. For example, for the propeller link we have the following:
<link name="propeller">
(...)
<visual name="visual">
(...)
<geometry>
<mesh>
<uri>model://zephyr_delta_wing/meshes/wing.dae</uri>
<submesh>
<name>Propeller</name>
<center>true</center>
</submesh>
</mesh>
</geometry>
</visual>
</link>
Note how each link of that model has a different submesh and how they can be moved independently in simulation: