mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2025-12-17 13:01:12 +00:00
fix: working dir error when input config path
feat: report publish topic when error
This commit is contained in:
@@ -171,6 +171,8 @@ def main():
|
|||||||
"error",
|
"error",
|
||||||
)
|
)
|
||||||
os._exit(1)
|
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")):
|
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")
|
config_path = os.path.join(working_dir, "local_config.py")
|
||||||
elif not config_path and (
|
elif not config_path and (
|
||||||
|
|||||||
@@ -180,42 +180,41 @@ class PropertyPublisher:
|
|||||||
def get_property(self):
|
def get_property(self):
|
||||||
if asyncio.iscoroutinefunction(self.get_method):
|
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
|
loop = self.__loop
|
||||||
if loop:
|
if loop:
|
||||||
future = asyncio.run_coroutine_threadsafe(self.get_method(), loop)
|
future = asyncio.run_coroutine_threadsafe(self.get_method(), loop)
|
||||||
self._value = future.result()
|
self._value = future.result()
|
||||||
return self._value
|
return self._value
|
||||||
else:
|
else:
|
||||||
self.node.get_logger().error(f"【PropertyPublisher.get_property】事件循环未初始化")
|
self.node.lab_logger().error(f"【PropertyPublisher.get_property】事件循环未初始化")
|
||||||
return None
|
return None
|
||||||
else:
|
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()
|
self._value = self.get_method()
|
||||||
return self._value
|
return self._value
|
||||||
|
|
||||||
async def get_property_async(self):
|
async def get_property_async(self):
|
||||||
try:
|
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()
|
self._value = await self.get_method()
|
||||||
except Exception as e:
|
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):
|
def publish_property(self):
|
||||||
try:
|
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()
|
value = self.get_property()
|
||||||
if self.print_publish:
|
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:
|
if value is not None:
|
||||||
msg = convert_to_ros_msg(self.msg_type, value)
|
msg = convert_to_ros_msg(self.msg_type, value)
|
||||||
self.publisher_.publish(msg)
|
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:
|
except Exception as e:
|
||||||
traceback.print_exc()
|
self.node.lab_logger().error(f"【PropertyPublisher.publish_property】发布属性 {self.publisher_.topic} 出错: {str(e)}\n{traceback.format_exc()}")
|
||||||
self.node.get_logger().error(f"【PropertyPublisher.publish_property】发布属性出错: {str(e)}")
|
|
||||||
|
|
||||||
def change_frequency(self, period):
|
def change_frequency(self, period):
|
||||||
# 动态改变定时器频率
|
# 动态改变定时器频率
|
||||||
|
|||||||
Reference in New Issue
Block a user