Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
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
11 changes: 9 additions & 2 deletions bitbots_misc/bitbots_teleop/bitbots_teleop/joy_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from rclpy.duration import Duration
from rclpy.node import Node
from sensor_msgs.msg import Joy
from rclpy.experimental.events_executor import EventsExecutor

from bitbots_msgs.msg import Audio, HeadMode, JointCommand

Expand Down Expand Up @@ -240,6 +241,12 @@ def joy_cb(self, msg: Joy):
def main():
rclpy.init(args=None)
node = JoyNode()
rclpy.spin(node)

executor = EventsExecutor()
executor.add_node(node)
try:
executor.spin()
except KeyboardInterrupt:
node.get_logger().info("Joy node stopped by user")

node.destroy_node()
rclpy.shutdown()
3 changes: 2 additions & 1 deletion bitbots_misc/bitbots_tts/bitbots_tts/tts.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from rclpy.executors import MultiThreadedExecutor
from rclpy.node import Node
from rclpy.publisher import Publisher
from rclpy.experimental.events_executor import EventsExecutor

from bitbots_msgs.msg import Audio

Expand Down Expand Up @@ -121,7 +122,7 @@ def speak_cb(self, msg: Audio) -> None:
def main(args=None):
rclpy.init(args=args)
node = Speaker()
executor = MultiThreadedExecutor(num_threads=2)
executor = EventsExecutor()
executor.add_node(node)
try:
executor.spin()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
from dynamic_stack_decider.dsd import DSD
from rcl_interfaces.msg import Parameter as ParameterMsg
from rclpy.duration import Duration
from rclpy.executors import MultiThreadedExecutor
from rclpy.experimental.events_executor import EventsExecutor
from rclpy.node import Node
from rclpy.parameter import Parameter
from rclpy.serialization import deserialize_message
Expand Down Expand Up @@ -54,9 +54,9 @@ def __init__(self, use_sim_time, simulation_active, visualization_active):
)

# Create own executor for Python part
multi_executor = MultiThreadedExecutor(num_threads=10)
multi_executor.add_node(self.node)
self.spin_thread = threading.Thread(target=multi_executor.spin, args=(), daemon=True)
executor = EventsExecutor()
executor.add_node(self.node)
self.spin_thread = threading.Thread(target=executor.spin, args=(), daemon=True)
Comment thread
Flova marked this conversation as resolved.
self.spin_thread.start()

# Otherwise messages will get lost, bc the init is not finished
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
from bitbots_localization_handler.localization_dsd.localization_blackboard import LocalizationBlackboard
from bitbots_msgs.msg import RobotControlState

from rclpy.experimental.events_executor import EventsExecutor


def init(node: Node):
# Create blackboard to store state
Expand Down Expand Up @@ -65,7 +67,7 @@ def main(args=None):
node.create_timer(1 / 25.0, dsd.update, callback_group=MutuallyExclusiveCallbackGroup())

# Create executor
multi_executor = MultiThreadedExecutor(4)
multi_executor = EventsExecutor()
multi_executor.add_node(node)

# Spin the executor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from rclpy.duration import Duration
from std_msgs.msg import Bool, Empty
from visualization_msgs.msg import MarkerArray
from rclpy.experimental.events_executor import EventsExecutor

from bitbots_path_planning import NodeWithConfig
from bitbots_path_planning.controller import Controller
Expand Down Expand Up @@ -74,7 +75,11 @@ def main(args=None):
rclpy.init(args=args)
node = PathPlanning()

rclpy.spin(node)
executor = EventsExecutor()
executor.add_node(node)
try:
executor.spin()
except KeyboardInterrupt:
node.get_logger().info("Path planning node stopped by user")

node.destroy_node()
rclpy.shutdown()
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import os

import rclpy
from rclpy.experimental.events_executor import EventsExecutor
from ament_index_python.packages import get_package_share_directory
from rclpy.node import Node
from sensor_msgs.msg import JointState
Expand Down Expand Up @@ -42,6 +43,10 @@ def listener_callback(self, msg: JointCommand):
def main(args=None):
rclpy.init(args=args)
command_proxy = CommandProxy()
rclpy.spin(command_proxy)
executor = EventsExecutor()
executor.add_node(command_proxy)
try:
executor.spin()
except KeyboardInterrupt:
command_proxy.get_logger().info("Shutting down command proxy due to keyboard interrupt.")
command_proxy.destroy_node()
rclpy.shutdown()
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import threading

import rclpy
from rclpy.experimental.events_executor import EventsExecutor
from ament_index_python import get_package_share_directory
from rclpy.node import Node

Expand Down Expand Up @@ -71,9 +72,12 @@ def run_simulation(self):

rclpy.init()
node = WebotsSim(args.nogui, args.multi_robot, args.headless, args.sim_port, args.robot_type)
thread = threading.Thread(target=rclpy.spin, args=(node,), daemon=True)

