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()
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()')
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()
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