利用json文件實現不同設備間的交互(三)

      利用python腳本監聽json文件,當map_builder_exit的值爲1時,結束與cartographer建圖有關的node,釋放節點。python腳本較爲簡單,僅涉及python對json的處理,和利用python執行shell命令。

       腳本map_save.py如下:

# coding=utf-8   //設置文本格式
import os,time,sys
from multiprocessing import Process
import json


def sub_exit_signal():
	filename = '/home/cabin/Desktop/remote_communication/task_state.json'
	while 1 :
		time.sleep(1)
		with open(filename, 'r') as fr:
			json_data = json.load(fr)
			exit_signal = json_data['map_builder']['map_builder_exit']
		fr.close()
		if 1 == exit_signal :
			print "get exit signal"
			json_data['map_builder']['map_builder_exit'] = 0
			m_json_data = json_data;
			os.system("rosnode kill cartographer_occupancy_grid_node map_to_laser_odom  robot_state_publisher rviz cartographer_node")
			break
	print "end map_build ..."
	sys.exit(0)
	
if __name__ == '__main__':
	sub_exit_signal()
	print "building the map ..."
      注意對json文件的監聽時,不能讀取頻率太高,應設一個時延,否則會報錯。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章