コード例 #1
0
def main(args=None):
    rclpy.init(args=args)

    #Executor to control all topic nodes
    executor = MultiThreadedExecutor()

    nodeList = []

    #std_msgs/String topics --
    topics = ['rosout', 'actions', 'status']

    rosout_node = RosoutListener()
    executor.add_node(rosout_node)
    logger.info(f'creating node for rosout messages')
    nodeList.append(rosout_node)

    for topic in topics:
        #Node creation for all topics
        subscriber = TopicNode(topic)
        executor.add_node(subscriber)
        nodeList.append(subscriber)
        print(f'creating node for string topic /{topic} messages')

    try:
        executor.spin()

    finally:
        executor.shutdown()
        for subscriber in nodeList:
            subscriber.destroy_node()

    rclpy.shutdown()
コード例 #2
0
def main(args=None):
    rclpy.init(args=args)
    #robot_name = ''
    robot_name = sys.argv[1]
    total_robot_num = sys.argv[2]
    #peer_robot_name = sys.argv[2]
    explore_node = MultiExploreNode(robot_name, total_robot_num)
    executor = MultiThreadedExecutor(32)
    executor.add_node(explore_node)
    executor.add_node(explore_node.r_interface_)
    # executor.add_node(explore_node.peer_interface_)
    # executor.add_node(explore_node.group_coordinator_)
    spin_thread = Thread(target=executor.spin)
    # spin_thread = Thread(target=rclpy.spin, args=(explore_node,))
    spin_thread.start()

    # input('({})press to continue'.format(robot_name))
    while rclpy.ok():
        state = explore_node.updateMultiHierarchicalCoordination()

        if state == explore_node.e_util.SYSTEM_SHUTDOWN:
            break

    explore_node.get_logger().info('system shutdown...')
    # rclpy.spin(node)
    rclpy.shutdown()
コード例 #3
0
def main(args=None):
    logging.basicConfig(format='%(asctime)s %(levelname)-8s %(message)s',
                        level=logging.INFO,
                        datefmt='%Y-%m-%d %H:%M:%S')

    rclpy.init(args=args)

    executor = MultiThreadedExecutor()
    odom_node = TransformLoggerNode('odom', 'base_link', executor=executor)
    map_node = TransformLoggerNode('map', 'base_link', executor=executor)
    executor.add_node(odom_node)
    executor.add_node(map_node)
    try:
        #rclpy.spin(log_node)
        while True:
            executor.spin_once()
            #logging.info(f"num nodes is: {len(executor.get_nodes())}")
            if len(executor.get_nodes()) == 0:
                break
            if odom_node.is_done() and map_node.is_done():
                break

    except:
        logging.warning(f"hit exception")
        pass
        #executor.shutdown()
    finally:
        logging.warning(f"cleaning up")
        odom_node.plot_data()
        map_node.plot_data()
        plt.pause(1)
        plt.show(block=True)
        odom_node.destroy_node()
        map_node.destroy_node()
コード例 #4
0
ファイル: rclpy_spinner.py プロジェクト: Team488/WindowFrame
 def run(self):
     qDebug('Start called on RclpySpinner, spinning ros2 node')
     executor = MultiThreadedExecutor()
     executor.add_node(self._node)
     while rclpy.ok() and not self._abort:
         executor.spin_once(timeout_sec=1.0)
     if not self._abort:
         qWarning('rclpy.shutdown() was called before QThread.quit()')
コード例 #5
0
def main(args=None):
    rclpy.init(args=args)
    pipeline_manager = PipelineManager()
    executor = MultiThreadedExecutor()
    executor.add_node(pipeline_manager)
    executor.spin()
    pipeline_manager.destroy_node()
    executor.shutdown()
    rclpy.shutdown()
コード例 #6
0
def _main():
    rclpy.init()

    executor = MultiThreadedExecutor()
    component_manager = ComponentManager(executor, "PyComponentManager")

    executor.add_node(component_manager)
    executor.spin()

    rclpy.shutdown()
コード例 #7
0
def main(args=None):
    # Pythonクライアントライブラリの初期化
    rclpy.init(args=args)
    executor = MultiThreadedExecutor()
    srv = Sender()
    executor.add_node(srv)
    while rclpy.ok():
        executor.spin_once()
        srv.background()
    rclpy.shutdown()
