1 #include <gtest/gtest.h>
4 #include <std_msgs/Bool.h>
5 #include <geometry_msgs/TwistStamped.h>
6 #include <dataspeed_ulc_msgs/UlcCmd.h>
7 #include <dataspeed_ulc_msgs/UlcReport.h>
9 #include <can_msgs/Frame.h>
51 void recvCan(
const can_msgs::FrameConstPtr& msg)
53 if (!msg->is_rtr && !msg->is_error && !msg->is_extended) {
65 void recvReport(
const dataspeed_ulc_msgs::UlcReportConstPtr& msg)
125 g_ulc_cmd = dataspeed_ulc_msgs::UlcCmd();
143 if (!stamp_new.
isZero()) {
144 if (!stamp_old.
isZero() && (stamp_old != stamp_new)) {
148 stamp_old = stamp_new;
168 TEST(ULCNode, cmdRangeSaturation)
170 g_ulc_cmd = dataspeed_ulc_msgs::UlcCmd();
177 g_ulc_cmd.pedals_mode = dataspeed_ulc_msgs::UlcCmd::SPEED_MODE;
188 g_ulc_cmd.steering_mode = dataspeed_ulc_msgs::UlcCmd::YAW_RATE_MODE;
205 g_ulc_cmd.steering_mode = dataspeed_ulc_msgs::UlcCmd::CURVATURE_MODE;
217 g_ulc_cmd.pedals_mode = dataspeed_ulc_msgs::UlcCmd::SPEED_MODE;
228 g_ulc_cmd.steering_mode = dataspeed_ulc_msgs::UlcCmd::YAW_RATE_MODE;
238 EXPECT_EQ(UINT8_MAX,
g_msg_ulc_cfg.get().jerk_limit_throttle);
245 g_ulc_cmd.steering_mode = dataspeed_ulc_msgs::UlcCmd::CURVATURE_MODE;
260 g_ulc_cmd.jerk_limit_throttle = INFINITY;
267 g_ulc_cmd.steering_mode = dataspeed_ulc_msgs::UlcCmd::YAW_RATE_MODE;
277 EXPECT_EQ(UINT8_MAX,
g_msg_ulc_cfg.get().jerk_limit_throttle);
284 g_ulc_cmd.steering_mode = dataspeed_ulc_msgs::UlcCmd::CURVATURE_MODE;
300 g_ulc_cmd.pedals_mode = dataspeed_ulc_msgs::UlcCmd::SPEED_MODE;
301 g_ulc_cmd.jerk_limit_throttle = -INFINITY;
308 g_ulc_cmd.steering_mode = dataspeed_ulc_msgs::UlcCmd::YAW_RATE_MODE;
325 g_ulc_cmd.steering_mode = dataspeed_ulc_msgs::UlcCmd::CURVATURE_MODE;
334 TEST(ULCNode, outOfBoundsInputs)
339 g_ulc_cmd = dataspeed_ulc_msgs::UlcCmd();
342 g_ulc_cmd.pedals_mode = dataspeed_ulc_msgs::UlcCmd::SPEED_MODE;
347 g_ulc_cmd = dataspeed_ulc_msgs::UlcCmd();
350 g_ulc_cmd.pedals_mode = dataspeed_ulc_msgs::UlcCmd::ACCEL_MODE;
356 g_ulc_cmd = dataspeed_ulc_msgs::UlcCmd();
363 g_ulc_cmd = dataspeed_ulc_msgs::UlcCmd();
370 g_ulc_cmd = dataspeed_ulc_msgs::UlcCmd();
377 g_ulc_cmd = dataspeed_ulc_msgs::UlcCmd();
384 g_ulc_cmd = dataspeed_ulc_msgs::UlcCmd();
391 g_ulc_cmd = dataspeed_ulc_msgs::UlcCmd();
398 g_ulc_cmd = dataspeed_ulc_msgs::UlcCmd();
405 g_ulc_cmd = dataspeed_ulc_msgs::UlcCmd();
412 g_ulc_cmd = dataspeed_ulc_msgs::UlcCmd();
424 g_ulc_cmd = dataspeed_ulc_msgs::UlcCmd();
435 g_ulc_cmd.pedals_mode = dataspeed_ulc_msgs::UlcCmd::SPEED_MODE;
452 g_ulc_cmd.pedals_mode = dataspeed_ulc_msgs::UlcCmd::ACCEL_MODE;
460 g_ulc_cmd.steering_mode = dataspeed_ulc_msgs::UlcCmd::YAW_RATE_MODE;
468 g_ulc_cmd.steering_mode = dataspeed_ulc_msgs::UlcCmd::CURVATURE_MODE;
477 std_msgs::Bool dbw_enabled_msg;
479 g_ulc_cmd = dataspeed_ulc_msgs::UlcCmd();
495 dbw_enabled_msg.data =
true;
509 dbw_enabled_msg.data =
false;
523 geometry_msgs::Twist twist_cmd;
524 twist_cmd.linear.x = 22.0;
525 twist_cmd.angular.z = 0.2;
537 geometry_msgs::TwistStamped twist_stamped_cmd;
538 twist_stamped_cmd.twist = twist_cmd;
551 can_msgs::Frame report_out;
553 report_out.is_extended =
false;
557 msg_report_ptr->
timeout =
false;
592 int main(
int argc,
char **argv) {
593 testing::InitGoogleTest(&argc, argv);
613 int result = RUN_ALL_TESTS();