urdfpy icon indicating copy to clipboard operation
urdfpy copied to clipboard

Error when reading a URDF file

Open agp-ka32 opened this issue 2 years ago • 2 comments

I am trying to read a URDF file, but I get this error: ValueError: Missing required attribute effort when parsing an object of type JointLimit.

The contents of the urdf file are below:

<?xml version="1.0" ?> <robot name="partnet_3a910cc1f575b08339d3717288022c20"> <link name="base"/> <link name="link_0"> <visual name="drawer_front-23"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-50.obj"/> </geometry> </visual> <visual name="drawer_front-24"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-48.obj"/> </geometry> </visual> <visual name="drawer_side-25"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-52.obj"/> </geometry> </visual> <visual name="drawer_side-26"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-49.obj"/> </geometry> </visual> <visual name="drawer_back-27"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-53.obj"/> </geometry> </visual> <visual name="drawer_bottom-28"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-51.obj"/> </geometry> </visual> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-50.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-48.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-52.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-49.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-53.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-51.obj"/> </geometry> </collision> </link> <joint name="joint_0" type="prismatic"> <origin xyz="0 0 0"/> <axis xyz="0 0 1"/> <child link="link_0"/> <parent link="link_3"/> <limit lower="0" upper="0.5"/> </joint> <link name="link_1"> <visual name="drawer_front-16"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-67.obj"/> </geometry> </visual> <visual name="drawer_front-17"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-66.obj"/> </geometry> </visual> <visual name="drawer_side-18"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-62.obj"/> </geometry> </visual> <visual name="drawer_side-19"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-65.obj"/> </geometry> </visual> <visual name="drawer_back-20"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-64.obj"/> </geometry> </visual> <visual name="drawer_bottom-21"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-63.obj"/> </geometry> </visual> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-67.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-66.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-62.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-65.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-64.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-63.obj"/> </geometry> </collision> </link> <joint name="joint_1" type="prismatic"> <origin xyz="0 0 0"/> <axis xyz="0 0 1"/> <child link="link_1"/> <parent link="link_3"/> <limit lower="0" upper="0.5"/> </joint> <link name="link_2"> <visual name="drawer_side-9"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-59.obj"/> </geometry> </visual> <visual name="drawer_side-10"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-56.obj"/> </geometry> </visual> <visual name="drawer_back-11"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-60.obj"/> </geometry> </visual> <visual name="drawer_bottom-12"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-58.obj"/> </geometry> </visual> <visual name="drawer_front-13"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-57.obj"/> </geometry> </visual> <visual name="drawer_front-14"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-55.obj"/> </geometry> </visual> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-59.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-56.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-60.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-58.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-57.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-55.obj"/> </geometry> </collision> </link> <joint name="joint_2" type="prismatic"> <origin xyz="0 0 0"/> <axis xyz="0 0 1"/> <child link="link_2"/> <parent link="link_3"/> <limit lower="0" upper="0.5"/> </joint> <link name="link_3"> <visual name="shelf-43"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-22.obj"/> </geometry> </visual> <visual name="shelf-43"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-16.obj"/> </geometry> </visual> <visual name="shelf-43"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-18.obj"/> </geometry> </visual> <visual name="shelf-43"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-20.obj"/> </geometry> </visual> <visual name="shelf-43"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-21.obj"/> </geometry> </visual> <visual name="shelf-43"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-23.obj"/> </geometry> </visual> <visual name="shelf-43"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-17.obj"/> </geometry> </visual> <visual name="shelf-43"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-19.obj"/> </geometry> </visual> <visual name="countertop-44"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-42.obj"/> </geometry> </visual> <visual name="base_side_panel-38"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-38.obj"/> </geometry> </visual> <visual name="base_side_panel-39"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-32.obj"/> </geometry> </visual> <visual name="base_side_panel-40"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-36.obj"/> </geometry> </visual> <visual name="base_side_panel-41"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-5.obj"/> </geometry> </visual> <visual name="frame_horizontal_bar-51"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-13.obj"/> </geometry> </visual> <visual name="frame_horizontal_bar-52"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-12.obj"/> </geometry> </visual> <visual name="frame_horizontal_bar-53"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-15.obj"/> </geometry> </visual> <visual name="frame_horizontal_bar-54"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-14.obj"/> </geometry> </visual> <visual name="frame_horizontal_bar-55"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-39.obj"/> </geometry> </visual> <visual name="frame_horizontal_bar-56"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-45.obj"/> </geometry> </visual> <visual name="frame_horizontal_bar-57"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-40.obj"/> </geometry> </visual> <visual name="frame_horizontal_bar-58"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-6.obj"/> </geometry> </visual> <visual name="vertical_side_panel-59"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-41.obj"/> </geometry> </visual> <visual name="vertical_side_panel-60"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-43.obj"/> </geometry> </visual> <visual name="back_panel-61"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-37.obj"/> </geometry> </visual> <visual name="vertical_side_panel-62"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-44.obj"/> </geometry> </visual> <visual name="vertical_side_panel-63"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-28.obj"/> </geometry> </visual> <visual name="vertical_side_panel-64"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-24.obj"/> </geometry> </visual> <visual name="vertical_divider_panel-65"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-9.obj"/> </geometry> </visual> <visual name="vertical_divider_panel-66"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-10.obj"/> </geometry> </visual> <visual name="bottom_panel-67"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-1.obj"/> </geometry> </visual> <visual name="bottom_panel-67"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-46.obj"/> </geometry> </visual> <visual name="bottom_panel-67"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-3.obj"/> </geometry> </visual> <visual name="vertical_divider_panel-68"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-34.obj"/> </geometry> </visual> <visual name="vertical_divider_panel-69"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-4.obj"/> </geometry> </visual> <visual name="vertical_divider_panel-69"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-29.obj"/> </geometry> </visual> <visual name="vertical_divider_panel-69"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-27.obj"/> </geometry> </visual> <visual name="vertical_divider_panel-70"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-8.obj"/> </geometry> </visual> <visual name="vertical_divider_panel-70"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-33.obj"/> </geometry> </visual> <visual name="vertical_divider_panel-70"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-2.obj"/> </geometry> </visual> <visual name="vertical_divider_panel-71"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-26.obj"/> </geometry> </visual> <visual name="back_panel-72"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-31.obj"/> </geometry> </visual> <visual name="frame_horizontal_bar-73"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-7.obj"/> </geometry> </visual> <visual name="frame_horizontal_bar-74"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-30.obj"/> </geometry> </visual> <visual name="frame_horizontal_bar-75"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-35.obj"/> </geometry> </visual> <visual name="frame_horizontal_bar-76"> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-25.obj"/> </geometry> </visual> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-22.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-16.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-18.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-20.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-21.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-23.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-17.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-19.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-42.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-38.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-32.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-36.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-5.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-13.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-12.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-15.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-14.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-39.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-45.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-40.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-6.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-41.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-43.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-37.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-44.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-28.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-24.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-9.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-10.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-1.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-46.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-3.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-34.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-4.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-29.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-27.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-8.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-33.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-2.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-26.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-31.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-7.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-30.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-35.obj"/> </geometry> </collision> <collision> <origin xyz="0 0 0"/> <geometry> <mesh filename="textured_objs/original-25.obj"/> </geometry> </collision> </link> <joint name="joint_3" type="fixed"> <origin rpy="1.570796326794897 0 -1.570796326794897" xyz="0 0 0"/> <child link="link_3"/> <parent link="base"/> </joint> </robot>

Can you folks, @mmatl @JanusMaple, point out a solution to this issue? Thanks.

agp-ka32 avatar Sep 30 '22 23:09 agp-ka32

I am having the same issue. Some effort from the maintainers would surely help xD

arnabdeypolimi avatar Oct 12 '22 17:10 arnabdeypolimi

I think the issue is in your URDF file. If you look at the documentation when declaring a prismatic or revolute joint, the limit of the joint requires an effort attribute. Try adding the attribute effort in the joint limits and see if that changes anything. See ROS URDF joint under <limit>

Daniella1 avatar Oct 21 '22 06:10 Daniella1