Использование RCLPY Logger в потоке - PullRequest
1 голос
/ 25 марта 2020

У меня есть узел в ROS2, который должен публиковать sh изображений, но также должен ждать сигнала (topi c) от другого узла. В целях отладки я хочу, например, регистрировать сигнал при поступлении. Моя идея заключалась в следующем:

class CameraNode(Node):
    def __init__(self, node_name="camera_node"):
        # Initialize rclpy
        super().__init__(node_name)
        self._log = self.get_logger()

        self.my_thread = Thread(self.myfunction)
        self.my_thread.start()

    def myFunction(self):
        self._log.error("never going to log this")
        while True:
            # get image from source and send images.
            pass

def main(args=None):
    # init the ros node
    rclpy.init(args=args)
    try:
        node = CameraNode()
        try:
            rclpy.spin(node)
        except KeyboardInterrupt:
            node.destroy_node()
    finally:
        rclpy.shutdown()

if __name__ == "__main__":
    main()

Из-за простоты я пропустил некоторые части кода. По какой-то причине сообщение журнала никогда не появляется. Я что-то пропустил или ROS2-логер не построен для многопоточности?

...