executor = EventsExecutor()
executor.add_node(node)

thread = threading.Thread(target=executor.spin, daemon=True)
thread.start()
node.run_simulation()

node.destroy_node()
rclpy.shutdown()
8 changes: 6 additions & 2 deletions bitbots_simulation/bitbots_webots_sim/scripts/start_single.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

import rclpy
from bitbots_webots_sim.webots_robot_controller import RobotController
from rclpy.experimental.events_executor import EventsExecutor
from controller import Robot
from rclpy.node import Node

Expand Down Expand Up @@ -59,9 +60,12 @@ def run(self):
robot = RobotNode(
args.sim_port, args.robot_name, args.void_controller, args.disable_camera, args.recognize, args.robot_type
)
thread = threading.Thread(target=rclpy.spin, args=(robot.node,), daemon=True)

executor = EventsExecutor()
executor.add_node(robot.node)

thread = threading.Thread(target=executor.spin, daemon=True)
thread.start()
robot.run()

robot.node.destroy_node()
rclpy.shutdown()
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import threading

import rclpy
from rclpy.experimental.events_executor import EventsExecutor
from bitbots_webots_sim.webots_supervisor_controller import SupervisorController
from rclpy.node import Node

Expand All @@ -29,9 +30,12 @@ def run(self):

rclpy.init()
supervisor = SupervisorNode(args.sim_port)
thread = threading.Thread(target=rclpy.spin, args=(supervisor.node,), daemon=True)

executor = EventsExecutor()
executor.add_node(supervisor.node)

thread = threading.Thread(target=executor.spin, daemon=True)
thread.start()
supervisor.run()

supervisor.node.destroy_node()
rclpy.shutdown()
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from numpy import double
from rclpy.callback_groups import MutuallyExclusiveCallbackGroup
from rclpy.duration import Duration
from rclpy.executors import MultiThreadedExecutor
from rclpy.experimental.events_executor import EventsExecutor
from rclpy.node import Node
from rclpy.time import Time
from soccer_vision_3d_msgs.msg import Robot, RobotArray
Expand Down Expand Up @@ -69,9 +69,12 @@ def __init__(self):
self.receive_forever()

def spin(self):
multi_executor = MultiThreadedExecutor(num_threads=10)
multi_executor.add_node(self.node)
multi_executor.spin()
executor = EventsExecutor()
executor.add_node(self.node)
try:
executor.spin()
except KeyboardInterrupt:
self.logger.info("Shutting down team communication node.")

def run_spin_in_thread(self):
# Necessary in ROS2, else we are forever stuck receiving messages
Expand Down
5 changes: 4 additions & 1 deletion bitbots_vision/bitbots_vision/vision.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from cv_bridge import CvBridge
from rcl_interfaces.msg import SetParametersResult
from rclpy.node import Node
from rclpy.experimental.events_executor import EventsExecutor
from sensor_msgs.msg import Image

from bitbots_vision.vision_modules import ros_utils, yoeo
Expand Down Expand Up @@ -146,8 +147,10 @@ def _run_components(self, image_msg: Image) -> None:
def main(args=None):
rclpy.init(args=args)
node = YOEOVision()
executor = EventsExecutor()
executor.add_node(node)
try:
rclpy.spin(node)
executor.spin()
except KeyboardInterrupt:
pass
node.destroy_node()
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from geometry_msgs.msg import Point, PoseWithCovarianceStamped
from rclpy.callback_groups import MutuallyExclusiveCallbackGroup
from rclpy.duration import Duration
from rclpy.executors import MultiThreadedExecutor
from rclpy.experimental.events_executor import EventsExecutor
from rclpy.node import Node
from rclpy.time import Time
from ros2_numpy import msgify, numpify
Expand Down Expand Up @@ -264,8 +264,7 @@ def main(args=None) -> None:
rclpy.init(args=args)

node = BallFilter()
# Number of executor threads is the number of MutiallyExclusiveCallbackGroups + 1 thread for the executor
ex = MultiThreadedExecutor(num_threads=3)
ex = EventsExecutor()
ex.add_node(node)
try:
ex.spin()
Comment thread
Flova marked this conversation as resolved.
Outdated
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from rclpy.time import Time
from ros2_numpy import numpify
from std_msgs.msg import Header
from rclpy.experimental.events_executor import EventsExecutor

from bitbots_msgs.msg import TeamData

Expand Down Expand Up @@ -124,11 +125,10 @@ def _team_data_callback(self, msg: TeamData):
def main(args=None):
rclpy.init(args=args)
node = RobotFilter()
# Number of executor threads is the number of MutuallyExclusiveCallbackGroups + 2 threads the tf listener and executor needs
ex = MultiThreadedExecutor(num_threads=5)
ex.add_node(node)
executor = EventsExecutor()
executor.add_node(node)
try:
ex.spin()
executor.spin()
except KeyboardInterrupt:
pass
node.destroy_node()
Loading