Package symbol

rmf_fleet_adapter_python package from rmf_ros2 repo

rmf_fleet_adapter rmf_fleet_adapter_python rmf_task_ros2 rmf_traffic_ros2 rmf_websocket

ROS Distro
humble

Package Summary

Tags No category tags.
Version 2.1.8
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_ros2.git
VCS Type git
VCS Version humble
Last Updated 2024-06-14
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Python bindings for the rmf_fleet_adapter

Additional Links

No additional links.

Maintainers

  • methylDragon
  • Marco A. Gutiérrez
  • Yadunund

Authors

No additional authors.

rmf_fleet_adapter_python

Python bindings for rmf_fleet_adapter

Introduction

The rmf_fleet_adapter package defines C++ classes that can interact with rmf_core. Specifically an Adapter and a MockAdapter class. This package provides bindings for both and most of their dependencies.

The main difference between rmf_fleet_adapter and rmf_mock_adapter is the fact that rmf_fleet_adapter objects can interact with the ROS2 graph.

The MockAdapter and Adapter both do this. But the difference is that MockAdapter can be instantiated with no issues, whereas Adapter will block to wait for a scheduler node from rmf_core to make its presence known.

Installation

  • Place the pybind_ament and rmf_fleet_adapter_python packages in your ROS2 workspace, and run colcon build as per normal.

Running Examples

Integration test script for rmf loop and delivery task:

ros2 run rmf_fleet_adapter_python test_adapter.py

You may then probe the effects on the ROS2 graph by subscribing to the following topics with ros2 topic echo <TOPIC_NAME>:

  • : `/dispenser_requests`, `/dispenser_results`, `ingestor_requests`, `ingestor_results`, `/task_summaries`

Traffic Light Example

This will showcase an example of having 2 “traffic light” robots using RMF.

# First Terminal
ros2 run rmf_fleet_adapter_python schedule_blockade_nodes

# Second Terminal
ros2 run rmf_fleet_adapter_python traffic_light

For more details, please read this README.

Notes

  • The py api bindings are mainly experimental. Use with caution.
  • Current CI and docs gen are using rolling release of RMF
  • More bindings, tests, and examples are welcome!

Using the Bindings

Ensure that you have built this package and sourced its environment. Then it is as simple as importing the module containing the Python bindings!

import rmf_adapter as adpt

# You may then check the available bindings
print(dir(adpt))

Description

Fleet adapters allow for interactions between rmf_core and robot fleets.

High level pathing or task assignments can be issued to robots from rmf_core, and a fleet adapter will take those assignments and handle it in an implementation specific manner to direct individual robots to execute certain actions while monitoring and updating rmf_core on their high-level states via rmf_core robot update handles.

For more information it is helpful to look at the docs for rmf_core

Usage

The bound APIs are almost identical to the rmf_core ones as well, so if the written documentation for these packages, and the Python usage examples in the scripts or tests are insufficient, you can also look into the relevant C++ implementations as a last resort.

Alternatively, you may also explore any interfaces with:

# To list any available members or methods
dir(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

# To see function signatures
help(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

Binding Details

This package contains Python bindings to C++ code that is found in rmf_core and its associated packages. It was implemented using Pybind11.

Do note that as a result of that, if one needs to inspect the source, there are no Python implementations of any of the bound code, and it would be advisable to look directly into the appropriate rmf_fleet_adapter package, that contains the C++ code.. Additionally, C++ objects will get instantiated (generally) as references that can be used or called using the appropriate bound methods on the Python side.

Some of these bindings allow you to override virtual methods that would normally be called in the C++ side with Python code that you write in your Python scripts!

Features

There are enough functionalities bound to implement your own fleet adapters to communicate with the rest of the rmf_core systems in the ROS2 graph. Allowing you to:

  • Adapter/MockAdapter: Communicate with rmf_core by adding fleets or requesting deliveries
  • RobotCommandHandle: Specify custom robot command handles that can take commands from the rmf_core packages and implement or execute the following robot behaviors:
    • Docking

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rmf_fleet_adapter_python

2.1.8 (2023-12-19)

2.1.7 (2023-08-10)

  • Adding initiator and request time to booking (#284)
  • Contributors: Aaron Chong

2.1.6 (2023-06-02)

  • Switch to rst changelogs (#276)
  • Contributors: Yadunund

2.1.5 (2023-05-20)

2.1.4 (2023-04-27)

2.1.3 (2023-04-26)

2.1.2 (2022-10-10)

2.1.0 (2022-10-03)

  • Make async behaviors more robust: (#228)
  • Allow fleet adapters to change schedule participant profiles: (#229)
  • Allow robots to be decommissioned from the task dispatch system: (#233)
  • Allow manual toggling of stubborn negotiation: (#196)
  • Allow users to specify a custom update listener: (#198)
  • Fix various segfaults related to pybind: (#205)
  • Allow [ResponsiveWait]{.title-ref} to be enabled and disabled: (#209)
  • Allow robot status to be overridden by the user: (#191)
  • Add API to report status for `perform_action`: (#190)
  • Changes for humble compatibility: (#215)

2.0.0 (2022-03-18)

No changes yet

1.5.0 (2022-02-14)

  • Support flexible task definitions (#168)
  • Add lane speed limit to graph parsing function (#124)

1.3.0 (2021-06-07)

  • Modifications to support refactor of rmf_task (#51)
  • Fix symlink-install compilation (#32)
  • Updated package.xml (#26)
  • Fix/rmf task ros2 cleanup (#21)
  • Feature/python binding planner (#11)
  • Adding reference_internal tag to function bindings that return raw pointers (#6)
  • Feature/add unstable participant api (#11)
  • Feature/add simple docs (#9)
  • Support apis for task dispatcher (#10)
  • differentiate functions to prevent overloading (#8)
  • support ez traffic light (#7)
  • Update/release 1.1 (#6)
  • Implement binding for Duration optional
  • Make integration test even stricter
  • Add reference capture for posterity
  • Add clarifying printouts and fix multi-timer bug
  • Integrate compute_plan_starts into integration test
  • Implement type tests
  • Bind optional constructors and delivery msg interfaces
  • Bind compute_plan_starts
  • Add update_position overload
  • Implement Python Bindings for rmf_fleet_adapter (#1)
  • Contributors: Aaron Chong, Charayaphan Nakorn Boon Han, Geoffrey Biggs, Grey, Marco A. Gutiérrez, Yadu, methylDragon, youliang

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_fleet_adapter_python at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 2.7.2
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_ros2.git
VCS Type git
VCS Version jazzy
Last Updated 2025-06-23
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Python bindings for the rmf_fleet_adapter

Additional Links

No additional links.

Maintainers

  • methylDragon
  • Marco A. Gutiérrez
  • Yadunund

Authors

No additional authors.

rmf_fleet_adapter_python

Python bindings for rmf_fleet_adapter

Introduction

The rmf_fleet_adapter package defines C++ classes that can interact with rmf_core. Specifically an Adapter and a MockAdapter class. This package provides bindings for both and most of their dependencies.

The main difference between rmf_fleet_adapter and rmf_mock_adapter is the fact that rmf_fleet_adapter objects can interact with the ROS2 graph.

The MockAdapter and Adapter both do this. But the difference is that MockAdapter can be instantiated with no issues, whereas Adapter will block to wait for a scheduler node from rmf_core to make its presence known.

Installation

  • Place the pybind_ament and rmf_fleet_adapter_python packages in your ROS2 workspace, and run colcon build as per normal.

Running Examples

Integration test script for rmf loop and delivery task:

ros2 run rmf_fleet_adapter_python test_adapter.py

You may then probe the effects on the ROS2 graph by subscribing to the following topics with ros2 topic echo <TOPIC_NAME>:

  • : `/dispenser_requests`, `/dispenser_results`, `ingestor_requests`, `ingestor_results`, `/task_summaries`

Traffic Light Example

This will showcase an example of having 2 “traffic light” robots using RMF.

# First Terminal
ros2 run rmf_fleet_adapter_python schedule_blockade_nodes

# Second Terminal
ros2 run rmf_fleet_adapter_python traffic_light

For more details, please read this README.

Notes

  • The py api bindings are mainly experimental. Use with caution.
  • Current CI and docs gen are using rolling release of RMF
  • More bindings, tests, and examples are welcome!

Using the Bindings

Ensure that you have built this package and sourced its environment. Then it is as simple as importing the module containing the Python bindings!

import rmf_adapter as adpt

# You may then check the available bindings
print(dir(adpt))

Description

Fleet adapters allow for interactions between rmf_core and robot fleets.

High level pathing or task assignments can be issued to robots from rmf_core, and a fleet adapter will take those assignments and handle it in an implementation specific manner to direct individual robots to execute certain actions while monitoring and updating rmf_core on their high-level states via rmf_core robot update handles.

For more information it is helpful to look at the docs for rmf_core

Usage

The bound APIs are almost identical to the rmf_core ones as well, so if the written documentation for these packages, and the Python usage examples in the scripts or tests are insufficient, you can also look into the relevant C++ implementations as a last resort.

Alternatively, you may also explore any interfaces with:

# To list any available members or methods
dir(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

# To see function signatures
help(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

Binding Details

This package contains Python bindings to C++ code that is found in rmf_core and its associated packages. It was implemented using Pybind11.

Do note that as a result of that, if one needs to inspect the source, there are no Python implementations of any of the bound code, and it would be advisable to look directly into the appropriate rmf_fleet_adapter package, that contains the C++ code.. Additionally, C++ objects will get instantiated (generally) as references that can be used or called using the appropriate bound methods on the Python side.

Some of these bindings allow you to override virtual methods that would normally be called in the C++ side with Python code that you write in your Python scripts!

Features

There are enough functionalities bound to implement your own fleet adapters to communicate with the rest of the rmf_core systems in the ROS2 graph. Allowing you to:

  • Adapter/MockAdapter: Communicate with rmf_core by adding fleets or requesting deliveries
  • RobotCommandHandle: Specify custom robot command handles that can take commands from the rmf_core packages and implement or execute the following robot behaviors:
    • Docking

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rmf_fleet_adapter_python

2.7.2 (2024-06-18)

2.7.1 (2024-06-11)

2.7.0 (2024-06-01)

  • Add fleet-level reassign dispatched tasks API (#348)
  • Disable automatic retreat (#330)
  • Stabilize commissioning feature (#338)
  • Add all_known_lifts in Graph binding (#336)
  • Add Speed Limit Requests (#335)
  • Contributors: cwrx777, Grey, Pranay Shirodkar, Xiyu, Yadunund

2.6.0 (2024-03-13)

  • add in_lift readonly property in <Graph::Waypoint> binding. (#326)
  • Contributors: cwrx777

2.5.0 (2023-12-22)

2.4.0 (2023-12-15)

2.3.2 (2023-08-28)

  • EasyFullControl API (#235)
  • Contributors: Grey, Luca Della Vedova, Xiyu, Yadunund

2.3.1 (2023-08-10)

  • Adding initiator and request time to booking (#267)
  • Contributors: Aaron Chong

2.3.0 (2023-06-08)

2.2.0 (2023-06-06)

  • Switch to rst changelogs (#276)
  • Contributors: Yadunund

2.1.5 (2023-05-20)

2.1.4 (2023-04-27)

2.1.3 (2023-04-26)

2.1.2 (2022-10-10)

2.1.0 (2022-10-03)

  • Make async behaviors more robust: (#228)
  • Allow fleet adapters to change schedule participant profiles: (#229)
  • Allow robots to be decommissioned from the task dispatch system: (#233)
  • Allow manual toggling of stubborn negotiation: (#196)
  • Allow users to specify a custom update listener: (#198)
  • Fix various segfaults related to pybind: (#205)
  • Allow [ResponsiveWait]{.title-ref} to be enabled and disabled: (#209)
  • Allow robot status to be overridden by the user: (#191)
  • Add API to report status for `perform_action`: (#190)
  • Changes for humble compatibility: (#215)

2.0.0 (2022-03-18)

No changes yet

1.5.0 (2022-02-14)

  • Support flexible task definitions (#168)
  • Add lane speed limit to graph parsing function (#124)

1.3.0 (2021-06-07)

  • Modifications to support refactor of rmf_task (#51)
  • Fix symlink-install compilation (#32)
  • Updated package.xml (#26)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_fleet_adapter_python at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 2.10.1
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_ros2.git
VCS Type git
VCS Version kilted
Last Updated 2025-05-13
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Python bindings for the rmf_fleet_adapter

Additional Links

No additional links.

Maintainers

  • methylDragon
  • Marco A. Gutiérrez
  • Yadunund

Authors

No additional authors.

rmf_fleet_adapter_python

Python bindings for rmf_fleet_adapter

Introduction

The rmf_fleet_adapter package defines C++ classes that can interact with rmf_core. Specifically an Adapter and a MockAdapter class. This package provides bindings for both and most of their dependencies.

The main difference between rmf_fleet_adapter and rmf_mock_adapter is the fact that rmf_fleet_adapter objects can interact with the ROS2 graph.

The MockAdapter and Adapter both do this. But the difference is that MockAdapter can be instantiated with no issues, whereas Adapter will block to wait for a scheduler node from rmf_core to make its presence known.

Installation

  • Place the pybind_ament and rmf_fleet_adapter_python packages in your ROS2 workspace, and run colcon build as per normal.

Running Examples

Integration test script for rmf loop and delivery task:

ros2 run rmf_fleet_adapter_python test_adapter.py

You may then probe the effects on the ROS2 graph by subscribing to the following topics with ros2 topic echo <TOPIC_NAME>:

  • : `/dispenser_requests`, `/dispenser_results`, `ingestor_requests`, `ingestor_results`, `/task_summaries`

Traffic Light Example

This will showcase an example of having 2 “traffic light” robots using RMF.

# First Terminal
ros2 run rmf_fleet_adapter_python schedule_blockade_nodes

# Second Terminal
ros2 run rmf_fleet_adapter_python traffic_light

For more details, please read this README.

Notes

  • The py api bindings are mainly experimental. Use with caution.
  • Current CI and docs gen are using rolling release of RMF
  • More bindings, tests, and examples are welcome!

Using the Bindings

Ensure that you have built this package and sourced its environment. Then it is as simple as importing the module containing the Python bindings!

import rmf_adapter as adpt

# You may then check the available bindings
print(dir(adpt))

Description

Fleet adapters allow for interactions between rmf_core and robot fleets.

High level pathing or task assignments can be issued to robots from rmf_core, and a fleet adapter will take those assignments and handle it in an implementation specific manner to direct individual robots to execute certain actions while monitoring and updating rmf_core on their high-level states via rmf_core robot update handles.

For more information it is helpful to look at the docs for rmf_core

Usage

The bound APIs are almost identical to the rmf_core ones as well, so if the written documentation for these packages, and the Python usage examples in the scripts or tests are insufficient, you can also look into the relevant C++ implementations as a last resort.

Alternatively, you may also explore any interfaces with:

# To list any available members or methods
dir(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

# To see function signatures
help(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

Binding Details

This package contains Python bindings to C++ code that is found in rmf_core and its associated packages. It was implemented using Pybind11.

Do note that as a result of that, if one needs to inspect the source, there are no Python implementations of any of the bound code, and it would be advisable to look directly into the appropriate rmf_fleet_adapter package, that contains the C++ code.. Additionally, C++ objects will get instantiated (generally) as references that can be used or called using the appropriate bound methods on the Python side.

Some of these bindings allow you to override virtual methods that would normally be called in the C++ side with Python code that you write in your Python scripts!

Features

There are enough functionalities bound to implement your own fleet adapters to communicate with the rest of the rmf_core systems in the ROS2 graph. Allowing you to:

  • Adapter/MockAdapter: Communicate with rmf_core by adding fleets or requesting deliveries
  • RobotCommandHandle: Specify custom robot command handles that can take commands from the rmf_core packages and implement or execute the following robot behaviors:
    • Docking

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rmf_fleet_adapter_python

2.10.1 (2025-05-13)

2.10.0 (2025-05-09)

  • Add a timer to log the size of planner caches (#427)
  • Do not update assignments if bid notice is for a dry run (#401)
  • Contributors: Grey, yadunund

2.9.0 (2024-11-27)

  • Allow automatic action cancellation to be toggled (#392)
  • Adds a simple parking spot management system. (#325)
  • Allow robot-specific finishing request and specify parking spots (#379)
  • Provide an API that says the robot's lift destination (#376)
  • Quiet cancel API (#357)
  • Contributors: Arjo Chakravarty, Grey, Xiyu

2.8.0 (2024-06-12)

2.7.1 (2024-06-11)

2.7.0 (2024-06-01)

  • Add fleet-level reassign dispatched tasks API (#348)
  • Disable automatic retreat (#330)
  • Stabilize commissioning feature (#338)
  • Add all_known_lifts in Graph binding (#336)
  • Add Speed Limit Requests (#335)
  • Contributors: cwrx777, Grey, Pranay Shirodkar, Xiyu, Yadunund

2.6.0 (2024-03-13)

  • add in_lift readonly property in <Graph::Waypoint> binding. (#326)
  • Contributors: cwrx777

2.5.0 (2023-12-22)

2.4.0 (2023-12-15)

2.3.2 (2023-08-28)

  • EasyFullControl API (#235)
  • Contributors: Grey, Luca Della Vedova, Xiyu, Yadunund

2.3.1 (2023-08-10)

  • Adding initiator and request time to booking (#267)
  • Contributors: Aaron Chong

2.3.0 (2023-06-08)

2.2.0 (2023-06-06)

  • Switch to rst changelogs (#276)
  • Contributors: Yadunund

2.1.5 (2023-05-20)

2.1.4 (2023-04-27)

2.1.3 (2023-04-26)

2.1.2 (2022-10-10)

2.1.0 (2022-10-03)

  • Make async behaviors more robust: (#228)
  • Allow fleet adapters to change schedule participant profiles: (#229)
  • Allow robots to be decommissioned from the task dispatch system: (#233)
  • Allow manual toggling of stubborn negotiation: (#196)
  • Allow users to specify a custom update listener: (#198)
  • Fix various segfaults related to pybind: (#205)
  • Allow [ResponsiveWait]{.title-ref} to be enabled and disabled: (#209)
  • Allow robot status to be overridden by the user: (#191)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_fleet_adapter_python at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 2.11.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_ros2.git
VCS Type git
VCS Version main
Last Updated 2025-06-18
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Python bindings for the rmf_fleet_adapter

Additional Links

No additional links.

Maintainers

  • methylDragon
  • Marco A. Gutiérrez
  • Yadunund

Authors

No additional authors.

rmf_fleet_adapter_python

Python bindings for rmf_fleet_adapter

Introduction

The rmf_fleet_adapter package defines C++ classes that can interact with rmf_core. Specifically an Adapter and a MockAdapter class. This package provides bindings for both and most of their dependencies.

The main difference between rmf_fleet_adapter and rmf_mock_adapter is the fact that rmf_fleet_adapter objects can interact with the ROS2 graph.

The MockAdapter and Adapter both do this. But the difference is that MockAdapter can be instantiated with no issues, whereas Adapter will block to wait for a scheduler node from rmf_core to make its presence known.

Installation

  • Place the pybind_ament and rmf_fleet_adapter_python packages in your ROS2 workspace, and run colcon build as per normal.

Running Examples

Integration test script for rmf loop and delivery task:

ros2 run rmf_fleet_adapter_python test_adapter.py

You may then probe the effects on the ROS2 graph by subscribing to the following topics with ros2 topic echo <TOPIC_NAME>:

  • : `/dispenser_requests`, `/dispenser_results`, `ingestor_requests`, `ingestor_results`, `/task_summaries`

Traffic Light Example

This will showcase an example of having 2 “traffic light” robots using RMF.

# First Terminal
ros2 run rmf_fleet_adapter_python schedule_blockade_nodes

# Second Terminal
ros2 run rmf_fleet_adapter_python traffic_light

For more details, please read this README.

Notes

  • The py api bindings are mainly experimental. Use with caution.
  • Current CI and docs gen are using rolling release of RMF
  • More bindings, tests, and examples are welcome!

Using the Bindings

Ensure that you have built this package and sourced its environment. Then it is as simple as importing the module containing the Python bindings!

import rmf_adapter as adpt

# You may then check the available bindings
print(dir(adpt))

Description

Fleet adapters allow for interactions between rmf_core and robot fleets.

High level pathing or task assignments can be issued to robots from rmf_core, and a fleet adapter will take those assignments and handle it in an implementation specific manner to direct individual robots to execute certain actions while monitoring and updating rmf_core on their high-level states via rmf_core robot update handles.

For more information it is helpful to look at the docs for rmf_core

Usage

The bound APIs are almost identical to the rmf_core ones as well, so if the written documentation for these packages, and the Python usage examples in the scripts or tests are insufficient, you can also look into the relevant C++ implementations as a last resort.

Alternatively, you may also explore any interfaces with:

# To list any available members or methods
dir(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

# To see function signatures
help(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

Binding Details

This package contains Python bindings to C++ code that is found in rmf_core and its associated packages. It was implemented using Pybind11.

Do note that as a result of that, if one needs to inspect the source, there are no Python implementations of any of the bound code, and it would be advisable to look directly into the appropriate rmf_fleet_adapter package, that contains the C++ code.. Additionally, C++ objects will get instantiated (generally) as references that can be used or called using the appropriate bound methods on the Python side.

Some of these bindings allow you to override virtual methods that would normally be called in the C++ side with Python code that you write in your Python scripts!

Features

There are enough functionalities bound to implement your own fleet adapters to communicate with the rest of the rmf_core systems in the ROS2 graph. Allowing you to:

  • Adapter/MockAdapter: Communicate with rmf_core by adding fleets or requesting deliveries
  • RobotCommandHandle: Specify custom robot command handles that can take commands from the rmf_core packages and implement or execute the following robot behaviors:
    • Docking

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rmf_fleet_adapter_python

2.11.0 (2025-06-09)

2.10.1 (2025-05-13)

2.10.0 (2025-05-09)

  • Add a timer to log the size of planner caches (#427)
  • Do not update assignments if bid notice is for a dry run (#401)
  • Contributors: Grey, yadunund

2.9.0 (2024-11-27)

  • Allow automatic action cancellation to be toggled (#392)
  • Adds a simple parking spot management system. (#325)
  • Allow robot-specific finishing request and specify parking spots (#379)
  • Provide an API that says the robot's lift destination (#376)
  • Quiet cancel API (#357)
  • Contributors: Arjo Chakravarty, Grey, Xiyu

2.8.0 (2024-06-12)

2.7.1 (2024-06-11)

2.7.0 (2024-06-01)

  • Add fleet-level reassign dispatched tasks API (#348)
  • Disable automatic retreat (#330)
  • Stabilize commissioning feature (#338)
  • Add all_known_lifts in Graph binding (#336)
  • Add Speed Limit Requests (#335)
  • Contributors: cwrx777, Grey, Pranay Shirodkar, Xiyu, Yadunund

2.6.0 (2024-03-13)

  • add in_lift readonly property in <Graph::Waypoint> binding. (#326)
  • Contributors: cwrx777

2.5.0 (2023-12-22)

2.4.0 (2023-12-15)

2.3.2 (2023-08-28)

  • EasyFullControl API (#235)
  • Contributors: Grey, Luca Della Vedova, Xiyu, Yadunund

2.3.1 (2023-08-10)

  • Adding initiator and request time to booking (#267)
  • Contributors: Aaron Chong

2.3.0 (2023-06-08)

2.2.0 (2023-06-06)

  • Switch to rst changelogs (#276)
  • Contributors: Yadunund

2.1.5 (2023-05-20)

2.1.4 (2023-04-27)

2.1.3 (2023-04-26)

2.1.2 (2022-10-10)

2.1.0 (2022-10-03)

  • Make async behaviors more robust: (#228)
  • Allow fleet adapters to change schedule participant profiles: (#229)
  • Allow robots to be decommissioned from the task dispatch system: (#233)
  • Allow manual toggling of stubborn negotiation: (#196)
  • Allow users to specify a custom update listener: (#198)
  • Fix various segfaults related to pybind: (#205)
  • Allow [ResponsiveWait]{.title-ref} to be enabled and disabled: (#209)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_fleet_adapter_python at Robotics Stack Exchange

No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

rmf_fleet_adapter_python package from rmf_ros2 repo

rmf_fleet_adapter rmf_fleet_adapter_python rmf_task_ros2 rmf_traffic_ros2 rmf_websocket

ROS Distro
humble

Package Summary

Tags No category tags.
Version 2.1.8
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_ros2.git
VCS Type git
VCS Version humble
Last Updated 2024-06-14
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Python bindings for the rmf_fleet_adapter

Additional Links

No additional links.

Maintainers

  • methylDragon
  • Marco A. Gutiérrez
  • Yadunund

Authors

No additional authors.

rmf_fleet_adapter_python

Python bindings for rmf_fleet_adapter

Introduction

The rmf_fleet_adapter package defines C++ classes that can interact with rmf_core. Specifically an Adapter and a MockAdapter class. This package provides bindings for both and most of their dependencies.

The main difference between rmf_fleet_adapter and rmf_mock_adapter is the fact that rmf_fleet_adapter objects can interact with the ROS2 graph.

The MockAdapter and Adapter both do this. But the difference is that MockAdapter can be instantiated with no issues, whereas Adapter will block to wait for a scheduler node from rmf_core to make its presence known.

Installation

  • Place the pybind_ament and rmf_fleet_adapter_python packages in your ROS2 workspace, and run colcon build as per normal.

Running Examples

Integration test script for rmf loop and delivery task:

ros2 run rmf_fleet_adapter_python test_adapter.py

You may then probe the effects on the ROS2 graph by subscribing to the following topics with ros2 topic echo <TOPIC_NAME>:

  • : `/dispenser_requests`, `/dispenser_results`, `ingestor_requests`, `ingestor_results`, `/task_summaries`

Traffic Light Example

This will showcase an example of having 2 “traffic light” robots using RMF.

# First Terminal
ros2 run rmf_fleet_adapter_python schedule_blockade_nodes

# Second Terminal
ros2 run rmf_fleet_adapter_python traffic_light

For more details, please read this README.

Notes

  • The py api bindings are mainly experimental. Use with caution.
  • Current CI and docs gen are using rolling release of RMF
  • More bindings, tests, and examples are welcome!

Using the Bindings

Ensure that you have built this package and sourced its environment. Then it is as simple as importing the module containing the Python bindings!

import rmf_adapter as adpt

# You may then check the available bindings
print(dir(adpt))

Description

Fleet adapters allow for interactions between rmf_core and robot fleets.

High level pathing or task assignments can be issued to robots from rmf_core, and a fleet adapter will take those assignments and handle it in an implementation specific manner to direct individual robots to execute certain actions while monitoring and updating rmf_core on their high-level states via rmf_core robot update handles.

For more information it is helpful to look at the docs for rmf_core

Usage

The bound APIs are almost identical to the rmf_core ones as well, so if the written documentation for these packages, and the Python usage examples in the scripts or tests are insufficient, you can also look into the relevant C++ implementations as a last resort.

Alternatively, you may also explore any interfaces with:

# To list any available members or methods
dir(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

# To see function signatures
help(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

Binding Details

This package contains Python bindings to C++ code that is found in rmf_core and its associated packages. It was implemented using Pybind11.

Do note that as a result of that, if one needs to inspect the source, there are no Python implementations of any of the bound code, and it would be advisable to look directly into the appropriate rmf_fleet_adapter package, that contains the C++ code.. Additionally, C++ objects will get instantiated (generally) as references that can be used or called using the appropriate bound methods on the Python side.

Some of these bindings allow you to override virtual methods that would normally be called in the C++ side with Python code that you write in your Python scripts!

Features

There are enough functionalities bound to implement your own fleet adapters to communicate with the rest of the rmf_core systems in the ROS2 graph. Allowing you to:

  • Adapter/MockAdapter: Communicate with rmf_core by adding fleets or requesting deliveries
  • RobotCommandHandle: Specify custom robot command handles that can take commands from the rmf_core packages and implement or execute the following robot behaviors:
    • Docking

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rmf_fleet_adapter_python

2.1.8 (2023-12-19)

2.1.7 (2023-08-10)

  • Adding initiator and request time to booking (#284)
  • Contributors: Aaron Chong

2.1.6 (2023-06-02)

  • Switch to rst changelogs (#276)
  • Contributors: Yadunund

2.1.5 (2023-05-20)

2.1.4 (2023-04-27)

2.1.3 (2023-04-26)

2.1.2 (2022-10-10)

2.1.0 (2022-10-03)

  • Make async behaviors more robust: (#228)
  • Allow fleet adapters to change schedule participant profiles: (#229)
  • Allow robots to be decommissioned from the task dispatch system: (#233)
  • Allow manual toggling of stubborn negotiation: (#196)
  • Allow users to specify a custom update listener: (#198)
  • Fix various segfaults related to pybind: (#205)
  • Allow [ResponsiveWait]{.title-ref} to be enabled and disabled: (#209)
  • Allow robot status to be overridden by the user: (#191)
  • Add API to report status for `perform_action`: (#190)
  • Changes for humble compatibility: (#215)

2.0.0 (2022-03-18)

No changes yet

1.5.0 (2022-02-14)

  • Support flexible task definitions (#168)
  • Add lane speed limit to graph parsing function (#124)

1.3.0 (2021-06-07)

  • Modifications to support refactor of rmf_task (#51)
  • Fix symlink-install compilation (#32)
  • Updated package.xml (#26)
  • Fix/rmf task ros2 cleanup (#21)
  • Feature/python binding planner (#11)
  • Adding reference_internal tag to function bindings that return raw pointers (#6)
  • Feature/add unstable participant api (#11)
  • Feature/add simple docs (#9)
  • Support apis for task dispatcher (#10)
  • differentiate functions to prevent overloading (#8)
  • support ez traffic light (#7)
  • Update/release 1.1 (#6)
  • Implement binding for Duration optional
  • Make integration test even stricter
  • Add reference capture for posterity
  • Add clarifying printouts and fix multi-timer bug
  • Integrate compute_plan_starts into integration test
  • Implement type tests
  • Bind optional constructors and delivery msg interfaces
  • Bind compute_plan_starts
  • Add update_position overload
  • Implement Python Bindings for rmf_fleet_adapter (#1)
  • Contributors: Aaron Chong, Charayaphan Nakorn Boon Han, Geoffrey Biggs, Grey, Marco A. Gutiérrez, Yadu, methylDragon, youliang

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_fleet_adapter_python at Robotics Stack Exchange

No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

rmf_fleet_adapter_python package from rmf_ros2 repo

rmf_fleet_adapter rmf_fleet_adapter_python rmf_task_ros2 rmf_traffic_ros2 rmf_websocket

ROS Distro
humble

Package Summary

Tags No category tags.
Version 2.1.8
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_ros2.git
VCS Type git
VCS Version humble
Last Updated 2024-06-14
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Python bindings for the rmf_fleet_adapter

Additional Links

No additional links.

Maintainers

  • methylDragon
  • Marco A. Gutiérrez
  • Yadunund

Authors

No additional authors.

rmf_fleet_adapter_python

Python bindings for rmf_fleet_adapter

Introduction

The rmf_fleet_adapter package defines C++ classes that can interact with rmf_core. Specifically an Adapter and a MockAdapter class. This package provides bindings for both and most of their dependencies.

The main difference between rmf_fleet_adapter and rmf_mock_adapter is the fact that rmf_fleet_adapter objects can interact with the ROS2 graph.

The MockAdapter and Adapter both do this. But the difference is that MockAdapter can be instantiated with no issues, whereas Adapter will block to wait for a scheduler node from rmf_core to make its presence known.

Installation

  • Place the pybind_ament and rmf_fleet_adapter_python packages in your ROS2 workspace, and run colcon build as per normal.

Running Examples

Integration test script for rmf loop and delivery task:

ros2 run rmf_fleet_adapter_python test_adapter.py

You may then probe the effects on the ROS2 graph by subscribing to the following topics with ros2 topic echo <TOPIC_NAME>:

  • : `/dispenser_requests`, `/dispenser_results`, `ingestor_requests`, `ingestor_results`, `/task_summaries`

Traffic Light Example

This will showcase an example of having 2 “traffic light” robots using RMF.

# First Terminal
ros2 run rmf_fleet_adapter_python schedule_blockade_nodes

# Second Terminal
ros2 run rmf_fleet_adapter_python traffic_light

For more details, please read this README.

Notes

  • The py api bindings are mainly experimental. Use with caution.
  • Current CI and docs gen are using rolling release of RMF
  • More bindings, tests, and examples are welcome!

Using the Bindings

Ensure that you have built this package and sourced its environment. Then it is as simple as importing the module containing the Python bindings!

import rmf_adapter as adpt

# You may then check the available bindings
print(dir(adpt))

Description

Fleet adapters allow for interactions between rmf_core and robot fleets.

High level pathing or task assignments can be issued to robots from rmf_core, and a fleet adapter will take those assignments and handle it in an implementation specific manner to direct individual robots to execute certain actions while monitoring and updating rmf_core on their high-level states via rmf_core robot update handles.

For more information it is helpful to look at the docs for rmf_core

Usage

The bound APIs are almost identical to the rmf_core ones as well, so if the written documentation for these packages, and the Python usage examples in the scripts or tests are insufficient, you can also look into the relevant C++ implementations as a last resort.

Alternatively, you may also explore any interfaces with:

# To list any available members or methods
dir(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

# To see function signatures
help(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

Binding Details

This package contains Python bindings to C++ code that is found in rmf_core and its associated packages. It was implemented using Pybind11.

Do note that as a result of that, if one needs to inspect the source, there are no Python implementations of any of the bound code, and it would be advisable to look directly into the appropriate rmf_fleet_adapter package, that contains the C++ code.. Additionally, C++ objects will get instantiated (generally) as references that can be used or called using the appropriate bound methods on the Python side.

Some of these bindings allow you to override virtual methods that would normally be called in the C++ side with Python code that you write in your Python scripts!

Features

There are enough functionalities bound to implement your own fleet adapters to communicate with the rest of the rmf_core systems in the ROS2 graph. Allowing you to:

  • Adapter/MockAdapter: Communicate with rmf_core by adding fleets or requesting deliveries
  • RobotCommandHandle: Specify custom robot command handles that can take commands from the rmf_core packages and implement or execute the following robot behaviors:
    • Docking

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rmf_fleet_adapter_python

2.1.8 (2023-12-19)

2.1.7 (2023-08-10)

  • Adding initiator and request time to booking (#284)
  • Contributors: Aaron Chong

2.1.6 (2023-06-02)

  • Switch to rst changelogs (#276)
  • Contributors: Yadunund

2.1.5 (2023-05-20)

2.1.4 (2023-04-27)

2.1.3 (2023-04-26)

2.1.2 (2022-10-10)

2.1.0 (2022-10-03)

  • Make async behaviors more robust: (#228)
  • Allow fleet adapters to change schedule participant profiles: (#229)
  • Allow robots to be decommissioned from the task dispatch system: (#233)
  • Allow manual toggling of stubborn negotiation: (#196)
  • Allow users to specify a custom update listener: (#198)
  • Fix various segfaults related to pybind: (#205)
  • Allow [ResponsiveWait]{.title-ref} to be enabled and disabled: (#209)
  • Allow robot status to be overridden by the user: (#191)
  • Add API to report status for `perform_action`: (#190)
  • Changes for humble compatibility: (#215)

2.0.0 (2022-03-18)

No changes yet

1.5.0 (2022-02-14)

  • Support flexible task definitions (#168)
  • Add lane speed limit to graph parsing function (#124)

1.3.0 (2021-06-07)

  • Modifications to support refactor of rmf_task (#51)
  • Fix symlink-install compilation (#32)
  • Updated package.xml (#26)
  • Fix/rmf task ros2 cleanup (#21)
  • Feature/python binding planner (#11)
  • Adding reference_internal tag to function bindings that return raw pointers (#6)
  • Feature/add unstable participant api (#11)
  • Feature/add simple docs (#9)
  • Support apis for task dispatcher (#10)
  • differentiate functions to prevent overloading (#8)
  • support ez traffic light (#7)
  • Update/release 1.1 (#6)
  • Implement binding for Duration optional
  • Make integration test even stricter
  • Add reference capture for posterity
  • Add clarifying printouts and fix multi-timer bug
  • Integrate compute_plan_starts into integration test
  • Implement type tests
  • Bind optional constructors and delivery msg interfaces
  • Bind compute_plan_starts
  • Add update_position overload
  • Implement Python Bindings for rmf_fleet_adapter (#1)
  • Contributors: Aaron Chong, Charayaphan Nakorn Boon Han, Geoffrey Biggs, Grey, Marco A. Gutiérrez, Yadu, methylDragon, youliang

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_fleet_adapter_python at Robotics Stack Exchange

No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

rmf_fleet_adapter_python package from rmf_ros2 repo

rmf_fleet_adapter rmf_fleet_adapter_python rmf_task_ros2 rmf_traffic_ros2 rmf_websocket

ROS Distro
humble

Package Summary

Tags No category tags.
Version 2.1.8
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_ros2.git
VCS Type git
VCS Version humble
Last Updated 2024-06-14
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Python bindings for the rmf_fleet_adapter

Additional Links

No additional links.

Maintainers

  • methylDragon
  • Marco A. Gutiérrez
  • Yadunund

Authors

No additional authors.

rmf_fleet_adapter_python

Python bindings for rmf_fleet_adapter

Introduction

The rmf_fleet_adapter package defines C++ classes that can interact with rmf_core. Specifically an Adapter and a MockAdapter class. This package provides bindings for both and most of their dependencies.

The main difference between rmf_fleet_adapter and rmf_mock_adapter is the fact that rmf_fleet_adapter objects can interact with the ROS2 graph.

The MockAdapter and Adapter both do this. But the difference is that MockAdapter can be instantiated with no issues, whereas Adapter will block to wait for a scheduler node from rmf_core to make its presence known.

Installation

  • Place the pybind_ament and rmf_fleet_adapter_python packages in your ROS2 workspace, and run colcon build as per normal.

Running Examples

Integration test script for rmf loop and delivery task:

ros2 run rmf_fleet_adapter_python test_adapter.py

You may then probe the effects on the ROS2 graph by subscribing to the following topics with ros2 topic echo <TOPIC_NAME>:

  • : `/dispenser_requests`, `/dispenser_results`, `ingestor_requests`, `ingestor_results`, `/task_summaries`

Traffic Light Example

This will showcase an example of having 2 “traffic light” robots using RMF.

# First Terminal
ros2 run rmf_fleet_adapter_python schedule_blockade_nodes

# Second Terminal
ros2 run rmf_fleet_adapter_python traffic_light

For more details, please read this README.

Notes

  • The py api bindings are mainly experimental. Use with caution.
  • Current CI and docs gen are using rolling release of RMF
  • More bindings, tests, and examples are welcome!

Using the Bindings

Ensure that you have built this package and sourced its environment. Then it is as simple as importing the module containing the Python bindings!

import rmf_adapter as adpt

# You may then check the available bindings
print(dir(adpt))

Description

Fleet adapters allow for interactions between rmf_core and robot fleets.

High level pathing or task assignments can be issued to robots from rmf_core, and a fleet adapter will take those assignments and handle it in an implementation specific manner to direct individual robots to execute certain actions while monitoring and updating rmf_core on their high-level states via rmf_core robot update handles.

For more information it is helpful to look at the docs for rmf_core

Usage

The bound APIs are almost identical to the rmf_core ones as well, so if the written documentation for these packages, and the Python usage examples in the scripts or tests are insufficient, you can also look into the relevant C++ implementations as a last resort.

Alternatively, you may also explore any interfaces with:

# To list any available members or methods
dir(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

# To see function signatures
help(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

Binding Details

This package contains Python bindings to C++ code that is found in rmf_core and its associated packages. It was implemented using Pybind11.

Do note that as a result of that, if one needs to inspect the source, there are no Python implementations of any of the bound code, and it would be advisable to look directly into the appropriate rmf_fleet_adapter package, that contains the C++ code.. Additionally, C++ objects will get instantiated (generally) as references that can be used or called using the appropriate bound methods on the Python side.

Some of these bindings allow you to override virtual methods that would normally be called in the C++ side with Python code that you write in your Python scripts!

Features

There are enough functionalities bound to implement your own fleet adapters to communicate with the rest of the rmf_core systems in the ROS2 graph. Allowing you to:

  • Adapter/MockAdapter: Communicate with rmf_core by adding fleets or requesting deliveries
  • RobotCommandHandle: Specify custom robot command handles that can take commands from the rmf_core packages and implement or execute the following robot behaviors:
    • Docking

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rmf_fleet_adapter_python

2.1.8 (2023-12-19)

2.1.7 (2023-08-10)

  • Adding initiator and request time to booking (#284)
  • Contributors: Aaron Chong

2.1.6 (2023-06-02)

  • Switch to rst changelogs (#276)
  • Contributors: Yadunund

2.1.5 (2023-05-20)

2.1.4 (2023-04-27)

2.1.3 (2023-04-26)

2.1.2 (2022-10-10)

2.1.0 (2022-10-03)

  • Make async behaviors more robust: (#228)
  • Allow fleet adapters to change schedule participant profiles: (#229)
  • Allow robots to be decommissioned from the task dispatch system: (#233)
  • Allow manual toggling of stubborn negotiation: (#196)
  • Allow users to specify a custom update listener: (#198)
  • Fix various segfaults related to pybind: (#205)
  • Allow [ResponsiveWait]{.title-ref} to be enabled and disabled: (#209)
  • Allow robot status to be overridden by the user: (#191)
  • Add API to report status for `perform_action`: (#190)
  • Changes for humble compatibility: (#215)

2.0.0 (2022-03-18)

No changes yet

1.5.0 (2022-02-14)

  • Support flexible task definitions (#168)
  • Add lane speed limit to graph parsing function (#124)

1.3.0 (2021-06-07)

  • Modifications to support refactor of rmf_task (#51)
  • Fix symlink-install compilation (#32)
  • Updated package.xml (#26)
  • Fix/rmf task ros2 cleanup (#21)
  • Feature/python binding planner (#11)
  • Adding reference_internal tag to function bindings that return raw pointers (#6)
  • Feature/add unstable participant api (#11)
  • Feature/add simple docs (#9)
  • Support apis for task dispatcher (#10)
  • differentiate functions to prevent overloading (#8)
  • support ez traffic light (#7)
  • Update/release 1.1 (#6)
  • Implement binding for Duration optional
  • Make integration test even stricter
  • Add reference capture for posterity
  • Add clarifying printouts and fix multi-timer bug
  • Integrate compute_plan_starts into integration test
  • Implement type tests
  • Bind optional constructors and delivery msg interfaces
  • Bind compute_plan_starts
  • Add update_position overload
  • Implement Python Bindings for rmf_fleet_adapter (#1)
  • Contributors: Aaron Chong, Charayaphan Nakorn Boon Han, Geoffrey Biggs, Grey, Marco A. Gutiérrez, Yadu, methylDragon, youliang

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_fleet_adapter_python at Robotics Stack Exchange

No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

rmf_fleet_adapter_python package from rmf_ros2 repo

rmf_fleet_adapter rmf_fleet_adapter_python rmf_task_ros2 rmf_traffic_ros2 rmf_websocket

ROS Distro
humble

Package Summary

Tags No category tags.
Version 2.1.8
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_ros2.git
VCS Type git
VCS Version humble
Last Updated 2024-06-14
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Python bindings for the rmf_fleet_adapter

Additional Links

No additional links.

Maintainers

  • methylDragon
  • Marco A. Gutiérrez
  • Yadunund

Authors

No additional authors.

rmf_fleet_adapter_python

Python bindings for rmf_fleet_adapter

Introduction

The rmf_fleet_adapter package defines C++ classes that can interact with rmf_core. Specifically an Adapter and a MockAdapter class. This package provides bindings for both and most of their dependencies.

The main difference between rmf_fleet_adapter and rmf_mock_adapter is the fact that rmf_fleet_adapter objects can interact with the ROS2 graph.

The MockAdapter and Adapter both do this. But the difference is that MockAdapter can be instantiated with no issues, whereas Adapter will block to wait for a scheduler node from rmf_core to make its presence known.

Installation

  • Place the pybind_ament and rmf_fleet_adapter_python packages in your ROS2 workspace, and run colcon build as per normal.

Running Examples

Integration test script for rmf loop and delivery task:

ros2 run rmf_fleet_adapter_python test_adapter.py

You may then probe the effects on the ROS2 graph by subscribing to the following topics with ros2 topic echo <TOPIC_NAME>:

  • : `/dispenser_requests`, `/dispenser_results`, `ingestor_requests`, `ingestor_results`, `/task_summaries`

Traffic Light Example

This will showcase an example of having 2 “traffic light” robots using RMF.

# First Terminal
ros2 run rmf_fleet_adapter_python schedule_blockade_nodes

# Second Terminal
ros2 run rmf_fleet_adapter_python traffic_light

For more details, please read this README.

Notes

  • The py api bindings are mainly experimental. Use with caution.
  • Current CI and docs gen are using rolling release of RMF
  • More bindings, tests, and examples are welcome!

Using the Bindings

Ensure that you have built this package and sourced its environment. Then it is as simple as importing the module containing the Python bindings!

import rmf_adapter as adpt

# You may then check the available bindings
print(dir(adpt))

Description

Fleet adapters allow for interactions between rmf_core and robot fleets.

High level pathing or task assignments can be issued to robots from rmf_core, and a fleet adapter will take those assignments and handle it in an implementation specific manner to direct individual robots to execute certain actions while monitoring and updating rmf_core on their high-level states via rmf_core robot update handles.

For more information it is helpful to look at the docs for rmf_core

Usage

The bound APIs are almost identical to the rmf_core ones as well, so if the written documentation for these packages, and the Python usage examples in the scripts or tests are insufficient, you can also look into the relevant C++ implementations as a last resort.

Alternatively, you may also explore any interfaces with:

# To list any available members or methods
dir(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

# To see function signatures
help(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

Binding Details

This package contains Python bindings to C++ code that is found in rmf_core and its associated packages. It was implemented using Pybind11.

Do note that as a result of that, if one needs to inspect the source, there are no Python implementations of any of the bound code, and it would be advisable to look directly into the appropriate rmf_fleet_adapter package, that contains the C++ code.. Additionally, C++ objects will get instantiated (generally) as references that can be used or called using the appropriate bound methods on the Python side.

Some of these bindings allow you to override virtual methods that would normally be called in the C++ side with Python code that you write in your Python scripts!

Features

There are enough functionalities bound to implement your own fleet adapters to communicate with the rest of the rmf_core systems in the ROS2 graph. Allowing you to:

  • Adapter/MockAdapter: Communicate with rmf_core by adding fleets or requesting deliveries
  • RobotCommandHandle: Specify custom robot command handles that can take commands from the rmf_core packages and implement or execute the following robot behaviors:
    • Docking

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rmf_fleet_adapter_python

2.1.8 (2023-12-19)

2.1.7 (2023-08-10)

  • Adding initiator and request time to booking (#284)
  • Contributors: Aaron Chong

2.1.6 (2023-06-02)

  • Switch to rst changelogs (#276)
  • Contributors: Yadunund

2.1.5 (2023-05-20)

2.1.4 (2023-04-27)

2.1.3 (2023-04-26)

2.1.2 (2022-10-10)

2.1.0 (2022-10-03)

  • Make async behaviors more robust: (#228)
  • Allow fleet adapters to change schedule participant profiles: (#229)
  • Allow robots to be decommissioned from the task dispatch system: (#233)
  • Allow manual toggling of stubborn negotiation: (#196)
  • Allow users to specify a custom update listener: (#198)
  • Fix various segfaults related to pybind: (#205)
  • Allow [ResponsiveWait]{.title-ref} to be enabled and disabled: (#209)
  • Allow robot status to be overridden by the user: (#191)
  • Add API to report status for `perform_action`: (#190)
  • Changes for humble compatibility: (#215)

2.0.0 (2022-03-18)

No changes yet

1.5.0 (2022-02-14)

  • Support flexible task definitions (#168)
  • Add lane speed limit to graph parsing function (#124)

1.3.0 (2021-06-07)

  • Modifications to support refactor of rmf_task (#51)
  • Fix symlink-install compilation (#32)
  • Updated package.xml (#26)
  • Fix/rmf task ros2 cleanup (#21)
  • Feature/python binding planner (#11)
  • Adding reference_internal tag to function bindings that return raw pointers (#6)
  • Feature/add unstable participant api (#11)
  • Feature/add simple docs (#9)
  • Support apis for task dispatcher (#10)
  • differentiate functions to prevent overloading (#8)
  • support ez traffic light (#7)
  • Update/release 1.1 (#6)
  • Implement binding for Duration optional
  • Make integration test even stricter
  • Add reference capture for posterity
  • Add clarifying printouts and fix multi-timer bug
  • Integrate compute_plan_starts into integration test
  • Implement type tests
  • Bind optional constructors and delivery msg interfaces
  • Bind compute_plan_starts
  • Add update_position overload
  • Implement Python Bindings for rmf_fleet_adapter (#1)
  • Contributors: Aaron Chong, Charayaphan Nakorn Boon Han, Geoffrey Biggs, Grey, Marco A. Gutiérrez, Yadu, methylDragon, youliang

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_fleet_adapter_python at Robotics Stack Exchange

No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

rmf_fleet_adapter_python package from rmf_ros2 repo

rmf_fleet_adapter rmf_fleet_adapter_python rmf_task_ros2 rmf_traffic_ros2 rmf_websocket

ROS Distro
humble

Package Summary

Tags No category tags.
Version 2.1.8
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_ros2.git
VCS Type git
VCS Version humble
Last Updated 2024-06-14
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Python bindings for the rmf_fleet_adapter

Additional Links

No additional links.

Maintainers

  • methylDragon
  • Marco A. Gutiérrez
  • Yadunund

Authors

No additional authors.

rmf_fleet_adapter_python

Python bindings for rmf_fleet_adapter

Introduction

The rmf_fleet_adapter package defines C++ classes that can interact with rmf_core. Specifically an Adapter and a MockAdapter class. This package provides bindings for both and most of their dependencies.

The main difference between rmf_fleet_adapter and rmf_mock_adapter is the fact that rmf_fleet_adapter objects can interact with the ROS2 graph.

The MockAdapter and Adapter both do this. But the difference is that MockAdapter can be instantiated with no issues, whereas Adapter will block to wait for a scheduler node from rmf_core to make its presence known.

Installation

  • Place the pybind_ament and rmf_fleet_adapter_python packages in your ROS2 workspace, and run colcon build as per normal.

Running Examples

Integration test script for rmf loop and delivery task:

ros2 run rmf_fleet_adapter_python test_adapter.py

You may then probe the effects on the ROS2 graph by subscribing to the following topics with ros2 topic echo <TOPIC_NAME>:

  • : `/dispenser_requests`, `/dispenser_results`, `ingestor_requests`, `ingestor_results`, `/task_summaries`

Traffic Light Example

This will showcase an example of having 2 “traffic light” robots using RMF.

# First Terminal
ros2 run rmf_fleet_adapter_python schedule_blockade_nodes

# Second Terminal
ros2 run rmf_fleet_adapter_python traffic_light

For more details, please read this README.

Notes

  • The py api bindings are mainly experimental. Use with caution.
  • Current CI and docs gen are using rolling release of RMF
  • More bindings, tests, and examples are welcome!

Using the Bindings

Ensure that you have built this package and sourced its environment. Then it is as simple as importing the module containing the Python bindings!

import rmf_adapter as adpt

# You may then check the available bindings
print(dir(adpt))

Description

Fleet adapters allow for interactions between rmf_core and robot fleets.

High level pathing or task assignments can be issued to robots from rmf_core, and a fleet adapter will take those assignments and handle it in an implementation specific manner to direct individual robots to execute certain actions while monitoring and updating rmf_core on their high-level states via rmf_core robot update handles.

For more information it is helpful to look at the docs for rmf_core

Usage

The bound APIs are almost identical to the rmf_core ones as well, so if the written documentation for these packages, and the Python usage examples in the scripts or tests are insufficient, you can also look into the relevant C++ implementations as a last resort.

Alternatively, you may also explore any interfaces with:

# To list any available members or methods
dir(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

# To see function signatures
help(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

Binding Details

This package contains Python bindings to C++ code that is found in rmf_core and its associated packages. It was implemented using Pybind11.

Do note that as a result of that, if one needs to inspect the source, there are no Python implementations of any of the bound code, and it would be advisable to look directly into the appropriate rmf_fleet_adapter package, that contains the C++ code.. Additionally, C++ objects will get instantiated (generally) as references that can be used or called using the appropriate bound methods on the Python side.

Some of these bindings allow you to override virtual methods that would normally be called in the C++ side with Python code that you write in your Python scripts!

Features

There are enough functionalities bound to implement your own fleet adapters to communicate with the rest of the rmf_core systems in the ROS2 graph. Allowing you to:

  • Adapter/MockAdapter: Communicate with rmf_core by adding fleets or requesting deliveries
  • RobotCommandHandle: Specify custom robot command handles that can take commands from the rmf_core packages and implement or execute the following robot behaviors:
    • Docking

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rmf_fleet_adapter_python

2.1.8 (2023-12-19)

2.1.7 (2023-08-10)

  • Adding initiator and request time to booking (#284)
  • Contributors: Aaron Chong

2.1.6 (2023-06-02)

  • Switch to rst changelogs (#276)
  • Contributors: Yadunund

2.1.5 (2023-05-20)

2.1.4 (2023-04-27)

2.1.3 (2023-04-26)

2.1.2 (2022-10-10)

2.1.0 (2022-10-03)

  • Make async behaviors more robust: (#228)
  • Allow fleet adapters to change schedule participant profiles: (#229)
  • Allow robots to be decommissioned from the task dispatch system: (#233)
  • Allow manual toggling of stubborn negotiation: (#196)
  • Allow users to specify a custom update listener: (#198)
  • Fix various segfaults related to pybind: (#205)
  • Allow [ResponsiveWait]{.title-ref} to be enabled and disabled: (#209)
  • Allow robot status to be overridden by the user: (#191)
  • Add API to report status for `perform_action`: (#190)
  • Changes for humble compatibility: (#215)

2.0.0 (2022-03-18)

No changes yet

1.5.0 (2022-02-14)

  • Support flexible task definitions (#168)
  • Add lane speed limit to graph parsing function (#124)

1.3.0 (2021-06-07)

  • Modifications to support refactor of rmf_task (#51)
  • Fix symlink-install compilation (#32)
  • Updated package.xml (#26)
  • Fix/rmf task ros2 cleanup (#21)
  • Feature/python binding planner (#11)
  • Adding reference_internal tag to function bindings that return raw pointers (#6)
  • Feature/add unstable participant api (#11)
  • Feature/add simple docs (#9)
  • Support apis for task dispatcher (#10)
  • differentiate functions to prevent overloading (#8)
  • support ez traffic light (#7)
  • Update/release 1.1 (#6)
  • Implement binding for Duration optional
  • Make integration test even stricter
  • Add reference capture for posterity
  • Add clarifying printouts and fix multi-timer bug
  • Integrate compute_plan_starts into integration test
  • Implement type tests
  • Bind optional constructors and delivery msg interfaces
  • Bind compute_plan_starts
  • Add update_position overload
  • Implement Python Bindings for rmf_fleet_adapter (#1)
  • Contributors: Aaron Chong, Charayaphan Nakorn Boon Han, Geoffrey Biggs, Grey, Marco A. Gutiérrez, Yadu, methylDragon, youliang

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_fleet_adapter_python at Robotics Stack Exchange

Package symbol

rmf_fleet_adapter_python package from rmf_ros2 repo

rmf_fleet_adapter rmf_fleet_adapter_python rmf_task_ros2 rmf_traffic_ros2

ROS Distro
galactic

Package Summary

Tags No category tags.
Version 1.4.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_ros2.git
VCS Type git
VCS Version galactic
Last Updated 2021-09-02
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Python bindings for the rmf_fleet_adapter

Additional Links

No additional links.

Maintainers

  • methylDragon
  • Marco A. Gutiérrez

Authors

No additional authors.

rmf_fleet_adapter_python

Python bindings for rmf_fleet_adapter

Introduction

The rmf_fleet_adapter package defines C++ classes that can interact with rmf_core. Specifically an Adapter and a MockAdapter class. This package provides bindings for both and most of their dependencies.

The main difference between rmf_fleet_adapter and rmf_mock_adapter is the fact that rmf_fleet_adapter objects can interact with the ROS2 graph.

The MockAdapter and Adapter both do this. But the difference is that MockAdapter can be instantiated with no issues, whereas Adapter will block to wait for a scheduler node from rmf_core to make its presence known.

Installation

  • Place the pybind_ament and rmf_fleet_adapter_python packages in your ROS2 workspace, and run colcon build as per normal.

Running Examples

Integration test script for rmf loop and delivery task:

ros2 run rmf_fleet_adapter_python test_adapter.py

You may then probe the effects on the ROS2 graph by subscribing to the following topics with ros2 topic echo <TOPIC_NAME>:

  • : `/dispenser_requests`, `/dispenser_results`, `ingestor_requests`, `ingestor_results`, `/task_summaries`

Traffic Light Example

This will showcase an example of having 2 “traffic light” robots using RMF.

# First Terminal
ros2 run rmf_fleet_adapter_python schedule_blockade_nodes

# Second Terminal
ros2 run rmf_fleet_adapter_python traffic_light

For more details, please read this README.

Notes

  • The py api bindings are mainly experimental. Use with caution.
  • Current CI and docs gen are using rolling release of RMF
  • More bindings, tests, and examples are welcome!

Using the Bindings

Ensure that you have built this package and sourced its environment. Then it is as simple as importing the module containing the Python bindings!

import rmf_adapter as adpt

# You may then check the available bindings
print(dir(adpt))

Description

Fleet adapters allow for interactions between rmf_core and robot fleets.

High level pathing or task assignments can be issued to robots from rmf_core, and a fleet adapter will take those assignments and handle it in an implementation specific manner to direct individual robots to execute certain actions while monitoring and updating rmf_core on their high-level states via rmf_core robot update handles.

For more information it is helpful to look at the docs for rmf_core

Usage

The bound APIs are almost identical to the rmf_core ones as well, so if the written documentation for these packages, and the Python usage examples in the scripts or tests are insufficient, you can also look into the relevant C++ implementations as a last resort.

Alternatively, you may also explore any interfaces with:

# To list any available members or methods
dir(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

# To see function signatures
help(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

Binding Details

This package contains Python bindings to C++ code that is found in rmf_core and its associated packages. It was implemented using Pybind11.

Do note that as a result of that, if one needs to inspect the source, there are no Python implementations of any of the bound code, and it would be advisable to look directly into the appropriate rmf_fleet_adapter package, that contains the C++ code.. Additionally, C++ objects will get instantiated (generally) as references that can be used or called using the appropriate bound methods on the Python side.

Some of these bindings allow you to override virtual methods that would normally be called in the C++ side with Python code that you write in your Python scripts!

Features

There are enough functionalities bound to implement your own fleet adapters to communicate with the rest of the rmf_core systems in the ROS2 graph. Allowing you to:

  • Adapter/MockAdapter: Communicate with rmf_core by adding fleets or requesting deliveries
  • RobotCommandHandle: Specify custom robot command handles that can take commands from the rmf_core packages and implement or execute the following robot behaviors:
    • Docking

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rmf_fleet_adapter_python

1.3.0 (2021-06-07)

  • Modifications to support refactor of rmf_task (#51 <https://github.com/open-rmf/rmf_ros2/issues/51>_)
  • Fix symlink-install compilation (#32 <https://github.com/open-rmf/rmf_ros2/issues/32>_)
  • Updated package.xml (#26 <https://github.com/open-rmf/rmf_ros2/issues/26>_)
  • Fix/rmf task ros2 cleanup (#21 <https://github.com/open-rmf/rmf_ros2/issues/21>_)
  • Feature/python binding planner (#11 <https://github.com/open-rmf/rmf_ros2/issues/11>_)
  • Adding reference_internal tag to function bindings that return raw pointers (#6 <https://github.com/open-rmf/rmf_ros2/issues/6>_)
  • Feature/add unstable participant api (#11 <https://github.com/open-rmf/rmf_ros2/issues/11>_)
  • Feature/add simple docs (#9 <https://github.com/open-rmf/rmf_ros2/issues/9>_)
  • Support apis for task dispatcher (#10 <https://github.com/open-rmf/rmf_ros2/issues/10>_)
  • differentiate functions to prevent overloading (#8 <https://github.com/open-rmf/rmf_ros2/issues/8>_)
  • support ez traffic light (#7 <https://github.com/open-rmf/rmf_ros2/issues/7>_)
  • Update/release 1.1 (#6 <https://github.com/open-rmf/rmf_ros2/issues/6>_)
  • Implement binding for Duration optional
  • Make integration test even stricter
  • Add reference capture for posterity
  • Add clarifying printouts and fix multi-timer bug
  • Integrate compute_plan_starts into integration test
  • Implement type tests
  • Bind optional constructors and delivery msg interfaces
  • Bind compute_plan_starts
  • Add update_position overload
  • Implement Python Bindings for rmf_fleet_adapter (#1 <https://github.com/open-rmf/rmf_ros2/issues/1>_)
  • Contributors: Aaron Chong, Charayaphan Nakorn Boon Han, Geoffrey Biggs, Grey, Marco A. Gutiérrez, Yadu, methylDragon, youliang

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_fleet_adapter_python at Robotics Stack Exchange

Package symbol

rmf_fleet_adapter_python package from rmf_ros2 repo

rmf_fleet_adapter rmf_fleet_adapter_python rmf_task_ros2 rmf_traffic_ros2

ROS Distro
foxy

Package Summary

Tags No category tags.
Version 1.4.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_ros2.git
VCS Type git
VCS Version foxy
Last Updated 2021-09-02
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Python bindings for the rmf_fleet_adapter

Additional Links

No additional links.

Maintainers

  • methylDragon
  • Marco A. Gutiérrez

Authors

No additional authors.

rmf_fleet_adapter_python

Python bindings for rmf_fleet_adapter

Introduction

The rmf_fleet_adapter package defines C++ classes that can interact with rmf_core. Specifically an Adapter and a MockAdapter class. This package provides bindings for both and most of their dependencies.

The main difference between rmf_fleet_adapter and rmf_mock_adapter is the fact that rmf_fleet_adapter objects can interact with the ROS2 graph.

The MockAdapter and Adapter both do this. But the difference is that MockAdapter can be instantiated with no issues, whereas Adapter will block to wait for a scheduler node from rmf_core to make its presence known.

Installation

  • Place the pybind_ament and rmf_fleet_adapter_python packages in your ROS2 workspace, and run colcon build as per normal.

Running Examples

Integration test script for rmf loop and delivery task:

ros2 run rmf_fleet_adapter_python test_adapter.py

You may then probe the effects on the ROS2 graph by subscribing to the following topics with ros2 topic echo <TOPIC_NAME>:

  • : `/dispenser_requests`, `/dispenser_results`, `ingestor_requests`, `ingestor_results`, `/task_summaries`

Traffic Light Example

This will showcase an example of having 2 “traffic light” robots using RMF.

# First Terminal
ros2 run rmf_fleet_adapter_python schedule_blockade_nodes

# Second Terminal
ros2 run rmf_fleet_adapter_python traffic_light

For more details, please read this README.

Notes

  • The py api bindings are mainly experimental. Use with caution.
  • Current CI and docs gen are using rolling release of RMF
  • More bindings, tests, and examples are welcome!

Using the Bindings

Ensure that you have built this package and sourced its environment. Then it is as simple as importing the module containing the Python bindings!

import rmf_adapter as adpt

# You may then check the available bindings
print(dir(adpt))

Description

Fleet adapters allow for interactions between rmf_core and robot fleets.

High level pathing or task assignments can be issued to robots from rmf_core, and a fleet adapter will take those assignments and handle it in an implementation specific manner to direct individual robots to execute certain actions while monitoring and updating rmf_core on their high-level states via rmf_core robot update handles.

For more information it is helpful to look at the docs for rmf_core

Usage

The bound APIs are almost identical to the rmf_core ones as well, so if the written documentation for these packages, and the Python usage examples in the scripts or tests are insufficient, you can also look into the relevant C++ implementations as a last resort.

Alternatively, you may also explore any interfaces with:

# To list any available members or methods
dir(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

# To see function signatures
help(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

Binding Details

This package contains Python bindings to C++ code that is found in rmf_core and its associated packages. It was implemented using Pybind11.

Do note that as a result of that, if one needs to inspect the source, there are no Python implementations of any of the bound code, and it would be advisable to look directly into the appropriate rmf_fleet_adapter package, that contains the C++ code.. Additionally, C++ objects will get instantiated (generally) as references that can be used or called using the appropriate bound methods on the Python side.

Some of these bindings allow you to override virtual methods that would normally be called in the C++ side with Python code that you write in your Python scripts!

Features

There are enough functionalities bound to implement your own fleet adapters to communicate with the rest of the rmf_core systems in the ROS2 graph. Allowing you to:

  • Adapter/MockAdapter: Communicate with rmf_core by adding fleets or requesting deliveries
  • RobotCommandHandle: Specify custom robot command handles that can take commands from the rmf_core packages and implement or execute the following robot behaviors:
    • Docking

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rmf_fleet_adapter_python

1.3.0 (2021-06-07)

  • Modifications to support refactor of rmf_task (#51 <https://github.com/open-rmf/rmf_ros2/issues/51>_)
  • Fix symlink-install compilation (#32 <https://github.com/open-rmf/rmf_ros2/issues/32>_)
  • Updated package.xml (#26 <https://github.com/open-rmf/rmf_ros2/issues/26>_)
  • Fix/rmf task ros2 cleanup (#21 <https://github.com/open-rmf/rmf_ros2/issues/21>_)
  • Feature/python binding planner (#11 <https://github.com/open-rmf/rmf_ros2/issues/11>_)
  • Adding reference_internal tag to function bindings that return raw pointers (#6 <https://github.com/open-rmf/rmf_ros2/issues/6>_)
  • Feature/add unstable participant api (#11 <https://github.com/open-rmf/rmf_ros2/issues/11>_)
  • Feature/add simple docs (#9 <https://github.com/open-rmf/rmf_ros2/issues/9>_)
  • Support apis for task dispatcher (#10 <https://github.com/open-rmf/rmf_ros2/issues/10>_)
  • differentiate functions to prevent overloading (#8 <https://github.com/open-rmf/rmf_ros2/issues/8>_)
  • support ez traffic light (#7 <https://github.com/open-rmf/rmf_ros2/issues/7>_)
  • Update/release 1.1 (#6 <https://github.com/open-rmf/rmf_ros2/issues/6>_)
  • Implement binding for Duration optional
  • Make integration test even stricter
  • Add reference capture for posterity
  • Add clarifying printouts and fix multi-timer bug
  • Integrate compute_plan_starts into integration test
  • Implement type tests
  • Bind optional constructors and delivery msg interfaces
  • Bind compute_plan_starts
  • Add update_position overload
  • Implement Python Bindings for rmf_fleet_adapter (#1 <https://github.com/open-rmf/rmf_ros2/issues/1>_)
  • Contributors: Aaron Chong, Charayaphan Nakorn Boon Han, Geoffrey Biggs, Grey, Marco A. Gutiérrez, Yadu, methylDragon, youliang

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_fleet_adapter_python at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 2.2.7
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_ros2.git
VCS Type git
VCS Version iron
Last Updated 2024-11-14
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Python bindings for the rmf_fleet_adapter

Additional Links

No additional links.

Maintainers

  • methylDragon
  • Marco A. Gutiérrez
  • Yadunund

Authors

No additional authors.

rmf_fleet_adapter_python

Python bindings for rmf_fleet_adapter

Introduction

The rmf_fleet_adapter package defines C++ classes that can interact with rmf_core. Specifically an Adapter and a MockAdapter class. This package provides bindings for both and most of their dependencies.

The main difference between rmf_fleet_adapter and rmf_mock_adapter is the fact that rmf_fleet_adapter objects can interact with the ROS2 graph.

The MockAdapter and Adapter both do this. But the difference is that MockAdapter can be instantiated with no issues, whereas Adapter will block to wait for a scheduler node from rmf_core to make its presence known.

Installation

  • Place the pybind_ament and rmf_fleet_adapter_python packages in your ROS2 workspace, and run colcon build as per normal.

Running Examples

Integration test script for rmf loop and delivery task:

ros2 run rmf_fleet_adapter_python test_adapter.py

You may then probe the effects on the ROS2 graph by subscribing to the following topics with ros2 topic echo <TOPIC_NAME>:

  • : `/dispenser_requests`, `/dispenser_results`, `ingestor_requests`, `ingestor_results`, `/task_summaries`

Traffic Light Example

This will showcase an example of having 2 “traffic light” robots using RMF.

# First Terminal
ros2 run rmf_fleet_adapter_python schedule_blockade_nodes

# Second Terminal
ros2 run rmf_fleet_adapter_python traffic_light

For more details, please read this README.

Notes

  • The py api bindings are mainly experimental. Use with caution.
  • Current CI and docs gen are using rolling release of RMF
  • More bindings, tests, and examples are welcome!

Using the Bindings

Ensure that you have built this package and sourced its environment. Then it is as simple as importing the module containing the Python bindings!

import rmf_adapter as adpt

# You may then check the available bindings
print(dir(adpt))

Description

Fleet adapters allow for interactions between rmf_core and robot fleets.

High level pathing or task assignments can be issued to robots from rmf_core, and a fleet adapter will take those assignments and handle it in an implementation specific manner to direct individual robots to execute certain actions while monitoring and updating rmf_core on their high-level states via rmf_core robot update handles.

For more information it is helpful to look at the docs for rmf_core

Usage

The bound APIs are almost identical to the rmf_core ones as well, so if the written documentation for these packages, and the Python usage examples in the scripts or tests are insufficient, you can also look into the relevant C++ implementations as a last resort.

Alternatively, you may also explore any interfaces with:

# To list any available members or methods
dir(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

# To see function signatures
help(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

Binding Details

This package contains Python bindings to C++ code that is found in rmf_core and its associated packages. It was implemented using Pybind11.

Do note that as a result of that, if one needs to inspect the source, there are no Python implementations of any of the bound code, and it would be advisable to look directly into the appropriate rmf_fleet_adapter package, that contains the C++ code.. Additionally, C++ objects will get instantiated (generally) as references that can be used or called using the appropriate bound methods on the Python side.

Some of these bindings allow you to override virtual methods that would normally be called in the C++ side with Python code that you write in your Python scripts!

Features

There are enough functionalities bound to implement your own fleet adapters to communicate with the rest of the rmf_core systems in the ROS2 graph. Allowing you to:

  • Adapter/MockAdapter: Communicate with rmf_core by adding fleets or requesting deliveries
  • RobotCommandHandle: Specify custom robot command handles that can take commands from the rmf_core packages and implement or execute the following robot behaviors:
    • Docking

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rmf_fleet_adapter_python

2.2.7 (2024-11-15)

2.2.6 (2024-07-12)

2.2.5 (2023-12-22)

2.2.4 (2023-12-15)

2.2.3 (2023-09-20)

  • EasyFullControl API (#302)
  • Contributors: Luca Della Vedova, Michael X. Grey, Xiyu, Yadunund

2.2.2 (2023-09-11)

2.2.1 (2023-08-10)

  • Adding initiator and request time to booking (#285)
  • Contributors: Aaron Chong, Yadunund

2.2.0 (2023-06-06)

  • Switch to rst changelogs (#276)
  • Contributors: Yadunund

2.1.5 (2023-05-20)

2.1.4 (2023-04-27)

2.1.3 (2023-04-26)

2.1.2 (2022-10-10)

2.1.0 (2022-10-03)

  • Make async behaviors more robust: (#228)
  • Allow fleet adapters to change schedule participant profiles: (#229)
  • Allow robots to be decommissioned from the task dispatch system: (#233)
  • Allow manual toggling of stubborn negotiation: (#196)
  • Allow users to specify a custom update listener: (#198)
  • Fix various segfaults related to pybind: (#205)
  • Allow [ResponsiveWait]{.title-ref} to be enabled and disabled: (#209)
  • Allow robot status to be overridden by the user: (#191)
  • Add API to report status for `perform_action`: (#190)
  • Changes for humble compatibility: (#215)

2.0.0 (2022-03-18)

No changes yet

1.5.0 (2022-02-14)

  • Support flexible task definitions (#168)
  • Add lane speed limit to graph parsing function (#124)

1.3.0 (2021-06-07)

  • Modifications to support refactor of rmf_task (#51)
  • Fix symlink-install compilation (#32)
  • Updated package.xml (#26)
  • Fix/rmf task ros2 cleanup (#21)
  • Feature/python binding planner (#11)
  • Adding reference_internal tag to function bindings that return raw pointers (#6)
  • Feature/add unstable participant api (#11)
  • Feature/add simple docs (#9)
  • Support apis for task dispatcher (#10)
  • differentiate functions to prevent overloading (#8)
  • support ez traffic light (#7)
  • Update/release 1.1 (#6)
  • Implement binding for Duration optional
  • Make integration test even stricter

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_fleet_adapter_python at Robotics Stack Exchange

No version for distro lunar showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

rmf_fleet_adapter_python package from rmf_ros2 repo

rmf_fleet_adapter rmf_fleet_adapter_python rmf_task_ros2 rmf_traffic_ros2 rmf_websocket

ROS Distro
humble

Package Summary

Tags No category tags.
Version 2.1.8
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_ros2.git
VCS Type git
VCS Version humble
Last Updated 2024-06-14
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Python bindings for the rmf_fleet_adapter

Additional Links

No additional links.

Maintainers

  • methylDragon
  • Marco A. Gutiérrez
  • Yadunund

Authors

No additional authors.

rmf_fleet_adapter_python

Python bindings for rmf_fleet_adapter

Introduction

The rmf_fleet_adapter package defines C++ classes that can interact with rmf_core. Specifically an Adapter and a MockAdapter class. This package provides bindings for both and most of their dependencies.

The main difference between rmf_fleet_adapter and rmf_mock_adapter is the fact that rmf_fleet_adapter objects can interact with the ROS2 graph.

The MockAdapter and Adapter both do this. But the difference is that MockAdapter can be instantiated with no issues, whereas Adapter will block to wait for a scheduler node from rmf_core to make its presence known.

Installation

  • Place the pybind_ament and rmf_fleet_adapter_python packages in your ROS2 workspace, and run colcon build as per normal.

Running Examples

Integration test script for rmf loop and delivery task:

ros2 run rmf_fleet_adapter_python test_adapter.py

You may then probe the effects on the ROS2 graph by subscribing to the following topics with ros2 topic echo <TOPIC_NAME>:

  • : `/dispenser_requests`, `/dispenser_results`, `ingestor_requests`, `ingestor_results`, `/task_summaries`

Traffic Light Example

This will showcase an example of having 2 “traffic light” robots using RMF.

# First Terminal
ros2 run rmf_fleet_adapter_python schedule_blockade_nodes

# Second Terminal
ros2 run rmf_fleet_adapter_python traffic_light

For more details, please read this README.

Notes

  • The py api bindings are mainly experimental. Use with caution.
  • Current CI and docs gen are using rolling release of RMF
  • More bindings, tests, and examples are welcome!

Using the Bindings

Ensure that you have built this package and sourced its environment. Then it is as simple as importing the module containing the Python bindings!

import rmf_adapter as adpt

# You may then check the available bindings
print(dir(adpt))

Description

Fleet adapters allow for interactions between rmf_core and robot fleets.

High level pathing or task assignments can be issued to robots from rmf_core, and a fleet adapter will take those assignments and handle it in an implementation specific manner to direct individual robots to execute certain actions while monitoring and updating rmf_core on their high-level states via rmf_core robot update handles.

For more information it is helpful to look at the docs for rmf_core

Usage

The bound APIs are almost identical to the rmf_core ones as well, so if the written documentation for these packages, and the Python usage examples in the scripts or tests are insufficient, you can also look into the relevant C++ implementations as a last resort.

Alternatively, you may also explore any interfaces with:

# To list any available members or methods
dir(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

# To see function signatures
help(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

Binding Details

This package contains Python bindings to C++ code that is found in rmf_core and its associated packages. It was implemented using Pybind11.

Do note that as a result of that, if one needs to inspect the source, there are no Python implementations of any of the bound code, and it would be advisable to look directly into the appropriate rmf_fleet_adapter package, that contains the C++ code.. Additionally, C++ objects will get instantiated (generally) as references that can be used or called using the appropriate bound methods on the Python side.

Some of these bindings allow you to override virtual methods that would normally be called in the C++ side with Python code that you write in your Python scripts!

Features

There are enough functionalities bound to implement your own fleet adapters to communicate with the rest of the rmf_core systems in the ROS2 graph. Allowing you to:

  • Adapter/MockAdapter: Communicate with rmf_core by adding fleets or requesting deliveries
  • RobotCommandHandle: Specify custom robot command handles that can take commands from the rmf_core packages and implement or execute the following robot behaviors:
    • Docking

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rmf_fleet_adapter_python

2.1.8 (2023-12-19)

2.1.7 (2023-08-10)

  • Adding initiator and request time to booking (#284)
  • Contributors: Aaron Chong

2.1.6 (2023-06-02)

  • Switch to rst changelogs (#276)
  • Contributors: Yadunund

2.1.5 (2023-05-20)

2.1.4 (2023-04-27)

2.1.3 (2023-04-26)

2.1.2 (2022-10-10)

2.1.0 (2022-10-03)

  • Make async behaviors more robust: (#228)
  • Allow fleet adapters to change schedule participant profiles: (#229)
  • Allow robots to be decommissioned from the task dispatch system: (#233)
  • Allow manual toggling of stubborn negotiation: (#196)
  • Allow users to specify a custom update listener: (#198)
  • Fix various segfaults related to pybind: (#205)
  • Allow [ResponsiveWait]{.title-ref} to be enabled and disabled: (#209)
  • Allow robot status to be overridden by the user: (#191)
  • Add API to report status for `perform_action`: (#190)
  • Changes for humble compatibility: (#215)

2.0.0 (2022-03-18)

No changes yet

1.5.0 (2022-02-14)

  • Support flexible task definitions (#168)
  • Add lane speed limit to graph parsing function (#124)

1.3.0 (2021-06-07)

  • Modifications to support refactor of rmf_task (#51)
  • Fix symlink-install compilation (#32)
  • Updated package.xml (#26)
  • Fix/rmf task ros2 cleanup (#21)
  • Feature/python binding planner (#11)
  • Adding reference_internal tag to function bindings that return raw pointers (#6)
  • Feature/add unstable participant api (#11)
  • Feature/add simple docs (#9)
  • Support apis for task dispatcher (#10)
  • differentiate functions to prevent overloading (#8)
  • support ez traffic light (#7)
  • Update/release 1.1 (#6)
  • Implement binding for Duration optional
  • Make integration test even stricter
  • Add reference capture for posterity
  • Add clarifying printouts and fix multi-timer bug
  • Integrate compute_plan_starts into integration test
  • Implement type tests
  • Bind optional constructors and delivery msg interfaces
  • Bind compute_plan_starts
  • Add update_position overload
  • Implement Python Bindings for rmf_fleet_adapter (#1)
  • Contributors: Aaron Chong, Charayaphan Nakorn Boon Han, Geoffrey Biggs, Grey, Marco A. Gutiérrez, Yadu, methylDragon, youliang

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_fleet_adapter_python at Robotics Stack Exchange

No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

rmf_fleet_adapter_python package from rmf_ros2 repo

rmf_fleet_adapter rmf_fleet_adapter_python rmf_task_ros2 rmf_traffic_ros2 rmf_websocket

ROS Distro
humble

Package Summary

Tags No category tags.
Version 2.1.8
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_ros2.git
VCS Type git
VCS Version humble
Last Updated 2024-06-14
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Python bindings for the rmf_fleet_adapter

Additional Links

No additional links.

Maintainers

  • methylDragon
  • Marco A. Gutiérrez
  • Yadunund

Authors

No additional authors.

rmf_fleet_adapter_python

Python bindings for rmf_fleet_adapter

Introduction

The rmf_fleet_adapter package defines C++ classes that can interact with rmf_core. Specifically an Adapter and a MockAdapter class. This package provides bindings for both and most of their dependencies.

The main difference between rmf_fleet_adapter and rmf_mock_adapter is the fact that rmf_fleet_adapter objects can interact with the ROS2 graph.

The MockAdapter and Adapter both do this. But the difference is that MockAdapter can be instantiated with no issues, whereas Adapter will block to wait for a scheduler node from rmf_core to make its presence known.

Installation

  • Place the pybind_ament and rmf_fleet_adapter_python packages in your ROS2 workspace, and run colcon build as per normal.

Running Examples

Integration test script for rmf loop and delivery task:

ros2 run rmf_fleet_adapter_python test_adapter.py

You may then probe the effects on the ROS2 graph by subscribing to the following topics with ros2 topic echo <TOPIC_NAME>:

  • : `/dispenser_requests`, `/dispenser_results`, `ingestor_requests`, `ingestor_results`, `/task_summaries`

Traffic Light Example

This will showcase an example of having 2 “traffic light” robots using RMF.

# First Terminal
ros2 run rmf_fleet_adapter_python schedule_blockade_nodes

# Second Terminal
ros2 run rmf_fleet_adapter_python traffic_light

For more details, please read this README.

Notes

  • The py api bindings are mainly experimental. Use with caution.
  • Current CI and docs gen are using rolling release of RMF
  • More bindings, tests, and examples are welcome!

Using the Bindings

Ensure that you have built this package and sourced its environment. Then it is as simple as importing the module containing the Python bindings!

import rmf_adapter as adpt

# You may then check the available bindings
print(dir(adpt))

Description

Fleet adapters allow for interactions between rmf_core and robot fleets.

High level pathing or task assignments can be issued to robots from rmf_core, and a fleet adapter will take those assignments and handle it in an implementation specific manner to direct individual robots to execute certain actions while monitoring and updating rmf_core on their high-level states via rmf_core robot update handles.

For more information it is helpful to look at the docs for rmf_core

Usage

The bound APIs are almost identical to the rmf_core ones as well, so if the written documentation for these packages, and the Python usage examples in the scripts or tests are insufficient, you can also look into the relevant C++ implementations as a last resort.

Alternatively, you may also explore any interfaces with:

# To list any available members or methods
dir(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

# To see function signatures
help(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

Binding Details

This package contains Python bindings to C++ code that is found in rmf_core and its associated packages. It was implemented using Pybind11.

Do note that as a result of that, if one needs to inspect the source, there are no Python implementations of any of the bound code, and it would be advisable to look directly into the appropriate rmf_fleet_adapter package, that contains the C++ code.. Additionally, C++ objects will get instantiated (generally) as references that can be used or called using the appropriate bound methods on the Python side.

Some of these bindings allow you to override virtual methods that would normally be called in the C++ side with Python code that you write in your Python scripts!

Features

There are enough functionalities bound to implement your own fleet adapters to communicate with the rest of the rmf_core systems in the ROS2 graph. Allowing you to:

  • Adapter/MockAdapter: Communicate with rmf_core by adding fleets or requesting deliveries
  • RobotCommandHandle: Specify custom robot command handles that can take commands from the rmf_core packages and implement or execute the following robot behaviors:
    • Docking

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rmf_fleet_adapter_python

2.1.8 (2023-12-19)

2.1.7 (2023-08-10)

  • Adding initiator and request time to booking (#284)
  • Contributors: Aaron Chong

2.1.6 (2023-06-02)

  • Switch to rst changelogs (#276)
  • Contributors: Yadunund

2.1.5 (2023-05-20)

2.1.4 (2023-04-27)

2.1.3 (2023-04-26)

2.1.2 (2022-10-10)

2.1.0 (2022-10-03)

  • Make async behaviors more robust: (#228)
  • Allow fleet adapters to change schedule participant profiles: (#229)
  • Allow robots to be decommissioned from the task dispatch system: (#233)
  • Allow manual toggling of stubborn negotiation: (#196)
  • Allow users to specify a custom update listener: (#198)
  • Fix various segfaults related to pybind: (#205)
  • Allow [ResponsiveWait]{.title-ref} to be enabled and disabled: (#209)
  • Allow robot status to be overridden by the user: (#191)
  • Add API to report status for `perform_action`: (#190)
  • Changes for humble compatibility: (#215)

2.0.0 (2022-03-18)

No changes yet

1.5.0 (2022-02-14)

  • Support flexible task definitions (#168)
  • Add lane speed limit to graph parsing function (#124)

1.3.0 (2021-06-07)

  • Modifications to support refactor of rmf_task (#51)
  • Fix symlink-install compilation (#32)
  • Updated package.xml (#26)
  • Fix/rmf task ros2 cleanup (#21)
  • Feature/python binding planner (#11)
  • Adding reference_internal tag to function bindings that return raw pointers (#6)
  • Feature/add unstable participant api (#11)
  • Feature/add simple docs (#9)
  • Support apis for task dispatcher (#10)
  • differentiate functions to prevent overloading (#8)
  • support ez traffic light (#7)
  • Update/release 1.1 (#6)
  • Implement binding for Duration optional
  • Make integration test even stricter
  • Add reference capture for posterity
  • Add clarifying printouts and fix multi-timer bug
  • Integrate compute_plan_starts into integration test
  • Implement type tests
  • Bind optional constructors and delivery msg interfaces
  • Bind compute_plan_starts
  • Add update_position overload
  • Implement Python Bindings for rmf_fleet_adapter (#1)
  • Contributors: Aaron Chong, Charayaphan Nakorn Boon Han, Geoffrey Biggs, Grey, Marco A. Gutiérrez, Yadu, methylDragon, youliang

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_fleet_adapter_python at Robotics Stack Exchange

No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

rmf_fleet_adapter_python package from rmf_ros2 repo

rmf_fleet_adapter rmf_fleet_adapter_python rmf_task_ros2 rmf_traffic_ros2 rmf_websocket

ROS Distro
humble

Package Summary

Tags No category tags.
Version 2.1.8
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_ros2.git
VCS Type git
VCS Version humble
Last Updated 2024-06-14
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Python bindings for the rmf_fleet_adapter

Additional Links

No additional links.

Maintainers

  • methylDragon
  • Marco A. Gutiérrez
  • Yadunund

Authors

No additional authors.

rmf_fleet_adapter_python

Python bindings for rmf_fleet_adapter

Introduction

The rmf_fleet_adapter package defines C++ classes that can interact with rmf_core. Specifically an Adapter and a MockAdapter class. This package provides bindings for both and most of their dependencies.

The main difference between rmf_fleet_adapter and rmf_mock_adapter is the fact that rmf_fleet_adapter objects can interact with the ROS2 graph.

The MockAdapter and Adapter both do this. But the difference is that MockAdapter can be instantiated with no issues, whereas Adapter will block to wait for a scheduler node from rmf_core to make its presence known.

Installation

  • Place the pybind_ament and rmf_fleet_adapter_python packages in your ROS2 workspace, and run colcon build as per normal.

Running Examples

Integration test script for rmf loop and delivery task:

ros2 run rmf_fleet_adapter_python test_adapter.py

You may then probe the effects on the ROS2 graph by subscribing to the following topics with ros2 topic echo <TOPIC_NAME>:

  • : `/dispenser_requests`, `/dispenser_results`, `ingestor_requests`, `ingestor_results`, `/task_summaries`

Traffic Light Example

This will showcase an example of having 2 “traffic light” robots using RMF.

# First Terminal
ros2 run rmf_fleet_adapter_python schedule_blockade_nodes

# Second Terminal
ros2 run rmf_fleet_adapter_python traffic_light

For more details, please read this README.

Notes

  • The py api bindings are mainly experimental. Use with caution.
  • Current CI and docs gen are using rolling release of RMF
  • More bindings, tests, and examples are welcome!

Using the Bindings

Ensure that you have built this package and sourced its environment. Then it is as simple as importing the module containing the Python bindings!

import rmf_adapter as adpt

# You may then check the available bindings
print(dir(adpt))

Description

Fleet adapters allow for interactions between rmf_core and robot fleets.

High level pathing or task assignments can be issued to robots from rmf_core, and a fleet adapter will take those assignments and handle it in an implementation specific manner to direct individual robots to execute certain actions while monitoring and updating rmf_core on their high-level states via rmf_core robot update handles.

For more information it is helpful to look at the docs for rmf_core

Usage

The bound APIs are almost identical to the rmf_core ones as well, so if the written documentation for these packages, and the Python usage examples in the scripts or tests are insufficient, you can also look into the relevant C++ implementations as a last resort.

Alternatively, you may also explore any interfaces with:

# To list any available members or methods
dir(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

# To see function signatures
help(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

Binding Details

This package contains Python bindings to C++ code that is found in rmf_core and its associated packages. It was implemented using Pybind11.

Do note that as a result of that, if one needs to inspect the source, there are no Python implementations of any of the bound code, and it would be advisable to look directly into the appropriate rmf_fleet_adapter package, that contains the C++ code.. Additionally, C++ objects will get instantiated (generally) as references that can be used or called using the appropriate bound methods on the Python side.

Some of these bindings allow you to override virtual methods that would normally be called in the C++ side with Python code that you write in your Python scripts!

Features

There are enough functionalities bound to implement your own fleet adapters to communicate with the rest of the rmf_core systems in the ROS2 graph. Allowing you to:

  • Adapter/MockAdapter: Communicate with rmf_core by adding fleets or requesting deliveries
  • RobotCommandHandle: Specify custom robot command handles that can take commands from the rmf_core packages and implement or execute the following robot behaviors:
    • Docking

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rmf_fleet_adapter_python

2.1.8 (2023-12-19)

2.1.7 (2023-08-10)

  • Adding initiator and request time to booking (#284)
  • Contributors: Aaron Chong

2.1.6 (2023-06-02)

  • Switch to rst changelogs (#276)
  • Contributors: Yadunund

2.1.5 (2023-05-20)

2.1.4 (2023-04-27)

2.1.3 (2023-04-26)

2.1.2 (2022-10-10)

2.1.0 (2022-10-03)

  • Make async behaviors more robust: (#228)
  • Allow fleet adapters to change schedule participant profiles: (#229)
  • Allow robots to be decommissioned from the task dispatch system: (#233)
  • Allow manual toggling of stubborn negotiation: (#196)
  • Allow users to specify a custom update listener: (#198)
  • Fix various segfaults related to pybind: (#205)
  • Allow [ResponsiveWait]{.title-ref} to be enabled and disabled: (#209)
  • Allow robot status to be overridden by the user: (#191)
  • Add API to report status for `perform_action`: (#190)
  • Changes for humble compatibility: (#215)

2.0.0 (2022-03-18)

No changes yet

1.5.0 (2022-02-14)

  • Support flexible task definitions (#168)
  • Add lane speed limit to graph parsing function (#124)

1.3.0 (2021-06-07)

  • Modifications to support refactor of rmf_task (#51)
  • Fix symlink-install compilation (#32)
  • Updated package.xml (#26)
  • Fix/rmf task ros2 cleanup (#21)
  • Feature/python binding planner (#11)
  • Adding reference_internal tag to function bindings that return raw pointers (#6)
  • Feature/add unstable participant api (#11)
  • Feature/add simple docs (#9)
  • Support apis for task dispatcher (#10)
  • differentiate functions to prevent overloading (#8)
  • support ez traffic light (#7)
  • Update/release 1.1 (#6)
  • Implement binding for Duration optional
  • Make integration test even stricter
  • Add reference capture for posterity
  • Add clarifying printouts and fix multi-timer bug
  • Integrate compute_plan_starts into integration test
  • Implement type tests
  • Bind optional constructors and delivery msg interfaces
  • Bind compute_plan_starts
  • Add update_position overload
  • Implement Python Bindings for rmf_fleet_adapter (#1)
  • Contributors: Aaron Chong, Charayaphan Nakorn Boon Han, Geoffrey Biggs, Grey, Marco A. Gutiérrez, Yadu, methylDragon, youliang

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_fleet_adapter_python at Robotics Stack Exchange

No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

rmf_fleet_adapter_python package from rmf_ros2 repo

rmf_fleet_adapter rmf_fleet_adapter_python rmf_task_ros2 rmf_traffic_ros2 rmf_websocket

ROS Distro
humble

Package Summary

Tags No category tags.
Version 2.1.8
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_ros2.git
VCS Type git
VCS Version humble
Last Updated 2024-06-14
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Python bindings for the rmf_fleet_adapter

Additional Links

No additional links.

Maintainers

  • methylDragon
  • Marco A. Gutiérrez
  • Yadunund

Authors

No additional authors.

rmf_fleet_adapter_python

Python bindings for rmf_fleet_adapter

Introduction

The rmf_fleet_adapter package defines C++ classes that can interact with rmf_core. Specifically an Adapter and a MockAdapter class. This package provides bindings for both and most of their dependencies.

The main difference between rmf_fleet_adapter and rmf_mock_adapter is the fact that rmf_fleet_adapter objects can interact with the ROS2 graph.

The MockAdapter and Adapter both do this. But the difference is that MockAdapter can be instantiated with no issues, whereas Adapter will block to wait for a scheduler node from rmf_core to make its presence known.

Installation

  • Place the pybind_ament and rmf_fleet_adapter_python packages in your ROS2 workspace, and run colcon build as per normal.

Running Examples

Integration test script for rmf loop and delivery task:

ros2 run rmf_fleet_adapter_python test_adapter.py

You may then probe the effects on the ROS2 graph by subscribing to the following topics with ros2 topic echo <TOPIC_NAME>:

  • : `/dispenser_requests`, `/dispenser_results`, `ingestor_requests`, `ingestor_results`, `/task_summaries`

Traffic Light Example

This will showcase an example of having 2 “traffic light” robots using RMF.

# First Terminal
ros2 run rmf_fleet_adapter_python schedule_blockade_nodes

# Second Terminal
ros2 run rmf_fleet_adapter_python traffic_light

For more details, please read this README.

Notes

  • The py api bindings are mainly experimental. Use with caution.
  • Current CI and docs gen are using rolling release of RMF
  • More bindings, tests, and examples are welcome!

Using the Bindings

Ensure that you have built this package and sourced its environment. Then it is as simple as importing the module containing the Python bindings!

import rmf_adapter as adpt

# You may then check the available bindings
print(dir(adpt))

Description

Fleet adapters allow for interactions between rmf_core and robot fleets.

High level pathing or task assignments can be issued to robots from rmf_core, and a fleet adapter will take those assignments and handle it in an implementation specific manner to direct individual robots to execute certain actions while monitoring and updating rmf_core on their high-level states via rmf_core robot update handles.

For more information it is helpful to look at the docs for rmf_core

Usage

The bound APIs are almost identical to the rmf_core ones as well, so if the written documentation for these packages, and the Python usage examples in the scripts or tests are insufficient, you can also look into the relevant C++ implementations as a last resort.

Alternatively, you may also explore any interfaces with:

# To list any available members or methods
dir(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

# To see function signatures
help(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

Binding Details

This package contains Python bindings to C++ code that is found in rmf_core and its associated packages. It was implemented using Pybind11.

Do note that as a result of that, if one needs to inspect the source, there are no Python implementations of any of the bound code, and it would be advisable to look directly into the appropriate rmf_fleet_adapter package, that contains the C++ code.. Additionally, C++ objects will get instantiated (generally) as references that can be used or called using the appropriate bound methods on the Python side.

Some of these bindings allow you to override virtual methods that would normally be called in the C++ side with Python code that you write in your Python scripts!

Features

There are enough functionalities bound to implement your own fleet adapters to communicate with the rest of the rmf_core systems in the ROS2 graph. Allowing you to:

  • Adapter/MockAdapter: Communicate with rmf_core by adding fleets or requesting deliveries
  • RobotCommandHandle: Specify custom robot command handles that can take commands from the rmf_core packages and implement or execute the following robot behaviors:
    • Docking

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rmf_fleet_adapter_python

2.1.8 (2023-12-19)

2.1.7 (2023-08-10)

  • Adding initiator and request time to booking (#284)
  • Contributors: Aaron Chong

2.1.6 (2023-06-02)

  • Switch to rst changelogs (#276)
  • Contributors: Yadunund

2.1.5 (2023-05-20)

2.1.4 (2023-04-27)

2.1.3 (2023-04-26)

2.1.2 (2022-10-10)

2.1.0 (2022-10-03)

  • Make async behaviors more robust: (#228)
  • Allow fleet adapters to change schedule participant profiles: (#229)
  • Allow robots to be decommissioned from the task dispatch system: (#233)
  • Allow manual toggling of stubborn negotiation: (#196)
  • Allow users to specify a custom update listener: (#198)
  • Fix various segfaults related to pybind: (#205)
  • Allow [ResponsiveWait]{.title-ref} to be enabled and disabled: (#209)
  • Allow robot status to be overridden by the user: (#191)
  • Add API to report status for `perform_action`: (#190)
  • Changes for humble compatibility: (#215)

2.0.0 (2022-03-18)

No changes yet

1.5.0 (2022-02-14)

  • Support flexible task definitions (#168)
  • Add lane speed limit to graph parsing function (#124)

1.3.0 (2021-06-07)

  • Modifications to support refactor of rmf_task (#51)
  • Fix symlink-install compilation (#32)
  • Updated package.xml (#26)
  • Fix/rmf task ros2 cleanup (#21)
  • Feature/python binding planner (#11)
  • Adding reference_internal tag to function bindings that return raw pointers (#6)
  • Feature/add unstable participant api (#11)
  • Feature/add simple docs (#9)
  • Support apis for task dispatcher (#10)
  • differentiate functions to prevent overloading (#8)
  • support ez traffic light (#7)
  • Update/release 1.1 (#6)
  • Implement binding for Duration optional
  • Make integration test even stricter
  • Add reference capture for posterity
  • Add clarifying printouts and fix multi-timer bug
  • Integrate compute_plan_starts into integration test
  • Implement type tests
  • Bind optional constructors and delivery msg interfaces
  • Bind compute_plan_starts
  • Add update_position overload
  • Implement Python Bindings for rmf_fleet_adapter (#1)
  • Contributors: Aaron Chong, Charayaphan Nakorn Boon Han, Geoffrey Biggs, Grey, Marco A. Gutiérrez, Yadu, methylDragon, youliang

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_fleet_adapter_python at Robotics Stack Exchange

No version for distro kinetic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

rmf_fleet_adapter_python package from rmf_ros2 repo

rmf_fleet_adapter rmf_fleet_adapter_python rmf_task_ros2 rmf_traffic_ros2 rmf_websocket

ROS Distro
humble

Package Summary

Tags No category tags.
Version 2.1.8
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_ros2.git
VCS Type git
VCS Version humble
Last Updated 2024-06-14
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Python bindings for the rmf_fleet_adapter

Additional Links

No additional links.

Maintainers

  • methylDragon
  • Marco A. Gutiérrez
  • Yadunund

Authors

No additional authors.

rmf_fleet_adapter_python

Python bindings for rmf_fleet_adapter

Introduction

The rmf_fleet_adapter package defines C++ classes that can interact with rmf_core. Specifically an Adapter and a MockAdapter class. This package provides bindings for both and most of their dependencies.

The main difference between rmf_fleet_adapter and rmf_mock_adapter is the fact that rmf_fleet_adapter objects can interact with the ROS2 graph.

The MockAdapter and Adapter both do this. But the difference is that MockAdapter can be instantiated with no issues, whereas Adapter will block to wait for a scheduler node from rmf_core to make its presence known.

Installation

  • Place the pybind_ament and rmf_fleet_adapter_python packages in your ROS2 workspace, and run colcon build as per normal.

Running Examples

Integration test script for rmf loop and delivery task:

ros2 run rmf_fleet_adapter_python test_adapter.py

You may then probe the effects on the ROS2 graph by subscribing to the following topics with ros2 topic echo <TOPIC_NAME>:

  • : `/dispenser_requests`, `/dispenser_results`, `ingestor_requests`, `ingestor_results`, `/task_summaries`

Traffic Light Example

This will showcase an example of having 2 “traffic light” robots using RMF.

# First Terminal
ros2 run rmf_fleet_adapter_python schedule_blockade_nodes

# Second Terminal
ros2 run rmf_fleet_adapter_python traffic_light

For more details, please read this README.

Notes

  • The py api bindings are mainly experimental. Use with caution.
  • Current CI and docs gen are using rolling release of RMF
  • More bindings, tests, and examples are welcome!

Using the Bindings

Ensure that you have built this package and sourced its environment. Then it is as simple as importing the module containing the Python bindings!

import rmf_adapter as adpt

# You may then check the available bindings
print(dir(adpt))

Description

Fleet adapters allow for interactions between rmf_core and robot fleets.

High level pathing or task assignments can be issued to robots from rmf_core, and a fleet adapter will take those assignments and handle it in an implementation specific manner to direct individual robots to execute certain actions while monitoring and updating rmf_core on their high-level states via rmf_core robot update handles.

For more information it is helpful to look at the docs for rmf_core

Usage

The bound APIs are almost identical to the rmf_core ones as well, so if the written documentation for these packages, and the Python usage examples in the scripts or tests are insufficient, you can also look into the relevant C++ implementations as a last resort.

Alternatively, you may also explore any interfaces with:

# To list any available members or methods
dir(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

# To see function signatures
help(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

Binding Details

This package contains Python bindings to C++ code that is found in rmf_core and its associated packages. It was implemented using Pybind11.

Do note that as a result of that, if one needs to inspect the source, there are no Python implementations of any of the bound code, and it would be advisable to look directly into the appropriate rmf_fleet_adapter package, that contains the C++ code.. Additionally, C++ objects will get instantiated (generally) as references that can be used or called using the appropriate bound methods on the Python side.

Some of these bindings allow you to override virtual methods that would normally be called in the C++ side with Python code that you write in your Python scripts!

Features

There are enough functionalities bound to implement your own fleet adapters to communicate with the rest of the rmf_core systems in the ROS2 graph. Allowing you to:

  • Adapter/MockAdapter: Communicate with rmf_core by adding fleets or requesting deliveries
  • RobotCommandHandle: Specify custom robot command handles that can take commands from the rmf_core packages and implement or execute the following robot behaviors:
    • Docking

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rmf_fleet_adapter_python

2.1.8 (2023-12-19)

2.1.7 (2023-08-10)

  • Adding initiator and request time to booking (#284)
  • Contributors: Aaron Chong

2.1.6 (2023-06-02)

  • Switch to rst changelogs (#276)
  • Contributors: Yadunund

2.1.5 (2023-05-20)

2.1.4 (2023-04-27)

2.1.3 (2023-04-26)

2.1.2 (2022-10-10)

2.1.0 (2022-10-03)

  • Make async behaviors more robust: (#228)
  • Allow fleet adapters to change schedule participant profiles: (#229)
  • Allow robots to be decommissioned from the task dispatch system: (#233)
  • Allow manual toggling of stubborn negotiation: (#196)
  • Allow users to specify a custom update listener: (#198)
  • Fix various segfaults related to pybind: (#205)
  • Allow [ResponsiveWait]{.title-ref} to be enabled and disabled: (#209)
  • Allow robot status to be overridden by the user: (#191)
  • Add API to report status for `perform_action`: (#190)
  • Changes for humble compatibility: (#215)

2.0.0 (2022-03-18)

No changes yet

1.5.0 (2022-02-14)

  • Support flexible task definitions (#168)
  • Add lane speed limit to graph parsing function (#124)

1.3.0 (2021-06-07)

  • Modifications to support refactor of rmf_task (#51)
  • Fix symlink-install compilation (#32)
  • Updated package.xml (#26)
  • Fix/rmf task ros2 cleanup (#21)
  • Feature/python binding planner (#11)
  • Adding reference_internal tag to function bindings that return raw pointers (#6)
  • Feature/add unstable participant api (#11)
  • Feature/add simple docs (#9)
  • Support apis for task dispatcher (#10)
  • differentiate functions to prevent overloading (#8)
  • support ez traffic light (#7)
  • Update/release 1.1 (#6)
  • Implement binding for Duration optional
  • Make integration test even stricter
  • Add reference capture for posterity
  • Add clarifying printouts and fix multi-timer bug
  • Integrate compute_plan_starts into integration test
  • Implement type tests
  • Bind optional constructors and delivery msg interfaces
  • Bind compute_plan_starts
  • Add update_position overload
  • Implement Python Bindings for rmf_fleet_adapter (#1)
  • Contributors: Aaron Chong, Charayaphan Nakorn Boon Han, Geoffrey Biggs, Grey, Marco A. Gutiérrez, Yadu, methylDragon, youliang

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_fleet_adapter_python at Robotics Stack Exchange

No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

rmf_fleet_adapter_python package from rmf_ros2 repo

rmf_fleet_adapter rmf_fleet_adapter_python rmf_task_ros2 rmf_traffic_ros2 rmf_websocket

ROS Distro
humble

Package Summary

Tags No category tags.
Version 2.1.8
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_ros2.git
VCS Type git
VCS Version humble
Last Updated 2024-06-14
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Python bindings for the rmf_fleet_adapter

Additional Links

No additional links.

Maintainers

  • methylDragon
  • Marco A. Gutiérrez
  • Yadunund

Authors

No additional authors.

rmf_fleet_adapter_python

Python bindings for rmf_fleet_adapter

Introduction

The rmf_fleet_adapter package defines C++ classes that can interact with rmf_core. Specifically an Adapter and a MockAdapter class. This package provides bindings for both and most of their dependencies.

The main difference between rmf_fleet_adapter and rmf_mock_adapter is the fact that rmf_fleet_adapter objects can interact with the ROS2 graph.

The MockAdapter and Adapter both do this. But the difference is that MockAdapter can be instantiated with no issues, whereas Adapter will block to wait for a scheduler node from rmf_core to make its presence known.

Installation

  • Place the pybind_ament and rmf_fleet_adapter_python packages in your ROS2 workspace, and run colcon build as per normal.

Running Examples

Integration test script for rmf loop and delivery task:

ros2 run rmf_fleet_adapter_python test_adapter.py

You may then probe the effects on the ROS2 graph by subscribing to the following topics with ros2 topic echo <TOPIC_NAME>:

  • : `/dispenser_requests`, `/dispenser_results`, `ingestor_requests`, `ingestor_results`, `/task_summaries`

Traffic Light Example

This will showcase an example of having 2 “traffic light” robots using RMF.

# First Terminal
ros2 run rmf_fleet_adapter_python schedule_blockade_nodes

# Second Terminal
ros2 run rmf_fleet_adapter_python traffic_light

For more details, please read this README.

Notes

  • The py api bindings are mainly experimental. Use with caution.
  • Current CI and docs gen are using rolling release of RMF
  • More bindings, tests, and examples are welcome!

Using the Bindings

Ensure that you have built this package and sourced its environment. Then it is as simple as importing the module containing the Python bindings!

import rmf_adapter as adpt

# You may then check the available bindings
print(dir(adpt))

Description

Fleet adapters allow for interactions between rmf_core and robot fleets.

High level pathing or task assignments can be issued to robots from rmf_core, and a fleet adapter will take those assignments and handle it in an implementation specific manner to direct individual robots to execute certain actions while monitoring and updating rmf_core on their high-level states via rmf_core robot update handles.

For more information it is helpful to look at the docs for rmf_core

Usage

The bound APIs are almost identical to the rmf_core ones as well, so if the written documentation for these packages, and the Python usage examples in the scripts or tests are insufficient, you can also look into the relevant C++ implementations as a last resort.

Alternatively, you may also explore any interfaces with:

# To list any available members or methods
dir(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

# To see function signatures
help(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

Binding Details

This package contains Python bindings to C++ code that is found in rmf_core and its associated packages. It was implemented using Pybind11.

Do note that as a result of that, if one needs to inspect the source, there are no Python implementations of any of the bound code, and it would be advisable to look directly into the appropriate rmf_fleet_adapter package, that contains the C++ code.. Additionally, C++ objects will get instantiated (generally) as references that can be used or called using the appropriate bound methods on the Python side.

Some of these bindings allow you to override virtual methods that would normally be called in the C++ side with Python code that you write in your Python scripts!

Features

There are enough functionalities bound to implement your own fleet adapters to communicate with the rest of the rmf_core systems in the ROS2 graph. Allowing you to:

  • Adapter/MockAdapter: Communicate with rmf_core by adding fleets or requesting deliveries
  • RobotCommandHandle: Specify custom robot command handles that can take commands from the rmf_core packages and implement or execute the following robot behaviors:
    • Docking

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rmf_fleet_adapter_python

2.1.8 (2023-12-19)

2.1.7 (2023-08-10)

  • Adding initiator and request time to booking (#284)
  • Contributors: Aaron Chong

2.1.6 (2023-06-02)

  • Switch to rst changelogs (#276)
  • Contributors: Yadunund

2.1.5 (2023-05-20)

2.1.4 (2023-04-27)

2.1.3 (2023-04-26)

2.1.2 (2022-10-10)

2.1.0 (2022-10-03)

  • Make async behaviors more robust: (#228)
  • Allow fleet adapters to change schedule participant profiles: (#229)
  • Allow robots to be decommissioned from the task dispatch system: (#233)
  • Allow manual toggling of stubborn negotiation: (#196)
  • Allow users to specify a custom update listener: (#198)
  • Fix various segfaults related to pybind: (#205)
  • Allow [ResponsiveWait]{.title-ref} to be enabled and disabled: (#209)
  • Allow robot status to be overridden by the user: (#191)
  • Add API to report status for `perform_action`: (#190)
  • Changes for humble compatibility: (#215)

2.0.0 (2022-03-18)

No changes yet

1.5.0 (2022-02-14)

  • Support flexible task definitions (#168)
  • Add lane speed limit to graph parsing function (#124)

1.3.0 (2021-06-07)

  • Modifications to support refactor of rmf_task (#51)
  • Fix symlink-install compilation (#32)
  • Updated package.xml (#26)
  • Fix/rmf task ros2 cleanup (#21)
  • Feature/python binding planner (#11)
  • Adding reference_internal tag to function bindings that return raw pointers (#6)
  • Feature/add unstable participant api (#11)
  • Feature/add simple docs (#9)
  • Support apis for task dispatcher (#10)
  • differentiate functions to prevent overloading (#8)
  • support ez traffic light (#7)
  • Update/release 1.1 (#6)
  • Implement binding for Duration optional
  • Make integration test even stricter
  • Add reference capture for posterity
  • Add clarifying printouts and fix multi-timer bug
  • Integrate compute_plan_starts into integration test
  • Implement type tests
  • Bind optional constructors and delivery msg interfaces
  • Bind compute_plan_starts
  • Add update_position overload
  • Implement Python Bindings for rmf_fleet_adapter (#1)
  • Contributors: Aaron Chong, Charayaphan Nakorn Boon Han, Geoffrey Biggs, Grey, Marco A. Gutiérrez, Yadu, methylDragon, youliang

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_fleet_adapter_python at Robotics Stack Exchange

No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

rmf_fleet_adapter_python package from rmf_ros2 repo

rmf_fleet_adapter rmf_fleet_adapter_python rmf_task_ros2 rmf_traffic_ros2 rmf_websocket

ROS Distro
humble

Package Summary

Tags No category tags.
Version 2.1.8
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/open-rmf/rmf_ros2.git
VCS Type git
VCS Version humble
Last Updated 2024-06-14
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Python bindings for the rmf_fleet_adapter

Additional Links

No additional links.

Maintainers

  • methylDragon
  • Marco A. Gutiérrez
  • Yadunund

Authors

No additional authors.

rmf_fleet_adapter_python

Python bindings for rmf_fleet_adapter

Introduction

The rmf_fleet_adapter package defines C++ classes that can interact with rmf_core. Specifically an Adapter and a MockAdapter class. This package provides bindings for both and most of their dependencies.

The main difference between rmf_fleet_adapter and rmf_mock_adapter is the fact that rmf_fleet_adapter objects can interact with the ROS2 graph.

The MockAdapter and Adapter both do this. But the difference is that MockAdapter can be instantiated with no issues, whereas Adapter will block to wait for a scheduler node from rmf_core to make its presence known.

Installation

  • Place the pybind_ament and rmf_fleet_adapter_python packages in your ROS2 workspace, and run colcon build as per normal.

Running Examples

Integration test script for rmf loop and delivery task:

ros2 run rmf_fleet_adapter_python test_adapter.py

You may then probe the effects on the ROS2 graph by subscribing to the following topics with ros2 topic echo <TOPIC_NAME>:

  • : `/dispenser_requests`, `/dispenser_results`, `ingestor_requests`, `ingestor_results`, `/task_summaries`

Traffic Light Example

This will showcase an example of having 2 “traffic light” robots using RMF.

# First Terminal
ros2 run rmf_fleet_adapter_python schedule_blockade_nodes

# Second Terminal
ros2 run rmf_fleet_adapter_python traffic_light

For more details, please read this README.

Notes

  • The py api bindings are mainly experimental. Use with caution.
  • Current CI and docs gen are using rolling release of RMF
  • More bindings, tests, and examples are welcome!

Using the Bindings

Ensure that you have built this package and sourced its environment. Then it is as simple as importing the module containing the Python bindings!

import rmf_adapter as adpt

# You may then check the available bindings
print(dir(adpt))

Description

Fleet adapters allow for interactions between rmf_core and robot fleets.

High level pathing or task assignments can be issued to robots from rmf_core, and a fleet adapter will take those assignments and handle it in an implementation specific manner to direct individual robots to execute certain actions while monitoring and updating rmf_core on their high-level states via rmf_core robot update handles.

For more information it is helpful to look at the docs for rmf_core

Usage

The bound APIs are almost identical to the rmf_core ones as well, so if the written documentation for these packages, and the Python usage examples in the scripts or tests are insufficient, you can also look into the relevant C++ implementations as a last resort.

Alternatively, you may also explore any interfaces with:

# To list any available members or methods
dir(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

# To see function signatures
help(adpt.<WHATEVER_CLASS_YOU_WANT_TO_INSPECT>)

Binding Details

This package contains Python bindings to C++ code that is found in rmf_core and its associated packages. It was implemented using Pybind11.

Do note that as a result of that, if one needs to inspect the source, there are no Python implementations of any of the bound code, and it would be advisable to look directly into the appropriate rmf_fleet_adapter package, that contains the C++ code.. Additionally, C++ objects will get instantiated (generally) as references that can be used or called using the appropriate bound methods on the Python side.

Some of these bindings allow you to override virtual methods that would normally be called in the C++ side with Python code that you write in your Python scripts!

Features

There are enough functionalities bound to implement your own fleet adapters to communicate with the rest of the rmf_core systems in the ROS2 graph. Allowing you to:

  • Adapter/MockAdapter: Communicate with rmf_core by adding fleets or requesting deliveries
  • RobotCommandHandle: Specify custom robot command handles that can take commands from the rmf_core packages and implement or execute the following robot behaviors:
    • Docking

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rmf_fleet_adapter_python

2.1.8 (2023-12-19)

2.1.7 (2023-08-10)

  • Adding initiator and request time to booking (#284)
  • Contributors: Aaron Chong

2.1.6 (2023-06-02)

  • Switch to rst changelogs (#276)
  • Contributors: Yadunund

2.1.5 (2023-05-20)

2.1.4 (2023-04-27)

2.1.3 (2023-04-26)

2.1.2 (2022-10-10)

2.1.0 (2022-10-03)

  • Make async behaviors more robust: (#228)
  • Allow fleet adapters to change schedule participant profiles: (#229)
  • Allow robots to be decommissioned from the task dispatch system: (#233)
  • Allow manual toggling of stubborn negotiation: (#196)
  • Allow users to specify a custom update listener: (#198)
  • Fix various segfaults related to pybind: (#205)
  • Allow [ResponsiveWait]{.title-ref} to be enabled and disabled: (#209)
  • Allow robot status to be overridden by the user: (#191)
  • Add API to report status for `perform_action`: (#190)
  • Changes for humble compatibility: (#215)

2.0.0 (2022-03-18)

No changes yet

1.5.0 (2022-02-14)

  • Support flexible task definitions (#168)
  • Add lane speed limit to graph parsing function (#124)

1.3.0 (2021-06-07)

  • Modifications to support refactor of rmf_task (#51)
  • Fix symlink-install compilation (#32)
  • Updated package.xml (#26)
  • Fix/rmf task ros2 cleanup (#21)
  • Feature/python binding planner (#11)
  • Adding reference_internal tag to function bindings that return raw pointers (#6)
  • Feature/add unstable participant api (#11)
  • Feature/add simple docs (#9)
  • Support apis for task dispatcher (#10)
  • differentiate functions to prevent overloading (#8)
  • support ez traffic light (#7)
  • Update/release 1.1 (#6)
  • Implement binding for Duration optional
  • Make integration test even stricter
  • Add reference capture for posterity
  • Add clarifying printouts and fix multi-timer bug
  • Integrate compute_plan_starts into integration test
  • Implement type tests
  • Bind optional constructors and delivery msg interfaces
  • Bind compute_plan_starts
  • Add update_position overload
  • Implement Python Bindings for rmf_fleet_adapter (#1)
  • Contributors: Aaron Chong, Charayaphan Nakorn Boon Han, Geoffrey Biggs, Grey, Marco A. Gutiérrez, Yadu, methylDragon, youliang

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rmf_fleet_adapter_python at Robotics Stack Exchange