Skip to content

Commit 4fcdccb

Browse files
committed
Add tests for the joint type
Signed-off-by: Sai Kishor Kothakota <sai.kishor@pal-robotics.com>
1 parent 0c378f3 commit 4fcdccb

1 file changed

Lines changed: 173 additions & 0 deletions

File tree

urdf_parser/test/urdf_schema_v1_0_legacy_test.cpp

Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -953,6 +953,179 @@ TEST(URDF_V1_0_LEGACY, quat_xyzw_ignored_in_v1_0)
953953
EXPECT_DOUBLE_EQ(0.0, z);
954954
EXPECT_DOUBLE_EQ(1.0, w);
955955
}
956+
957+
/// @note Joint types
958+
TEST(URDF_V1_0_LEGACY, revolute_joint_with_limits)
959+
{
960+
std::string urdf_str = R"urdf(
961+
<robot name="r" version="1.0">
962+
<link name="l1"/>
963+
<link name="l2"/>
964+
<joint name="j1" type="revolute">
965+
<parent link="l1"/>
966+
<child link="l2"/>
967+
<limit lower="-1.57" upper="1.57" effort="100.0" velocity="2.0"/>
968+
</joint>
969+
</robot>
970+
)urdf";
971+
urdf::ModelInterfaceSharedPtr model = urdf::parseURDF(urdf_str);
972+
ASSERT_NE(nullptr, model);
973+
EXPECT_EQ(urdf::Joint::REVOLUTE, model->getJoint("j1")->type);
974+
ASSERT_NE(nullptr, model->getJoint("j1")->limits);
975+
EXPECT_DOUBLE_EQ(-1.57, model->getJoint("j1")->limits->lower);
976+
EXPECT_DOUBLE_EQ( 1.57, model->getJoint("j1")->limits->upper);
977+
EXPECT_DOUBLE_EQ(100.0, model->getJoint("j1")->limits->effort);
978+
EXPECT_DOUBLE_EQ( 2.0, model->getJoint("j1")->limits->velocity);
979+
}
980+
981+
TEST(URDF_V1_0_LEGACY, revolute_joint_without_limits_fails)
982+
{
983+
std::string urdf_str = R"urdf(
984+
<robot name="r" version="1.0">
985+
<link name="l1"/>
986+
<link name="l2"/>
987+
<joint name="j1" type="revolute">
988+
<parent link="l1"/>
989+
<child link="l2"/>
990+
</joint>
991+
</robot>
992+
)urdf";
993+
EXPECT_EQ(nullptr, urdf::parseURDF(urdf_str));
994+
}
995+
996+
TEST(URDF_V1_0_LEGACY, prismatic_joint_with_limits)
997+
{
998+
std::string urdf_str = R"urdf(
999+
<robot name="r" version="1.0">
1000+
<link name="l1"/>
1001+
<link name="l2"/>
1002+
<joint name="j1" type="prismatic">
1003+
<parent link="l1"/>
1004+
<child link="l2"/>
1005+
<axis xyz="0 0 1"/>
1006+
<limit lower="-0.5" upper="0.5" effort="50.0" velocity="0.5"/>
1007+
</joint>
1008+
</robot>
1009+
)urdf";
1010+
urdf::ModelInterfaceSharedPtr model = urdf::parseURDF(urdf_str);
1011+
ASSERT_NE(nullptr, model);
1012+
EXPECT_EQ(urdf::Joint::PRISMATIC, model->getJoint("j1")->type);
1013+
}
1014+
1015+
TEST(URDF_V1_0_LEGACY, prismatic_joint_without_limits_fails)
1016+
{
1017+
std::string urdf_str = R"urdf(
1018+
<robot name="r" version="1.0">
1019+
<link name="l1"/>
1020+
<link name="l2"/>
1021+
<joint name="j1" type="prismatic">
1022+
<parent link="l1"/>
1023+
<child link="l2"/>
1024+
</joint>
1025+
</robot>
1026+
)urdf";
1027+
EXPECT_EQ(nullptr, urdf::parseURDF(urdf_str));
1028+
}
1029+
1030+
TEST(URDF_V1_0_LEGACY, continuous_joint_no_limits_required)
1031+
{
1032+
std::string urdf_str = R"urdf(
1033+
<robot name="r" version="1.0">
1034+
<link name="l1"/>
1035+
<link name="l2"/>
1036+
<joint name="j1" type="continuous">
1037+
<parent link="l1"/>
1038+
<child link="l2"/>
1039+
</joint>
1040+
</robot>
1041+
)urdf";
1042+
urdf::ModelInterfaceSharedPtr model = urdf::parseURDF(urdf_str);
1043+
ASSERT_NE(nullptr, model);
1044+
EXPECT_EQ(urdf::Joint::CONTINUOUS, model->getJoint("j1")->type);
1045+
EXPECT_EQ(nullptr, model->getJoint("j1")->limits);
1046+
}
1047+
1048+
TEST(URDF_V1_0_LEGACY, fixed_joint_no_limits_required)
1049+
{
1050+
std::string urdf_str = R"urdf(
1051+
<robot name="r" version="1.0">
1052+
<link name="l1"/>
1053+
<link name="l2"/>
1054+
<joint name="j1" type="fixed">
1055+
<parent link="l1"/>
1056+
<child link="l2"/>
1057+
</joint>
1058+
</robot>
1059+
)urdf";
1060+
urdf::ModelInterfaceSharedPtr model = urdf::parseURDF(urdf_str);
1061+
ASSERT_NE(nullptr, model);
1062+
EXPECT_EQ(urdf::Joint::FIXED, model->getJoint("j1")->type);
1063+
EXPECT_EQ(nullptr, model->getJoint("j1")->limits);
1064+
}
1065+
1066+
TEST(URDF_V1_0_LEGACY, floating_joint_no_limits_required)
1067+
{
1068+
std::string urdf_str = R"urdf(
1069+
<robot name="r" version="1.0">
1070+
<link name="l1"/>
1071+
<link name="l2"/>
1072+
<joint name="j1" type="floating">
1073+
<parent link="l1"/>
1074+
<child link="l2"/>
1075+
</joint>
1076+
</robot>
1077+
)urdf";
1078+
urdf::ModelInterfaceSharedPtr model = urdf::parseURDF(urdf_str);
1079+
ASSERT_NE(nullptr, model);
1080+
EXPECT_EQ(urdf::Joint::FLOATING, model->getJoint("j1")->type);
1081+
}
1082+
1083+
TEST(URDF_V1_0_LEGACY, planar_joint_no_limits_required)
1084+
{
1085+
std::string urdf_str = R"urdf(
1086+
<robot name="r" version="1.0">
1087+
<link name="l1"/>
1088+
<link name="l2"/>
1089+
<joint name="j1" type="planar">
1090+
<parent link="l1"/>
1091+
<child link="l2"/>
1092+
</joint>
1093+
</robot>
1094+
)urdf";
1095+
urdf::ModelInterfaceSharedPtr model = urdf::parseURDF(urdf_str);
1096+
ASSERT_NE(nullptr, model);
1097+
EXPECT_EQ(urdf::Joint::PLANAR, model->getJoint("j1")->type);
1098+
}
1099+
1100+
TEST(URDF_V1_0_LEGACY, unknown_joint_type_fails)
1101+
{
1102+
std::string urdf_str = R"urdf(
1103+
<robot name="r" version="1.0">
1104+
<link name="l1"/>
1105+
<link name="l2"/>
1106+
<joint name="j1" type="spring">
1107+
<parent link="l1"/>
1108+
<child link="l2"/>
1109+
</joint>
1110+
</robot>
1111+
)urdf";
1112+
EXPECT_EQ(nullptr, urdf::parseURDF(urdf_str));
1113+
}
1114+
1115+
TEST(URDF_V1_0_LEGACY, joint_without_type_attr_fails)
1116+
{
1117+
std::string urdf_str = R"urdf(
1118+
<robot name="r" version="1.0">
1119+
<link name="l1"/>
1120+
<link name="l2"/>
1121+
<joint name="j1">
1122+
<parent link="l1"/>
1123+
<child link="l2"/>
1124+
</joint>
1125+
</robot>
1126+
)urdf";
1127+
EXPECT_EQ(nullptr, urdf::parseURDF(urdf_str));
1128+
}
9561129
int main(int argc, char **argv)
9571130
{
9581131
::testing::InitGoogleTest(&argc, argv);

0 commit comments

Comments
 (0)