Open aaronchongth opened 3 years ago
@mxgrey, thanks for the review so far! I have a much better understanding of how a reactive system can be useful in this scenario now, as well as how working towards a feature-based system would be great.
I haven't given much thought about the use of namespaces, other than using them as a way to keep things within categories or subsets (i.e. agv, transport, requests), I'll look into getting them towards component pipeline based as you mentioned. I'll develop these locally for now.
I've addressed most of the design concerns and got to implement what we have discussed previously regarding requests, I'd be keen to get your review again before any new commits. Let me know what you think.
This PR introduces a complete overhaul and redesign of
free_fleet
. This attempts to create multiple layers of abstractions that would accommodate different software configurations, mobile platforms and UIs, in order to be more widely used as a generic fleet management system.The objective of this PR while development is still underway, is to have the API reviewed and modified if needed, such that further developments that use these new abstractions can be adapted without too many breaking changes.
Inspired and modeled after the fleet adapters from the RMF project, we have added these abstractions,
Middleware - Split between
ClientMiddleware
andServerMiddleware
, allows communication between the fleet manager and the mobile platform client. With this in place, users can implement and use their preferred middleware, for example ROS, ROS 2, different implementations of DDS, REST, MQTT or other web APIs.Command Handle - This is used by the client to control the mobile platform, users will be able to implement this to interact with their preferred navigation stack or robot controlling API.
Status Handle - This is used by the client to gather information in order to update the fleet management system. The implementation will also be dependent on the mobile platform's API.
Other features:
Added a generalized console logging feature, which can be used throughout
free_fleet
, https://github.com/open-rmf/free_fleet/blob/develop/free_fleet/include/free_fleet/Console.hpp, will consider usingspdlog
for future iterations, https://github.com/open-rmf/free_fleet/issues/101.Added basic
Executor
andWorker
pattern for both the clients and managersNo dependency on ROS or ROS2, instead, any relevant implementations will be ported to free_fleet_ros1 and free_fleet_ros2, both which are under development.
This repository contains the package
free_fleet_cyclonedds
, which is a ready-to-use implementation ofMiddleware
usingCycloneDDS
, release0.8.0beta5
, the same release version on ROS2 Galactic.Message definitions have been pimpl-ized, https://github.com/open-rmf/free_fleet/tree/develop/free_fleet/src/messages
Also fixes: