diff --git a/unilabos/app/main.py b/unilabos/app/main.py index 210f3e2b..b2c4d04b 100644 --- a/unilabos/app/main.py +++ b/unilabos/app/main.py @@ -171,6 +171,8 @@ def main(): "error", ) os._exit(1) + elif config_path and os.path.exists(config_path): + working_dir = os.path.dirname(config_path) elif os.path.exists(working_dir) and os.path.exists(os.path.join(working_dir, "local_config.py")): config_path = os.path.join(working_dir, "local_config.py") elif not config_path and ( diff --git a/unilabos/ros/nodes/base_device_node.py b/unilabos/ros/nodes/base_device_node.py index eebaf599..82e59f65 100644 --- a/unilabos/ros/nodes/base_device_node.py +++ b/unilabos/ros/nodes/base_device_node.py @@ -180,42 +180,41 @@ class PropertyPublisher: def get_property(self): if asyncio.iscoroutinefunction(self.get_method): # 如果是异步函数,运行事件循环并等待结果 - self.node.get_logger().debug(f"【PropertyPublisher.get_property】获取异步属性: {self.name}") + self.node.lab_logger().debug(f"【PropertyPublisher.get_property】获取异步属性: {self.name}") loop = self.__loop if loop: future = asyncio.run_coroutine_threadsafe(self.get_method(), loop) self._value = future.result() return self._value else: - self.node.get_logger().error(f"【PropertyPublisher.get_property】事件循环未初始化") + self.node.lab_logger().error(f"【PropertyPublisher.get_property】事件循环未初始化") return None else: # 如果是同步函数,直接调用并返回结果 - self.node.get_logger().debug(f"【PropertyPublisher.get_property】获取同步属性: {self.name}") + self.node.lab_logger().debug(f"【PropertyPublisher.get_property】获取同步属性: {self.name}") self._value = self.get_method() return self._value async def get_property_async(self): try: # 获取异步属性值 - self.node.get_logger().debug(f"【PropertyPublisher.get_property_async】异步获取属性: {self.name}") + self.node.lab_logger().debug(f"【PropertyPublisher.get_property_async】异步获取属性: {self.name}") self._value = await self.get_method() except Exception as e: - self.node.get_logger().error(f"【PropertyPublisher.get_property_async】获取异步属性出错: {str(e)}") + self.node.lab_logger().error(f"【PropertyPublisher.get_property_async】获取异步属性出错: {str(e)}") def publish_property(self): try: - self.node.get_logger().debug(f"【PropertyPublisher.publish_property】开始发布属性: {self.name}") + self.node.lab_logger().debug(f"【PropertyPublisher.publish_property】开始发布属性: {self.name}") value = self.get_property() if self.print_publish: - self.node.get_logger().info(f"【PropertyPublisher.publish_property】发布 {self.msg_type}: {value}") + self.node.lab_logger().info(f"【PropertyPublisher.publish_property】发布 {self.msg_type}: {value}") if value is not None: msg = convert_to_ros_msg(self.msg_type, value) self.publisher_.publish(msg) - self.node.get_logger().debug(f"【PropertyPublisher.publish_property】属性 {self.name} 发布成功") + self.node.lab_logger().debug(f"【PropertyPublisher.publish_property】属性 {self.name} 发布成功") except Exception as e: - traceback.print_exc() - self.node.get_logger().error(f"【PropertyPublisher.publish_property】发布属性出错: {str(e)}") + self.node.lab_logger().error(f"【PropertyPublisher.publish_property】发布属性 {self.publisher_.topic} 出错: {str(e)}\n{traceback.format_exc()}") def change_frequency(self, period): # 动态改变定时器频率