最近测试需要,需要获取ROS节点订阅的数据,由于数据是持续输出,且需要获取我们需要的数据,开发没有写接口供我们使用,现在可以通过简单的脚本去获取,或者通过python写一个接口去获取,这里我为了简单,直接一个脚本搞定(模拟shell命令),最终是从这样一个数据中去匹配:
header:
seq: 709
stamp:
secs: 731
nsecs: 283812931
frame_id: "gps_frame"
status:
status: 0
service: 0
latitude: 40.1125573333
longitude: 116.600857167
altitude: 36.9
position_covariance: [1.54, 1.14, 1.03, 10.0, 1.831, 153.26, 0.0, 0.0, 0.0]
position_covariance_type: 0
---
按照下面的代码,最终匹配出来的数据就是latitude:后面的小数,持续匹配
代码如下:
import os import subprocess import re import time cmd="rostopic echo /gps" ret = subprocess.Popen(cmd,shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) m = 0 k = 0 for i in iter(ret.stdout.readline,b""): m +=1 if m == 10 or (m-10) % 15 == 0: data = i.decode().strip() res1 = re.search(r'latitude:(.+)', data) print(res1.group(1)) with open('/home/moriarty/Files/Desktop/111.txt', 'a+') as f: k += 1 f.write(str(k) + ',' + res1.group(1) + '\n') else: pass