Skip to content

Commit bc07863

Browse files
authored
Feat mode types (#40)
* Added mode conversion and types * Removed .vscode and changed .gitignore * Added transient local profile to qos_profiles.py * Added conversion to ros for operation mode * Removed accidentally committed file
1 parent 96521d5 commit bc07863

2 files changed

Lines changed: 29 additions & 3 deletions

File tree

vortex_utils/include/vortex/utils/types.hpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,7 @@ struct LineSegment2D {
403403
/**
404404
* @brief Enum class for operation modes.
405405
*/
406-
enum class Mode : uint8_t { manual, autonomous, reference };
406+
enum class Mode : int { autonomous, manual, reference };
407407

408408
/**
409409
* @brief Convert Mode enum to string for logging or display purposes.
@@ -419,7 +419,8 @@ inline std::string mode_to_string(Mode mode) {
419419
case Mode::reference:
420420
return "reference mode";
421421
default:
422-
throw std::runtime_error("Invalid operation mode.");
422+
throw std::runtime_error(
423+
"String conversion failed, invalid mode value");
423424
}
424425
}
425426

vortex_utils_ros/include/vortex/utils/ros/ros_conversions.hpp

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,32 @@ inline vortex::utils::types::Mode convert_from_ros(
193193
case vortex_msgs::msg::OperationMode::REFERENCE:
194194
return vortex::utils::types::Mode::reference;
195195
}
196-
throw std::runtime_error("Invalid operation mode.");
196+
throw std::runtime_error("Conversion failed, invalid operation mode value");
197+
}
198+
199+
/**
200+
* @brief Converts an internal Mode enum to a ROS
201+
* vortex_msgs::msg::OperationMode.
202+
* @param mode vortex::utils::types::Mode
203+
* @return vortex_msgs::msg::OperationMode ROS mode message
204+
*/
205+
inline vortex_msgs::msg::OperationMode convert_to_ros(
206+
const vortex::utils::types::Mode& mode) {
207+
vortex_msgs::msg::OperationMode mode_msg;
208+
switch (mode) {
209+
case vortex::utils::types::Mode::manual:
210+
mode_msg.operation_mode = vortex_msgs::msg::OperationMode::MANUAL;
211+
return mode_msg;
212+
case vortex::utils::types::Mode::autonomous:
213+
mode_msg.operation_mode =
214+
vortex_msgs::msg::OperationMode::AUTONOMOUS;
215+
return mode_msg;
216+
case vortex::utils::types::Mode::reference:
217+
mode_msg.operation_mode =
218+
vortex_msgs::msg::OperationMode::REFERENCE;
219+
return mode_msg;
220+
}
221+
throw std::runtime_error("Conversion failed, invalid operation mode value");
197222
}
198223

199224
} // namespace vortex::utils::ros_conversions

0 commit comments

Comments
 (0)