@@ -1404,3 +1404,113 @@ TEST_F(TestComponentParser, urdf_incomplete_throws_error)
1404
1404
std::string (ros2_control_test_assets::urdf_tail);
1405
1405
ASSERT_THROW (parse_control_resources_from_urdf (urdf_to_test), std::runtime_error);
1406
1406
}
1407
+
1408
+ TEST_F (TestComponentParser, parse_joint_state_interface_descriptions_from_hardware_info)
1409
+ {
1410
+ const std::string urdf_to_test =
1411
+ std::string (ros2_control_test_assets::urdf_head) +
1412
+ ros2_control_test_assets::valid_urdf_ros2_control_system_multi_joints_transmission +
1413
+ ros2_control_test_assets::urdf_tail;
1414
+ const auto control_hardware = parse_control_resources_from_urdf (urdf_to_test);
1415
+
1416
+ const auto joint_state_descriptions =
1417
+ parse_state_interface_descriptions (control_hardware[0 ].joints );
1418
+ EXPECT_EQ (joint_state_descriptions[0 ].get_prefix_name (), " joint1" );
1419
+ EXPECT_EQ (joint_state_descriptions[0 ].get_interface_name (), " position" );
1420
+ EXPECT_EQ (joint_state_descriptions[0 ].get_name (), " joint1/position" );
1421
+
1422
+ EXPECT_EQ (joint_state_descriptions[1 ].get_prefix_name (), " joint2" );
1423
+ EXPECT_EQ (joint_state_descriptions[1 ].get_interface_name (), " position" );
1424
+ EXPECT_EQ (joint_state_descriptions[1 ].get_name (), " joint2/position" );
1425
+ }
1426
+
1427
+ TEST_F (TestComponentParser, parse_joint_command_interface_descriptions_from_hardware_info)
1428
+ {
1429
+ const std::string urdf_to_test =
1430
+ std::string (ros2_control_test_assets::urdf_head) +
1431
+ ros2_control_test_assets::valid_urdf_ros2_control_system_multi_joints_transmission +
1432
+ ros2_control_test_assets::urdf_tail;
1433
+ const auto control_hardware = parse_control_resources_from_urdf (urdf_to_test);
1434
+
1435
+ const auto joint_command_descriptions =
1436
+ parse_command_interface_descriptions (control_hardware[0 ].joints );
1437
+ EXPECT_EQ (joint_command_descriptions[0 ].get_prefix_name (), " joint1" );
1438
+ EXPECT_EQ (joint_command_descriptions[0 ].get_interface_name (), " position" );
1439
+ EXPECT_EQ (joint_command_descriptions[0 ].get_name (), " joint1/position" );
1440
+ EXPECT_EQ (joint_command_descriptions[0 ].interface_info .min , " -1" );
1441
+ EXPECT_EQ (joint_command_descriptions[0 ].interface_info .max , " 1" );
1442
+
1443
+ EXPECT_EQ (joint_command_descriptions[1 ].get_prefix_name (), " joint2" );
1444
+ EXPECT_EQ (joint_command_descriptions[1 ].get_interface_name (), " position" );
1445
+ EXPECT_EQ (joint_command_descriptions[1 ].get_name (), " joint2/position" );
1446
+ EXPECT_EQ (joint_command_descriptions[1 ].interface_info .min , " -1" );
1447
+ EXPECT_EQ (joint_command_descriptions[1 ].interface_info .max , " 1" );
1448
+ }
1449
+
1450
+ TEST_F (TestComponentParser, parse_sensor_state_interface_descriptions_from_hardware_info)
1451
+ {
1452
+ const std::string urdf_to_test = std::string (ros2_control_test_assets::urdf_head) +
1453
+ ros2_control_test_assets::valid_urdf_ros2_control_sensor_only +
1454
+ ros2_control_test_assets::urdf_tail;
1455
+ const auto control_hardware = parse_control_resources_from_urdf (urdf_to_test);
1456
+
1457
+ const auto sensor_state_descriptions =
1458
+ parse_state_interface_descriptions (control_hardware[0 ].sensors );
1459
+ EXPECT_EQ (sensor_state_descriptions[0 ].get_prefix_name (), " sensor1" );
1460
+ EXPECT_EQ (sensor_state_descriptions[0 ].get_interface_name (), " roll" );
1461
+ EXPECT_EQ (sensor_state_descriptions[0 ].get_name (), " sensor1/roll" );
1462
+ EXPECT_EQ (sensor_state_descriptions[1 ].get_prefix_name (), " sensor1" );
1463
+ EXPECT_EQ (sensor_state_descriptions[1 ].get_interface_name (), " pitch" );
1464
+ EXPECT_EQ (sensor_state_descriptions[1 ].get_name (), " sensor1/pitch" );
1465
+ EXPECT_EQ (sensor_state_descriptions[2 ].get_prefix_name (), " sensor1" );
1466
+ EXPECT_EQ (sensor_state_descriptions[2 ].get_interface_name (), " yaw" );
1467
+ EXPECT_EQ (sensor_state_descriptions[2 ].get_name (), " sensor1/yaw" );
1468
+
1469
+ EXPECT_EQ (sensor_state_descriptions[3 ].get_prefix_name (), " sensor2" );
1470
+ EXPECT_EQ (sensor_state_descriptions[3 ].get_interface_name (), " image" );
1471
+ EXPECT_EQ (sensor_state_descriptions[3 ].get_name (), " sensor2/image" );
1472
+ }
1473
+
1474
+ TEST_F (TestComponentParser, parse_gpio_state_interface_descriptions_from_hardware_info)
1475
+ {
1476
+ const std::string urdf_to_test =
1477
+ std::string (ros2_control_test_assets::urdf_head) +
1478
+ ros2_control_test_assets::valid_urdf_ros2_control_system_robot_with_gpio +
1479
+ ros2_control_test_assets::urdf_tail;
1480
+ const auto control_hardware = parse_control_resources_from_urdf (urdf_to_test);
1481
+
1482
+ const auto gpio_state_descriptions =
1483
+ parse_state_interface_descriptions (control_hardware[0 ].gpios );
1484
+ EXPECT_EQ (gpio_state_descriptions[0 ].get_prefix_name (), " flange_analog_IOs" );
1485
+ EXPECT_EQ (gpio_state_descriptions[0 ].get_interface_name (), " analog_output1" );
1486
+ EXPECT_EQ (gpio_state_descriptions[0 ].get_name (), " flange_analog_IOs/analog_output1" );
1487
+ EXPECT_EQ (gpio_state_descriptions[1 ].get_prefix_name (), " flange_analog_IOs" );
1488
+ EXPECT_EQ (gpio_state_descriptions[1 ].get_interface_name (), " analog_input1" );
1489
+ EXPECT_EQ (gpio_state_descriptions[1 ].get_name (), " flange_analog_IOs/analog_input1" );
1490
+ EXPECT_EQ (gpio_state_descriptions[2 ].get_prefix_name (), " flange_analog_IOs" );
1491
+ EXPECT_EQ (gpio_state_descriptions[2 ].get_interface_name (), " analog_input2" );
1492
+ EXPECT_EQ (gpio_state_descriptions[2 ].get_name (), " flange_analog_IOs/analog_input2" );
1493
+
1494
+ EXPECT_EQ (gpio_state_descriptions[3 ].get_prefix_name (), " flange_vacuum" );
1495
+ EXPECT_EQ (gpio_state_descriptions[3 ].get_interface_name (), " vacuum" );
1496
+ EXPECT_EQ (gpio_state_descriptions[3 ].get_name (), " flange_vacuum/vacuum" );
1497
+ }
1498
+
1499
+ TEST_F (TestComponentParser, parse_gpio_command_interface_descriptions_from_hardware_info)
1500
+ {
1501
+ const std::string urdf_to_test =
1502
+ std::string (ros2_control_test_assets::urdf_head) +
1503
+ ros2_control_test_assets::valid_urdf_ros2_control_system_robot_with_gpio +
1504
+ ros2_control_test_assets::urdf_tail;
1505
+ const auto control_hardware = parse_control_resources_from_urdf (urdf_to_test);
1506
+
1507
+ const auto gpio_state_descriptions =
1508
+ parse_command_interface_descriptions (control_hardware[0 ].gpios );
1509
+ EXPECT_EQ (gpio_state_descriptions[0 ].get_prefix_name (), " flange_analog_IOs" );
1510
+ EXPECT_EQ (gpio_state_descriptions[0 ].get_interface_name (), " analog_output1" );
1511
+ EXPECT_EQ (gpio_state_descriptions[0 ].get_name (), " flange_analog_IOs/analog_output1" );
1512
+
1513
+ EXPECT_EQ (gpio_state_descriptions[1 ].get_prefix_name (), " flange_vacuum" );
1514
+ EXPECT_EQ (gpio_state_descriptions[1 ].get_interface_name (), " vacuum" );
1515
+ EXPECT_EQ (gpio_state_descriptions[1 ].get_name (), " flange_vacuum/vacuum" );
1516
+ }
0 commit comments