ros / collada_urdf

Contains packages for converting collada files into URDF
27 stars 26 forks source link

collada_to_urdf .dae files broken as viewed in Meshlab #17

Open pirobot opened 7 years ago

pirobot commented 7 years ago

I have observed this problem on both ROS Indigo (Ubuntu 14.04) and ROS Kinetic (Ubuntu 16.04). The problem is so severe that I feel I must be doing something wrong.

Take for example the Turtlebot model found at:

turlletbot_description/robots/kobuki_hexagons_asus_xtion_pro.urdf.xacro

First I convert this to URDF:

$ rosrun xacro xacro kobuki_hexagons_asus_xtion_pro.urdf.xacro > ~/kobuki.urdf

Now I check the URDF file:

$ check_urdf ~/kobuki.urdf

---------- Successfully Parsed XML --------------- root Link: base_footprint has 1 child(ren) child(1): base_link child(1): camera_rgb_frame child(1): camera_depth_frame child(1): camera_depth_optical_frame child(2): camera_link child(3): camera_rgb_optical_frame child(2): caster_back_link child(3): caster_front_link child(4): cliff_sensor_front_link child(5): cliff_sensor_left_link child(6): cliff_sensor_right_link child(7): gyro_link child(8): mount_asus_xtion_pro_link child(9): plate_bottom_link child(10): plate_middle_link child(11): plate_top_link child(12): pole_bottom_0_link child(13): pole_bottom_1_link child(14): pole_bottom_2_link child(15): pole_bottom_3_link child(16): pole_bottom_4_link child(17): pole_bottom_5_link child(18): pole_kinect_0_link child(19): pole_kinect_1_link child(20): pole_middle_0_link child(21): pole_middle_1_link child(22): pole_middle_2_link child(23): pole_middle_3_link child(24): pole_top_0_link child(25): pole_top_1_link child(26): pole_top_2_link child(27): pole_top_3_link child(28): wheel_left_link child(29): wheel_right_link

Next I run urdf_to_collada:

$ rosrun collada_urdf urdf_to_collada ~/kobuki.urdf ~/kobuki.dae

Finally, I bring up the resulting Collada mesh in meshlab:

$ meshlab ~/kobuki.dae

And this is what it looks like:

kobuki-urdf-to-collada

I get similar bizarre results for any robot model I start with.

clalancette commented 7 years ago

Sorry for the long delay in responding to you. After taking a look at this, the short answer is that it seems that somehow the meshes for the model aren't being rendered properly. The meshes are definitely there in the .dae file, they just aren't being rendered by meshlab. If you manually import the meshes into meshlab, things seem to work OK. I probably won't have time to dig into this much more in the near future, but if you have time to look I would concentrate on the interaction between meshlab and the meshes in the .dae file.

pirobot commented 6 years ago

OK thanks for taking a look.

sloretz commented 6 years ago

Hi @pirobot, Looks like the issue you're seen is collada_urdf not handling mesh scaling. If I move the camera links and zoom in the kobuki base appears fine.

zoom_kobuki

In the original collada file I see <unit name="millimeter" meter="0.001"/>. When I scale the camera meshes by 0.001 it appears fine. If you have time to add handling of mesh scaling to collada_urdf, a pull request would be appreciated.