Skip to content

Apply ATOS module and launch changes#686

Open
sepast wants to merge 9 commits into
devfrom
feature_fleetmanagement_compact
Open

Apply ATOS module and launch changes#686
sepast wants to merge 9 commits into
devfrom
feature_fleetmanagement_compact

Conversation

@sepast

@sepast sepast commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

This PR collects the atos-scoped changes needed for the fleet-management runtime path while keeping ATOS buildable and runnable in the
currently used Ubuntu 22.04 and 24.04 environments.

It adds the dedicated fleet-management launch entrypoint, makes the shared launch path more configurable, and fixes build/runtime issues across
ObjectControl, EsminiAdapter, MQTTBridge, and the integration-test flow.

Main changes:

  • add launch_atosfleetmanagement.py
  • make shared launch composition support GUI/non-GUI use cases
  • fix esmini/object-control/integration-test runtime issues
  • fix MQTT bridge publisher typing and related behavior
  • apply smaller compatibility/build cleanups in common and module headers

Files included:

  • atos/CMakeLists.txt
  • atos/common/module.hpp
  • atos/common/roschannels/roschannel.hpp
  • atos/launch/launch_atosfleetmanagement.py
  • atos/launch/launch_integration_testing.py
  • atos/launch/launch_utils/launch_base.py
  • atos/modules/DirectControl/src/directcontrol.cpp
  • atos/modules/EsminiAdapter/src/esminiadapter.cpp
  • atos/modules/IntegrationTesting/src/scenarioexecution.cpp
  • atos/modules/MQTTBridge/inc/Imqtt2ros.hpp
  • atos/modules/MQTTBridge/src/mqttbridge.cpp
  • atos/modules/ObjectControl/inc/objectcontrol.hpp
  • atos/modules/ObjectControl/inc/relativeanchor.hpp
  • atos/modules/ObjectControl/inc/relativetestobject.hpp
  • atos/modules/ObjectControl/inc/testobject.hpp
  • atos/modules/ObjectControl/src/objectcontrol.cpp
  • atos/modules/ObjectControl/src/objectlistener.cpp
  • atos/modules/TrajectoryletStreamer/inc/trajectoryletstreamer.hpp
  • atos/modules/TruckObjectControl/CMakeLists.txt

@sepast sepast marked this pull request as ready for review June 22, 2026 06:51
@sepast sepast requested a review from samuelthoren June 22, 2026 06:51
Comment thread atos/CMakeLists.txt

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

adjusts module/build configuration for the fleet-management changes and current module set.

Comment thread atos/common/module.hpp

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cleans up Module construction semantics to better match current ROS node behavior.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updates shared ROS channel behavior needed by the new runtime/launch flow.

Comment thread atos/common/util.c

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixes utility behavior used by fleet-management/runtime paths.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

adds the dedicated fleet-management launch entrypoint.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

trims the integration-test launch to only the components the test needs.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

makes the shared launch base configurable, including optional GUI inclusion.

@sepast sepast Jun 22, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixes esmini integration and keeps the code aligned with the pinned esmini API used by the project

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updates direct-control behavior to stay consistent with the new runtime/object-control flow.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changes the stored ROS publisher type to match the std_msgs::msg::Empty message published by mqttbridge.cpp

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

improves integration-test result reporting by aggregating state checks into a single overall pass/fail summary and logging the final state/trajectory outcome more clearly

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • fixes MQTT bridge logging to use safe printf-style ROS logging
  • aligns the MQTT-to-ROS publisher type with the std_msgs::msg::Empty messages it publishes

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • restores the missing loadObjectFiles() declaration in ObjectControl so the class interface matches its implementation

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

makes the ROS-backed TestObject ownership semantics explicit by disallowing copy/assignment operations that are incompatible with its node and communication state

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mirrors the TestObject ownership restrictions in RelativeAnchor and marks its specialized monitor publishing function as an explicit override

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

extracts object-file loading into a dedicated loadObjectFiles() helper to separate that logic from the rest of scenario loading in ObjectControl

}
} catch (std::exception& e) {
RCLCPP_WARN(get_logger(), e.what());
RCLCPP_WARN(get_logger(), "%s", e.what());

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why it is used here instead of:

RCLCPP_WARN(get_logger(), e.what());

because RCLCPP_WARN expects a format string plus arguments. Passing a dynamic string directly as the format string is unsafe and can trigger
-Wformat-security warnings.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

replaces dynamic exception strings as direct ROS log format arguments with a fixed "%s" format string to satisfy printf-style logging requirements and avoid format-security warnings

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

marks inherited message-handler functions as explicit overrides so the compiler can verify their signatures and the build no longer emits inconsistent-missing-override warnings

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant