Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add proto-reservation node as core part of RMF #212

Merged
merged 25 commits into from
Nov 18, 2024
Merged
Changes from 1 commit
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Satisfy flake8
Signed-off-by: Michael X. Grey <[email protected]>
mxgrey committed Nov 14, 2024
commit 9d98b9553fa2e47d0b829f2f3ac12ecdb2dcbc83
1 change: 1 addition & 0 deletions rmf_demos_tasks/rmf_demos_tasks/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"""Scripts for issuing tasks to Open-RMF from the command line."""
4 changes: 4 additions & 0 deletions rmf_demos_tasks/rmf_demos_tasks/api_request.py
Original file line number Diff line number Diff line change
@@ -13,6 +13,7 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Send a generic API request."""

import argparse
import asyncio
@@ -32,8 +33,10 @@

###############################################################################
class ApiRequester(Node):
"""API requester."""

def __init__(self, argv=sys.argv):
"""Initialize an API requester."""
super().__init__('task_requester')
parser = argparse.ArgumentParser()
parser.add_argument(
@@ -89,6 +92,7 @@ def receive_response(response_msg: ApiResponse):


def main(argv=sys.argv):
"""Send a generic API request."""
rclpy.init(args=sys.argv)
args_without_ros = rclpy.utilities.remove_ros_args(sys.argv)

5 changes: 5 additions & 0 deletions rmf_demos_tasks/rmf_demos_tasks/cancel_task.py
Original file line number Diff line number Diff line change
@@ -13,6 +13,7 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Cancel a task."""

import argparse
import json
@@ -25,14 +26,17 @@
from rclpy.qos import QoSHistoryPolicy as History
from rclpy.qos import QoSProfile
from rclpy.qos import QoSReliabilityPolicy as Reliability

from rmf_task_msgs.msg import ApiRequest

###############################################################################


class TaskRequester(Node):
"""Task requester."""

def __init__(self, argv=sys.argv):
"""Initialize a task requester."""
super().__init__('task_requester')
parser = argparse.ArgumentParser()
parser.add_argument(
@@ -73,6 +77,7 @@ def __init__(self, argv=sys.argv):


def main(argv=sys.argv):
"""Cancel a task."""
rclpy.init(args=sys.argv)
args_without_ros = rclpy.utilities.remove_ros_args(sys.argv)

5 changes: 5 additions & 0 deletions rmf_demos_tasks/rmf_demos_tasks/dispatch_action.py
Original file line number Diff line number Diff line change
@@ -13,6 +13,7 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Dispatch an action."""

import argparse
import asyncio
@@ -27,15 +28,18 @@
from rclpy.qos import QoSHistoryPolicy as History
from rclpy.qos import QoSProfile
from rclpy.qos import QoSReliabilityPolicy as Reliability

from rmf_task_msgs.msg import ApiRequest
from rmf_task_msgs.msg import ApiResponse

###############################################################################


class TaskRequester(Node):
"""Task requester."""

def __init__(self, argv=sys.argv):
"""Initialize a task requester."""
super().__init__('task_requester')
parser = argparse.ArgumentParser()
parser.add_argument(
@@ -210,6 +214,7 @@ def receive_response(response_msg: ApiResponse):


def main(argv=sys.argv):
"""Dispatch an action."""
rclpy.init(args=sys.argv)
args_without_ros = rclpy.utilities.remove_ros_args(sys.argv)

4 changes: 4 additions & 0 deletions rmf_demos_tasks/rmf_demos_tasks/dispatch_cart_delivery.py
Original file line number Diff line number Diff line change
@@ -13,6 +13,7 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Dispatch a cart delivery."""

import argparse
import asyncio
@@ -34,8 +35,10 @@
###############################################################################

class TaskRequester(Node):
"""Task requester."""

def __init__(self, argv=sys.argv):
"""Initialize a task requester."""
super().__init__('task_requester')
parser = argparse.ArgumentParser()
parser.add_argument('-p', '--pickup', required=True,
@@ -159,6 +162,7 @@ def receive_response(response_msg: ApiResponse):


def main(argv=sys.argv):
"""Dispatch a cart delivery."""
rclpy.init(args=sys.argv)
args_without_ros = rclpy.utilities.remove_ros_args(sys.argv)

5 changes: 5 additions & 0 deletions rmf_demos_tasks/rmf_demos_tasks/dispatch_clean.py
Original file line number Diff line number Diff line change
@@ -13,6 +13,7 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Dispatch a cleaning."""

import argparse
import asyncio
@@ -27,15 +28,18 @@
from rclpy.qos import QoSHistoryPolicy as History
from rclpy.qos import QoSProfile
from rclpy.qos import QoSReliabilityPolicy as Reliability

from rmf_task_msgs.msg import ApiRequest
from rmf_task_msgs.msg import ApiResponse

###############################################################################


class TaskRequester(Node):
"""Task requester."""

def __init__(self, argv=sys.argv):
"""Initialize a task requester."""
super().__init__('task_requester')
parser = argparse.ArgumentParser()
parser.add_argument(
@@ -185,6 +189,7 @@ def receive_response(response_msg: ApiResponse):


def main(argv=sys.argv):
"""Dispatch a cleaning."""
rclpy.init(args=sys.argv)
args_without_ros = rclpy.utilities.remove_ros_args(sys.argv)

5 changes: 5 additions & 0 deletions rmf_demos_tasks/rmf_demos_tasks/dispatch_delivery.py
Original file line number Diff line number Diff line change
@@ -13,6 +13,7 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Dispatch a delivery."""

import argparse
import asyncio
@@ -27,15 +28,18 @@
from rclpy.qos import QoSHistoryPolicy as History
from rclpy.qos import QoSProfile
from rclpy.qos import QoSReliabilityPolicy as Reliability

from rmf_task_msgs.msg import ApiRequest
from rmf_task_msgs.msg import ApiResponse

###############################################################################


class TaskRequester(Node):
"""Task requester."""

def __init__(self, argv=sys.argv):
"""Initialize a task requester."""
super().__init__('task_requester')
parser = argparse.ArgumentParser()
parser.add_argument(
@@ -278,6 +282,7 @@ def receive_response(response_msg: ApiResponse):


def main(argv=sys.argv):
"""Dispatch a delivery."""
rclpy.init(args=sys.argv)
args_without_ros = rclpy.utilities.remove_ros_args(sys.argv)

5 changes: 5 additions & 0 deletions rmf_demos_tasks/rmf_demos_tasks/dispatch_go_to_place.py
Original file line number Diff line number Diff line change
@@ -13,6 +13,7 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Go to place."""

import argparse
import asyncio
@@ -28,15 +29,18 @@
from rclpy.qos import QoSHistoryPolicy as History
from rclpy.qos import QoSProfile
from rclpy.qos import QoSReliabilityPolicy as Reliability

from rmf_task_msgs.msg import ApiRequest
from rmf_task_msgs.msg import ApiResponse

###############################################################################


class TaskRequester(Node):
"""Task requester."""

def __init__(self, argv=sys.argv):
"""Initialize a task requester."""
super().__init__('task_requester')
parser = argparse.ArgumentParser()
parser.add_argument('-F', '--fleet', type=str, help='Fleet name')
@@ -189,6 +193,7 @@ def receive_response(response_msg: ApiResponse):


def main(argv=sys.argv):
"""Go to place."""
rclpy.init(args=sys.argv)
args_without_ros = rclpy.utilities.remove_ros_args(sys.argv)

4 changes: 4 additions & 0 deletions rmf_demos_tasks/rmf_demos_tasks/dispatch_json.py
Original file line number Diff line number Diff line change
@@ -13,6 +13,7 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Dispatch any json task description."""

import argparse
import asyncio
@@ -34,8 +35,10 @@
###############################################################################

class TaskRequester(Node):
"""Task requester."""

def __init__(self, argv=sys.argv):
"""Initialize a task requester."""
super().__init__('task_requester')
parser = argparse.ArgumentParser()
parser.add_argument(
@@ -147,6 +150,7 @@ def receive_response(response_msg: ApiResponse):


def main(argv=sys.argv):
"""Dispatch any json task description."""
rclpy.init(args=sys.argv)
args_without_ros = rclpy.utilities.remove_ros_args(sys.argv)

7 changes: 7 additions & 0 deletions rmf_demos_tasks/rmf_demos_tasks/dispatch_loop.py
Original file line number Diff line number Diff line change
@@ -13,12 +13,14 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Dispatch a loop task."""

import argparse
import sys

import rclpy
from rclpy.parameter import Parameter

from rmf_task_msgs.msg import Loop
from rmf_task_msgs.msg import TaskType
from rmf_task_msgs.srv import SubmitTask
@@ -27,8 +29,10 @@


class TaskRequester:
"""Task requester."""

def __init__(self, argv=sys.argv):
"""Initialize a task requester."""
parser = argparse.ArgumentParser()
parser.add_argument(
'-s', '--start', required=True, type=str, help='Start waypoint'
@@ -80,6 +84,7 @@ def __init__(self, argv=sys.argv):
self.node.set_parameters([param])

def generate_task_req_msg(self):
"""Generate a task request message."""
req_msg = SubmitTask.Request()
req_msg.description.task_type.type = TaskType.TYPE_LOOP

@@ -97,6 +102,7 @@ def generate_task_req_msg(self):
return req_msg

def main(self):
"""Dispatch a loop task."""
if not self.submit_task_srv.wait_for_service(timeout_sec=3.0):
self.node.get_logger().error('Dispatcher Node is not available')
return
@@ -131,6 +137,7 @@ def main(self):


def main(argv=sys.argv):
"""Dispatch a loop task."""
rclpy.init(args=sys.argv)
args_without_ros = rclpy.utilities.remove_ros_args(sys.argv)

5 changes: 5 additions & 0 deletions rmf_demos_tasks/rmf_demos_tasks/dispatch_patrol.py
Original file line number Diff line number Diff line change
@@ -13,6 +13,7 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Dispatch a patrol task."""

import argparse
import asyncio
@@ -27,15 +28,18 @@
from rclpy.qos import QoSHistoryPolicy as History
from rclpy.qos import QoSProfile
from rclpy.qos import QoSReliabilityPolicy as Reliability

from rmf_task_msgs.msg import ApiRequest
from rmf_task_msgs.msg import ApiResponse

###############################################################################


class TaskRequester(Node):
"""Dispatch patrol task requester."""

def __init__(self, argv=sys.argv):
"""Initialize task requester."""
super().__init__('task_requester')
parser = argparse.ArgumentParser()
parser.add_argument(
@@ -165,6 +169,7 @@ def receive_response(response_msg: ApiResponse):


def main(argv=sys.argv):
"""Dispatch a patrol task."""
rclpy.init(args=sys.argv)
args_without_ros = rclpy.utilities.remove_ros_args(sys.argv)

5 changes: 5 additions & 0 deletions rmf_demos_tasks/rmf_demos_tasks/dispatch_teleop.py
Original file line number Diff line number Diff line change
@@ -13,6 +13,7 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Dispatch a teleop task."""

import argparse
import asyncio
@@ -27,15 +28,18 @@
from rclpy.qos import QoSHistoryPolicy as History
from rclpy.qos import QoSProfile
from rclpy.qos import QoSReliabilityPolicy as Reliability

from rmf_task_msgs.msg import ApiRequest
from rmf_task_msgs.msg import ApiResponse

###############################################################################


class TaskRequester(Node):
"""Task requester."""

def __init__(self, argv=sys.argv):
"""Initialize task requester."""
super().__init__('task_requester')
parser = argparse.ArgumentParser()
parser.add_argument(
@@ -170,6 +174,7 @@ def receive_response(response_msg: ApiResponse):


def main(argv=sys.argv):
"""Dispatch a teleop task."""
rclpy.init(args=sys.argv)
args_without_ros = rclpy.utilities.remove_ros_args(sys.argv)

Loading