urdfpy
urdfpy copied to clipboard
Error when reading a URDF file
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.
I am having the same issue. Some effort from the maintainers would surely help xD
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>