-
Notifications
You must be signed in to change notification settings - Fork 41
Enrolment of fleets on the fly #273
Comments
This will depend entirely on the requirements of any given deployment. In production environments it's normal for all fleets to be known ahead of time. If an entire new fleet is introduced into production, I generally expect system integrators will be involved in launching it into the environment and that they will likely spin up the fleet adapter for their new fleet manually. All that being said, RMF core does not impose any limits that require you to launch every new fleet adapter using ros2 launch. The fleet adapter API is flexible by design and could support runtime launching of new fleet adapters if that's desirable. However, you'd have to use the C++ API to do this, and all those dynamically generated fleet adapters would be running in the same process and using the same ROS2 nodes, which might not always be desirable. Would you be able to elaborate on your need to dynamically add new fleets into the system at runtime? Are there certain constraints or requirements that prevent you from knowing all of the participating fleets beforehand, or that require the addition of new fleets to be done by some kind of lifecycle management script instead of by a human operator? Maybe if I understand the requirements more clearly, I can provide a better recommendation. |
the goal is to build an adapter(s) for a new type of traffic participants, i.e. cones, road blocks, wheelchair pedestrians that would be detected by cameras within building infra. A simple use case would be to automatically identify road blocks ahead of time to prevent robot from entering the blocked lane, without needing operator to manually block out that area temporarily. I briefly understand from @codebot that rmf traffic map is designed to load statically for now, and the design for dynamic map (closer to real world) is currently in progress. Hence, for now my plan is to utilise the read-only fleet adapter as reference and modify from there because it is already interfaced with the traffic module and the read-only adapter means it would not participant in traffic negotiation. I would also try to utilise the slotcar plugin to add the road block model in the traffic map. Currently, I need help with the above issue mentioned, how to spin and destroy nodes during runtime. eg. how does a python/ cpp application spins fleet_adapter nodes?
could you let me know which library or method to use? and also elaborate more on the implications on using the same ROS2 nodes dynamically generated? |
Thanks for elaborating on the goals; that gives me a much more clear picture of the intentions. I suggest that this problem should be tackled in two phases:
Circling back on how to approach this problem for the first phase, I do not recommend implementing your system as a "fleet". Instead I would make a custom ROS2 node that uses
I recommend constructing the trajectory to say that the obstacle will be there for some number of hours to reflect the belief that the obstacle will be there for a very long time. If it's possible to predict when the obstacle will go away, then the second waypoint in the trajectory should have that predicted timestamp instead. One last detail to make phase 1 work: Since the obstacles are going to be "traffic participants" they need to "participate" in the traffic negotiation. You'll need to have a You can refer to the legacy |
Closing as this is not an issue. To continue discussing this topic, please open a discussion. |
how do I "enroll" more fleets on the fly even after all the rmf core packages had been launched? assume an API app is built to CRUD fleet adapters as the user does not know which fleets are required on startup. Could you advise whether it is possible to launch fleet adapters using the fleet adapter launch file using the rclpy library instead of using
ros2 run
orros2 launch
terminal commands? This is related to spinning and destroying nodes during runtime.The text was updated successfully, but these errors were encountered: