2 #include <rclcpp/rclcpp.hpp>
14 auto time_now = std::chrono::system_clock::now();
15 auto time_now_ms = std::chrono::time_point_cast<std::chrono::milliseconds>(time_now);
16 auto time_value = time_now_ms.time_since_epoch();
17 return time_value.count();
23 std::string info_msg =
"Initializing master_node";
31 std::string info_msg(
"Shutting down");
40 using std::placeholders::_1;
44 galaxis::ros::create_subscription(
this,
47 galaxis::ros::create_subscription(
this,
84 std::ostringstream ostring;
89 ostring << x.first <<
"\t\t";
93 ostring <<
"online\t\tmode: " << x.second.second <<
"\t\t" << (timeNow - x.second.first);
98 RCLCPP_INFO(this->get_logger(),
"%s", ostring.str().c_str());
104 bool systemOnline =
true;
108 systemOnline =
false;
110 if(node.first.compare(
"ecu_node") == 0)
123 if(systemOnline ==
false) {
145 ServiceStateType::UniquePtr serviceStateMsgUPtr = std::make_unique<ServiceStateType>();
148 RCLCPP_INFO(this->get_logger(),
"!SystemState switched to: %i", p_state);
160 if(msg->node_name.compare(
"ecu_node") == 0) {
175 RCLCPP_INFO(this->get_logger(),
"Got new buttonState message");
176 if(buttonStateMsgSPtr ==
nullptr) {
177 RCLCPP_ERROR(this->get_logger(),
"buttonStateMsgSPtr is nullptr");
181 uint8_t btn1 = buttonStateMsgSPtr->pressed_button_1;
182 uint8_t btn2 = buttonStateMsgSPtr->pressed_button_2;
183 uint8_t btn3 = buttonStateMsgSPtr->pressed_button_3;
185 uint8_t cnt = (btn1) + (btn3) + (btn2);
188 RCLCPP_ERROR(this->get_logger(),
"Pressed two or more buttons at once, aborting");
190 }
else if(cnt == 0) {
199 auto msgUPtr = std::make_unique<SettingsValuesType>();
202 msgUPtr->firmware.servo_offset.front = 5;
203 msgUPtr->firmware.servo_offset.rear = 0;
204 RCLCPP_INFO(this->get_logger(),
"ERPM max is : %f", msgUPtr->firmware.erpm_max_rc);
205 RCLCPP_INFO(this->get_logger(),
"Sending settings for btn1");
216 auto msgUPtr = std::make_unique<SettingsValuesType>();
219 msgUPtr->firmware.servo_offset.front = 5;
220 msgUPtr->firmware.servo_offset.rear = 0;
221 RCLCPP_INFO(this->get_logger(),
"FREE DRIVING (btn2)");
222 RCLCPP_INFO(this->get_logger(),
"Sending settings for btn2");
236 auto msgUPtr = std::make_unique<SettingsValuesType>();
239 msgUPtr->firmware.servo_offset.front = 5;
240 msgUPtr->firmware.servo_offset.rear = 0;
241 RCLCPP_INFO(this->get_logger(),
"OBSTACLE DRIVING (btn3)");
242 RCLCPP_INFO(this->get_logger(),
"Sending settings for btn2");
262 case messages::msg::ServiceState::STATE_BOOTSTRAP:
265 case messages::msg::ServiceState::STATE_FREE_DRIVING:
268 case messages::msg::ServiceState::STATE_OBSTACLE_DRIVING:
272 RCLCPP_ERROR(this->get_logger(),
"p_state not known %u", p_state);
285 state = messages::msg::ServiceState::STATE_BOOTSTRAP;
288 state = messages::msg::ServiceState::STATE_FREE_DRIVING;
291 state = messages::msg::ServiceState::STATE_OBSTACLE_DRIVING;
294 RCLCPP_ERROR(this->get_logger(),
"p_state unknwon -> %u", p_state);
295 state = messages::msg::ServiceState::STATE_BOOTSTRAP;