|
20 | 20 | #include "random_generator_utils.hpp"
|
21 | 21 | #include "transmission_interface/differential_transmission.hpp"
|
22 | 22 |
|
| 23 | +using hardware_interface::HW_IF_CURRENT; |
23 | 24 | using hardware_interface::HW_IF_EFFORT;
|
| 25 | +using hardware_interface::HW_IF_FORCE; |
24 | 26 | using hardware_interface::HW_IF_POSITION;
|
25 | 27 | using hardware_interface::HW_IF_TORQUE;
|
26 | 28 | using hardware_interface::HW_IF_VELOCITY;
|
@@ -128,6 +130,8 @@ TEST(ConfigureTest, FailsWithBadHandles)
|
128 | 130 | testConfigureWithBadHandles(HW_IF_VELOCITY);
|
129 | 131 | testConfigureWithBadHandles(HW_IF_EFFORT);
|
130 | 132 | testConfigureWithBadHandles(HW_IF_TORQUE);
|
| 133 | + testConfigureWithBadHandles(HW_IF_FORCE); |
| 134 | + testConfigureWithBadHandles(HW_IF_CURRENT); |
131 | 135 | testConfigureWithBadHandles(HW_IF_ABSOLUTE_POSITION);
|
132 | 136 | }
|
133 | 137 |
|
@@ -225,6 +229,9 @@ TEST_F(BlackBoxTest, IdentityMap)
|
225 | 229 | testIdentityMap(transmission, input_value, HW_IF_VELOCITY);
|
226 | 230 | testIdentityMap(transmission, input_value, HW_IF_EFFORT);
|
227 | 231 | testIdentityMap(transmission, input_value, HW_IF_TORQUE);
|
| 232 | + testIdentityMap(transmission, input_value, HW_IF_FORCE); |
| 233 | + // testIdentityMap(transmission, input_value, HW_IF_CURRENT); |
| 234 | + // testIdentityMap(transmission, input_value, HW_IF_ABSOLUTE_POSITION); |
228 | 235 | }
|
229 | 236 | }
|
230 | 237 | }
|
@@ -293,6 +300,30 @@ TEST_F(WhiteBoxTest, DontMoveJoints)
|
293 | 300 | EXPECT_THAT(0.0, DoubleNear(j_val[1], EPS));
|
294 | 301 | }
|
295 | 302 |
|
| 303 | + // Force interface |
| 304 | + { |
| 305 | + auto a1_handle = ActuatorHandle("act1", HW_IF_FORCE, a_vec[0]); |
| 306 | + auto a2_handle = ActuatorHandle("act2", HW_IF_FORCE, a_vec[1]); |
| 307 | + auto joint1_handle = JointHandle("joint1", HW_IF_FORCE, j_vec[0]); |
| 308 | + auto joint2_handle = JointHandle("joint2", HW_IF_FORCE, j_vec[1]); |
| 309 | + trans.configure({joint1_handle, joint2_handle}, {a1_handle, a2_handle}); |
| 310 | + trans.actuator_to_joint(); |
| 311 | + EXPECT_THAT(0.0, DoubleNear(j_val[0], EPS)); |
| 312 | + EXPECT_THAT(0.0, DoubleNear(j_val[1], EPS)); |
| 313 | + } |
| 314 | + |
| 315 | + // Current interface |
| 316 | + { |
| 317 | + auto a1_handle = ActuatorHandle("act1", HW_IF_CURRENT, a_vec[0]); |
| 318 | + auto a2_handle = ActuatorHandle("act2", HW_IF_CURRENT, a_vec[1]); |
| 319 | + auto joint1_handle = JointHandle("joint1", HW_IF_CURRENT, j_vec[0]); |
| 320 | + auto joint2_handle = JointHandle("joint2", HW_IF_CURRENT, j_vec[1]); |
| 321 | + trans.configure({joint1_handle, joint2_handle}, {a1_handle, a2_handle}); |
| 322 | + trans.actuator_to_joint(); |
| 323 | + EXPECT_THAT(0.0, DoubleNear(j_val[0], EPS)); |
| 324 | + EXPECT_THAT(0.0, DoubleNear(j_val[1], EPS)); |
| 325 | + } |
| 326 | + |
296 | 327 | // Absolute position interface
|
297 | 328 | {
|
298 | 329 | auto a1_handle = ActuatorHandle("act1", HW_IF_ABSOLUTE_POSITION, a_vec[0]);
|
@@ -365,6 +396,30 @@ TEST_F(WhiteBoxTest, MoveFirstJointOnly)
|
365 | 396 | EXPECT_THAT(0.0, DoubleNear(j_val[1], EPS));
|
366 | 397 | }
|
367 | 398 |
|
| 399 | + // Force interface |
| 400 | + { |
| 401 | + auto a1_handle = ActuatorHandle("act1", HW_IF_FORCE, a_vec[0]); |
| 402 | + auto a2_handle = ActuatorHandle("act2", HW_IF_FORCE, a_vec[1]); |
| 403 | + auto joint1_handle = JointHandle("joint1", HW_IF_FORCE, j_vec[0]); |
| 404 | + auto joint2_handle = JointHandle("joint2", HW_IF_FORCE, j_vec[1]); |
| 405 | + trans.configure({joint1_handle, joint2_handle}, {a1_handle, a2_handle}); |
| 406 | + trans.actuator_to_joint(); |
| 407 | + EXPECT_THAT(400.0, DoubleNear(j_val[0], EPS)); |
| 408 | + EXPECT_THAT(0.0, DoubleNear(j_val[1], EPS)); |
| 409 | + } |
| 410 | + |
| 411 | + // Current interface |
| 412 | + { |
| 413 | + auto a1_handle = ActuatorHandle("act1", HW_IF_CURRENT, a_vec[0]); |
| 414 | + auto a2_handle = ActuatorHandle("act2", HW_IF_CURRENT, a_vec[1]); |
| 415 | + auto joint1_handle = JointHandle("joint1", HW_IF_CURRENT, j_vec[0]); |
| 416 | + auto joint2_handle = JointHandle("joint2", HW_IF_CURRENT, j_vec[1]); |
| 417 | + trans.configure({joint1_handle, joint2_handle}, {a1_handle, a2_handle}); |
| 418 | + trans.actuator_to_joint(); |
| 419 | + EXPECT_THAT(20.0, DoubleNear(j_val[0], EPS)); |
| 420 | + EXPECT_THAT(0.0, DoubleNear(j_val[1], EPS)); |
| 421 | + } |
| 422 | + |
368 | 423 | // Absolute position interface
|
369 | 424 | {
|
370 | 425 | auto a1_handle = ActuatorHandle("act1", HW_IF_ABSOLUTE_POSITION, a_vec[0]);
|
@@ -437,6 +492,30 @@ TEST_F(WhiteBoxTest, MoveSecondJointOnly)
|
437 | 492 | EXPECT_THAT(400.0, DoubleNear(j_val[1], EPS));
|
438 | 493 | }
|
439 | 494 |
|
| 495 | + // Force interface |
| 496 | + { |
| 497 | + auto a1_handle = ActuatorHandle("act1", HW_IF_FORCE, a_vec[0]); |
| 498 | + auto a2_handle = ActuatorHandle("act2", HW_IF_FORCE, a_vec[1]); |
| 499 | + auto joint1_handle = JointHandle("joint1", HW_IF_FORCE, j_vec[0]); |
| 500 | + auto joint2_handle = JointHandle("joint2", HW_IF_FORCE, j_vec[1]); |
| 501 | + trans.configure({joint1_handle, joint2_handle}, {a1_handle, a2_handle}); |
| 502 | + trans.actuator_to_joint(); |
| 503 | + EXPECT_THAT(0.0, DoubleNear(j_val[0], EPS)); |
| 504 | + EXPECT_THAT(400.0, DoubleNear(j_val[1], EPS)); |
| 505 | + } |
| 506 | + |
| 507 | + // Current interface |
| 508 | + { |
| 509 | + auto a1_handle = ActuatorHandle("act1", HW_IF_CURRENT, a_vec[0]); |
| 510 | + auto a2_handle = ActuatorHandle("act2", HW_IF_CURRENT, a_vec[1]); |
| 511 | + auto joint1_handle = JointHandle("joint1", HW_IF_CURRENT, j_vec[0]); |
| 512 | + auto joint2_handle = JointHandle("joint2", HW_IF_CURRENT, j_vec[1]); |
| 513 | + trans.configure({joint1_handle, joint2_handle}, {a1_handle, a2_handle}); |
| 514 | + trans.actuator_to_joint(); |
| 515 | + EXPECT_THAT(0.0, DoubleNear(j_val[0], EPS)); |
| 516 | + EXPECT_THAT(20.0, DoubleNear(j_val[1], EPS)); |
| 517 | + } |
| 518 | + |
440 | 519 | // Absolute position interface
|
441 | 520 | {
|
442 | 521 | auto a1_handle = ActuatorHandle("act1", HW_IF_ABSOLUTE_POSITION, a_vec[0]);
|
@@ -514,6 +593,30 @@ TEST_F(WhiteBoxTest, MoveBothJoints)
|
514 | 593 | EXPECT_THAT(520.0, DoubleNear(j_val[1], EPS));
|
515 | 594 | }
|
516 | 595 |
|
| 596 | + // Force interface |
| 597 | + { |
| 598 | + auto a1_handle = ActuatorHandle("act1", HW_IF_FORCE, a_vec[0]); |
| 599 | + auto a2_handle = ActuatorHandle("act2", HW_IF_FORCE, a_vec[1]); |
| 600 | + auto joint1_handle = JointHandle("joint1", HW_IF_FORCE, j_vec[0]); |
| 601 | + auto joint2_handle = JointHandle("joint2", HW_IF_FORCE, j_vec[1]); |
| 602 | + trans.configure({joint1_handle, joint2_handle}, {a1_handle, a2_handle}); |
| 603 | + trans.actuator_to_joint(); |
| 604 | + EXPECT_THAT(140.0, DoubleNear(j_val[0], EPS)); |
| 605 | + EXPECT_THAT(520.0, DoubleNear(j_val[1], EPS)); |
| 606 | + } |
| 607 | + |
| 608 | + // Current interface |
| 609 | + { |
| 610 | + auto a1_handle = ActuatorHandle("act1", HW_IF_CURRENT, a_vec[0]); |
| 611 | + auto a2_handle = ActuatorHandle("act2", HW_IF_CURRENT, a_vec[1]); |
| 612 | + auto joint1_handle = JointHandle("joint1", HW_IF_CURRENT, j_vec[0]); |
| 613 | + auto joint2_handle = JointHandle("joint2", HW_IF_CURRENT, j_vec[1]); |
| 614 | + trans.configure({joint1_handle, joint2_handle}, {a1_handle, a2_handle}); |
| 615 | + trans.actuator_to_joint(); |
| 616 | + EXPECT_THAT(8.0, DoubleNear(j_val[0], EPS)); |
| 617 | + EXPECT_THAT(-2.0, DoubleNear(j_val[1], EPS)); |
| 618 | + } |
| 619 | + |
517 | 620 | // Absolute position interface
|
518 | 621 | {
|
519 | 622 | auto a1_handle = ActuatorHandle("act1", HW_IF_ABSOLUTE_POSITION, a_vec[0]);
|
|
0 commit comments