#!/usr/bin/env python
#coding=utf-8
import rospy
from std_srvs.srv import Trigger, TriggerResponse
import roslaunch
import subprocess
'''
以服务形式,通过roslaunch来控制launch文件的启动和停止
'''
class LaunchManagerServer:
def __init__(self):
# Initialize the ROS node
rospy.init_node('launch_manager_server')
# Create the ROS service
self.close_service = rospy.Service('/close_launch', Trigger, self.handle_close_request)
self.start_service = rospy.Service('/start_launch', Trigger, self.handle_start_request)
# Create the ROS launch object
self.launch = None
def handle_start_request(self,req):
rospy.loginfo("Launch process is start.")
self.start()
return TriggerResponse(success=True, message="Launch process is running.")
def handle_close_request(self, req):
# Shutdown the launch process
if self.launch is not None:
self.launch.shutdown()
rospy.loginfo("Launch process is shutdown.")
return TriggerResponse(success=True, message="Launch process is shutdown.")
return TriggerResponse(success=False, message="No launch process is running.")
def start(self):
# self.start_launch('my_pack ceshi2.launch')
# create ROSLaunchParent object
uuid = roslaunch.rlutil.get_or_generate_uuid(None, False)
# file = "/path/to/your/launch/file.launch"
file1 = "/home/zx/zhangy/ws/del_ws/src/my_pack/launch/ceshi.launch"
file2 = "/home/zx/zhangy/ws/del_ws/src/my_pack/launch/ceshi2.launch"
self.launch = roslaunch.parent.ROSLaunchParent(uuid, [file1, file2], is_core=False)
# Start the launch process
self.launch.start()
rospy.loginfo("Launch process is started.")
if __name__ == '__main__':
manager_server = LaunchManagerServer()
manager_server.start()
rospy.spin()
ros常用代码整理
最新推荐文章于 2023-11-29 19:47:48 发布