예제 #1
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()
예제 #2
0
 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()')
예제 #3
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()
예제 #4
0
def main():

    args = parse_args()
    rclpy.init()
    exe = MultiThreadedExecutor()
    future = Future()
    node = HelloActionServerNode(args.name, args.delay, future)
    node.get_logger().info("Node started")
    exe.add_node(node)

    try:
        exe.spin_until_future_complete(future, timeout_sec=200)
        exe.spin_once()
    except KeyboardInterrupt:
        node.get_logger().info("KeyboardInterrupt: Aborting all goals")
        node.abort()

    node.get_logger().info("Node finished")
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