LingxinMeng 6 miesięcy temu
rodzic
commit
45ab8bd075
1 zmienionych plików z 23 dodań i 3 usunięć
  1. 23 3
      src/python2/pjibot/merge-pjibot_guide.py

+ 23 - 3
src/python2/pjibot/merge-pjibot_guide.py

@@ -3,6 +3,7 @@ import os
 import time
 import oss2
 from rosbag import Bag, Compression
+import subprocess
 import logging
 import rosbag
 from std_msgs.msg import Header
@@ -71,9 +72,28 @@ def merge(local_bags, merged_prefix, local_merged_dir, merged_bag_name):
         logging.info("map.bag包的key为: %s" % str(map_key))
         bucket.get_object_to_file(map_key, local_map_path)
         jpg_file = local_merged_dir + merged_bag_name.split('.')[0] + '.jpg'
-        command1 = 'rosrun trajectory demo_node ' + local_map_path + ' ' + output_bag_file + ' ' + jpg_file
-        logging.info("调用命令轨迹图片生成命令: %s" % str(command1))
-        os.system(command1)
+        # 构建命令
+        command1 = ['rosrun', 'trajectory', 'demo_node', local_map_path, output_bag_file, jpg_file]
+
+        # 记录命令
+        logging.info("调用命令轨迹图片生成命令: %s" % ' '.join(command1))
+
+        # 使用 subprocess.run 来执行命令,并捕获输出和错误
+        result = subprocess.run(command1, capture_output=True, text=True)
+
+        # 记录命令的标准输出
+        if result.stdout:
+            logging.info("命令输出: %s" % result.stdout.strip())
+
+        # 记录命令的标准错误输出
+        if result.stderr:
+            logging.error("命令错误: %s" % result.stderr.strip())
+
+        # 检查命令的返回码
+        if result.returncode != 0:
+            logging.error("命令执行失败,返回码: %d" % result.returncode)
+        else:
+            logging.info("命令执行成功")
         jpg_key = parse_prefix + 'track.png'
         bucket.put_object_from_file(jpg_key, jpg_file)