コード例 #8
0
def main(args=None):
    """Run the test script."""
    rclpy.init(args=args)
    executor = MultiThreadedExecutor()
    node = ROSTestRunnerNode(executor)
    executor.add_node(node)
    executor.spin()

    node.destroy_node()
    rclpy.shutdown()
コード例 #9
0
def start_a_message_equality_tester_node_and_get_result(future_result : Future, exe : MultiThreadedExecutor, expected_data : Dict):

    node = MessageEqualityTesterNode('topic', 'std_msgs/msg/String', expected_data, future_result)
    
    exe.add_node(node)

    exe.spin_until_future_complete(future_result)

    node.destroy_node()

    return future_result.result()
コード例 #10
0
def main(args=None):
    rclpy.init(args=args)
    node = SkibotNode()
    executor = MultiThreadedExecutor(num_threads=4)
    executor.add_node(node)
    future = Future()
    future.add_done_callback(lambda fut: print("Future is done"))

    executor.spin_until_future_complete(future)

    node.destroy_node()
    rclpy.shutdown()
コード例 #11
0
def main(args=None):
    rclpy.init(args=args)
    
    leg_names = ['front_left', 'middle_left', 'rear_left', 'rear_right', 'middle_right', 'front_right']

    executor = MultiThreadedExecutor(num_threads=7) # EachLegGaitノード6スレッド+RoughWalkノード1スレッド+1スレッド
    for leg_name in leg_names:
        executor.add_node(EachLegGait(namespace='hapthexa/leg/'+leg_name))
    executor.add_node(RoughWalk())
    executor.spin()
    
    rclpy.shutdown()
コード例 #12
0
def main(args=None):
    global executor
    rclpy.init(args=args)
    try:
        executor = MultiThreadedExecutor()
        manager_node = TaskSchedulerManager()
        executor.add_node(manager_node)
        try:
            executor.spin()
        finally:
            executor.shutdown()
    finally:
        rclpy.shutdown()
コード例 #13
0
def main():
    from rclpy.executors import MultiThreadedExecutor

    rclpy.init()
    node = BlockingWaitsForTransform()
    # this node blocks in a callback, so a MultiThreadedExecutor is required
    executor = MultiThreadedExecutor()
    executor.add_node(node)
    try:
        executor.spin()
    except KeyboardInterrupt:
        pass
    executor.shutdown()
    rclpy.shutdown()
コード例 #14
0
def main(args=None):
    rclpy.init(args=args)

    trajectory_planner = TrajectoryPlanner()

    executor = MultiThreadedExecutor(
        num_threads=2
    )  # when simulating we need two threads for the time to be updates i.e. when using "self.get_clock().now()"
    executor.add_node(trajectory_planner)
    executor.spin()

    # Destroy the node explicitly
    trajectory_planner.destroy_node()
    rclpy.shutdown()
コード例 #15
0
def main(args=None):
    # Pythonクライアントライブラリの初期化
    rclpy.init(args=args)
    executor = MultiThreadedExecutor()
    rcv = Reciever()

    executor.add_node(rcv)

    try:
        executor.spin()
    except KeyboardInterrupt:
        pass

    executor.shutdown()
    rcv.destroy_node()
コード例 #16
0
def main(args=None):
    global executor
    rclpy.init(args=args)

    try:
        executor = MultiThreadedExecutor()
        executor.add_node(SubtaskRoomLightOn())
        executor.add_node(SubtaskRoomLightOff())
        try:
            executor.spin()
        finally:
            executor.shutdown()

    finally:
        rclpy.shutdown()
コード例 #17
0
def main(args=None):
    rclpy.init(args=args)

    executor = MultiThreadedExecutor(num_threads=8)

    local_navigation = LocalNavigation()

    executor.add_node(local_navigation)

    executor.spin()

    executor.shutdown()

    # release resources (don't forget this)
    oalQuit()
