@@ -232,7 +232,9 @@ class TrajectoryControllerTest : public ::testing::Test
232232 ActivateTrajectoryController (separate_cmd_and_state_values);
233233 }
234234
235- void ActivateTrajectoryController (bool separate_cmd_and_state_values = false )
235+ void ActivateTrajectoryController (
236+ bool separate_cmd_and_state_values = false ,
237+ const std::vector<double > initial_pos_joints = INITIAL_POS_JOINTS)
236238 {
237239 std::vector<hardware_interface::LoanedCommandInterface> cmd_interfaces;
238240 std::vector<hardware_interface::LoanedStateInterface> state_interfaces;
@@ -266,14 +268,14 @@ class TrajectoryControllerTest : public ::testing::Test
266268
267269 // Add to export lists and set initial values
268270 cmd_interfaces.emplace_back (pos_cmd_interfaces_.back ());
269- cmd_interfaces.back ().set_value (INITIAL_POS_JOINTS [i]);
271+ cmd_interfaces.back ().set_value (initial_pos_joints [i]);
270272 cmd_interfaces.emplace_back (vel_cmd_interfaces_.back ());
271273 cmd_interfaces.back ().set_value (INITIAL_VEL_JOINTS[i]);
272274 cmd_interfaces.emplace_back (acc_cmd_interfaces_.back ());
273275 cmd_interfaces.back ().set_value (INITIAL_ACC_JOINTS[i]);
274276 cmd_interfaces.emplace_back (eff_cmd_interfaces_.back ());
275277 cmd_interfaces.back ().set_value (INITIAL_EFF_JOINTS[i]);
276- joint_state_pos_[i] = INITIAL_POS_JOINTS [i];
278+ joint_state_pos_[i] = initial_pos_joints [i];
277279 joint_state_vel_[i] = INITIAL_VEL_JOINTS[i];
278280 joint_state_acc_[i] = INITIAL_ACC_JOINTS[i];
279281 state_interfaces.emplace_back (pos_state_interfaces_.back ());
@@ -434,17 +436,51 @@ class TrajectoryControllerTest : public ::testing::Test
434436 return state_msg_;
435437 }
436438
437- void expectHoldingPoint (std::vector<double > points )
439+ void expectHoldingPoint (std::vector<double > point )
438440 {
439441 // it should be holding the given point
440442 // i.e., active but trivial trajectory (one point only)
441443 EXPECT_TRUE (traj_controller_->has_trivial_traj ());
442444
443445 if (traj_controller_->has_position_command_interface ())
444446 {
445- EXPECT_NEAR (points.at (0 ), joint_pos_[0 ], COMMON_THRESHOLD);
446- EXPECT_NEAR (points.at (1 ), joint_pos_[1 ], COMMON_THRESHOLD);
447- EXPECT_NEAR (points.at (2 ), joint_pos_[2 ], COMMON_THRESHOLD);
447+ EXPECT_NEAR (point.at (0 ), joint_pos_[0 ], COMMON_THRESHOLD);
448+ EXPECT_NEAR (point.at (1 ), joint_pos_[1 ], COMMON_THRESHOLD);
449+ EXPECT_NEAR (point.at (2 ), joint_pos_[2 ], COMMON_THRESHOLD);
450+ }
451+
452+ if (traj_controller_->has_velocity_command_interface ())
453+ {
454+ EXPECT_EQ (0.0 , joint_vel_[0 ]);
455+ EXPECT_EQ (0.0 , joint_vel_[1 ]);
456+ EXPECT_EQ (0.0 , joint_vel_[2 ]);
457+ }
458+
459+ if (traj_controller_->has_acceleration_command_interface ())
460+ {
461+ EXPECT_EQ (0.0 , joint_acc_[0 ]);
462+ EXPECT_EQ (0.0 , joint_acc_[1 ]);
463+ EXPECT_EQ (0.0 , joint_acc_[2 ]);
464+ }
465+
466+ if (traj_controller_->has_effort_command_interface ())
467+ {
468+ EXPECT_EQ (0.0 , joint_eff_[0 ]);
469+ EXPECT_EQ (0.0 , joint_eff_[1 ]);
470+ EXPECT_EQ (0.0 , joint_eff_[2 ]);
471+ }
472+ }
473+
474+ void expectHoldingPointDeactivated (std::vector<double > point)
475+ {
476+ // it should be holding the given point, but no active trajectory
477+ EXPECT_FALSE (traj_controller_->has_active_traj ());
478+
479+ if (traj_controller_->has_position_command_interface ())
480+ {
481+ EXPECT_NEAR (point.at (0 ), joint_pos_[0 ], COMMON_THRESHOLD);
482+ EXPECT_NEAR (point.at (1 ), joint_pos_[1 ], COMMON_THRESHOLD);
483+ EXPECT_NEAR (point.at (2 ), joint_pos_[2 ], COMMON_THRESHOLD);
448484 }
449485
450486 if (traj_controller_->has_velocity_command_interface ())
0 commit comments