vda5050_core 0.1.0rc1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (298) hide show
  1. vda5050_core-0.1.0rc1/CHANGELOG.rst +40 -0
  2. vda5050_core-0.1.0rc1/CMakeLists.txt +430 -0
  3. vda5050_core-0.1.0rc1/PKG-INFO +15 -0
  4. vda5050_core-0.1.0rc1/cmake/vda5050_add_gmock.cmake +46 -0
  5. vda5050_core-0.1.0rc1/cmake/vda5050_add_gtest.cmake +46 -0
  6. vda5050_core-0.1.0rc1/cmake/vda5050_ament_lint_common.cmake +58 -0
  7. vda5050_core-0.1.0rc1/cmake/vda5050_configure_target_alias.cmake +60 -0
  8. vda5050_core-0.1.0rc1/cmake/vda5050_coreConfig.cmake.in +14 -0
  9. vda5050_core-0.1.0rc1/colcon.pkg +8 -0
  10. vda5050_core-0.1.0rc1/examples/CMakeLists.txt +55 -0
  11. vda5050_core-0.1.0rc1/examples/client/adapter_example.cpp +135 -0
  12. vda5050_core-0.1.0rc1/examples/execution/custom_base.cpp +117 -0
  13. vda5050_core-0.1.0rc1/examples/execution/engine_example.cpp +89 -0
  14. vda5050_core-0.1.0rc1/examples/execution/handler_integration.cpp +195 -0
  15. vda5050_core-0.1.0rc1/examples/execution/provider_example.cpp +78 -0
  16. vda5050_core-0.1.0rc1/examples/master/master_example.cpp +225 -0
  17. vda5050_core-0.1.0rc1/examples/master/order_publisher.cpp +319 -0
  18. vda5050_core-0.1.0rc1/examples/python/master_example.py +86 -0
  19. vda5050_core-0.1.0rc1/examples/python/rmf_migration_client_example.py +107 -0
  20. vda5050_core-0.1.0rc1/include/vda5050_core/client/adapter/action_execution.hpp +68 -0
  21. vda5050_core-0.1.0rc1/include/vda5050_core/client/adapter/action_request.hpp +79 -0
  22. vda5050_core-0.1.0rc1/include/vda5050_core/client/adapter/adapter.hpp +89 -0
  23. vda5050_core-0.1.0rc1/include/vda5050_core/client/adapter/edge_request.hpp +90 -0
  24. vda5050_core-0.1.0rc1/include/vda5050_core/client/adapter/execution.hpp +66 -0
  25. vda5050_core-0.1.0rc1/include/vda5050_core/client/adapter/localization_request.hpp +58 -0
  26. vda5050_core-0.1.0rc1/include/vda5050_core/client/adapter/node_request.hpp +71 -0
  27. vda5050_core-0.1.0rc1/include/vda5050_core/client/adapter/order_execution.hpp +67 -0
  28. vda5050_core-0.1.0rc1/include/vda5050_core/client/adapter/state_manager.hpp +141 -0
  29. vda5050_core-0.1.0rc1/include/vda5050_core/client/adapter/transformation.hpp +62 -0
  30. vda5050_core-0.1.0rc1/include/vda5050_core/client/contexts/agv_context.hpp +98 -0
  31. vda5050_core-0.1.0rc1/include/vda5050_core/client/resources/config.hpp +69 -0
  32. vda5050_core-0.1.0rc1/include/vda5050_core/client/resources/order_execution.hpp +76 -0
  33. vda5050_core-0.1.0rc1/include/vda5050_core/client/strategies/order_acceptance.hpp +66 -0
  34. vda5050_core-0.1.0rc1/include/vda5050_core/client/strategies/order_validator.hpp +90 -0
  35. vda5050_core-0.1.0rc1/include/vda5050_core/client/updates/order.hpp +54 -0
  36. vda5050_core-0.1.0rc1/include/vda5050_core/errors/error_codes.hpp +70 -0
  37. vda5050_core-0.1.0rc1/include/vda5050_core/errors/error_factory.hpp +53 -0
  38. vda5050_core-0.1.0rc1/include/vda5050_core/errors/validation_result.hpp +96 -0
  39. vda5050_core-0.1.0rc1/include/vda5050_core/execution/base.hpp +56 -0
  40. vda5050_core-0.1.0rc1/include/vda5050_core/execution/context_interface.hpp +105 -0
  41. vda5050_core-0.1.0rc1/include/vda5050_core/execution/engine.hpp +143 -0
  42. vda5050_core-0.1.0rc1/include/vda5050_core/execution/event_queue.hpp +65 -0
  43. vda5050_core-0.1.0rc1/include/vda5050_core/execution/handler.hpp +92 -0
  44. vda5050_core-0.1.0rc1/include/vda5050_core/execution/protocol_adapter.hpp +308 -0
  45. vda5050_core-0.1.0rc1/include/vda5050_core/execution/provider.hpp +76 -0
  46. vda5050_core-0.1.0rc1/include/vda5050_core/execution/strategy_interface.hpp +57 -0
  47. vda5050_core-0.1.0rc1/include/vda5050_core/json_utils/layout_serialization.hpp +678 -0
  48. vda5050_core-0.1.0rc1/include/vda5050_core/json_utils/serialization.hpp +4195 -0
  49. vda5050_core-0.1.0rc1/include/vda5050_core/json_utils/traits.hpp +1443 -0
  50. vda5050_core-0.1.0rc1/include/vda5050_core/layout/edge.hpp +61 -0
  51. vda5050_core-0.1.0rc1/include/vda5050_core/layout/graph.hpp +320 -0
  52. vda5050_core-0.1.0rc1/include/vda5050_core/layout/layout.hpp +64 -0
  53. vda5050_core-0.1.0rc1/include/vda5050_core/layout/layout_action.hpp +84 -0
  54. vda5050_core-0.1.0rc1/include/vda5050_core/layout/layout_loader.hpp +68 -0
  55. vda5050_core-0.1.0rc1/include/vda5050_core/layout/lif.hpp +70 -0
  56. vda5050_core-0.1.0rc1/include/vda5050_core/layout/load_restriction.hpp +54 -0
  57. vda5050_core-0.1.0rc1/include/vda5050_core/layout/node.hpp +75 -0
  58. vda5050_core-0.1.0rc1/include/vda5050_core/layout/station.hpp +74 -0
  59. vda5050_core-0.1.0rc1/include/vda5050_core/layout/trajectory.hpp +67 -0
  60. vda5050_core-0.1.0rc1/include/vda5050_core/layout/validate_layout.hpp +61 -0
  61. vda5050_core-0.1.0rc1/include/vda5050_core/layout/vehicle_type_edge_property.hpp +94 -0
  62. vda5050_core-0.1.0rc1/include/vda5050_core/layout/vehicle_type_node_property.hpp +52 -0
  63. vda5050_core-0.1.0rc1/include/vda5050_core/logger/logger.hpp +154 -0
  64. vda5050_core-0.1.0rc1/include/vda5050_core/master/actions/action_factory.hpp +69 -0
  65. vda5050_core-0.1.0rc1/include/vda5050_core/master/actions/instant_action_assignment_result.hpp +79 -0
  66. vda5050_core-0.1.0rc1/include/vda5050_core/master/actions/instant_actions_publisher.hpp +84 -0
  67. vda5050_core-0.1.0rc1/include/vda5050_core/master/agv.hpp +434 -0
  68. vda5050_core-0.1.0rc1/include/vda5050_core/master/contexts/master_context.hpp +82 -0
  69. vda5050_core-0.1.0rc1/include/vda5050_core/master/heartbeat.hpp +115 -0
  70. vda5050_core-0.1.0rc1/include/vda5050_core/master/loaded_graph_holder.hpp +60 -0
  71. vda5050_core-0.1.0rc1/include/vda5050_core/master/master.hpp +487 -0
  72. vda5050_core-0.1.0rc1/include/vda5050_core/master/master_types.hpp +69 -0
  73. vda5050_core-0.1.0rc1/include/vda5050_core/master/order/active_order_snapshot.hpp +50 -0
  74. vda5050_core-0.1.0rc1/include/vda5050_core/master/order/order_assignment_result.hpp +77 -0
  75. vda5050_core-0.1.0rc1/include/vda5050_core/master/order/order_lifecycle_manager.hpp +190 -0
  76. vda5050_core-0.1.0rc1/include/vda5050_core/master/order/order_publisher.hpp +65 -0
  77. vda5050_core-0.1.0rc1/include/vda5050_core/master/order/order_stitcher.hpp +83 -0
  78. vda5050_core-0.1.0rc1/include/vda5050_core/master/pose_view.hpp +54 -0
  79. vda5050_core-0.1.0rc1/include/vda5050_core/master/standard_names.hpp +79 -0
  80. vda5050_core-0.1.0rc1/include/vda5050_core/master/updates/agv_updates.hpp +146 -0
  81. vda5050_core-0.1.0rc1/include/vda5050_core/transport/mqtt_client_interface.hpp +115 -0
  82. vda5050_core-0.1.0rc1/include/vda5050_core/transport/paho_mqtt_client.hpp +188 -0
  83. vda5050_core-0.1.0rc1/include/vda5050_core/types/action.hpp +82 -0
  84. vda5050_core-0.1.0rc1/include/vda5050_core/types/action_parameter.hpp +64 -0
  85. vda5050_core-0.1.0rc1/include/vda5050_core/types/action_parameter_factsheet.hpp +78 -0
  86. vda5050_core-0.1.0rc1/include/vda5050_core/types/action_scope.hpp +42 -0
  87. vda5050_core-0.1.0rc1/include/vda5050_core/types/action_state.hpp +80 -0
  88. vda5050_core-0.1.0rc1/include/vda5050_core/types/action_status.hpp +55 -0
  89. vda5050_core-0.1.0rc1/include/vda5050_core/types/agv_action.hpp +88 -0
  90. vda5050_core-0.1.0rc1/include/vda5050_core/types/agv_class.hpp +45 -0
  91. vda5050_core-0.1.0rc1/include/vda5050_core/types/agv_geometry.hpp +74 -0
  92. vda5050_core-0.1.0rc1/include/vda5050_core/types/agv_kinematic.hpp +42 -0
  93. vda5050_core-0.1.0rc1/include/vda5050_core/types/agv_position.hpp +98 -0
  94. vda5050_core-0.1.0rc1/include/vda5050_core/types/battery_state.hpp +79 -0
  95. vda5050_core-0.1.0rc1/include/vda5050_core/types/blocking_type.hpp +42 -0
  96. vda5050_core-0.1.0rc1/include/vda5050_core/types/bounding_box_reference.hpp +75 -0
  97. vda5050_core-0.1.0rc1/include/vda5050_core/types/connection.hpp +63 -0
  98. vda5050_core-0.1.0rc1/include/vda5050_core/types/connection_state.hpp +44 -0
  99. vda5050_core-0.1.0rc1/include/vda5050_core/types/control_point.hpp +68 -0
  100. vda5050_core-0.1.0rc1/include/vda5050_core/types/e_stop.hpp +45 -0
  101. vda5050_core-0.1.0rc1/include/vda5050_core/types/edge.hpp +158 -0
  102. vda5050_core-0.1.0rc1/include/vda5050_core/types/edge_state.hpp +84 -0
  103. vda5050_core-0.1.0rc1/include/vda5050_core/types/envelope2d.hpp +72 -0
  104. vda5050_core-0.1.0rc1/include/vda5050_core/types/envelope3d.hpp +78 -0
  105. vda5050_core-0.1.0rc1/include/vda5050_core/types/error.hpp +78 -0
  106. vda5050_core-0.1.0rc1/include/vda5050_core/types/error_level.hpp +39 -0
  107. vda5050_core-0.1.0rc1/include/vda5050_core/types/error_reference.hpp +66 -0
  108. vda5050_core-0.1.0rc1/include/vda5050_core/types/factsheet.hpp +101 -0
  109. vda5050_core-0.1.0rc1/include/vda5050_core/types/header.hpp +88 -0
  110. vda5050_core-0.1.0rc1/include/vda5050_core/types/info.hpp +77 -0
  111. vda5050_core-0.1.0rc1/include/vda5050_core/types/info_level.hpp +39 -0
  112. vda5050_core-0.1.0rc1/include/vda5050_core/types/info_reference.hpp +65 -0
  113. vda5050_core-0.1.0rc1/include/vda5050_core/types/instant_actions.hpp +68 -0
  114. vda5050_core-0.1.0rc1/include/vda5050_core/types/load.hpp +92 -0
  115. vda5050_core-0.1.0rc1/include/vda5050_core/types/load_dimensions.hpp +68 -0
  116. vda5050_core-0.1.0rc1/include/vda5050_core/types/load_set.hpp +149 -0
  117. vda5050_core-0.1.0rc1/include/vda5050_core/types/load_specification.hpp +72 -0
  118. vda5050_core-0.1.0rc1/include/vda5050_core/types/max_array_lens.hpp +132 -0
  119. vda5050_core-0.1.0rc1/include/vda5050_core/types/max_string_lens.hpp +132 -0
  120. vda5050_core-0.1.0rc1/include/vda5050_core/types/node.hpp +91 -0
  121. vda5050_core-0.1.0rc1/include/vda5050_core/types/node_position.hpp +104 -0
  122. vda5050_core-0.1.0rc1/include/vda5050_core/types/node_state.hpp +86 -0
  123. vda5050_core-0.1.0rc1/include/vda5050_core/types/operating_mode.hpp +56 -0
  124. vda5050_core-0.1.0rc1/include/vda5050_core/types/optional_parameter.hpp +74 -0
  125. vda5050_core-0.1.0rc1/include/vda5050_core/types/order.hpp +92 -0
  126. vda5050_core-0.1.0rc1/include/vda5050_core/types/orientation_type.hpp +39 -0
  127. vda5050_core-0.1.0rc1/include/vda5050_core/types/physical_parameters.hpp +95 -0
  128. vda5050_core-0.1.0rc1/include/vda5050_core/types/polygon_point.hpp +61 -0
  129. vda5050_core-0.1.0rc1/include/vda5050_core/types/position.hpp +67 -0
  130. vda5050_core-0.1.0rc1/include/vda5050_core/types/protocol_features.hpp +68 -0
  131. vda5050_core-0.1.0rc1/include/vda5050_core/types/protocol_limits.hpp +71 -0
  132. vda5050_core-0.1.0rc1/include/vda5050_core/types/safety_state.hpp +67 -0
  133. vda5050_core-0.1.0rc1/include/vda5050_core/types/state.hpp +185 -0
  134. vda5050_core-0.1.0rc1/include/vda5050_core/types/support.hpp +39 -0
  135. vda5050_core-0.1.0rc1/include/vda5050_core/types/timing.hpp +74 -0
  136. vda5050_core-0.1.0rc1/include/vda5050_core/types/trajectory.hpp +76 -0
  137. vda5050_core-0.1.0rc1/include/vda5050_core/types/type_specification.hpp +96 -0
  138. vda5050_core-0.1.0rc1/include/vda5050_core/types/value_data_type.hpp +54 -0
  139. vda5050_core-0.1.0rc1/include/vda5050_core/types/velocity.hpp +67 -0
  140. vda5050_core-0.1.0rc1/include/vda5050_core/types/visualization.hpp +73 -0
  141. vda5050_core-0.1.0rc1/include/vda5050_core/types/wheel_definition.hpp +93 -0
  142. vda5050_core-0.1.0rc1/include/vda5050_core/types/wheel_definition_type.hpp +38 -0
  143. vda5050_core-0.1.0rc1/include/vda5050_core/validation/action_conflict_validator.hpp +40 -0
  144. vda5050_core-0.1.0rc1/include/vda5050_core/validation/capability_validator.hpp +45 -0
  145. vda5050_core-0.1.0rc1/include/vda5050_core/validation/content_validator.hpp +61 -0
  146. vda5050_core-0.1.0rc1/include/vda5050_core/validation/factsheet_alignment.hpp +45 -0
  147. vda5050_core-0.1.0rc1/include/vda5050_core/validation/instant_action_mode_validator.hpp +45 -0
  148. vda5050_core-0.1.0rc1/include/vda5050_core/validation/operating_mode_control.hpp +34 -0
  149. vda5050_core-0.1.0rc1/include/vda5050_core/validation/order_graph_validator.hpp +56 -0
  150. vda5050_core-0.1.0rc1/include/vda5050_core/validation/pre_send_validator.hpp +52 -0
  151. vda5050_core-0.1.0rc1/include/vda5050_core/validation/predefined_action_types.hpp +41 -0
  152. vda5050_core-0.1.0rc1/include/vda5050_core/validation/protocol_limits_validator.hpp +45 -0
  153. vda5050_core-0.1.0rc1/include/vda5050_core/validation/traversability_validator.hpp +39 -0
  154. vda5050_core-0.1.0rc1/package.xml +37 -0
  155. vda5050_core-0.1.0rc1/pyproject.toml +77 -0
  156. vda5050_core-0.1.0rc1/python/CMakeLists.txt +86 -0
  157. vda5050_core-0.1.0rc1/python/include/vda5050_core/rmf_migration.hpp +297 -0
  158. vda5050_core-0.1.0rc1/python/include/vda5050_core_py/client.hpp +32 -0
  159. vda5050_core-0.1.0rc1/python/include/vda5050_core_py/master.hpp +32 -0
  160. vda5050_core-0.1.0rc1/python/include/vda5050_core_py/rmf_migration.hpp +32 -0
  161. vda5050_core-0.1.0rc1/python/include/vda5050_core_py/transport.hpp +32 -0
  162. vda5050_core-0.1.0rc1/python/include/vda5050_core_py/types.hpp +32 -0
  163. vda5050_core-0.1.0rc1/python/src/client.cpp +90 -0
  164. vda5050_core-0.1.0rc1/python/src/core.cpp +39 -0
  165. vda5050_core-0.1.0rc1/python/src/master.cpp +305 -0
  166. vda5050_core-0.1.0rc1/python/src/rmf_migration.cpp +677 -0
  167. vda5050_core-0.1.0rc1/python/src/transport.cpp +131 -0
  168. vda5050_core-0.1.0rc1/python/src/types.cpp +1165 -0
  169. vda5050_core-0.1.0rc1/python/tests/conftest.py +37 -0
  170. vda5050_core-0.1.0rc1/python/tests/test_client.py +30 -0
  171. vda5050_core-0.1.0rc1/python/tests/test_master.py +100 -0
  172. vda5050_core-0.1.0rc1/python/tests/test_rmf_migration.py +40 -0
  173. vda5050_core-0.1.0rc1/python/tests/test_types_json.py +138 -0
  174. vda5050_core-0.1.0rc1/python/vda5050_core/__init__.py +17 -0
  175. vda5050_core-0.1.0rc1/python/vda5050_core/__init__.pyi +12 -0
  176. vda5050_core-0.1.0rc1/python/vda5050_core/_core/__init__.pyi +14 -0
  177. vda5050_core-0.1.0rc1/python/vda5050_core/_core/client.pyi +65 -0
  178. vda5050_core-0.1.0rc1/python/vda5050_core/_core/master.pyi +354 -0
  179. vda5050_core-0.1.0rc1/python/vda5050_core/_core/rmf_migration.pyi +112 -0
  180. vda5050_core-0.1.0rc1/python/vda5050_core/_core/transport.pyi +35 -0
  181. vda5050_core-0.1.0rc1/python/vda5050_core/_core/types.pyi +1446 -0
  182. vda5050_core-0.1.0rc1/python/vda5050_core/client.py +17 -0
  183. vda5050_core-0.1.0rc1/python/vda5050_core/master.py +17 -0
  184. vda5050_core-0.1.0rc1/python/vda5050_core/rmf_migration.py +17 -0
  185. vda5050_core-0.1.0rc1/python/vda5050_core/transport.py +17 -0
  186. vda5050_core-0.1.0rc1/python/vda5050_core/types.py +17 -0
  187. vda5050_core-0.1.0rc1/scripts/generate_stubs.py +88 -0
  188. vda5050_core-0.1.0rc1/scripts/install-native-deps.sh +211 -0
  189. vda5050_core-0.1.0rc1/scripts/stub_header.txt +3 -0
  190. vda5050_core-0.1.0rc1/src/client/adapter/action_execution.cpp +99 -0
  191. vda5050_core-0.1.0rc1/src/client/adapter/action_request.cpp +95 -0
  192. vda5050_core-0.1.0rc1/src/client/adapter/adapter.cpp +751 -0
  193. vda5050_core-0.1.0rc1/src/client/adapter/adapter_impl.hpp +174 -0
  194. vda5050_core-0.1.0rc1/src/client/adapter/edge_request.cpp +114 -0
  195. vda5050_core-0.1.0rc1/src/client/adapter/execution.cpp +85 -0
  196. vda5050_core-0.1.0rc1/src/client/adapter/localization_request.cpp +61 -0
  197. vda5050_core-0.1.0rc1/src/client/adapter/node_request.cpp +93 -0
  198. vda5050_core-0.1.0rc1/src/client/adapter/order_execution.cpp +87 -0
  199. vda5050_core-0.1.0rc1/src/client/adapter/state_manager.cpp +445 -0
  200. vda5050_core-0.1.0rc1/src/client/adapter/transformation.cpp +85 -0
  201. vda5050_core-0.1.0rc1/src/client/contexts/agv_context.cpp +99 -0
  202. vda5050_core-0.1.0rc1/src/client/resources/order_execution.cpp +65 -0
  203. vda5050_core-0.1.0rc1/src/client/strategies/order_acceptance.cpp +227 -0
  204. vda5050_core-0.1.0rc1/src/client/strategies/order_validator.cpp +227 -0
  205. vda5050_core-0.1.0rc1/src/execution/engine.cpp +90 -0
  206. vda5050_core-0.1.0rc1/src/execution/event_queue.cpp +90 -0
  207. vda5050_core-0.1.0rc1/src/execution/handler.cpp +150 -0
  208. vda5050_core-0.1.0rc1/src/execution/protocol_adapter.cpp +162 -0
  209. vda5050_core-0.1.0rc1/src/execution/provider.cpp +44 -0
  210. vda5050_core-0.1.0rc1/src/layout/graph.cpp +642 -0
  211. vda5050_core-0.1.0rc1/src/layout/layout_loader.cpp +239 -0
  212. vda5050_core-0.1.0rc1/src/layout/validate_layout.cpp +280 -0
  213. vda5050_core-0.1.0rc1/src/logger/logger.cpp +112 -0
  214. vda5050_core-0.1.0rc1/src/master/actions/action_factory.cpp +138 -0
  215. vda5050_core-0.1.0rc1/src/master/actions/instant_actions_publisher.cpp +122 -0
  216. vda5050_core-0.1.0rc1/src/master/agv.cpp +1241 -0
  217. vda5050_core-0.1.0rc1/src/master/contexts/master_context.cpp +237 -0
  218. vda5050_core-0.1.0rc1/src/master/heartbeat.cpp +227 -0
  219. vda5050_core-0.1.0rc1/src/master/master.cpp +1276 -0
  220. vda5050_core-0.1.0rc1/src/master/order/order_lifecycle_manager.cpp +634 -0
  221. vda5050_core-0.1.0rc1/src/master/order/order_publisher.cpp +146 -0
  222. vda5050_core-0.1.0rc1/src/master/order/order_stitcher.cpp +171 -0
  223. vda5050_core-0.1.0rc1/src/transport/paho_mqtt_client.cpp +273 -0
  224. vda5050_core-0.1.0rc1/src/validation/action_conflict_validator.cpp +136 -0
  225. vda5050_core-0.1.0rc1/src/validation/capability_validator.cpp +219 -0
  226. vda5050_core-0.1.0rc1/src/validation/content_validator.cpp +247 -0
  227. vda5050_core-0.1.0rc1/src/validation/factsheet_alignment.cpp +89 -0
  228. vda5050_core-0.1.0rc1/src/validation/instant_action_mode_validator.cpp +66 -0
  229. vda5050_core-0.1.0rc1/src/validation/operating_mode_control.cpp +29 -0
  230. vda5050_core-0.1.0rc1/src/validation/order_graph_validator.cpp +219 -0
  231. vda5050_core-0.1.0rc1/src/validation/pre_send_validator.cpp +102 -0
  232. vda5050_core-0.1.0rc1/src/validation/predefined_action_types.cpp +47 -0
  233. vda5050_core-0.1.0rc1/src/validation/protocol_limits_validator.cpp +152 -0
  234. vda5050_core-0.1.0rc1/src/validation/traversability_validator.cpp +202 -0
  235. vda5050_core-0.1.0rc1/test/client/adapter_test_fixture.hpp +195 -0
  236. vda5050_core-0.1.0rc1/test/client/mock_mqtt_client.hpp +48 -0
  237. vda5050_core-0.1.0rc1/test/client/test_adapter_action.cpp +226 -0
  238. vda5050_core-0.1.0rc1/test/client/test_adapter_lifecycle.cpp +155 -0
  239. vda5050_core-0.1.0rc1/test/client/test_adapter_localization.cpp +227 -0
  240. vda5050_core-0.1.0rc1/test/client/test_adapter_navigation.cpp +399 -0
  241. vda5050_core-0.1.0rc1/test/client/test_adapter_order.cpp +139 -0
  242. vda5050_core-0.1.0rc1/test/client/test_agv_context.cpp +209 -0
  243. vda5050_core-0.1.0rc1/test/client/test_execution.cpp +308 -0
  244. vda5050_core-0.1.0rc1/test/client/test_order_acceptance.cpp +514 -0
  245. vda5050_core-0.1.0rc1/test/client/test_order_execution_resource.cpp +171 -0
  246. vda5050_core-0.1.0rc1/test/client/test_order_types.cpp +94 -0
  247. vda5050_core-0.1.0rc1/test/client/test_order_validator.cpp +299 -0
  248. vda5050_core-0.1.0rc1/test/client/test_state_manager.cpp +444 -0
  249. vda5050_core-0.1.0rc1/test/client/test_transformation.cpp +96 -0
  250. vda5050_core-0.1.0rc1/test/execution/test_engine.cpp +325 -0
  251. vda5050_core-0.1.0rc1/test/execution/test_event_queue.cpp +176 -0
  252. vda5050_core-0.1.0rc1/test/execution/test_handler.cpp +241 -0
  253. vda5050_core-0.1.0rc1/test/execution/test_protocol_adapter.cpp +334 -0
  254. vda5050_core-0.1.0rc1/test/execution/test_provider.cpp +197 -0
  255. vda5050_core-0.1.0rc1/test/json_utils/generator/generator.hpp +886 -0
  256. vda5050_core-0.1.0rc1/test/json_utils/generator/generator_ros2.hpp +904 -0
  257. vda5050_core-0.1.0rc1/test/json_utils/test_json_utils.cpp +166 -0
  258. vda5050_core-0.1.0rc1/test/json_utils/test_json_utils_ros2.cpp +169 -0
  259. vda5050_core-0.1.0rc1/test/layout/data/sample_layout.json +57 -0
  260. vda5050_core-0.1.0rc1/test/layout/test_unit_graph.cpp +786 -0
  261. vda5050_core-0.1.0rc1/test/layout/test_unit_loader.cpp +446 -0
  262. vda5050_core-0.1.0rc1/test/logger/test_unit_default_logger.cpp +36 -0
  263. vda5050_core-0.1.0rc1/test/logger/test_unit_logger.cpp +126 -0
  264. vda5050_core-0.1.0rc1/test/master/test_fixture_agv.hpp +172 -0
  265. vda5050_core-0.1.0rc1/test/master/test_fixture_communication_mqtt.hpp +101 -0
  266. vda5050_core-0.1.0rc1/test/master/test_integration_heartbeat.cpp +395 -0
  267. vda5050_core-0.1.0rc1/test/master/test_integration_master_assign_instant_actions.cpp +689 -0
  268. vda5050_core-0.1.0rc1/test/master/test_integration_master_assign_order.cpp +639 -0
  269. vda5050_core-0.1.0rc1/test/master/test_integration_master_broker_status.cpp +218 -0
  270. vda5050_core-0.1.0rc1/test/master/test_integration_master_logic.cpp +477 -0
  271. vda5050_core-0.1.0rc1/test/master/test_integration_master_mode_handling.cpp +433 -0
  272. vda5050_core-0.1.0rc1/test/master/test_integration_master_mqtt.cpp +201 -0
  273. vda5050_core-0.1.0rc1/test/master/test_integration_master_state_timeout.cpp +400 -0
  274. vda5050_core-0.1.0rc1/test/master/test_integration_master_teardown.cpp +176 -0
  275. vda5050_core-0.1.0rc1/test/master/test_master_onboard_batch.cpp +224 -0
  276. vda5050_core-0.1.0rc1/test/master/test_unit_action_factory.cpp +157 -0
  277. vda5050_core-0.1.0rc1/test/master/test_unit_agv_connection_state.cpp +173 -0
  278. vda5050_core-0.1.0rc1/test/master/test_unit_agv_lifecycle.cpp +358 -0
  279. vda5050_core-0.1.0rc1/test/master/test_unit_agv_operational_state.cpp +271 -0
  280. vda5050_core-0.1.0rc1/test/master/test_unit_agv_order_lifecycle.cpp +89 -0
  281. vda5050_core-0.1.0rc1/test/master/test_unit_agv_pose_view.cpp +333 -0
  282. vda5050_core-0.1.0rc1/test/master/test_unit_master_context.cpp +473 -0
  283. vda5050_core-0.1.0rc1/test/master/test_unit_order_lifecycle_manager.cpp +952 -0
  284. vda5050_core-0.1.0rc1/test/master/test_unit_order_publisher.cpp +495 -0
  285. vda5050_core-0.1.0rc1/test/master/test_unit_order_stitcher.cpp +296 -0
  286. vda5050_core-0.1.0rc1/test/transport/test_integration_paho_mqtt_client.cpp +141 -0
  287. vda5050_core-0.1.0rc1/test/transport/test_unit_mqtt_client_interface.cpp +91 -0
  288. vda5050_core-0.1.0rc1/test/validation/test_unit_action_conflict_validator.cpp +391 -0
  289. vda5050_core-0.1.0rc1/test/validation/test_unit_capability_validator.cpp +438 -0
  290. vda5050_core-0.1.0rc1/test/validation/test_unit_content_validator.cpp +429 -0
  291. vda5050_core-0.1.0rc1/test/validation/test_unit_factsheet_alignment.cpp +159 -0
  292. vda5050_core-0.1.0rc1/test/validation/test_unit_instant_action_mode_validator.cpp +255 -0
  293. vda5050_core-0.1.0rc1/test/validation/test_unit_order_graph_validator.cpp +387 -0
  294. vda5050_core-0.1.0rc1/test/validation/test_unit_pre_send_validator.cpp +296 -0
  295. vda5050_core-0.1.0rc1/test/validation/test_unit_protocol_limits_validator.cpp +239 -0
  296. vda5050_core-0.1.0rc1/test/validation/test_unit_traversability_validator.cpp +430 -0
  297. vda5050_core-0.1.0rc1/uv.lock +194 -0
  298. vda5050_core-0.1.0rc1/vda5050_core-extras.cmake +18 -0