コード例 #18
0
def main(args=None):
    rclpy.init(args=args)
    try:
        executor = MultiThreadedExecutor()
        node_a = FakeLifecycleNode('A')
        node_b = FakeLifecycleNode('B')

        executor.add_node(node_a)
        executor.add_node(node_b)

        lc = LifecycleClient()

        try:
            lc.configure_system()
            executor.spin_once(timeout_sec=1)
            executor.spin_once(timeout_sec=1)
            sleep(2)

            lc.activate_system()
            executor.spin_once(timeout_sec=1)
            executor.spin_once(timeout_sec=1)
            executor.spin_once(timeout_sec=1)
            sleep(2)  # give the system some time to converge

            lc.change_A_mode('AA')
            executor.spin_once(timeout_sec=1)
            executor.spin_once(timeout_sec=1)
            executor.spin_once(timeout_sec=1)
            executor.spin_once(timeout_sec=1)
            executor.spin_once(timeout_sec=1)
            sleep(3)  # give the system some time to converge

            lc.change_A_mode(
                'AA'
            )  # this is the tested aspect: call redundant, should be ignored
            executor.spin_once(timeout_sec=1)
            executor.spin_once(timeout_sec=1)
            sleep(2)  # give the system some time to converge

            lc.change_A_mode('BB')
            executor.spin()
        finally:
            executor.shutdown()
            node_a.destroy_node()
            node_b.destroy_node()
    finally:
        rclpy.shutdown()
        return 0
コード例 #19
0
ファイル: exec_node.py プロジェクト: KaoruNishikawa/ros2_test
def main(args=None):

    time.sleep(1)  # to measure the load on instantiation
    rclpy.init(args=args)
    try:
        nodes = {}
        for i in range(int(os.environ["ROS2_TEST_NUM_PER_GROUP"])):
            nodes[f'pub{i:03d}'] = NodePublish(cli_args=[
                "--ros-args",
                "-r",
                f"__node:=node_publish_{i:03d}",
            ])
            nodes[f'sub{i:03d}'] = NodeSubscribe(cli_args=[
                "--ros-args",
                "-r",
                f"__node:=node_subscribe_{i:03d}",
            ])

        executor = MultiThreadedExecutor()
        [executor.add_node(node) for node in nodes.values()]

        try:
            executor.spin()
        finally:
            executor.shutdown()
            [node.destroy_node() for node in nodes.values()]
    finally:
        rclpy.shutdown()
コード例 #20
0
def main(args=None):
    rclpy.init(args=args)

    node_A = MyNodeSubscriber("node_sub_A")
    node_B = MyNodeSubscriber("node_pub_B")

    executor = MultiThreadedExecutor(2)

    executor.add_node(node_A)
    executor.add_node(node_B)

    executor.spin()

    node_A.destroy_node()
    node_B.destroy_node()
    rclpy.shutdown()
コード例 #21
0
def main(args=None):
    rclpy.init(args=args)

    node_A = MyNodePublisher("node_pub_A", 0.5)
    node_B = MyNodePublisher("node_pub_B", 1)

    executor = MultiThreadedExecutor(2)

    executor.add_node(node_A)
    executor.add_node(node_B)

    executor.spin()

    node_A.destroy_node()
    node_B.destroy_node()
    rclpy.shutdown()
コード例 #22
0
def start_multi_equality_tester(future : Future, exe : MultiThreadedExecutor):

    topic_and_expected_values_pairs = [
        TopicAndValuesPair('topic1', 'std_msgs/msg/String', {'data' : 'hello1'}),
        TopicAndValuesPair('topic2', 'std_msgs/msg/String', {'data' : 'hello2'}),
        TopicAndValuesPair('topic3', 'std_msgs/msg/String', {'data' : 'hello3'}),
    ]

    node = MultiMessageEqualityTesterNode(topic_and_expected_values_pairs, EqualityType.ALLOF, future)

    exe.add_node(node)

    exe.spin_until_future_complete(future)

    node.destroy_node()
    return future.result()
コード例 #23
0
def main(args=None):
    rclpy.init(args=args)
    try:
        calculator = Calculator()
        executor = MultiThreadedExecutor(num_threads=4)
        executor.add_node(calculator)
        try:
            executor.spin()
        except KeyboardInterrupt:
            calculator.get_logger().info('Keyboard Interrupt (SIGINT)')
        finally:
            executor.shutdown()
            calculator.arithmetic_action_server.destroy()
            calculator.destroy_node()
    finally:
        rclpy.shutdown()
コード例 #24
0
ファイル: run_session.py プロジェクト: FlorisE/rospit2
def main(args=None):
    """Run a ROSPIT test session."""
    rclpy.init(args=args)
    executor = MultiThreadedExecutor()
    node = ROSTestRunnerNode(executor)
    action_client = ActionClient(node, ExecuteXMLTestSuite,
                                 '/execute_xml_test_suite')
    node.declare_parameter('path')
    executor.add_node(node)
    t1 = ExecuteCall(node, action_client)
    t2 = ExecuteSpin(node, executor)
    t1.start()
    t2.start()
    t1.join()
    t2.spinning = False
    t2.join()
    rclpy.shutdown()
コード例 #25
0
def main(args=None):
    """
    Executes the pipeline manager node
    Uses a multi threaded executor for the pipeline manager and 
    continuously spins until stopped, then destroys the pipeline
    manager and shuts down the infastructure
    """
    rclpy.init(args=args)
    pipeline_manager = PipelineManager()
    executor = MultiThreadedExecutor()
    executor.add_node(pipeline_manager)
    try:
        executor.spin()
    except KeyboardInterrupt:
        pass # To force exit code 0 
    executor.shutdown()
    rclpy.shutdown()
コード例 #26
0
def main(args=None):
    global executor
    rclpy.init(args=args)
    try:
        executor = MultiThreadedExecutor()

        task_scheduler_manager = TaskSchedulerManager()
        executor.add_node(task_scheduler_manager)

        try:
            executor.spin()
        finally:
            executor.shutdown()
            task_scheduler_manager.destroy_node()

    finally:
        rclpy.shutdown()
コード例 #27
0
def main(args=None):
    rclpy.init(args=None)
    # needed to init rclcpp ros for moveit_bindings
    node = Node("bitbots_localization_handler",
                automatically_declare_parameters_from_overrides=True)
    dsd = init(node)
    node.create_timer(1 / 25.0, dsd.update)

    multi_executor = MultiThreadedExecutor()
    multi_executor.add_node(node)

    try:
        multi_executor.spin()
    except KeyboardInterrupt:
        pass

    node.destroy_node()
コード例 #28
0
def main():
    rclpy.init()
    hello_sub = HelloSub()
    try:
        executor = MultiThreadedExecutor(num_threads=2)
        executor.add_node(hello_sub)
        executor.spin()
        print('Added thread!')
        # original_spin(hello_sub) # does not work!
        # 2 lines below are for testing out multithreaded workload in ROS2 [Failed attempt]
        # for spinning nodes in the background
        # spin_thread1 = Thread(target=rclpy.spin, args=(hello_sub, ))
        # spin_thread1.start()
    except KeyboardInterrupt:
        pass
    executor.shutdown()
    hello_sub.destroy_node()
    rclpy.shutdown()
コード例 #29
0
ファイル: callback_group.py プロジェクト: esteve/examples
def main(args=None):
    rclpy.init(args=args)
    try:
        # MultiThreadedExecutor executes callbacks with a thread pool. If num_threads is not
        # specified then num_threads will be multiprocessing.cpu_count() if it is implemented.
        # Otherwise it will use a single thread. This executor will allow callbacks to happen in
        # parallel, however the MutuallyExclusiveCallbackGroup in DoubleTalker will only allow its
        # callbacks to be executed one at a time. The callbacks in Listener are free to execute in
        # parallel to the ones in DoubleTalker however.
        executor = MultiThreadedExecutor(num_threads=4)
        executor.add_node(DoubleTalker())
        executor.add_node(Listener())
        try:
            executor.spin()
        finally:
            executor.shutdown()
    finally:
        rclpy.shutdown()
コード例 #30
0
def main():

    args = parse_args()
    rclpy.init()
    exe = MultiThreadedExecutor()
    node = HelloAvlActionServerNode(args.name, args.delay)

    if args.make_available_when is not None:
        node.make_available_when(args.make_available_when)

    node.get_logger().info("Node started")
    exe.add_node(node)

    exe.spin()

    node.abort()

    node.get_logger().info("Node finished")
コード例 #31
0
def main(args=None):
    rclpy.init(args=args)
    try:
        # MultiThreadedExecutor executes callbacks with a thread pool. If num_threads is not
        # specified then num_threads will be multiprocessing.cpu_count() if it is implemented.
        # Otherwise it will use a single thread. This executor will allow callbacks to happen in
        # parallel, however the MutuallyExclusiveCallbackGroup in DoubleTalker will only allow its
        # callbacks to be executed one at a time. The callbacks in Listener are free to execute in
        # parallel to the ones in DoubleTalker however.
        executor = MultiThreadedExecutor(num_threads=4)
        executor.add_node(DoubleTalker())
        executor.add_node(Listener())
        try:
            executor.spin()
        finally:
            executor.shutdown()
    finally:
        rclpy.shutdown()