AS: adding first phase of orientation
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
# Copyright 2019 Open Source Robotics Foundation, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# 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.
|
||||
|
||||
import time
|
||||
|
||||
from example_interfaces.action import Fibonacci
|
||||
|
||||
import rclpy
|
||||
from rclpy.action import ActionServer, CancelResponse, GoalResponse
|
||||
from rclpy.callback_groups import ReentrantCallbackGroup
|
||||
from rclpy.executors import MultiThreadedExecutor
|
||||
from rclpy.node import Node
|
||||
|
||||
|
||||
class MinimalActionServer(Node):
|
||||
|
||||
def __init__(self):
|
||||
super().__init__('minimal_action_server')
|
||||
|
||||
self._action_server = ActionServer(
|
||||
self,
|
||||
Fibonacci,
|
||||
'fibonacci',
|
||||
execute_callback=self.execute_callback,
|
||||
callback_group=ReentrantCallbackGroup(),
|
||||
goal_callback=self.goal_callback,
|
||||
cancel_callback=self.cancel_callback)
|
||||
|
||||
def destroy(self):
|
||||
self._action_server.destroy()
|
||||
super().destroy_node()
|
||||
|
||||
def goal_callback(self, goal_request):
|
||||
"""Accept or reject a client request to begin an action."""
|
||||
# This server allows multiple goals in parallel
|
||||
self.get_logger().info('Received goal request')
|
||||
return GoalResponse.ACCEPT
|
||||
|
||||
def cancel_callback(self, goal_handle):
|
||||
"""Accept or reject a client request to cancel an action."""
|
||||
self.get_logger().info('Received cancel request')
|
||||
return CancelResponse.ACCEPT
|
||||
|
||||
async def execute_callback(self, goal_handle):
|
||||
"""Execute a goal."""
|
||||
self.get_logger().info('Executing goal...')
|
||||
|
||||
# Append the seeds for the Fibonacci sequence
|
||||
feedback_msg = Fibonacci.Feedback()
|
||||
feedback_msg.sequence = [0, 1]
|
||||
|
||||
# Start executing the action
|
||||
for i in range(1, goal_handle.request.order):
|
||||
if goal_handle.is_cancel_requested:
|
||||
goal_handle.canceled()
|
||||
self.get_logger().info('Goal canceled')
|
||||
return Fibonacci.Result()
|
||||
|
||||
# Update Fibonacci sequence
|
||||
feedback_msg.sequence.append(feedback_msg.sequence[i] + feedback_msg.sequence[i-1])
|
||||
|
||||
self.get_logger().info('Publishing feedback: {0}'.format(feedback_msg.sequence))
|
||||
|
||||
# Publish the feedback
|
||||
goal_handle.publish_feedback(feedback_msg)
|
||||
|
||||
# Sleep for demonstration purposes
|
||||
time.sleep(1)
|
||||
|
||||
goal_handle.succeed()
|
||||
|
||||
# Populate result message
|
||||
result = Fibonacci.Result()
|
||||
result.sequence = feedback_msg.sequence
|
||||
|
||||
self.get_logger().info('Returning result: {0}'.format(result.sequence))
|
||||
|
||||
return result
|
||||
|
||||
|
||||
def main(args=None):
|
||||
rclpy.init(args=args)
|
||||
|
||||
minimal_action_server = MinimalActionServer()
|
||||
|
||||
# Use a MultiThreadedExecutor to enable processing goals concurrently
|
||||
executor = MultiThreadedExecutor()
|
||||
|
||||
rclpy.spin(minimal_action_server, executor=executor)
|
||||
|
||||
minimal_action_server.destroy()
|
||||
rclpy.shutdown()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@@ -0,0 +1,121 @@
|
||||
# Copyright 2018 Open Source Robotics Foundation, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# 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.
|
||||
|
||||
import time
|
||||
|
||||
from example_interfaces.action import Fibonacci
|
||||
|
||||
import rclpy
|
||||
from rclpy.action import ActionServer, CancelResponse, GoalResponse
|
||||
from rclpy.callback_groups import ReentrantCallbackGroup
|
||||
from rclpy.executors import MultiThreadedExecutor
|
||||
from rclpy.node import Node
|
||||
|
||||
|
||||
class MinimalActionServer(Node):
|
||||
|
||||
def __init__(self):
|
||||
super().__init__('minimal_action_server')
|
||||
|
||||
self._goal_handle = None
|
||||
|
||||
self._action_server = ActionServer(
|
||||
self,
|
||||
Fibonacci,
|
||||
'fibonacci',
|
||||
execute_callback=self.execute_callback,
|
||||
callback_group=ReentrantCallbackGroup(),
|
||||
goal_callback=self.goal_callback,
|
||||
handle_accepted_callback=self.handle_accepted_callback,
|
||||
cancel_callback=self.cancel_callback)
|
||||
|
||||
def destroy(self):
|
||||
self._action_server.destroy()
|
||||
super().destroy_node()
|
||||
|
||||
def goal_callback(self, goal_request):
|
||||
"""Accept or reject a client request to begin an action."""
|
||||
self.get_logger().info('Received goal request')
|
||||
return GoalResponse.ACCEPT
|
||||
|
||||
def handle_accepted_callback(self, goal_handle):
|
||||
"""Provide a handle to an accepted goal."""
|
||||
self.get_logger().info('Deferring execution...')
|
||||
self._goal_handle = goal_handle
|
||||
self._timer = self.create_timer(3.0, self.timer_callback)
|
||||
|
||||
def cancel_callback(self, goal_handle):
|
||||
"""Accept or reject a client request to cancel an action."""
|
||||
self.get_logger().info('Received cancel request')
|
||||
return CancelResponse.ACCEPT
|
||||
|
||||
def timer_callback(self):
|
||||
# Execute the defered goal
|
||||
if self._goal_handle is not None:
|
||||
self._goal_handle.execute()
|
||||
self._timer.cancel()
|
||||
|
||||
async def execute_callback(self, goal_handle):
|
||||
"""Execute a goal."""
|
||||
self.get_logger().info('Executing goal...')
|
||||
|
||||
# Append the seeds for the Fibonacci sequence
|
||||
feedback_msg = Fibonacci.Feedback()
|
||||
feedback_msg.sequence = [0, 1]
|
||||
|
||||
# Start executing the action
|
||||
for i in range(1, goal_handle.request.order):
|
||||
if goal_handle.is_cancel_requested:
|
||||
goal_handle.canceled()
|
||||
self.get_logger().info('Goal canceled')
|
||||
return Fibonacci.Result()
|
||||
|
||||
# Update Fibonacci sequence
|
||||
feedback_msg.sequence.append(feedback_msg.sequence[i] + feedback_msg.sequence[i-1])
|
||||
|
||||
self.get_logger().info('Publishing feedback: {0}'.format(feedback_msg.sequence))
|
||||
|
||||
# Publish the feedback
|
||||
goal_handle.publish_feedback(feedback_msg)
|
||||
|
||||
# Sleep for demonstration purposes
|
||||
time.sleep(1)
|
||||
|
||||
goal_handle.succeed()
|
||||
|
||||
# Populate result message
|
||||
result = Fibonacci.Result()
|
||||
result.sequence = feedback_msg.sequence
|
||||
|
||||
self.get_logger().info('Returning result: {0}'.format(result.sequence))
|
||||
|
||||
return result
|
||||
|
||||
|
||||
def main(args=None):
|
||||
rclpy.init(args=args)
|
||||
|
||||
minimal_action_server = MinimalActionServer()
|
||||
|
||||
# Use a MultiThreadedExecutor to enable processing goals concurrently
|
||||
executor = MultiThreadedExecutor()
|
||||
|
||||
rclpy.spin(minimal_action_server, executor=executor)
|
||||
|
||||
minimal_action_server.destroy()
|
||||
rclpy.shutdown()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@@ -0,0 +1,99 @@
|
||||
# Copyright 2019 Open Source Robotics Foundation, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# 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.
|
||||
|
||||
import time
|
||||
|
||||
from example_interfaces.action import Fibonacci
|
||||
|
||||
import rclpy
|
||||
from rclpy.action import ActionServer, CancelResponse
|
||||
from rclpy.callback_groups import ReentrantCallbackGroup
|
||||
from rclpy.executors import MultiThreadedExecutor
|
||||
|
||||
|
||||
logger = None
|
||||
|
||||
|
||||
def cancel_callback(goal_handle):
|
||||
logger.info('Received cancel request')
|
||||
return CancelResponse.ACCEPT
|
||||
|
||||
|
||||
async def execute_callback(goal_handle):
|
||||
"""Execute the goal."""
|
||||
logger.info('Executing goal...')
|
||||
|
||||
# Append the seeds for the fibonacci sequence
|
||||
feedback_msg = Fibonacci.Feedback()
|
||||
feedback_msg.sequence = [0, 1]
|
||||
|
||||
# Start executing the action
|
||||
for i in range(1, goal_handle.request.order):
|
||||
if goal_handle.is_cancel_requested:
|
||||
goal_handle.canceled()
|
||||
logger.info('Goal canceled')
|
||||
return Fibonacci.Result()
|
||||
|
||||
# Update Fibonacci sequence
|
||||
feedback_msg.sequence.append(feedback_msg.sequence[i] + feedback_msg.sequence[i-1])
|
||||
|
||||
logger.info('Publishing feedback: {0}'.format(feedback_msg.sequence))
|
||||
|
||||
# Publish feedback
|
||||
goal_handle.publish_feedback(feedback_msg)
|
||||
|
||||
# Sleep for demonstration purposes
|
||||
time.sleep(1)
|
||||
|
||||
goal_handle.succeed()
|
||||
|
||||
# Populate result message
|
||||
result = Fibonacci.Result()
|
||||
result.sequence = feedback_msg.sequence
|
||||
|
||||
logger.info('Returning result: {0}'.format(result.sequence))
|
||||
|
||||
return result
|
||||
|
||||
|
||||
def main(args=None):
|
||||
global logger
|
||||
rclpy.init(args=args)
|
||||
|
||||
node = rclpy.create_node('minimal_action_server')
|
||||
logger = node.get_logger()
|
||||
|
||||
# Use a ReentrantCallbackGroup to enable processing multiple goals concurrently
|
||||
# Default goal callback accepts all goals
|
||||
# Default cancel callback rejects cancel requests
|
||||
action_server = ActionServer(
|
||||
node,
|
||||
Fibonacci,
|
||||
'fibonacci',
|
||||
execute_callback=execute_callback,
|
||||
cancel_callback=cancel_callback,
|
||||
callback_group=ReentrantCallbackGroup())
|
||||
|
||||
# Use a MultiThreadedExecutor to enable processing goals concurrently
|
||||
executor = MultiThreadedExecutor()
|
||||
|
||||
rclpy.spin(node, executor=executor)
|
||||
|
||||
action_server.destroy()
|
||||
node.destroy_node()
|
||||
rclpy.shutdown()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@@ -0,0 +1,137 @@
|
||||
# Copyright 2018-2020 Open Source Robotics Foundation, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# 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.
|
||||
|
||||
import collections
|
||||
import threading
|
||||
import time
|
||||
|
||||
from example_interfaces.action import Fibonacci
|
||||
|
||||
import rclpy
|
||||
from rclpy.action import ActionServer, CancelResponse, GoalResponse
|
||||
from rclpy.callback_groups import ReentrantCallbackGroup
|
||||
from rclpy.executors import MultiThreadedExecutor
|
||||
from rclpy.node import Node
|
||||
|
||||
|
||||
class MinimalActionServer(Node):
|
||||
|
||||
def __init__(self):
|
||||
super().__init__('minimal_action_server')
|
||||
self._goal_queue = collections.deque()
|
||||
self._goal_queue_lock = threading.Lock()
|
||||
self._current_goal = None
|
||||
|
||||
self._action_server = ActionServer(
|
||||
self,
|
||||
Fibonacci,
|
||||
'fibonacci',
|
||||
handle_accepted_callback=self.handle_accepted_callback,
|
||||
execute_callback=self.execute_callback,
|
||||
goal_callback=self.goal_callback,
|
||||
cancel_callback=self.cancel_callback,
|
||||
callback_group=ReentrantCallbackGroup())
|
||||
|
||||
def destroy(self):
|
||||
self._action_server.destroy()
|
||||
super().destroy_node()
|
||||
|
||||
def handle_accepted_callback(self, goal_handle):
|
||||
"""Start or defer execution of an already accepted goal."""
|
||||
with self._goal_queue_lock:
|
||||
if self._current_goal is not None:
|
||||
# Put incoming goal in the queue
|
||||
self._goal_queue.append(goal_handle)
|
||||
self.get_logger().info('Goal put in the queue')
|
||||
else:
|
||||
# Start goal execution right away
|
||||
self._current_goal = goal_handle
|
||||
self._current_goal.execute()
|
||||
|
||||
def goal_callback(self, goal_request):
|
||||
"""Accept or reject a client request to begin an action."""
|
||||
self.get_logger().info('Received goal request')
|
||||
return GoalResponse.ACCEPT
|
||||
|
||||
def cancel_callback(self, goal_handle):
|
||||
"""Accept or reject a client request to cancel an action."""
|
||||
self.get_logger().info('Received cancel request')
|
||||
return CancelResponse.ACCEPT
|
||||
|
||||
def execute_callback(self, goal_handle):
|
||||
"""Execute a goal."""
|
||||
try:
|
||||
self.get_logger().info('Executing goal...')
|
||||
|
||||
# Append the seeds for the Fibonacci sequence
|
||||
feedback_msg = Fibonacci.Feedback()
|
||||
feedback_msg.sequence = [0, 1]
|
||||
|
||||
# Start executing the action
|
||||
for i in range(1, goal_handle.request.order):
|
||||
if goal_handle.is_cancel_requested:
|
||||
goal_handle.canceled()
|
||||
self.get_logger().info('Goal canceled')
|
||||
return Fibonacci.Result()
|
||||
|
||||
# Update Fibonacci sequence
|
||||
feedback_msg.sequence.append(
|
||||
feedback_msg.sequence[i] + feedback_msg.sequence[i-1])
|
||||
|
||||
self.get_logger().info(
|
||||
'Publishing feedback: {0}'.format(feedback_msg.sequence))
|
||||
|
||||
# Publish the feedback
|
||||
goal_handle.publish_feedback(feedback_msg)
|
||||
|
||||
# Sleep for demonstration purposes
|
||||
time.sleep(1)
|
||||
|
||||
goal_handle.succeed()
|
||||
|
||||
# Populate result message
|
||||
result = Fibonacci.Result()
|
||||
result.sequence = feedback_msg.sequence
|
||||
|
||||
self.get_logger().info(
|
||||
'Returning result: {0}'.format(result.sequence))
|
||||
|
||||
return result
|
||||
finally:
|
||||
with self._goal_queue_lock:
|
||||
try:
|
||||
# Start execution of the next goal in the queue.
|
||||
self._current_goal = self._goal_queue.popleft()
|
||||
self.get_logger().info('Next goal pulled from the queue')
|
||||
self._current_goal.execute()
|
||||
except IndexError:
|
||||
# No goal in the queue.
|
||||
self._current_goal = None
|
||||
|
||||
|
||||
def main(args=None):
|
||||
rclpy.init(args=args)
|
||||
|
||||
minimal_action_server = MinimalActionServer()
|
||||
|
||||
executor = MultiThreadedExecutor()
|
||||
|
||||
rclpy.spin(minimal_action_server, executor=executor)
|
||||
|
||||
minimal_action_server.destroy()
|
||||
rclpy.shutdown()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@@ -0,0 +1,131 @@
|
||||
# Copyright 2019 Open Source Robotics Foundation, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# 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.
|
||||
|
||||
import threading
|
||||
import time
|
||||
|
||||
from example_interfaces.action import Fibonacci
|
||||
|
||||
import rclpy
|
||||
from rclpy.action import ActionServer, CancelResponse, GoalResponse
|
||||
from rclpy.callback_groups import ReentrantCallbackGroup
|
||||
from rclpy.executors import MultiThreadedExecutor
|
||||
from rclpy.node import Node
|
||||
|
||||
|
||||
class MinimalActionServer(Node):
|
||||
"""Minimal action server that processes one goal at a time."""
|
||||
|
||||
def __init__(self):
|
||||
super().__init__('minimal_action_server')
|
||||
self._goal_handle = None
|
||||
self._goal_lock = threading.Lock()
|
||||
self._action_server = ActionServer(
|
||||
self,
|
||||
Fibonacci,
|
||||
'fibonacci',
|
||||
execute_callback=self.execute_callback,
|
||||
goal_callback=self.goal_callback,
|
||||
handle_accepted_callback=self.handle_accepted_callback,
|
||||
cancel_callback=self.cancel_callback,
|
||||
callback_group=ReentrantCallbackGroup())
|
||||
|
||||
def destroy(self):
|
||||
self._action_server.destroy()
|
||||
super().destroy_node()
|
||||
|
||||
def goal_callback(self, goal_request):
|
||||
"""Accept or reject a client request to begin an action."""
|
||||
self.get_logger().info('Received goal request')
|
||||
return GoalResponse.ACCEPT
|
||||
|
||||
def handle_accepted_callback(self, goal_handle):
|
||||
with self._goal_lock:
|
||||
# This server only allows one goal at a time
|
||||
if self._goal_handle is not None and self._goal_handle.is_active:
|
||||
self.get_logger().info('Aborting previous goal')
|
||||
# Abort the existing goal
|
||||
self._goal_handle.abort()
|
||||
self._goal_handle = goal_handle
|
||||
|
||||
goal_handle.execute()
|
||||
|
||||
def cancel_callback(self, goal):
|
||||
"""Accept or reject a client request to cancel an action."""
|
||||
self.get_logger().info('Received cancel request')
|
||||
return CancelResponse.ACCEPT
|
||||
|
||||
def execute_callback(self, goal_handle):
|
||||
"""Execute the goal."""
|
||||
self.get_logger().info('Executing goal...')
|
||||
|
||||
# Append the seeds for the Fibonacci sequence
|
||||
feedback_msg = Fibonacci.Feedback()
|
||||
feedback_msg.sequence = [0, 1]
|
||||
|
||||
# Start executing the action
|
||||
for i in range(1, goal_handle.request.order):
|
||||
# If goal is flagged as no longer active (ie. another goal was accepted),
|
||||
# then stop executing
|
||||
if not goal_handle.is_active:
|
||||
self.get_logger().info('Goal aborted')
|
||||
return Fibonacci.Result()
|
||||
|
||||
if goal_handle.is_cancel_requested:
|
||||
goal_handle.canceled()
|
||||
self.get_logger().info('Goal canceled')
|
||||
return Fibonacci.Result()
|
||||
|
||||
# Update Fibonacci sequence
|
||||
feedback_msg.sequence.append(feedback_msg.sequence[i] + feedback_msg.sequence[i-1])
|
||||
|
||||
self.get_logger().info('Publishing feedback: {0}'.format(feedback_msg.sequence))
|
||||
|
||||
# Publish the feedback
|
||||
goal_handle.publish_feedback(feedback_msg)
|
||||
|
||||
# Sleep for demonstration purposes
|
||||
time.sleep(1)
|
||||
|
||||
with self._goal_lock:
|
||||
if not goal_handle.is_active:
|
||||
self.get_logger().info('Goal aborted')
|
||||
return Fibonacci.Result()
|
||||
|
||||
goal_handle.succeed()
|
||||
|
||||
# Populate result message
|
||||
result = Fibonacci.Result()
|
||||
result.sequence = feedback_msg.sequence
|
||||
|
||||
self.get_logger().info('Returning result: {0}'.format(result.sequence))
|
||||
|
||||
return result
|
||||
|
||||
|
||||
def main(args=None):
|
||||
rclpy.init(args=args)
|
||||
|
||||
action_server = MinimalActionServer()
|
||||
|
||||
# We use a MultiThreadedExecutor to handle incoming goal requests concurrently
|
||||
executor = MultiThreadedExecutor()
|
||||
rclpy.spin(action_server, executor=executor)
|
||||
|
||||
action_server.destroy()
|
||||
rclpy.shutdown()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1 @@
|
||||
# generated from colcon_core/shell/template/command_prefix.sh.em
|
||||
@@ -0,0 +1,20 @@
|
||||
AMENT_PREFIX_PATH=/opt/ros/humble
|
||||
COLCON=1
|
||||
HOME=/root
|
||||
HOSTNAME=a41c1d4d4b48
|
||||
LANG=C.UTF-8
|
||||
LC_ALL=C.UTF-8
|
||||
LD_LIBRARY_PATH=/opt/ros/humble/opt/rviz_ogre_vendor/lib:/opt/ros/humble/lib/x86_64-linux-gnu:/opt/ros/humble/lib
|
||||
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
|
||||
OLDPWD=/root/ros2_ws/src
|
||||
PATH=/opt/ros/humble/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||
PWD=/root/ros2_ws/build/examples_rclpy_minimal_action_server
|
||||
PYTHONPATH=/opt/ros/humble/lib/python3.10/site-packages:/opt/ros/humble/local/lib/python3.10/dist-packages
|
||||
ROS_DISTRO=humble
|
||||
ROS_LOCALHOST_ONLY=0
|
||||
ROS_PYTHON_VERSION=3
|
||||
ROS_VERSION=2
|
||||
SHLVL=1
|
||||
TERM=xterm
|
||||
_=/usr/bin/colcon
|
||||
_colcon_cd_root=/opt/ros/humble/
|
||||
@@ -0,0 +1 @@
|
||||
/root/ros2_ws/src/examples/rclpy/actions/minimal_action_server/examples_rclpy_minimal_action_server
|
||||
@@ -0,0 +1,19 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: examples-rclpy-minimal-action-server
|
||||
Version: 0.15.3
|
||||
Summary: Examples of action servers using rclpy.
|
||||
Home-page: UNKNOWN
|
||||
Author: Jacob Perron
|
||||
Author-email: jacob@openrobotics.org
|
||||
Maintainer: Aditya Pande, Shane Loretz
|
||||
Maintainer-email: aditya.pande@openrobotics.org, shane@openrobotics.org
|
||||
License: Apache License, Version 2.0
|
||||
Keywords: ROS
|
||||
Platform: UNKNOWN
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: Apache Software License
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Topic :: Software Development
|
||||
|
||||
UNKNOWN
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package.xml
|
||||
setup.cfg
|
||||
setup.py
|
||||
../../../../../build/examples_rclpy_minimal_action_server/examples_rclpy_minimal_action_server.egg-info/PKG-INFO
|
||||
../../../../../build/examples_rclpy_minimal_action_server/examples_rclpy_minimal_action_server.egg-info/SOURCES.txt
|
||||
../../../../../build/examples_rclpy_minimal_action_server/examples_rclpy_minimal_action_server.egg-info/dependency_links.txt
|
||||
../../../../../build/examples_rclpy_minimal_action_server/examples_rclpy_minimal_action_server.egg-info/entry_points.txt
|
||||
../../../../../build/examples_rclpy_minimal_action_server/examples_rclpy_minimal_action_server.egg-info/requires.txt
|
||||
../../../../../build/examples_rclpy_minimal_action_server/examples_rclpy_minimal_action_server.egg-info/top_level.txt
|
||||
../../../../../build/examples_rclpy_minimal_action_server/examples_rclpy_minimal_action_server.egg-info/zip-safe
|
||||
examples_rclpy_minimal_action_server/__init__.py
|
||||
examples_rclpy_minimal_action_server/server.py
|
||||
examples_rclpy_minimal_action_server/server_defer.py
|
||||
examples_rclpy_minimal_action_server/server_not_composable.py
|
||||
examples_rclpy_minimal_action_server/server_queue_goals.py
|
||||
examples_rclpy_minimal_action_server/server_single_goal.py
|
||||
resource/examples_rclpy_minimal_action_server
|
||||
test/test_copyright.py
|
||||
test/test_flake8.py
|
||||
test/test_pep257.py
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
[console_scripts]
|
||||
server = examples_rclpy_minimal_action_server.server:main
|
||||
server_defer = examples_rclpy_minimal_action_server.server_defer:main
|
||||
server_not_composable = examples_rclpy_minimal_action_server.server_not_composable:main
|
||||
server_queue_goals = examples_rclpy_minimal_action_server.server_queue_goals:main
|
||||
server_single_goal = examples_rclpy_minimal_action_server.server_single_goal:main
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
setuptools
|
||||
@@ -0,0 +1 @@
|
||||
examples_rclpy_minimal_action_server
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/lib/python3.10/site-packages/examples_rclpy_minimal_action_server/server_not_composable.py
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/lib/python3.10/site-packages/examples_rclpy_minimal_action_server/__init__.py
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/lib/python3.10/site-packages/examples_rclpy_minimal_action_server/server_queue_goals.py
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/lib/python3.10/site-packages/examples_rclpy_minimal_action_server/server.py
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/lib/python3.10/site-packages/examples_rclpy_minimal_action_server/server_defer.py
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/lib/python3.10/site-packages/examples_rclpy_minimal_action_server/server_single_goal.py
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/lib/python3.10/site-packages/examples_rclpy_minimal_action_server/__pycache__/server_not_composable.cpython-310.pyc
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/lib/python3.10/site-packages/examples_rclpy_minimal_action_server/__pycache__/__init__.cpython-310.pyc
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/lib/python3.10/site-packages/examples_rclpy_minimal_action_server/__pycache__/server_queue_goals.cpython-310.pyc
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/lib/python3.10/site-packages/examples_rclpy_minimal_action_server/__pycache__/server.cpython-310.pyc
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/lib/python3.10/site-packages/examples_rclpy_minimal_action_server/__pycache__/server_defer.cpython-310.pyc
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/lib/python3.10/site-packages/examples_rclpy_minimal_action_server/__pycache__/server_single_goal.cpython-310.pyc
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/share/ament_index/resource_index/packages/examples_rclpy_minimal_action_server
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/share/examples_rclpy_minimal_action_server/package.xml
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/lib/python3.10/site-packages/examples_rclpy_minimal_action_server-0.15.3-py3.10.egg-info/zip-safe
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/lib/python3.10/site-packages/examples_rclpy_minimal_action_server-0.15.3-py3.10.egg-info/dependency_links.txt
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/lib/python3.10/site-packages/examples_rclpy_minimal_action_server-0.15.3-py3.10.egg-info/top_level.txt
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/lib/python3.10/site-packages/examples_rclpy_minimal_action_server-0.15.3-py3.10.egg-info/requires.txt
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/lib/python3.10/site-packages/examples_rclpy_minimal_action_server-0.15.3-py3.10.egg-info/entry_points.txt
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/lib/python3.10/site-packages/examples_rclpy_minimal_action_server-0.15.3-py3.10.egg-info/PKG-INFO
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/lib/python3.10/site-packages/examples_rclpy_minimal_action_server-0.15.3-py3.10.egg-info/SOURCES.txt
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/lib/examples_rclpy_minimal_action_server/server
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/lib/examples_rclpy_minimal_action_server/server_defer
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/lib/examples_rclpy_minimal_action_server/server_not_composable
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/lib/examples_rclpy_minimal_action_server/server_queue_goals
|
||||
/root/ros2_ws/install/examples_rclpy_minimal_action_server/lib/examples_rclpy_minimal_action_server/server_single_goal
|
||||
1
ros2_ws/build/examples_rclpy_minimal_action_server/package.xml
Symbolic link
1
ros2_ws/build/examples_rclpy_minimal_action_server/package.xml
Symbolic link
@@ -0,0 +1 @@
|
||||
/root/ros2_ws/src/examples/rclpy/actions/minimal_action_server/package.xml
|
||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
import sys
|
||||
if sys.prefix == '/usr':
|
||||
sys.real_prefix = sys.prefix
|
||||
sys.prefix = sys.exec_prefix = '/root/ros2_ws/install/examples_rclpy_minimal_action_server'
|
||||
@@ -0,0 +1 @@
|
||||
/root/ros2_ws/src/examples/rclpy/actions/minimal_action_server/resource/examples_rclpy_minimal_action_server
|
||||
1
ros2_ws/build/examples_rclpy_minimal_action_server/setup.cfg
Symbolic link
1
ros2_ws/build/examples_rclpy_minimal_action_server/setup.cfg
Symbolic link
@@ -0,0 +1 @@
|
||||
/root/ros2_ws/src/examples/rclpy/actions/minimal_action_server/setup.cfg
|
||||
@@ -0,0 +1 @@
|
||||
prepend-non-duplicate;PYTHONPATH;/root/ros2_ws/build/examples_rclpy_minimal_action_server
|
||||
@@ -0,0 +1,3 @@
|
||||
# generated from colcon_powershell/shell/template/hook_prepend_value.ps1.em
|
||||
|
||||
colcon_prepend_unique_value PYTHONPATH "$env:COLCON_CURRENT_PREFIX\/root/ros2_ws/build/examples_rclpy_minimal_action_server"
|
||||
@@ -0,0 +1,3 @@
|
||||
# generated from colcon_core/shell/template/hook_prepend_value.sh.em
|
||||
|
||||
_colcon_prepend_unique_value PYTHONPATH "/root/ros2_ws/build/examples_rclpy_minimal_action_server"
|
||||
Reference in New Issue
Block a user