@@ -0,0 +1,40 @@
1
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2
+ Changelog for package vda5050_core
3
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4
+
5
+ Forthcoming
6
+ -----------
7
+ * Client Library
8
+
9
+ * feat: provide initial adapter interface along with rmf migration guide (`#71 <https://github.com/ros-industrial/vda5050_core/issues/71>`_, `#80 <https://github.com/ros-industrial/vda5050_core/issues/80>`_, `#86 <https://github.com/ros-industrial/vda5050_core/issues/86>`_)
10
+
11
+ * docs: readme and how-to guides for client adapter (`#87 <https://github.com/ros-industrial/vda5050_core/issues/87>`_)
12
+ * feat: add order validator and acceptance strategy (`#31 <https://github.com/ros-industrial/vda5050_core/issues/31>`_, `#63 <https://github.com/ros-industrial/vda5050_core/issues/63>`_)
13
+ * feat: add AGVContext and execution tracking resource (`#62 <https://github.com/ros-industrial/vda5050_core/issues/62>`_, `#66 <https://github.com/ros-industrial/vda5050_core/issues/66>`_)
14
+ * feat: add concrete execution data types (`#53 <https://github.com/ros-industrial/vda5050_core/issues/53>`_)
15
+ * feat: add StateManager (`#14 <https://github.com/ros-industrial/vda5050_core/issues/14>`_)
16
+
17
+ * Master Library
18
+
19
+ * feat: add initial implementation of VDA5050 Master (`#20 <https://github.com/ros-industrial/vda5050_core/issues/20>`_, `#45 <https://github.com/ros-industrial/vda5050_core/issues/45>`_, `#59 <https://github.com/ros-industrial/vda5050_core/issues/59>`_, `#78 <https://github.com/ros-industrial/vda5050_core/issues/78>`_)
20
+
21
+ * feat: add order lifecycle, stitcher, instant actions, mode handling, and pose_view (`#69 <https://github.com/ros-industrial/vda5050_core/issues/69>`_, `#82 <https://github.com/ros-industrial/vda5050_core/issues/82>`_)
22
+ * feat: master-side event detectors and heartbeat hardening (`#58 <https://github.com/ros-industrial/vda5050_core/issues/58>`_)
23
+ * feat: add traversability, action-conflict, factsheet, and mode validators (`#56 <https://github.com/ros-industrial/vda5050_core/issues/56>`_)
24
+ * feat: add schema and pre-send validators (`#55 <https://github.com/ros-industrial/vda5050_core/issues/55>`_)
25
+
26
+ * Core Library
27
+
28
+ * feat(transport): add ProtocolAdapter `#48 <https://github.com/ros-industrial/vda5050_core/issues/48>`_, `#74 <https://github.com/ros-industrial/vda5050_core/issues/74>`_)
29
+ * feat(transport): add MQTT client interface with Paho as an default implementation (`#1 <https://github.com/ros-industrial/vda5050_core/issues/1>`_, `#17 <https://github.com/ros-industrial/vda5050_core/issues/17>`_, `#19 <https://github.com/ros-industrial/vda5050_core/issues/19>`_)
30
+ * feat(types): create C++ structs for VDA5050 2.0.0 spec (`#6 <https://github.com/ros-industrial/vda5050_core/issues/6>`_)
31
+ * feat(serialization): add common (de)serializers for C++ structs and ROS 2 msgs (`#10 <https://github.com/ros-industrial/vda5050_core/issues/10>`_, `#24 <https://github.com/ros-industrial/vda5050_core/issues/24>`_)
32
+ * feat(layout): add LIF topology graph and JSON loader (`#54 <https://github.com/ros-industrial/vda5050_core/issues/54>`_)
33
+ * feat(execution): add execution utilities (`#28 <https://github.com/ros-industrial/vda5050_core/issues/28>`_, `#36 <https://github.com/ros-industrial/vda5050_core/issues/36>`_, `#50 <https://github.com/ros-industrial/vda5050_core/issues/50>`_)
34
+
35
+ * Others
36
+
37
+ * C++ packaging related (`#27 <https://github.com/ros-industrial/vda5050_core/issues/27>`_, `#43 <https://github.com/ros-industrial/vda5050_core/issues/43>`_, `#44 <https://github.com/ros-industrial/vda5050_core/issues/44>`_)
38
+ * CI and Github Actions (`#35 <https://github.com/ros-industrial/vda5050_core/issues/35>`_, `#25 <https://github.com/ros-industrial/vda5050_core/issues/25>`_, `#6 <https://github.com/ros-industrial/vda5050_core/issues/6>`_)
39
+
40
+ * Contributors: Chen Bainian, Eileen Teoh Yan Zhen, John Arman Abogado, Leah, Saurabh Kamat, Lim Yew Hao, Glenn Tan, Shawn Chan, Tinapat Game Limsila
@@ -0,0 +1,430 @@
1
+ cmake_minimum_required(VERSION 3.8)
2
+ project(vda5050_core VERSION 0.0.0)
3
+
4
+ if(NOT CMAKE_CXX_STANDARD)
5
+ set(CMAKE_CXX_STANDARD 17)
6
+ endif()
7
+
8
+ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
9
+ add_compile_options(-Wall -Wextra -Wpedantic)
10
+ endif()
11
+
12
+ find_package(PahoMqttCpp REQUIRED)
13
+ find_package(fmt REQUIRED)
14
+ find_package(nlohmann_json REQUIRED)
15
+
16
+ include(GNUInstallDirs)
17
+ include(cmake/vda5050_configure_target_alias.cmake)
18
+
19
+ # Types
20
+ add_library(vda5050_types INTERFACE)
21
+ vda5050_configure_target_alias(
22
+ TARGET vda5050_types
23
+ NAMESPACE ${PROJECT_NAME}::
24
+ EXPORT_NAME types
25
+ )
26
+ target_include_directories(vda5050_types
27
+ INTERFACE
28
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
29
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
30
+ )
31
+
32
+ # JSON Utils
33
+ option(ENABLE_ROS2 "Enable ROS 2 message support in JSON utilities" OFF)
34
+ if(ENABLE_ROS2)
35
+ message(STATUS "Building vda5050_json_utils with ROS 2 support")
36
+ find_package(vda5050_interfaces REQUIRED)
37
+ else()
38
+ message(STATUS "Building vda5050_json_utils without ROS 2 support")
39
+ endif()
40
+
41
+ add_library(vda5050_json_utils INTERFACE)
42
+ vda5050_configure_target_alias(
43
+ TARGET vda5050_json_utils
44
+ NAMESPACE ${PROJECT_NAME}::
45
+ EXPORT_NAME json_utils
46
+ )
47
+ target_link_libraries(vda5050_json_utils
48
+ INTERFACE
49
+ ${PROJECT_NAME}::types
50
+ nlohmann_json::nlohmann_json
51
+ )
52
+ target_include_directories(vda5050_json_utils
53
+ INTERFACE
54
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
55
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
56
+ )
57
+
58
+ if(ENABLE_ROS2)
59
+ target_link_libraries(vda5050_json_utils
60
+ INTERFACE
61
+ ${vda5050_interfaces_LIBRARIES}
62
+ )
63
+ target_include_directories(vda5050_json_utils
64
+ INTERFACE
65
+ ${vda5050_interfaces_INCLUDE_DIRS}
66
+ )
67
+ target_compile_definitions(vda5050_json_utils INTERFACE ENABLE_ROS2)
68
+ endif()
69
+
70
+ # Logger
71
+ add_library(vda5050_logger SHARED src/logger/logger.cpp)
72
+ vda5050_configure_target_alias(
73
+ TARGET vda5050_logger
74
+ NAMESPACE ${PROJECT_NAME}::
75
+ EXPORT_NAME logger
76
+ )
77
+ target_link_libraries(vda5050_logger PUBLIC fmt::fmt)
78
+ target_include_directories(vda5050_logger
79
+ PUBLIC
80
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
81
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
82
+ )
83
+
84
+ # Errors
85
+ add_library(vda5050_errors INTERFACE)
86
+ vda5050_configure_target_alias(
87
+ TARGET vda5050_errors
88
+ NAMESPACE ${PROJECT_NAME}::
89
+ EXPORT_NAME errors
90
+ )
91
+ target_include_directories(vda5050_errors
92
+ INTERFACE
93
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
94
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
95
+ )
96
+
97
+ # Validation
98
+ file(GLOB_RECURSE validation_srcs "src/validation/*.cpp")
99
+ add_library(vda5050_validation SHARED ${validation_srcs})
100
+ vda5050_configure_target_alias(
101
+ TARGET vda5050_validation
102
+ NAMESPACE ${PROJECT_NAME}::
103
+ EXPORT_NAME validation
104
+ )
105
+ target_link_libraries(vda5050_validation PUBLIC
106
+ ${PROJECT_NAME}::types
107
+ ${PROJECT_NAME}::errors
108
+ ${PROJECT_NAME}::layout
109
+ fmt::fmt
110
+ )
111
+ target_include_directories(vda5050_validation
112
+ PUBLIC
113
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
114
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
115
+ )
116
+
117
+ # Transport
118
+ add_library(vda5050_transport SHARED src/transport/paho_mqtt_client.cpp)
119
+ vda5050_configure_target_alias(
120
+ TARGET vda5050_transport
121
+ NAMESPACE ${PROJECT_NAME}::
122
+ EXPORT_NAME transport
123
+ )
124
+ target_link_libraries(vda5050_transport
125
+ PUBLIC
126
+ PahoMqttCpp::paho-mqttpp3
127
+ ${PROJECT_NAME}::logger
128
+ )
129
+ target_include_directories(vda5050_transport
130
+ PUBLIC
131
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
132
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
133
+ )
134
+
135
+ # Execution
136
+ file(GLOB_RECURSE execution_srcs "src/execution/*.cpp")
137
+ add_library(vda5050_execution SHARED ${execution_srcs})
138
+ vda5050_configure_target_alias(
139
+ TARGET vda5050_execution
140
+ NAMESPACE ${PROJECT_NAME}::
141
+ EXPORT_NAME execution
142
+ )
143
+ target_link_libraries(vda5050_execution
144
+ PUBLIC
145
+ ${PROJECT_NAME}::types
146
+ ${PROJECT_NAME}::json_utils
147
+ ${PROJECT_NAME}::transport
148
+ )
149
+ target_include_directories(vda5050_execution
150
+ PUBLIC
151
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
152
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
153
+ )
154
+
155
+ # Client
156
+ file(GLOB_RECURSE client_srcs "src/client/*.cpp")
157
+ add_library(vda5050_client SHARED ${client_srcs})
158
+ vda5050_configure_target_alias(
159
+ TARGET vda5050_client
160
+ NAMESPACE ${PROJECT_NAME}::
161
+ EXPORT_NAME client
162
+ )
163
+ target_link_libraries(vda5050_client
164
+ PUBLIC
165
+ ${PROJECT_NAME}::execution
166
+ ${PROJECT_NAME}::types
167
+ ${PROJECT_NAME}::validation
168
+ ${PROJECT_NAME}::logger
169
+ )
170
+ target_include_directories(vda5050_client
171
+ PUBLIC
172
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
173
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
174
+ )
175
+
176
+ # Layout (LIF) — neutral namespace; master depends on it
177
+ file(GLOB_RECURSE layout_srcs "src/layout/*.cpp")
178
+ add_library(vda5050_layout SHARED ${layout_srcs})
179
+ vda5050_configure_target_alias(
180
+ TARGET vda5050_layout
181
+ NAMESPACE ${PROJECT_NAME}::
182
+ EXPORT_NAME layout
183
+ )
184
+ target_link_libraries(vda5050_layout
185
+ PUBLIC
186
+ ${PROJECT_NAME}::types
187
+ ${PROJECT_NAME}::json_utils
188
+ )
189
+ target_include_directories(vda5050_layout
190
+ PUBLIC
191
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
192
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
193
+ )
194
+
195
+ # Master
196
+ file(GLOB_RECURSE master_srcs "src/master/*.cpp")
197
+ add_library(vda5050_master SHARED ${master_srcs})
198
+ vda5050_configure_target_alias(
199
+ TARGET vda5050_master
200
+ NAMESPACE ${PROJECT_NAME}::
201
+ EXPORT_NAME master
202
+ )
203
+ target_link_libraries(vda5050_master
204
+ PUBLIC
205
+ ${PROJECT_NAME}::types
206
+ ${PROJECT_NAME}::json_utils
207
+ ${PROJECT_NAME}::transport
208
+ ${PROJECT_NAME}::execution
209
+ ${PROJECT_NAME}::validation
210
+ ${PROJECT_NAME}::errors
211
+ ${PROJECT_NAME}::layout
212
+ )
213
+ target_include_directories(vda5050_master
214
+ PUBLIC
215
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
216
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
217
+ )
218
+
219
+ option(BUILD_PYTHON "Build Python bindings" ON)
220
+
221
+ if(BUILD_PYTHON)
222
+ add_subdirectory(python)
223
+ endif()
224
+
225
+ install(
226
+ DIRECTORY include/${PROJECT_NAME}/
227
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}
228
+ )
229
+
230
+ install(
231
+ TARGETS
232
+ vda5050_types
233
+ vda5050_json_utils
234
+ vda5050_logger
235
+ vda5050_errors
236
+ vda5050_validation
237
+ vda5050_transport
238
+ vda5050_execution
239
+ vda5050_client
240
+ vda5050_layout
241
+ vda5050_master
242
+ EXPORT export_${PROJECT_NAME}
243
+ LIBRARY DESTINATION lib
244
+ ARCHIVE DESTINATION lib
245
+ RUNTIME DESTINATION bin
246
+ )
247
+
248
+ # Export the targets and generate a plain CMake package config so consumers can
249
+ # `find_package(vda5050_core)` and link `vda5050_core::<component>`.
250
+ install(EXPORT export_${PROJECT_NAME}
251
+ NAMESPACE ${PROJECT_NAME}::
252
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
253
+ FILE ${PROJECT_NAME}Targets.cmake
254
+ )
255
+
256
+ option(BUILD_EXAMPLES "Build examples" ON)
257
+
258
+ if(BUILD_EXAMPLES)
259
+ add_subdirectory(examples)
260
+ endif()
261
+
262
+ option(BUILD_TESTING "Build tests" ON)
263
+
264
+ if(BUILD_TESTING)
265
+ enable_testing()
266
+
267
+ # In ROS2 environment, keep the ament linters and register tests with
268
+ # the ament backends (selected inside vda5050_add_gtest/gmock by the
269
+ # ament_cmake_FOUND variables set here).
270
+ find_package(ament_cmake QUIET)
271
+ if(ament_cmake_FOUND)
272
+ find_package(ament_cmake_gtest REQUIRED)
273
+ find_package(ament_cmake_gmock REQUIRED)
274
+
275
+ include(cmake/vda5050_ament_lint_common.cmake)
276
+ vda5050_ament_lint_common()
277
+ endif()
278
+
279
+ include(cmake/vda5050_add_gmock.cmake)
280
+ include(cmake/vda5050_add_gtest.cmake)
281
+
282
+ set(json_tests test/json_utils/test_json_utils.cpp)
283
+ if(ENABLE_ROS2)
284
+ list(APPEND json_tests test/json_utils/test_json_utils_ros2.cpp)
285
+ endif()
286
+ vda5050_add_gmock(test_json_utils ${json_tests})
287
+ target_link_libraries(test_json_utils vda5050_core::json_utils)
288
+
289
+ vda5050_add_gmock(test_logger
290
+ test/logger/test_unit_default_logger.cpp
291
+ test/logger/test_unit_logger.cpp
292
+ )
293
+ target_link_libraries(test_logger vda5050_core::logger)
294
+
295
+ vda5050_add_gmock(test_transport
296
+ test/transport/test_unit_mqtt_client_interface.cpp
297
+ test/transport/test_integration_paho_mqtt_client.cpp
298
+ )
299
+ target_link_libraries(test_transport vda5050_core::transport)
300
+
301
+ vda5050_add_gmock(test_client
302
+ test/client/test_order_types.cpp
303
+ test/client/test_order_execution_resource.cpp
304
+ test/client/test_agv_context.cpp
305
+ test/client/test_order_validator.cpp
306
+ test/client/test_order_acceptance.cpp
307
+ test/client/test_execution.cpp
308
+ test/client/test_transformation.cpp
309
+ test/client/test_state_manager.cpp
310
+ test/client/test_adapter_lifecycle.cpp
311
+ test/client/test_adapter_navigation.cpp
312
+ test/client/test_adapter_order.cpp
313
+ test/client/test_adapter_action.cpp
314
+ test/client/test_adapter_localization.cpp
315
+ )
316
+
317
+ target_link_libraries(test_client
318
+ vda5050_core::client
319
+ )
320
+
321
+ vda5050_add_gmock(test_execution
322
+ test/execution/test_engine.cpp
323
+ test/execution/test_event_queue.cpp
324
+ test/execution/test_handler.cpp
325
+ test/execution/test_protocol_adapter.cpp
326
+ test/execution/test_provider.cpp
327
+ )
328
+ target_link_libraries(test_execution vda5050_core::execution)
329
+
330
+ vda5050_add_gmock(test_master_comm
331
+ test/master/test_integration_heartbeat.cpp
332
+ test/master/test_integration_master_logic.cpp
333
+ test/master/test_integration_master_mqtt.cpp
334
+ test/master/test_integration_master_teardown.cpp
335
+ )
336
+ target_link_libraries(test_master_comm vda5050_core::master)
337
+
338
+ vda5050_add_gmock(test_master_integration
339
+ test/master/test_integration_master_assign_order.cpp
340
+ test/master/test_integration_master_assign_instant_actions.cpp
341
+ test/master/test_integration_master_mode_handling.cpp
342
+ test/master/test_integration_master_state_timeout.cpp
343
+ test/master/test_integration_master_broker_status.cpp
344
+ test/master/test_master_onboard_batch.cpp
345
+ )
346
+ target_link_libraries(test_master_integration vda5050_core::master)
347
+
348
+ vda5050_add_gmock(test_master_agv
349
+ test/master/test_unit_agv_connection_state.cpp
350
+ test/master/test_unit_agv_operational_state.cpp
351
+ test/master/test_unit_agv_lifecycle.cpp
352
+ test/master/test_unit_agv_order_lifecycle.cpp
353
+ test/master/test_unit_agv_pose_view.cpp
354
+ )
355
+ target_link_libraries(test_master_agv vda5050_core::master)
356
+
357
+ vda5050_add_gmock(test_master_context
358
+ test/master/test_unit_master_context.cpp
359
+ )
360
+ target_link_libraries(test_master_context vda5050_core::master)
361
+
362
+ vda5050_add_gmock(test_validation
363
+ test/validation/test_unit_content_validator.cpp
364
+ test/validation/test_unit_order_graph_validator.cpp
365
+ test/validation/test_unit_pre_send_validator.cpp
366
+ test/validation/test_unit_traversability_validator.cpp
367
+ test/validation/test_unit_capability_validator.cpp
368
+ test/validation/test_unit_protocol_limits_validator.cpp
369
+ test/validation/test_unit_action_conflict_validator.cpp
370
+ test/validation/test_unit_instant_action_mode_validator.cpp
371
+ test/validation/test_unit_factsheet_alignment.cpp
372
+ )
373
+ target_link_libraries(test_validation vda5050_core::validation)
374
+
375
+ vda5050_add_gmock(test_layout_loader
376
+ test/layout/test_unit_loader.cpp
377
+ )
378
+ target_link_libraries(test_layout_loader vda5050_core::layout)
379
+ target_compile_definitions(test_layout_loader PRIVATE
380
+ VDA5050_CORE__SAMPLE_LAYOUT_PATH="${CMAKE_CURRENT_SOURCE_DIR}/test/layout/data/sample_layout.json")
381
+
382
+ vda5050_add_gmock(test_layout_graph
383
+ test/layout/test_unit_graph.cpp
384
+ )
385
+ target_link_libraries(test_layout_graph vda5050_core::layout)
386
+ target_compile_definitions(test_layout_graph PRIVATE
387
+ VDA5050_CORE__SAMPLE_LAYOUT_PATH="${CMAKE_CURRENT_SOURCE_DIR}/test/layout/data/sample_layout.json")
388
+
389
+ vda5050_add_gmock(test_master_order
390
+ test/master/test_unit_order_publisher.cpp
391
+ test/master/test_unit_order_lifecycle_manager.cpp
392
+ test/master/test_unit_order_stitcher.cpp
393
+ )
394
+ target_link_libraries(test_master_order vda5050_core::master)
395
+
396
+ vda5050_add_gmock(test_master_actions
397
+ test/master/test_unit_action_factory.cpp
398
+ )
399
+ target_link_libraries(test_master_actions vda5050_core::master)
400
+ endif()
401
+
402
+ include(CMakePackageConfigHelpers)
403
+ configure_package_config_file(
404
+ ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake.in
405
+ ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
406
+ INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
407
+ )
408
+ write_basic_package_version_file(
409
+ ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
410
+ VERSION ${PROJECT_VERSION}
411
+ COMPATIBILITY SameMinorVersion
412
+ )
413
+
414
+ # Install linter macro
415
+ install(FILES
416
+ ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
417
+ ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
418
+ cmake/vda5050_ament_lint_common.cmake
419
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
420
+ )
421
+
422
+ # Export ament index path
423
+ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/share/ament_index/resource_index/packages/${PROJECT_NAME} "")
424
+ install(
425
+ FILES ${CMAKE_CURRENT_BINARY_DIR}/share/ament_index/resource_index/packages/${PROJECT_NAME}
426
+ DESTINATION share/ament_index/resource_index/packages
427
+ )
428
+
429
+ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/share/${PROJECT_NAME}/hook/ament_prefix_path.dsv "prepend-non-duplicate;AMENT_PREFIX_PATH;")
430
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/share/${PROJECT_NAME}/hook/ament_prefix_path.dsv DESTINATION share/${PROJECT_NAME}/hook)
@@ -0,0 +1,15 @@
1
+ Metadata-Version: 2.4
2
+ Name: vda5050_core
3
+ Version: 0.1.0rc1
4
+ Summary: Tools for VDA5050 development workflows
5
+ Author-Email: Chen Bainian <chen_bainian@a-star.edu.sg>, Saurabh Kamat <saurabh_kamat@a-star.edu.sg>, Tinapat Game Limsila <limsila.limsila@gmail.com>
6
+ License-Expression: Apache-2.0
7
+ Classifier: Development Status :: 4 - Beta
8
+ Classifier: Programming Language :: Python :: 3 :: Only
9
+ Classifier: Programming Language :: Python :: 3.10
10
+ Classifier: Programming Language :: Python :: 3.11
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: Programming Language :: Python :: 3.13
13
+ Classifier: Programming Language :: Python :: 3.14
14
+ Requires-Python: >=3.10
15
+
@@ -0,0 +1,46 @@
1
+ # Copyright (C) 2026 ROS-Industrial Consortium Asia Pacific
2
+ # Advanced Remanufacturing and Technology Centre
3
+ # A*STAR Research Entities (Co. Registration No. 199702110H)
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ #
18
+ # Dual-mode gmock test registration for VDA5050.
19
+ #
20
+ # Drop-in replacement for ament_add_gmock(<target> <sources...>): link the test
21
+ # against its libraries with a normal target_link_libraries() call afterwards.
22
+ #
23
+ # When ament_cmake_gmock is available (the caller is expected to have run
24
+ # find_package(ament_cmake_gmock) so ament_cmake_gmock_FOUND is set), tests
25
+ # register via ament_add_gmock for `colcon test`. Otherwise they fall back to
26
+ # upstream GoogleTest (gmock + gtest + main via GTest::gmock_main).
27
+ #
28
+ # Each executable is registered as a single ctest entry (matching the ament
29
+ # behaviour), so the gtest cases within it run serially -- important for the
30
+ # integration tests that share a single MQTT broker.
31
+ #
32
+ # vda5050_add_gmock(<target> <source> [<source> ...])
33
+ #
34
+ function(vda5050_add_gmock target)
35
+ if(ament_cmake_gmock_FOUND)
36
+ ament_add_gmock(${target} ${ARGN})
37
+ else()
38
+ # Find GoogleTest on first use.
39
+ if(NOT GTest_FOUND)
40
+ find_package(GTest REQUIRED)
41
+ endif()
42
+ add_executable(${target} ${ARGN})
43
+ target_link_libraries(${target} GTest::gmock_main)
44
+ add_test(NAME ${target} COMMAND ${target})
45
+ endif()
46
+ endfunction()
@@ -0,0 +1,46 @@
1
+ # Copyright (C) 2026 ROS-Industrial Consortium Asia Pacific
2
+ # Advanced Remanufacturing and Technology Centre
3
+ # A*STAR Research Entities (Co. Registration No. 199702110H)
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ #
18
+ # Dual-mode gtest test registration for VDA5050.
19
+ #
20
+ # Drop-in replacement for ament_add_gtest(<target> <sources...>): link the test
21
+ # against its libraries with a normal target_link_libraries() call afterwards.
22
+ #
23
+ # When ament_cmake_gtest is available (the caller is expected to have run
24
+ # find_package(ament_cmake_gtest) so ament_cmake_gtest_FOUND is set), tests
25
+ # register via ament_add_gtest for `colcon test`. Otherwise they fall back to
26
+ # upstream GoogleTest (gtest + main via GTest::gtest_main).
27
+ #
28
+ # Each executable is registered as a single ctest entry (matching the ament
29
+ # behaviour), so the gtest cases within it run serially -- important for the
30
+ # integration tests that share a single MQTT broker.
31
+ #
32
+ # vda5050_add_gtest(<target> <source> [<source> ...])
33
+ #
34
+ function(vda5050_add_gtest target)
35
+ if(ament_cmake_gtest_FOUND)
36
+ ament_add_gtest(${target} ${ARGN})
37
+ else()
38
+ # Find GoogleTest on first use.
39
+ if(NOT GTest_FOUND)
40
+ find_package(GTest REQUIRED)
41
+ endif()
42
+ add_executable(${target} ${ARGN})
43
+ target_link_libraries(${target} GTest::gtest_main)
44
+ add_test(NAME ${target} COMMAND ${target})
45
+ endif()
46
+ endfunction()
@@ -0,0 +1,58 @@
1
+ # Copyright (C) 2026 ROS-Industrial Consortium Asia Pacific
2
+ # Advanced Remanufacturing and Technology Centre
3
+ # A*STAR Research Entities (Co. Registration No. 199702110H)
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ #
18
+ # Run common ament linters for VDA5050
19
+ #
20
+
21
+ function(vda5050_ament_lint_common)
22
+ find_package(ament_cmake_cppcheck REQUIRED)
23
+ ament_cppcheck()
24
+
25
+ find_package(ament_cmake_cpplint REQUIRED)
26
+ set(cpplint_filters
27
+ "-whitespace/newline"
28
+ )
29
+ ament_cpplint(FILTERS "${cpplint_filters}")
30
+
31
+ # Only run ament_clang_format for 16.0.0 and higher
32
+ find_program(CLANG_FORMAT_EXECUTABLE NAMES clang-format)
33
+ if(CLANG_FORMAT_EXECUTABLE)
34
+ execute_process(
35
+ COMMAND ${CLANG_FORMAT_EXECUTABLE} --version
36
+ OUTPUT_VARIABLE CLANG_FORMAT_VERSION_OUTPUT
37
+ OUTPUT_STRIP_TRAILING_WHITESPACE
38
+ )
39
+
40
+ # Parse the version number from the output
41
+ # The output typically looks something like: "<platform> clang-format version 17.0.6-<platform-version>"
42
+ string(REGEX REPLACE ".*version \([0-9.]\+\).*" "\\1" CLANG_FORMAT_VERSION "${CLANG_FORMAT_VERSION_OUTPUT}")
43
+
44
+ message(STATUS "clang-format version: ${CLANG_FORMAT_VERSION}")
45
+ if(CLANG_FORMAT_VERSION VERSION_GREATER_EQUAL "16.0.0")
46
+ find_package(ament_cmake_clang_format REQUIRED)
47
+ ament_clang_format(
48
+ CONFIG_FILE "${CMAKE_CURRENT_SOURCE_DIR}/../.clang-format"
49
+ )
50
+ endif()
51
+ endif()
52
+
53
+ # Disable copyright check for older ament_copyright versions
54
+ find_package(ament_cmake_copyright 0.13.3 QUIET)
55
+ if(ament_cmake_copyright_FOUND)
56
+ ament_copyright()
57
+ endif()
58
+ endfunction()